dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
把 DeepSeek Harness 变成多员工协同团队:员工花名册、内容流水线、一道人工闸门,外加一个会动的办公室界面
把 DeepSeek Harness 从「一个助手」变成一个多员工协同团队:有工牌、有花名册、有一条内容流水线、有一道只有人能按的闸门,还有一个会动的办公室界面。

$DSH_HOME/team/employees.json。谁在岗、什么岗位、模型备注,写在一个 JSON 里。
三个设计上的取舍,决定了它跟同类东西不一样:
人工工具闸门。 ctx.tools.guard() 拦截员工调用 content_gate;状态机拒绝自动离开 review,发布包要求署名审核记录。办公室提供人工审核入口。具有本机文件/终端权限的员工仍可能直接改数据,因此这不是系统级权限隔离。
能用代码做的,不外包给模型。 切片、转码、排期全是确定性任务,content_render 只登记参数,不调 ffmpeg、更不烧 token。模型只干「判断」和「写」。
状态诚实。 「上钟中」的判据是那个员工的会话当前真的开着 turn;账本读不到就说读不到,不编数字;平台收入是美元、账本是人民币,没设汇率就不算净额,两个原值都留着。
需要 Node 20+ 和一个能跑的 DeepSeek Harness。
方式一:本地目录链接(改代码最方便)
git clone https://github.com/syc67169-source/dsh-team-employees.git
cd dsh-team-employees
node bin/link-into-profile.mjs --dry-run # 先看要改什么,不写盘
node bin/link-into-profile.mjs # 装进 desktop profile
脚本只做三件事,都会打印出来:给 ~/.dsh/profiles/<profile>/package.json 加一条 link: 依赖、把插件名追加进 dsh.profile.bundles、在 profile 的 node_modules 里建软链(原文件先备份成 package.json.team.bak)。完全退出 DSH 再打开后生效;卸载用 --remove。
方式二:手动改 profile(不想跑脚本)
在 ~/.dsh/profiles/<profile>/package.json 里加一条依赖和一条 bundle:
{
"dependencies": { "dsh-team-employees": "github:syc67169-source/dsh-team-employees" },
"dsh": { "profile": { "bundles": ["…原有的…", "dsh-team-employees"] } }
}
然后在那个 profile 目录里 pnpm install。桌面端注意:dsh plugin --profile desktop 会被 CLI 拒绝(官方设计如此),手动或走脚本。
team_roster。再让她登记一条素材 → 回办公室页刷新,情报部那个工位会显示「上钟中」。进入 办公室 → 长期研究员工 → 新建长期职责,选择员工,填写目标和 1–5 个无需登录的公开网址,再设置间隔与每日模型唤醒上限。保存后默认暂停。
点击 立即执行一次 建立第一份简报;查看最近记忆、来源和完整报告。点击 启用定期检查 才开始持续运行:内容未变跳过模型,发生变化生成新简报与面板提示。点击 暂停 会取消正在执行的任务。
这是本地第一版,一次只运行一个职责;使用 headless 配置的模型,员工模型备注不负责路由。支持文本、HTML、JSON、RSS/Atom,暂不支持需要登录或浏览器渲染的网页。详情与验收步骤见 长期研究使用与验收。
| 工位 | 模式 id | 干什么 | 工具集 |
|---|---|---|---|
| 情报员工·阿研 | scout | 找素材、核授权、登记 | 检索 + 文件 + 内容工具 |
| 选题员工·阿筛 | select | 打分、排序、给先验 | 文件 + 内容工具 |
| 成稿员工·阿写 | write | 脚本与标题 | 文件 + 内容工具 |
| 数据员工·阿析 | measure | 回采、对账、重算权重 | 文件 + shell + 内容工具 |
| 审核员工·阿审 | reviewer | 代码审核(与内容线无关) | 文件 + shell |
团队通用工具(dsh-team-employees/tools):team_roster 看花名册、team_log 写一条工作记录、team_inbox 读别人做到哪了。
内容流水线工具(dsh-team-employees/content):content_new、content_score、content_script、content_render、content_queue、content_gate(仅人)、content_publish、metrics_pull、weights、cost_report。
设计与字段细节见 docs/内容流水线编排设计.md。
$DSH_HOME/team/
├── employees.json 花名册
├── journal.jsonl 团队工作日志(成员之间靠它交接)
├── content/
│ ├── index.jsonl 摘要索引
│ └── <id>/ item.json / events.jsonl / script.md / render.json / publish.json
└── metrics/
├── <id>.json 单条回采结果
└── weights.json 权重表(中位数比值,全表能手算)
全部是纯文本,直接看、直接改、直接进版本控制都行。
npm test # 112 项;自动测试使用隔离目录与模型夹具,不消耗真实模型额度
test/smoke.mjs——团队工具的注册契约、Host 的 /team/api、办公室状态机(上钟/待命/空岗/人工岗怎么算出来的)、浏览器兜底页、客户端包的槽位注册与界面渲染。test/content.smoke.mjs——流水线状态机、闸门、记账、权重表。本机装了 dsh 时,会用 dsh 自己的 schema 校验器验证工具契约(DSH_TOOLS_ENTRY 可指定位置);没装就自动跳过那几条并明确打印说明,其余断言照跑。客户端界面是在一个最小 React 运行时里真渲染过的,所以 CI 不需要浏览器。
看设计不用启动 DSH:
npm run preview # 三个界面渲染成静态 HTML 到 docs/preview.html
npm run shot # 有 Chrome 时顺便重截 docs/images/ 里的图
dsh-team-employees/
├── cordis.patch.yml 挂载清单:1 个 Host 行 + 5 个员工 preset
├── employees.json 花名册样例(安装时复制到 $DSH_HOME/team/)
├── lib/
│ ├── index.js Host:/team 接口 + 办公室数据 + 浏览器兜底页
│ ├── client.js 客户端:侧边栏入口 + 办公室整页 + 设置里的员工管理
│ ├── store.mjs 团队数据读写(花名册 + 日志)
│ ├── tools.js Agent 工具:team_roster / team_log / team_inbox
│ ├── content.mjs 流水线数据层:状态机 + 队列 + 回采 + 权重
│ ├── content-tools.js 流水线工具 + 人工闸门
│ └── usage.mjs 读本地账本($DSH_HOME/.dshw-usage.json)
├── bin/link-into-profile.mjs
├── tools/ 预览与截图
└── test/ 两套自检 + 最小 React 运行时
加员工(改花名册,界面里就能做):$DSH_HOME/team/employees.json 加一条。
加工位(要改配置):cordis.patch.yml 里复制一个 preset-employee-* 块,改 id(小写字母数字连字符)、name、order、人设和工具集;如果要让他守一段流水线,再在 lib/index.js 的 DEPARTMENTS 里加一行。设置页在缺工牌时会给出可以复制的片段,但不会替你改配置文件。
员工花名册的 model 仅作备注,不会切换模型。实际模型请在对应会话的模型选择器中设置;当前插件没有员工级模型路由。
exec.agent 是宿主内部字段。 这是目前唯一能区分「人 vs 员工」的手段,闸门押在它上面。升级 DSH 后请重跑自检确认它还在拦。.dshw-usage.json 由宿主写,不是公开契约;读不到就退回「读不到」,不编数字。content_publish 只写本地发布包,不接触任何平台接口。bin/render.mjs 还没写。 content_render 只登记参数;真正的 ffmpeg 转码是下一步。0.2.0-rc.2 的运行时写的,宿主接口变动时需要跟着改;自检会告诉你哪一条不对了。MIT,见 LICENSE。
用这个插件遇到问题、想提需求,或者只是想要一起交流一些AI有关的问题——扫码加我:
QQ:3657854368(EasonS)
.lock,先关闭所有使用该数据目录的 Harness/脚本,再核对 owner.json 的 PID 已退出并移除相应锁目录。不会根据过期时间自动抢走锁。content_publish 只准备发布包,条目保持待发布。办公室中署名审核、填写真实发布链接/记录并确认后,才进入 published;回采只接受已经确认发布的平台。可为同一条内容准备多个平台。