- Accueil
- Plugins
- Flux et automatisation
- dsh-company
dsh-company
makooslee/dsh-company
A small company of employee agents for DeepSeek Harness: seven built-in roles (project director, product manager, tech lead, engineer, data analyst, QA engineer, reviewer), each with its own persona, model and tool whitelist. A mission is broadcast and the employees bid for it themselves — the first line of their answer must be 【accept】 or 【decline】 — so accepted work runs in parallel instead of down a pipeline. Ships a web panel for the roster, the mission board and each employee's own transcript, the /dsh-company slash command, a live mirror into the built-in agent-team panel, deletable missions, and a private memory directory per employee.
Installer
dsh plugin --profile web add github:makooslee/dsh-companyREADME
dsh-company
English · 简体中文
给 DeepSeek Harness 装一家只有一位 CEO 的小公司。
如果它有用,欢迎给仓库点个 ⭐ Star——那比什么都管用。
你是 CEO。下面是一整个班底,每个员工都是一个真实的智能体会话,有自己的身份、自己的模型、自己的技能清单。你派活,他们自己决定接不接——接的人并行开工,不接的人要说明该谁接。整个过程汇成一条团队时间线,像一个群在开会,而不是一条流水线。
CEO 派单
├─ 项目总监 【接单】→ 拆解与验收标准
├─ 产品经理 【接单】→ 需求与验收口径
├─ 技术总监 【不接】→ 这属于产品范围,建议产品经理接
├─ 工程师 【接单】→ 实现与验证
├─ 数据分析师 【接单】→ 口径与数据
├─ 测试工程师 【接单】→ 用例与缺陷
└─ 审核员 【接单】→ 挑毛病
它解决什么
多智能体最常见的做法是「流水线」:产品→技术→开发→测试,一环卡住全停。dsh-company 换成认单制:
- 派单:任务广播给被勾选的员工,每人拿到同一份任务 + 一份团队成员名册。
- 认单:每人先回答「这活该不该我接」——第一行只能写
【接单】或【不接】,第二行起写理由;不接的人必须指出该谁接。 - 执行:只有接单的人进入第二轮,并且知道同期谁也在干(避免重复劳动)。
没人接单也是一个有效结果:任务会被标成 没人接单,理由留在时间线上,而不是硬塞给某个人。
功能
| 七个内置角色 | 项目总监、产品经理、技术总监、工程师、数据分析师、测试工程师、审核员;人设、技能、职位都可改,也可自己招聘新员工 |
| 认单制协作 | 员工自主判断接不接,不接要给出归属建议;接单者之间互相可见 |
| 团队时间线 | 认单、拒单、交付按时间汇成一条可读的流,像群聊一样 |
| 员工对话详情 | 点开员工管理里的任何一个人,看他自己那个会话的完整对话(含工具调用) |
| 真实模型选择 | 模型下拉来自 Harness 的模型目录,和 DSH 自己的模型选择同源;可按员工单独指定 |
| 技能白名单 | 每个员工可用的工具逐项勾选,未勾选的工具在其 agent scope 内被限制掉 |
/dsh-company 斜杠命令 | 在当前对话框直接派活:/dsh-company 标题 | 说明 | 员工A,员工B;只写 /dsh-company 看公司现状 |
| agent-team 面板联动 | 员工与任务会镜像进 Harness 自带的 agent-team 面板,直接看到「谁在干什么」 |
| 任务可删除 | 任务卡上的删除按钮一键清理任务;官方面板里的镜像任务同步折叠 |
| 每员工独立记忆 | 每个员工一个独立目录存记忆,接单理由、交付结论自动归档,还能手动记一笔 |
| 工作流编排 | n8n 式画布:拖「开始」和「员工」节点、拉连线成管线,一键运行;同层并行、上游失败下游自动跳过、{{input}} 占位把上一步输出喂给下一步 |
| 两种入口 | 管理页面派单;或在对话里直接用 company_dispatch 工具让 CEO 助手派单(同一份实现) |
效果图
员工管理 — 内置角色就位,卡片上直接看状态和技能,点开可看该员工的完整对话

任务板 — 派单后员工自行认单:研发工程师、数据分析师接单,产品经理拒单并说明该归谁干

招聘员工 — 从角色模板开新坑,人设、模型、技能白名单都能改

