DSH Staff 员工制
把 DSH 的 Agent Teams 从「临时项目组」变成「有编制的员工」:员工有名字、岗位、职责边界、固定工位、任务账本,能拉群对话、互相质询,输入框上方还有一条常驻状态带。
它解决什么
| 痛点 | 未装之前 | 装上之后 |
|---|---|---|
| 成员会散 | 换会话就是另一支空团队 | 名册持久化,跨会话可查,staff_rebuild 出交接单 |
| 岗位靠临场说 | 每次 spawn 都要重新交代 | 6 种岗位模板,或写进档案复用 |
| 派活靠嘴 | 说完就忘 | 任务账本 + 优先级 + 截止 + 逾期提醒 |
| 员工互不来往 | 只能各干各的 | 群消息流,收到消息时能看到最近 6 条群历史 |
| 不知道谁在干什么 | 靠翻会话 | 输入框上方状态带 + staff_dashboard 看板 |
工具(19 个)
人事
| 工具 | 作用 |
|---|---|
staff_hire |
招人/调岗。同名再调即更新,保留历史任务;member 绑定工位;template 可选岗位模板 |
staff_rebuild |
生成员工交接单:还原成 spawn_teammate 参数,用于新会话重建 |
staff_list |
花名册,含各状态任务计数 |
staff_show |
单人档案 + 全部任务明细 |
staff_fire |
离职(软删除,档案与历史保留) |
派活
| 工具 | 作用 |
|---|---|
staff_assign |
派一条任务,支持 priority(high/normal/low)与 due |
staff_task_update |
状态流转:todo / doing / done / blocked |
staff_dispatch |
批量把待办投给员工并唤醒,支持 dryRun 预览 |
staff_autopilot |
自动驾驶开关:每分钟检查待办并唤醒一名员工,默认关闭,带每日上限 |
staff_dashboard |
全景看板:员工、待办分布、逾期与高优、群、阻塞项 |
群聊
| 工具 | 作用 |
|---|---|
group_create |
建群,2–8 名在册员工 |
group_update |
群改名、增删成员(数量仍限 2–8) |
group_send |
群发言,点名或全员;投递时附带最近 6 条群历史 |
group_read |
读群消息流 |
group_list |
群列表 |
group_delete |
解散群(confirm 必须显式传 true,防误删) |
维护
| 工具 | 作用 |
|---|---|
staff_export |
导出 JSON 备份(可回灌)或 Markdown 报告 |
staff_doctor |
数据自检(三级输出):problems 必须修(存储损坏、孤儿任务、序号重复倒序)、warnings 可继续使用(备份恢复、离职成员、序号断档)、infos 现场信息 |
岗位模板
secretary(首席执行秘书)、researcher(研究助理)、engineer(工程师)、tester(测试负责人)、product(产品经理)、ops(运维/SRE)。
传 template 可省略 post 与 duty;显式传入时优先于模板。
DSH 内界面
三处挂载,全部是 DSH 界面的一部分,不引入独立站点:
| 位置 | 内容 |
|---|---|
| 侧栏底部 | 「员工」入口按钮,任何时候都能打开 |
| 输入框上方 | 状态带 员工 N · 待办 M · 群 K ▸,点击打开 |
| 全屏面板 | 员工中心:左侧通讯录按「群聊 → 在线员工 → 待重建工位 → 未绑定工位」分组,右侧员工详情与群列表;ESC 关闭 |
样式全部使用 DSH 主题 token(--dsw-alias-*),明暗主题自适应。数据 15 秒轮询一次。
工位有三态,界面用状态点颜色区分,不再笼统显示「离线」:
| 状态 | 判定 | 界面 | 处置 |
|---|---|---|---|
online |
teammate 在任一在线会话里 | 绿点·在线待命 | 直接投递 |
missing |
名册绑了名,但所有会话都找不到它(会话结束 teammate 就消失) | 橙点·工位缺失 | 发消息 / 点 ↑ 自动重建,或档案页「重建工位并上线」 |
unbound |
没有绑定 teammate | 灰点·未绑定工位 | 先 staff_hire(member=...) 绑定 |
快照的 employees[] 除原有 online 布尔外,新增 station 与 stationSessionId(在线时指向工位所在会话)。完整状态机与流程见 docs/流程与状态机.md。
文末新增 案例库、度量指标与并行协作规约:三条真实缺陷的现象→根因→修法→证据、每次交付必报的五项指标、多人协作的写入边界。
数据来自两个只读 HTTP 路由:
| 路由 | 作用 |
|---|---|
GET /staff-api/snapshot |
员工、未完成任务、群摘要、前端心跳状态 |
GET /staff-api/client-ping?from=react |
前端组件挂载时上报,source 区分 react / manual |
两个路由都只允许本机来源(127.0.0.1 / ::1),非本机返回 403——它们不参与 DSH 的认证链,必须靠来源地址兜底。
数据
| 文件 | 内容 |
|---|---|
~/.dsh/staff/roster.json |
员工档案与任务账本 |
~/.dsh/staff/groups.json |
群与消息流 |
~/.dsh/staff/exports/ |
staff_export 导出的备份与报告 |
均为原子写(临时文件 + rename),写操作进程内串行化,并发调用不会互相覆盖。
典型流程
1. staff_hire 招人(可只给 template),member 绑定工位
2. staff_assign 派活(可带 priority / due)
3. staff_dispatch 一键投递唤醒(先 dryRun 看一眼)
4. 员工自己 staff_task_update 置 done,send_message 回报
5. staff_dashboard 看全景
建群讨论:
1. group_create 拉 2–8 人
2. group_send 抛议题(不点名 = 全员,mention = 定向)
3. 员工收到消息时能看到最近 6 条群历史,可直接 group_send 在群内发言
4. group_read 回看整条讨论
架构边界(为什么某些事没做)
| 想做 | 结论 | 依据 |
|---|---|---|
| 真·常驻员工(跨会话在职) | 插件层做不到 | subagents.prompt 要求 exact live direct parent;员工工位是某 Lead 会话的子会话,换会话即失效。做成 root 级员工需改会话模型 |
| 后台无人值守自动干活 | 做了但默认关闭 | staff_autopilot 每分钟最多唤醒 1 人,有每日上限,内存态重启即停。自动唤醒 = 自动计费,必须人显式开启 |
| 侧栏完整 UI 面板 | 只做轻量状态带 | 完整面板需 Typert Remote + client 模块,且认证态下无法在本地验证渲染 |
已知限制
| 限制 | 说明 |
|---|---|
| 员工身份绑会话 | teammate 只在当前会话的 Team 里活着;名册持久,工位不持久,用 staff_rebuild 过渡 |
| 群历史是快照 | 投递时附带最近 6 条,不是实时订阅 |
| 群发即计费 | 每次群发真实唤醒每个成员,2 人 = 2 次模型运行 |
| UI 渲染未验证 | 组件已挂载到 conversation.input.dock,但本环境无浏览器认证态,需人工刷新确认 |
| 自动驾驶需人开 | 默认关闭,内存态,重启失效 |
本地验证(给维护者)
验证脚本会把数据写进 $DSH_HOME/staff/。不要在真实名册上直接跑——曾经因此把一名员工的职责覆盖成四个字。用隔离目录:
DSH_HOME=/tmp/dsh-staff-test node .verify.mjs
版本
| 版本 | 变更 |
|---|---|
| 0.1.0 | 名册 + 任务账本,6 个工具 |
| 0.2.0 | 群聊 + 工位绑定 + 群历史可见,10 个工具 |
| 0.3.0 | 写串行化、批量派发、全景看板,12 个工具 |
| 0.4.0 | 岗位模板(6 种)、员工交接单,13 个工具 |
| 1.0.0 | 群成员管理、任务优先级与截止、导出备份、数据自检,16 个工具 |
| 2.0.0 | DSH 内员工中心(侧栏入口 + 全屏面板)、HTTP 快照与心跳、自动驾驶(默认关),18 个工具 |
| 2.1.0 | 群解散工具 group_delete;群人数上限与 Agent Teams 对齐为 8 人 |
No comments yet. Be the first to write one.