dsh-human-coding
Agent & Workflowgameswu/dsh-human-coding
Adds a 'human coding' mode to DeepSeek Harness where the AI sets challenges, supervises the user's implementation, and reviews the result.
- dsh
- dsh-plugin
- dsh-plugins
README
dsh-human-coding · 古法编程模式
把 AI 的「手」收起来,找回自己写代码的感觉:你提需求,AI 只搭骨架、出题, 你来补全实现,最后由 AI 验收、讲思路。一套 DeepSeek Harness 插件包 + 「古法编程」预设,装上就能玩。
怎么玩
出题 —— AI 把骨架和测试写进你的项目,然后弹出提问:

- 接受挑战:进入答题模式,AI 从此只答疑、给提示,绝不代写;
- 跳过:AI 像平时一样直接把需求做完。
出题有门槛:请求必须涉及真实代码(AI 已把骨架写进项目文件,才会出题—— 纯问答、配置调整、单行修改不会触发)。请求较大时 AI 只挑其中一块出题, 说明覆盖范围,其余部分等挑战结束后正常完成。
答题 —— 输入框上方常驻「古法」状态条,显示题目、阶段、提交次数和提示 消耗(已用/预算),随时可以点 提交 / 放弃(直接打字说「提交」「放弃」 也一样):

卡住了就提问:每次提问扣一次提示次数(每道题的预算由 AI 出题时设定), 提示一次比一次具体——方向 → 思路 → 接近答案,但不会替你把代码写出来; 预算用完后 AI 会引导你提交或放弃。
验收 —— 提交后 AI 跑测试、评审你的实现,并给出 0-1 的完成度分数。 不通过可以继续(不扣提示预算)或放弃;通过后你来定最终代码长什么样:

- 采用你的写法:保留你的实现,AI 总结点评;
- AI 略做修改:以你的实现为基础小修,逐处解释;
- AI 彻底重写:按 AI 的写法重写,并对比讲解差异。
放弃或收尾之后,AI 恢复正常编码能力。题目状态记录在会话里,不会在项目中 留下任何额外文件。
统计 —— 每次挑战的结果沉淀为长期记录,在 设置 → 插件 → dsh-human-coding 卡片中查看:接受率、通过率、平均提交次数、提示消耗、 收尾分布、平均完成度与难度加权评分(难度由 AI 出题自评、验收可修正)。 可随时清零重来。
安装
一次装好,之后每次新建会话选「古法编程」就能用。
# 在仓库根目录,二选一执行
bash scripts/install.sh # Linux / macOS / Git Bash
.\scripts\install.ps1 # Windows PowerShell(可加 -Profile <name> 指定)
脚本只做三件事:构建插件包、把插件装进 Profile、准备「古法编程」预设——
预设不存在时会自动以 standard 为基础创建,已存在则只合并差异行。不会动你
的其他设置:合并前自动备份(agent.cordis.yml.bak),preset.yml 仅在
缺失时创建。插件更新后重跑安装脚本即可同步 persona 片段与依赖。
万一脚本提示找不到 standard 预设:手动以 standard 为基础建一个名为
human-coding 的预设(位置
${DSH_HOME:-~/.dsh}/.agent-presets/human-coding/),再重跑脚本即可。
装完重启 Profile,新建会话选「古法编程」,然后刷新页面(客户端 状态条依赖页面加载时的插件清单)。
开发
pnpm install # 装依赖
pnpm typecheck # 类型检查
pnpm test # 状态机与统计单元测试
pnpm build # 打包 Host + Client 两半
源码结构:src/host/(状态机、gufa_* 工具、提示段、会话投影、统计
持久化)、src/client/(状态条、统计卡片)、src/shared/(共享状态模型)、
preset/(预设追加片段)。完整设计见 docs/design.md。
排障
- 新会话里没有 gufa_ 工具*:确认脚本执行成功、Profile 已重启、预设 片段已并入,并在新会话选了「古法编程」;
- 状态条不显示:先刷新页面;仍不出现就按 F12 看控制台里有没有本包 的模块报错;
- 统计卡片不显示或读不到数据:确认插件已重新装入(重跑安装脚本后
Profile 已重启)、页面已刷新;卡片位于 设置 → 插件 页,命名空间
dsh-human-coding; - 组合挂载报错:会话启动时报错通常是预设文件行 id 冲突或包名解析失败,
对照
preset/agent.cordis.yml检查。