Plan-first:让 DeepSeek Harness 的 agent 在动手前先输出一份完整的实现方案,并在获得用户确认后才开始实现。
一个轻量 DSH 宿主端插件:通过 systemPrompt.section() 向每次模型步骤注入一个有序的 plan-first 提示段落,强制 agent 遵循「方案先行」工作流。
启用后,agent 对任意用户请求都会:
- Step 1 �� 生成完整实现方案 —— 覆盖组件选择 / 代码架构 / 实现路径 / 潜在问题 / 参考方案(
web_search)/ UI 设计 / 错误日志策略 - Step 2 · 等待用户确认 —— 先输出方案,明确征求确认后才开始实现
- Step 3 · 彻底记录错误 —— 不静默重试,先分析根因,报错带上下文与建议修复
- Step 4 · 实现总结 —— 对比方案与实际实现的差异、遗留事项
在装有 dsh-super-injector 的 DSH 环境中,运行时注入(免重启):
# 构建(需要 DSH 源码 checkout;跳过可手动维护 lib/)
DSH_CHECKOUT=<path> bash scripts/build.sh
# 运行时注入
dev_inject_plugin C:/path/to/dsh-plan-first注入后在插件清单中应可见:
[active] @dsh-external/dsh-plan-first [injected] · host ✓
新开一条用户消息,若 agent 的回复以「完整实现方案 + 等待你确认」开头,即表示提示段落注入成功。
├── src/index.ts # 插件宿主源码(TS)
├── lib/index.js # 编译产物(被加载的运行时代码)
├── scripts/build.sh # tsc 构建脚本(DSH_CHECKOUT 自动探测)
├── package.json
└── tsconfig.json
即使插件是安装前就开着的旧会话(系统提示装配可能没吃到全局 section),也可以在当前会话里手动触发:
/plan-first
效果:把 plan-first 提示段注册进当前会话的 agent 作用域,从下一回合开始生效;重复执行幂等(返回“已生效”)。
注:系统本身另���一个
/plan命令(进入 DSH 的 plan mode),与本插件的/plan-first无关、互不冲突。
- 资源注册挂在
ctx.effect上,热重载 / 卸载自动清理(注入器规范)。 - 提示词刻意不含
{{...}},避免被 system-prompt 变量插值器解析为未注册变量而抛unknown prompt variable。
BSD-3-Clause