安装
要求:DeepSeek Harness(含 plugin_manager 工具)与 Node ≥ 20。
git clone <this-repo> dsh-company
然后让 Harness 里的 agent 执行:
用 plugin_manager 的 install_bundle,target 指向 <绝对路径>/dsh-company
或者自己调:
{ "action": "install_bundle", "target": "/absolute/path/to/dsh-company" }
装完刷新页面,左侧栏出现组织结构图图标;点开就是公司面板。侧栏没出现图标就重启一次 DSH Desktop。
换版本要按
remove_bundle→install_bundle的顺序走:同一个包名重复安装会被拒绝。
用法
员工管理:七个角色已就位。点卡片看这个人的对话记录;点「编辑」改姓名、职位、人设、模型、技能;点「招聘员工」加人。
任务板:写标题 + 说明 → 勾选要通知谁 → 「下发任务」。随后你会看到:
认单中:每个人在回复【接单】/【不接】+ 理由;执行中:接单的人并行干活,谁接了单在标题旁有计数;已完成/没人接单/已取消。
从对话里派单:直接说「把这事派给技术总监和工程师」,模型会调 company_dispatch。
用斜杠命令派单(v0.4 起):在任意对话框输入
/dsh-company 上线新版结算页 | 需要方案和实现 | 工程师,数据分析师
- 省略第三段 = 派给全员;
- 只写
/dsh-company= 看公司现状(谁在干什么、有哪些任务在跑)。
在 agent-team 面板看「谁在干什么」:插件会把员工与任务镜像成 Harness 官方的 agent-team 数据, 所以对话标题右侧的 agent-team 面板里会直接出现你的班底,每人一张任务卡写着当前进度 (正在认单 / 正在执行 / 已交付)。镜像只写在派单所在的那个会话里,不会串到别的会话。
工作流编排(v0.5 起):切到「工作流」标签,像 n8n 一样把员工排成管线:
- 一个工作流有且只有一个「开始」节点(拿运行输入),后面接任意多个「员工」节点;
- 员工节点上直接指定负责人和指令,指令里写
{{input}}占位,运行时会被替换成上游节点的输出; - 从输出口拖到下一个节点的输入口就建好一条连线,点连线可以删;
- 「运行」后同层节点并行执行(同一名员工在一条管线里自动串行排队);
- 上游失败时,下游节点自动标记为「已跳过」,不会白跑;
- 每个节点的产出在运行中实时可见,运行完的最后一次结果会留在卡片上。
管线是确定性的编排:谁干哪步、什么顺序、拿到什么输入,都是你画出来的; 而普通的「下发任务」是认单制——员工自己决定接不接。两者互补。
每个员工的独立记忆:每名员工在 DSH home 下有自己的记忆目录:
<DSH home>/dsh-company/employees/<employeeId>/
├── memory.md # 人类可读的追加式记忆
└── memory/<id>.json # 结构化单条记忆
接单理由与交付结论会自动归档进去,并注入该员工自己的 system prompt(只有他能看见)。 在员工详情页可以手动「记一笔」,也可以直接看目录路径。
删除任务:任务卡右上角的「删除」按钮删掉任务;若任务正在跑会先中止。 官方面板里对应的镜像任务会同步折叠。
配置
在 profile 的 cordis.patch.yml 里覆盖该行的 config:
- id: dsh-company
config:
companyName: 我的公司 # 面板标题与人设里出现的公司名
cwd: /path/to/workspace # 员工会话的默认工作目录,留空用 Harness 默认
bidTimeoutMs: 360000 # 单次认单超时(默认 6 分钟)
workTimeoutMs: 1800000 # 单次执行超时(默认 30 分钟)
数据:员工、任务与工作流存放于 storage 服务的 json 后端(unit dsh_company,per-record)。存储不可用时自动退化为纯内存,功能不变,只是重启后不保留。
记忆目录在 <DSH home>/dsh-company/employees/<employeeId>/;DSH home 取自 Harness 的 dshHomePath 服务(默认 ~/.dsh)。
同时在 storage 的 memories 表留一份,便于面板读取。
实现要点
- 员工是
ctx.agents.create()创建的真实 Agent,各自独立 session 与上下文,因此天然并行; - 身份走
setup(agentCtx)里的systemPrompt.section(); - 技能走
agentCtx.tools.restrict({ allow }),只作用于该员工自己的 agent scope; - 派活走
agent.followup(userMessage),员工自己开新 turn; - 产出、对话记录都从 session 日志派生——日志是唯一真相源,插件内存只是派生缓存;
- 斜杠命令走
ctx.commands.register(),与面板、agent 工具共用同一份 service 实现; - agent-team 联动是把员工与任务镜像成官方的
team/member与team/task事件写进 CEO 会话, 由官方投影折叠出成员行与任务卡——不另造一套面板; - 每员工记忆既是独立目录里的文件,也是 system prompt 里的一段动态文本(装配时重新求值);
- 工作流执行是拓扑分层:每轮挑出「上游全部完成」的节点并行跑,同员工串行排队靠 employeeId 锁链;
运行状态逐节点落盘(
lastRun.nodeRuns),面板 2.5s 轮询即见进度; - 所有注册都在
ctx.effect内完成并返回清理,插件卸载时释放 agent、关闭存储句柄。
目录
dsh-company/
├── index.js Host 半身:员工管理 / 认单调度 / 工作流引擎 / HTTP API / agent 工具
├── client.js 浏览器半身:侧栏图标 + 公司面板(React,无 JSX)
├── cordis.patch.yml bundle 挂载行
├── locale/ Plugin Manager 读取的标题与描述(zh / en)
├── icon.svg
└── docs/sponsor/ 打赏二维码放这里(见该目录说明)
赞赏
如果这个插件替你省下了时间,可以扫码请我喝杯咖啡,金额随意。
说句实话:最近投资亏了不少,工作上也接连不顺,这个插件是我在低谷里一行行写出来的。它不解决任何实际问题,但如果它真的帮到了你,一点支持对我是实实在在的鼓励。谢谢。
比起钱,我更想要一个 ⭐ Star——那能让更多人看到它,也能让我知道这东西有人用。
收款码放在
docs/sponsor/wechat.png;插件面板右上角的「赞赏」按钮读的是同一张图。
许可
致谢
- 插件形态、主题 token 与插槽机制来自 DeepSeek Harness 官方的
cordis-plugin-development规范; - 界面控件的视觉参照了 Harness 自带的 Plugin Manager / Settings 页面。
Plugins associés
webnovel-writer
lingfengqaq/webnovel-writer
loopx (dsh-loopx-plugin)
loopx-project/loopx
ouroboros (dsh-plugin)
q00/ouroboros
loopx (dsh-loopx-plugin)
huangruiteng/loopx