前言¶
DeepSeek Harness(DSH)自带 standard、ptc、minimal、cordis 四种工作模式,主要解决的是「能调哪些工具、以什么形态执行」。日常做智能体或长任务时,更常卡住的是另一件事:什么时候才算允许下结论——口头约定容易在赶进度时被绕过,做完才发现方向错了,或把印象包装成事实。
dsh-preset-deep(界面里叫「梁圣模式」)由社区维护者 anticbv 发布,是 DSH 的第五种工作模式插件。它把交付契约写进 persona 与 plan-mode,而不是留给每次对话临时商量;目标不是跑得更快,而是让结论和改动更难糊弄。
目录页:anticbv/dsh-preset-deep
源码与文档:github.com/anticbv/dsh-preset-deep(GitHub 星标 2;分类:工作流)
这是什么¶
dsh-preset-deep 是一个 npm 包形态的 DSH bundle:通过 cordis.patch.yml 向 Harness 注入名为 preset-deep 的 preset(显示名「梁圣模式」),并附带浏览器侧 lib/client.js 为模式标签替换图标。当前发布版本为 0.1.2;许可证为 MIT 或 Apache-2.0 二选一(preset 结构派生自官方 ptc preset,MIT)。
核心能力:八条硬约束¶
README 将以下八条定义为硬约束(对应一类常见失败),写入 persona,并在 plan-mode 中要求计划包含「证伪设计」。
| # | 能力 | 拦住的失败 |
|---|---|---|
| 1 | 开工四问:专家会做哪些没被要求的事、从什么一手材料入手、用什么具体方法、谁来判定对错 | 一上来就写代码,做完才发现方向错了 |
| 2 | 知止:先写完成条件(命令或断言),同一路径两次失败才停下报卡点 | 无限试错、假装完成 |
| 3 | 来源三分:每个事实标 [文件] / [检索] / [记忆],[记忆] 不得进结论 |
把印象当证据 |
| 4 | 能算不算:数学、日期、边界、集合运算一律写代码验 | 心算造出的错误数字 |
| 5 | 允许不知道:拿不准标 [未知] 并写明缺什么 |
用「可能/大概」把不确定包装成结论 |
| 6 | 推理拆解:复杂推理拆成可独立判真假的小命题,逐个判再组装 | 一大段看起来严密、其实没有可检验环节的推断 |
| 7 | 交叉验证(按需):拿不准的断言先自己换角度重查;仅在你明确要求时,才派 2–3 个子代理独立作答;交付前复核也仅在要求时派不带本次上下文的复核者 | 自说自话的结论,没人从反面碰过 |
| 8 | 子代理:看得见,不主动用——可读 list_subagent_models,除非你明确要求否则不派活;派活时按「当前可用 → 成本最低 → 能力足够」,同一条连失两次即换 |
为省 token 把判断外包,或该派时闷头硬扛 |
与自带 PTC 模式的差异(README 对照表要点):梁圣模式的计划必须含证伪设计(至少两条能推翻自己的证据及取得方式);结论必须标 [实] / [推] / [未知];能算的不许估;改动范围只碰被点名的文件,收尾贴 git diff --stat。
架构要点¶
- 一个包,两个半边:
cordis.patch.yml声明 preset 与图标宿主行;lib/client.js在浏览器侧用 CSS mask 把模式图标画成剪影,不经过 Cordis 宿主配置里的icon字段(DSH preset 无icon字段)。 - preset 打开子代理的
modelSelection,但真正允许换到非父会话路由,需要在 profile 层的cordis.patch.yml配置subagent-model-selection-settings白名单。 - 子代理 delegation 与
tool-executor-ptc(run_code)一并挂在该 preset 上,因此功能下限与 DSH 是否带 PTC 执行器相关(见下文版本说明)。
安装与启用¶
推荐(npm,0.1.2 起)
dsh plugin add dsh-preset-deep
装完后重启 Harness,新开会话选择「梁圣模式」。README 记载:在 DSH 0.2.2-alpha.2 上实测;dsh plugin add 会把包写入 profile 的 dsh.profile.bundles,一般无需手改。若报 workspace 错误,可在命令末尾加 -w。
装前注意:若 profile 的 cordis.patch.yml 里已有手写的 preset-deep 整段定义,须先删掉该段,否则同名冲突;若仅为顺序曾为 preset-deep 加过 inject: 栅栏,保留栅栏条目即可。
备选路径(README 还提供从 tarball 解压到 ~/.dsh/profiles/<profile>/node_modules/ 或手动复制目录,并在 profile 的 package.json 的 dsh.profile.bundles 末尾加入 "dsh-preset-deep")。修改 package.json / cordis.patch.yml 前应先备份——DSH 对它们是整体替换,不是合并。
典型用法¶
选模式后的行为预期¶
- 计划阶段应出现证伪设计;交付结论应带证据等级标签。
- 需要子代理时明说,例如:「派个子代理去做 X,用
<provider>/<model>」。默认不会为省 token 主动外包判断,也不会未经要求开多路交叉验证。 - 交叉验证示例表述:「派 2–3 个子代理独立回答这个问题」;重要结论交付前可加:「派一个不带本次上下文的复核者看这份结论」。
子代理换模型(profile 白名单)¶
没有会话级白名单时,子代理只能使用父会话同一条路由;显式指定未授权路由会报 child LLM route "<p>/<m>" is not allowed for this Session。在 profile 的 cordis.patch.yml 追加(按环境填空):
- id: subagent-model-selection-settings
name: '@deepseek-ai/dsh-tool-subagent/model-selection-settings'
config:
enabled: true
allowedModels:
- { provider: deepseek-account, model: deepseek-flash }
- { provider: <你的 free provider>, model: <模型 id> }
模板文件见仓库 examples/allow-list.patch.yml;五分钟验收清单见 examples/acceptance.md(四道测试题 + 判据 + 四类失败签名)。
收紧 persona¶
发布版 persona 不点名任何 provider 或模型。若要写死本机常用路由或自动派免费模型,可改 cordis.patch.yml 里的 persona 行,改后执行 node scripts/validate.cjs 校验(会拦住 persona 里写死他人 provider 等回退)。
版本与兼容性¶
- 包声明无
engines.dsh与@deepseek-ai/dsh*的peerDependencies,刻意不设版本门以扩大可装载范围。 - 功能下限:DSH 0.2.2-alpha.2(自该版起官方
ptcpreset 才带tool-executor-ptc,且子代理键为modelSelection/modelDiscovery)。README 记载:0.2.2-rc.1(桌面版实测)模式挂载、图标、子代理切路由均通过;≤ 0.2.1时 bundle 可能仍装载但tool-executor-ptc解析失败,模式卡可能显示异常。 - 若已装 billion-context,README 建议在
preset-deep行后补顺序栅栏:inject: [biliBasicCompactionPolicy]。
适用场景与注意¶
适合谁:希望把「何时能下结论、证据从哪来、计划如何被推翻」固化进 Harness 工作流,而不是靠对话临场约束的开发者;与 PTC 一样依赖代码执行能力,适合愿意在计划里写证伪路径、在结论里标 [实]/[推]/[未知] 的场景。
务必注意:
- 插件以当前 DSH 进程权限运行;安装前请自行查看源码与许可证(MIT OR Apache-2.0)。
- SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;本介绍事实均来自仓库 README 与
package.json。 - 图标靠
lib/client.js顶部LABEL文本定位;排查可执行window.__LS_ICON_STATUS__,tagged: 0表示未定位到标签。
结尾¶
dsh-preset-deep 在 DSH 生态里补的是「工作流」维度:在工具能力之外,用 preset 把先证伪、再交付的契约写进每次会话。若你已在用 Harness 0.2.2 系列并需要更严的结论纪律,可用 dsh plugin add dsh-preset-deep 安装,重启后选择梁圣模式,并按需配置子代理白名单。
- 目录页:https://www.skillhub.cn/plugins/anticbv/dsh-preset-deep
- GitHub:https://github.com/anticbv/dsh-preset-deep