dsh-goal-scaffold
Long-task gatekeeper for DeepSeek Harness: detects one-shot mammoth requests, asks whether to plan first, and scaffolds plan.md + a capped goal before the agent starts
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:zriyox/dsh-goal-scaffold说明文档
阅读完整 README ↗dsh-goal-scaffold
English | 中文
一个 DeepSeek Harness(dsh)插件:拦住一句话梭哈。
它防的是这个场景:急性子用户一句"给我从零写个完整的管理系统"直接开跑,agent 一头扎进去,二十分钟后产出了一堆代码——没人规划过,没有验收标准,跑偏了也没人能说清。goal-scaffold 在消息进模型之前的边界上识别"真人发的长任务",每个会话最多问一次:
真人发出长任务消息
→ goal-scaffold(agent/pre-step)识别到范围信号
→ 弹三选:先规划(推荐)/ 直接开始 / 本会话不再提示
→ 选"先规划" → 原消息原样放行 + 追加一条插件指令:
先写 plan.md(每项带可验证的验收条件)→ create_goal(轮次上限)
→ 给你确认 → 再开工,每完成一项打勾
和 dsh-verify-judge 天然配套:守门员负责"想清楚再跑",验收员负责"说完成了要真验"。
安装
dsh plugin --profile web add github:zriyox/dsh-goal-scaffold
# 或本地目录:
dsh plugin --profile web add /absolute/path/to/dsh-goal-scaffold
行为说明
- 每会话最多问一次;"本会话不再提示"会彻底安静。
- headless 安全:没有问人渠道时(如 headless 一次性任务)消息原样通过,不阻塞不报错。
- 只认真人消息:goal 续跑递话、插件注入、工具产物都不会触发。
- 取消即放行:你把问题关掉去打字,原消息照常进行。
实测记录(2026-08-15,Web UI 真实驱动)
- 长任务消息 → 弹三选 → 选"先规划" → 模型产出 9 项带可运行验收命令的 plan.md、建 goal(UI 出现目标卡片)、逐项执行打勾,最终 9/9 完成盖章;
- 短问答消息 → 不弹(无误报);
- 选"Just start" → 直接开工,不产生任何规划产物;
- 选"本会话不再提示" → 后续长任务消息不再弹;
- headless 长任务 → 安静直通,无任何干扰。
配置
- id: goal-scaffold
config:
enabled: true # 总开关
minLength: 80 # 参与判定的最小消息长度
extraSignals: ['迁移'] # 自定义范围信号词(大小写不敏感)
开发
pnpm install
pnpm run build # tsc → lib/