dsh-smith
Two DeepSeek Harness agent presets: `dsh-smith`, which builds harness agents and Cordis plugins, and `dsh-forge`, a software-delivery agent. Each carries a thinking protocol, a layered memory discipline, and a standing team of named experts.
AI Analysis
核心用途是提供两个强化了思考协议和专家团队的 Agent 预设。适合需要开发 DSH 插件(使用 smith)或进行软件研发交付(使用 forge)的用户。
Install
This plugin has no verified bundle, or compatibility checks failed. Read the repository notes first. Read the full README ↗
README
Read the full README ↗DSH Presets · 智能体工坊与研发工坊
两个 DeepSeek Harness agent preset,一个仓库。每个都是一个会话挂载的一份组合,各自强化思考协议、记忆纪律与具名专家团队,各带一套随行技能。
Two DeepSeek Harness agent presets in one repository:
dsh-smithbuilds harness agents and Cordis plugins,dsh-forgedelivers software.
该用哪个
dsh-smith · 智能体工坊 | dsh-forge · 研发工坊 | |
|---|---|---|
| 做什么 | 造 DSH 智能体、写 Cordis 插件 | 交付软件:写、改、测、调、审 |
| 专家 | architect / verifier / protocol / chronicler(4) | architect / verifier / debugger / protocol / chronicler(5) |
| 计划协议 | 组合设计(平面 / realm / 行清单) | 软件工程(改动面 / 接口 / 边界 / 验收) |
| 工具呈现 | 原生工具表 | mode: both:原生工具表 + run_code 的 TypeScript SDK |
| 自省工具 | 含 tool-cordis 行(本部署下被门关掉) | 不含该行 |
血统(drift-check 比对的上游) | 出厂 cordis | 出厂 standard |
| 详细文档 | docs/dsh-smith.md | docs/dsh-forge.md |
两个都装也可以:它们互不覆盖,各自的源目录就是各自的 preset 目录,会话启动时由选择器决定用哪个。
快速开始
前置条件:已安装 DeepSeek Harness(dsh),Node.js ≥ 20。
git clone https://github.com/ABccgh/dsh-smith.git
cd dsh-smith
node bin/install.mjs # dsh-smith(默认)
node bin/install.mjs --preset dsh-forge # dsh-forge
安装脚本把对应的 preset 目录复制到 ${DSH_HOME:-$HOME/.dsh}/.agent-presets//。它不会覆盖已存在的同名预设(要替换请加 --force)。--preset 省略时默认是 dsh-smith,所以 node bin/install.mjs 的含义与以前完全一致。
脚本会先打印它选定的 home 与目标路径,并在该目录缺少 harness 常见条目(profiles/、sessions/、storages/、settings.yaml)时给出警告——把预设装进一个永远不会被扫描的目录是静默失败:复制成功,预设永远不出现。harness 装在别处就用 DSH_HOME 或 --home 指定。
--force 是真正的替换,不是合并:它先删除目标目录再复制。否则旧版本删掉的技能会留在磁盘上继续被加载,而你以为自己装的是新版本。
⚠️ 装完必须开一个新会话
preset 在会话启动时挂载。已经开着的会话不会获得它——它继续跑自己启动时那套组合。装完在旧会话里问「怎么没生效」,是这件事最常见的困惑来源。
更隐蔽的一种:在会话中途切换预设,会话头里的
agentPreset字段不会跟着改写,于是「记录」与「所见」不一致,很容易把排查引向错误方向。判断依据以运行时工具表为准,不要以文件头为准。命令行没有
--agent-preset这样的开关(dsh的选项族是--profile/--from-default-profile/--patch/--dump-config/--dump-default-config)。预设由会话启动时的选择器选定,装完新开一个会话,在模式选择器里选「DSH 智能体工坊」或「DSH 研发工坊 · DSH Forge」。
验证状态
按字面读。 本仓库区分「已验证」「只做了静态检查」「未验证」,而唯一算数的挂载检查有一个硬前提。
挂载检查为什么需要出厂 cordis 预设的会话
动态插件探针(cordis_define + cordis_run)是唯一能在活着的 harness 进程里问到 agentPresets.standingKeyFor(id) 的路子,而它需要 cordis_* 工具。那套工具只在注册了 tool-cordis 行的组合里存在——实测的 live Loader 状态:
| 预设 | tool-cordis 行 | cordis_* |
|---|---|---|
出厂 cordis | enabled=true,fiberPhase=active | 有 — 挂载检查在这里跑 |
dsh-smith | enabled=false(!!js 门) | 无 |
dsh-forge | 不含该行 | 无 |
原因是那四个 inspect provider 是进程全局的,宿主启动时就占用了它们的 id,所以其它组合必须把这一行关掉,否则整体挂载失败。
node bin/verify.mjs不是那条挂载检查,而且换会话也救不了它。 它自己new cordis.Context()起一个裸 Cordis 运行时,按定义不含 harness 注册表,所以agentPresets永远缺席,它从任何会话都会打印INCONCLUSIVE——实测两次、输出逐字相同:一次在普通 shell,一次就在那个cordis_*齐全的出厂cordis会话里。它的头注释现在这么写着,它自己也会这么告诉你。它是诊断工具,不是挂载判定。
两个预设的验证结果
dsh-smith | dsh-forge | |
|---|---|---|
挂载(standingKeyFor) | 通过 | 通过 —— MOUNTED OK |
| 组合清单 | 36 行全部组合,29 行 ACTIVE,4 行按设计关闭 | 38 具名 = 3 group + 35 叶,其中 31 激活、2 conditional、2 关闭 |
| 未激活/无贡献的行 | 无 | 无 |
静态预检(preflight.mjs) | validated: 21 skipped: 10 failed: 0 | validated: 24 skipped: 10 failed: 0 |
| 技能 lint | 5 个全 clean | 4 个全 clean |
| 工具到达模型 | 四条专家 + 两条委派工具在表内,两条产品行缺席 | 32 项,run_code 在,两条产品行缺席 |
| 只读角色过滤 | expert_verifier 强制生效(含差分对照) | expert_verifier 与 expert_debugger 强制生效;在 PTC 下是「绑定不存在」而非「被拒绝」 |
PTC / tools:sdk | 不适用(原生模式) | 可调用 —— 子代理 await tools.glob(...) 成功返回 15 条路径 |
详细依据与逐条读数在各预设自己的文档里:docs/dsh-smith.md、docs/dsh-forge.md。
未验证,且不声称
- 冷进程里的挂载是否同样干净——推断(
!!js门读process.platform与cordisInspect,冷进程同值),未实测:实测它要另起一个 harness 进程。 expert_verifier在dsh-forge下未单独委派——它与expert_debugger的toolFilter/provider/maxDepth/backgroundMode逐字对等,所以「测一条覆盖两条」是由配置对等推出,不是实测。restrict()本身造成了拒绝(而非其它同效机制);toolFilter遇到未知名字是否 fail-loud、与allow如何组合。dsh-forge的repeat-tool-reminder行与宿主的同名行共存是否会让提醒出现两次——未测。
仓库结构
bin/ 六个脚本,两个预设共用
presets.mjs 唯一的预设登记表:id、源目录、上游预设、预期工具
install.mjs 安装(--preset / --force / --home)
preflight.mjs 静态检查:解析每一行的包 + 用插件自己的 schema 验证配置
verify.mjs 诊断:本机 CLI 能否触及 harness 运行时(不是挂载判定)
lint-skills.mjs 技能 frontmatter
drift-check.mjs 与各自的出厂上游逐行比对(只报告,不同步)
dsh-smith/ preset 源目录(组合 + preset.yml + 5 个技能)
dsh-forge/ preset 源目录(组合 + preset.yml + 4 个技能)
docs/
dsh-smith.md 逐预设文档
dsh-forge.md
agent-notes/ 本仓库自己的记忆层:PROJECT / DECISIONS / BOARD
AGENTS.md 给 agent 的工作区规则(自动加载)
bin/preflight.mjs 通过不等于能挂载,它自己会这么说。它看不见的三类恰好是最要命的:激活了但什么都没贡献的行、泄漏到根 realm 的服务、以及写在 apply() 而不是 schema 里的校验。另外它不拒绝未知配置键(schemastery 对多余的键不报错),所以把键名敲错但必需字段仍在的情况它看不见。
npm run check 在 harness 之外会以退出码 1 结束,这是设计如此。 它把 lint、preflight、verify 串起来跑,而 verify 把「没检查」当作不通过。所以本仓库不适合直接把 npm run check 放进 CI:CI 里请只跑 node bin/lint-skills.mjs && node bin/preflight.mjs(纯静态、退出码可靠)。npm run check:all 覆盖两个预设。
许可与来源
MIT。见 LICENSE。
dsh-smith/skills/ 下的 editing-cordis-compositions 与 cordis-plugin-development 复制自 DeepSeek Harness 官方发行包 @deepseek-ai/dsh-agent-presets 的 cordis 预设,遵循其 MIT 许可,版权归 DeepSeek 所有;其余内容(含 dsh-forge 的四个技能)为本仓库原创。