← Back to home@Coolwyd

dsh-staff

Persistent employee roster, task ledger, group chat and an in-UI staff center that turn DSH Agent Teams into a managed team.

Stars
0
Language
JavaScript
Created
Oct 24, 2026
Updated
Oct 24, 2026

Introduction

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 秒轮询一次。

工位有三态,界面用状态点颜色区分,不再笼统显示「离线」:

状态判定界面处置
onlineteammate 在任一在线会话里绿点·在线待命直接投递
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.0DSH 内员工中心(侧栏入口 + 全屏面板)、HTTP 快照与心跳、自动驾驶(默认关),18 个工具
2.1.0群解散工具 group_delete;群人数上限与 Agent Teams 对齐为 8 人