yjh051108/dsh-agi-harness · 上手攻略
- 仓库:yjh051108/dsh-agi-harness
- 链接:https://github.com/yjh051108/dsh-agi-harness
- 分类:Agent 架构 · 插件生态 · 信誉与闭环系统
- 作者:Tom
- 更新:2026-09-09
是什么
yjh051108/dsh-agi-harness 是一套 DSH(DeepSeek Harness)插件组合,运行于 DeepSeek 官方开源的 DSH 运行时之上(MIT 协议,v0.1+)。它的核心定位是给 LLM 一个「可托付的身体」——把模型训练改不出来的三种能力:诚实(说到做到)、索取(缺料主动要)、经验沉淀与唤醒(学过的记下、下次会用),变成机器可执行的责任结构。
本质上这是一组闭合回路插件(closedloop)+ 记忆插件(engram-relay)+ 可选浏览器工具插件,组合成一个标准预设 closedloop-full。
⚠️ 本仓库是 DSH 的第三方插件集,需要 DSH 运行时(
dsh命令)才能运行,不是独立程序。
解决什么问题
LLM 单次生成能力强,但存在三个根本缺陷:
- 训练只优化「这一次答得好」——模型不保证自己说的能做得到,说到做不到是常态而非例外。
- 缺料不主动要——遇到信息缺口,模型倾向于编造或猜测,而不是说「我不知道,需要什么」。
- 经验不积累——同一类错误在不同会话里反复出现,学过的教训无法跨会话复用。
DSH 自身提供了插件化架构,但这些缺陷需要靠外部制度来弥补。本仓库的插件组合就是这套制度的具体实现。
快速安装
前提条件
- DSH 运行时(
dsh命令),测试通过版本:v0.1.2-rc.1、v0.1.3-alpha.2 - Node.js ≥ 22
- pnpm 11(注意:pnpm 11 有已知兼容问题,见下「坑与注意」)
- 可选:
DEEPSEEK_API_KEY(不提供则自动降级为机械判定,功能不回退)
DSH 本身安装(参考):
npx @deepseek-ai/dsh web # 一键启动 Web UI
# 或
pnpm dsh --profile web # 源码启动(需 clone 仓库)
插件安装(核心步骤)
# 注入三个插件包(closedloop + engram-relay + browser-panel)
dev_inject_plugin /path/to/plugins/dsh-closedloop-mode
dev_inject_plugin /path/to/plugins/dsh-engram-relay
dev_inject_plugin /path/to/plugins/dsh-browser-panel # 可选
# 安装标准预设
cp -r preset/closedloop-full ~/.dsh/.agent-presets/closedloop-full
# 设为默认预设
# 在 DSH profile 配置中设置:
# agent-presets.default = closedloop-full
验证安装
dev_plugin_status
# 确认三个插件均显示 [active] 状态
核心用法
1. 闭环模式(dsh-closedloop-mode)—— 责任闭环
这是最核心的插件,完整实现「预测→实现→盘上实测对账→吻合才闭合」的责任闭环。
核心机制一览:
| 组件 | 作用 |
|---|---|
| 写闸(writeGate) | 未声明当前动作时写盘被拒;侦察/测量全程自由 |
| 判分器棘轮 | 断言随经验收紧,不能退步 |
| 审计硬验 | 每条判据必须能对「假货」说不 |
| 真人帧签收 | 机器部分完成后,真人必须显式签收才算归零 |
| 信誉账本 | 模型信誉分实时更新,Wilson 下界防污染 |
| 教训台账 | 失败经验结构化落盘,跨会话可查 |
关键命令:
# 注入闭环插件
dev_inject_plugin /path/to/plugins/dsh-closedloop-mode
# 测试闭环(Node.js 内建测试)
cd plugins/dsh-closedloop-mode && node --test tests/
# 查看当前信誉账本
# (通过 DSH 会话内命令,或直接读插件数据目录)
# 真人签收(会话内)
# 模型说"⏸ 未归零:N 条人判欠据待开发者签收"时,手动确认
闭环中的判据空卷检测(重要创新):
把被审者产物的内容替换成负对照(掏空壳/字面壳/空转壳)再跑判据,若判据照样绿 → 该判据是空的 → 不许进合同、不许落账。
2. 记忆插件(dsh-engram-relay)—— 跨会话记忆
# 注入记忆插件
dev_inject_plugin /path/to/plugins/dsh-engram-relay
# 启用语义服务(可选,需要 DEEPSEEK_API_KEY)
# 见 plugins/dsh-engram-relay/README.md
记忆插件会维护一个 engrams.jsonl 跨会话记忆库,初始为空属正常(首次运行命令库为空),插件零报错。
语义向量模型默认使用 BAAI bge-small-zh 量化版(Apache-2.0),位于 plugins/dsh-engram-relay/model/。
3. 浏览器工具插件(dsh-browser-panel / dsh-web-tools)—— 可选
# 注入浏览器插件
dev_inject_plugin /path/to/plugins/dsh-browser-panel
# 或新版全局工具集(dsh-web-tools,三件套)
dev_inject_plugin /path/to/plugins/dsh-web-tools
# 提供:web_status / web_shot / web_dom
# 直连系统 Chrome,零第三方依赖(只用 node: 内建)
4. 预设配置
closedloop-full 预设包含开环即注入的成长人格与任务模式引导。关键预设参数:
{
// 默认开启真人首条消息自动进入任务模式
autoStart: true,
// 默认开启写闸(未声明动作时写盘被拒)
writeGate: true,
// 语义裁判(可选 DEEPSEEK_API_KEY)
// 缺省时自动降级为机械判定
// 插件作用域控制(可选)
// presetScope: "presets", // 仅在 closedloop-full 下生效
// presets: ["closedloop-full"] // 其他预设零注入、零接管
}
5. 进程释放纪律
dsh-web-tools 包含完整的进程生命周期管理(用户定向要求):
- 卸载/热重载 → 立即
release('unload') - 宿主进程退出 →
process.once('exit')同步清理同 profile 残留 - 空闲超时自动释放(默认
idleMs=10min,0=关闭) - 多实例自动回收(检测到同 profile 主进程 >1 → 清理后单例重建)
典型适用场景
- 对 LLM 输出质量有强要求的开发工作流——要求模型交付物必须通过自测才能落盘,不能说一套做一套。
- 需要跨会话记忆的项目——例如大型重构任务、长期维护项目,同类错误不再重复。
- 团队多人共用同一个 Agent 的场景——信誉账本机制让模型的行为记录可审计,烂尾项目有据可查。
- 需要真人签收确认的合规/风控流程——机器判断完成 ≠ 真正完成,真人帧签收才算闭环。
- 浏览器自动化操作场景——读取网页、截图、填表等,连接真实 Chrome 而非无头浏览器。
坑与注意
⚠️ pnpm 11 兼容性问题
pnpm 11 会因未声明的依赖构建脚本导致 ERR_PNPM_IGNORED_BUILDS,进而导致插件未进 bundles。必须在 profile 的 pnpm-workspace.yaml 中显式声明:
allowBuilds:
onnxruntime-node: false
protobufjs: false
sharp: false
⚠️ 路径不要含空格
dsh plugin 转发 pnpm 时使用 spawnSync("pnpm", args, { shell: true }),含空格路径会被截断。用无空格 junction 指向仓库目录。
⚠️ pnpm workspace 依赖提供方式
方式 B(bundle 装配 / dsh plugin add link 模式)不安装插件自身的 dependencies。dsh-browser-panel 的 playwright-core / ws / schemastery 必须能被宿主 profile 解析到,否则报错 Cannot find package 'playwright-core'。
⚠️ HTTP 服务名基准
DSH 的 HTTP 服务名是 webServer(由 @deepseek-ai/dsh-host-webserver 提供),httpServer 从未被任何官方包提供过(v0.1.0-rc.8 起各版本一致)。
⚠️ 预设默认行为
方式 B 若要开箱即用闭环,需要手动设置 agent-presets.default = closedloop-full,安装命令本身不含这一步。
⚠️ 作用域控制
默认 presetScope: "all"——三插件对所有会话全局生效。若希望仅在 closedloop-full 预设下生效,传入 { "presetScope": "presets", "presets": ["closedloop-full"] },其他预设下插件完全隐身。
⚠️ 信誉账本与模型指纹
模型指纹若被 YAML 引号污染(model: "deepseek-chat" 带进引号),会导致同一模型被算成两个,信誉分账错位。v0.3.17+ 已修复,旧账本不受影响。
与同类对比
| 特性 | yjh051108/dsh-agi-harness | Claude Code | OpenAI Agents SDK |
|---|---|---|---|
| 架构 | DSH 插件组合(热插拔) | 单体 CLI | SDK 库 |
| 信誉账本 | ✅ Wilson 下界防污染 | ❌ | ❌ |
| 写闸 | ✅ 未声明动作写盘被拒 | ❌ | ❌ |
| 真空卷检测 | ✅ 负对照三态检测 | ❌ | ❌ |
| 跨会话记忆 | ✅ engram-relay 插件 | ❌ | ❌ |
| 真人签收 | ✅ 帧级签收门 | ❌ | ❌ |
| 闭环引擎 | ✅ 完整责任闭环 | ❌ | 部分 |
| 浏览器操作 | ✅ 插件可选 | ✅ 内置 | ❌ |
| DSH 运行时依赖 | 必须 | 不需要 | 不需要 |
| 适用场景 | 需要高度责任闭环的 LLM 工作流 | 快速编码辅助 | 简单 Agent 场景 |
核心差异: 本仓库解决的问题在 Claude Code 和 Agents SDK 中几乎不存在——后者关注的是「让模型能做事」,而本仓库关注的是「让模型做的事被可信地记录和验证」。如果你需要模型交付物可审计、说到的能做到、教训能积累,选本仓库;如果你只是需要一个好用的编码助手,DSH 本身或 Claude Code 更合适。
一句话推荐结论
DSH 生态最完整的责任闭环插件组——让 LLM 的输出从「尽力而为」变成「说到做到」,代价是需要完整的 DSH 运行时环境;如果你的工作流允许深度集成 DSH,这套插件组合提供了目前最完整的信誉账本 + 真空卷检测 + 跨会话记忆解决方案。