GSD 分层帮助系统解析:get-shit-done 中 /gsd:help 的渐进式信息揭露与模式路由设计
GSD 分层帮助系统解析:get-shit-done 中 /gsd:help 的渐进式信息揭露与模式路由设计
导读
本文深入剖析 get-shit-done(GSD)这一面向 Claude Code 的规约驱动开发系统中 help.md 工作流的设计:它如何通过一条 /gsd:help 命令,把庞大的命令参考库组织成 --brief、--full、<topic>、--brief <topic> 四档可分级揭露的信息层级,避免在单次上下文窗口中一次性灌入全部内容。读完本文,你将掌握 GSD 帮助系统"按参数路由 → 惰性加载模式文件 → 原样输出 reference 正文"的实现机制、完整的参数解析规则与话题别名解析表,并能据此理解该仓库中其他工作流文件(如 progress.md、capture.md)共用的 <purpose> / <progressive_disclosure> / <reference> 三段式模板约定。
一、定位:help.md 在整个 GSD 系统中的角色
GSD(Get Shit Done)是"面向 Claude Code 单人 Agent 化开发的轻量元提示与规约驱动系统"。它把「模糊想法 → 层级化计划 → 分阶段执行」的全流程拆成 60+ 个可独立调用的 /gsd-* 斜杠命令,覆盖项目初始化、代码库测绘、阶段规划、执行、调试、验收、发布等环节。命令一多,如何在不耗尽模型上下文的前提下快速给出「正确粒度的帮助」就成了一个工程问题。
help.md 正是这套系统的帮助分发中枢。它本身不承载命令正文,而是充当一张"路由表 + 参数解析器":
- 决定用户请求对应读取哪个模式文件(brief.md、default.md、full.md、topic.md);
- 要求模型"只输出所选模式的 reference 正文,不添加任何项目分析、git 状态或下一步建议"。
从仓库结构看,它被命令层显式引用:命令定义文件 commands/gsd/help.md 通过 execution_context 指向 ~/.claude/get-shit-done/workflows/help.md,并规定"按 $ARGUMENTS 遵循该工作流"。也就是说,仓库内 get-shit-done/workflows/ 下的工作流文件是安装到用户 ~/.claude/get-shit-done/ 后的内容来源,commands/gsd/*.md 则是斜杠命令的入口壳。
二、渐进式信息揭露:为什么帮助要分四档
help.md 的 <progressive_disclosure>(渐进式信息揭露)节说明了设计动机:模式文件是惰性加载的(Mode files are lazy-loaded)——每次只读取与 $ARGUMENTS 匹配的那一个模式文件,然后逐字输出其 <reference> 正文。
四档信息粒度构成一条「由浅入深」的阶梯:
| 档位 | 触发参数 | 加载文件 | 内容粒度 |
|---|---|---|---|
| 简要回顾 | --brief / -b |
brief.md | 约 10 行顶层命令速查(适合回归用户) |
| 默认导览 | 空参数 | default.md | 一页式新手导览(3 个起步命令 + 常用命令表) |
| 完整参考 | --full / -f / --all |
full.md | 全部命令、全部标志、目录结构、配置项、常用工作流 |
| 主题切片 | 裸话题或 --brief <topic> |
topic.md | 从 full.md 提取单个章节(紧凑版仅签名 + 一行摘要) |
这套设计把「信息密度」与「上下文成本」解耦:新用户看默认导览即可上手,老用户用 --brief 秒刷记忆,需要穷尽能力时再 --full,而单点查询用 <topic> 精准命中。仓库测试 feat-3039-help-tiered.test.cjs 的存在也印证了"分层帮助"(tiered help)是一个被显式测试保障的特性。
三、参数解析规则:$ARGUMENTS 是如何被消解的
help.md 定义了严格的参数消解流程,模型必须按序执行:
- 预处理:对
$ARGUMENTS做 trim 并转为小写。 - 识别别名:
--brief(含-b)、--full(含-f、--all)为互斥的长/短形式。 - 话题判定:裸 token(如
debug)、带--前缀的 token(如--debug)、以及capture、workflow、config等一律视为话题,路由到topic.md。 - 互斥规则:
--brief与--full同时出现且不带话题时,优先--full。 - 组合规则:
--brief <topic>进入 topic.md 的紧凑作用域;--full <topic>进入全量作用域(即默认话题行为);向 topic.md 透传参数时必须保留--brief标志,以便该模式自行选择作用域。
由此得到完整路由表:
$ARGUMENTS 取值 |
读取文件 |
|---|---|
--brief(或 -b)单独出现 |
workflows/help/modes/brief.md |
--full(或 -f、--all)单独出现 |
workflows/help/modes/full.md |
| 空 / 未设置 | workflows/help/modes/default.md |
--brief <topic>(或 -b <topic>) |
workflows/help/modes/topic.md(紧凑作用域:签名 + 匹配章节一行摘要) |
其他任意形式(裸话题、--full <topic>、带 -- 前缀的话题) |
workflows/help/modes/topic.md(全量作用域:输出匹配章节全部内容) |
加载完成后,模型必须直接输出所选模式 <reference> 块的内容,不加任何修饰、项目上下文或建议——这条纪律在 commands/gsd/help.md 的 <objective> 中被再次强调("Output ONLY the reference content of the chosen tier")。
四、四个模式文件的职责与内容全景
4.1 brief.md:10 行顶层命令速查
面向回归用户的一行式刷新(One-liner refresher),正文是一个 text 代码块,列出 GSD 最常用的 8 条命令:
/gsd:new-project Initialize a project (greenfield)
/gsd:map-codebase Map an existing codebase (brownfield)
/gsd:plan-phase <N> Create a phase plan
/gsd:execute-phase <N> Execute a phase
/gsd:progress Where am I, what's next
/gsd:quick Small ad-hoc task with GSD guarantees
/gsd:fast "<task>" Trivial inline task — no subagents
/gsd:debug "<symptom>" Persistent debug session (survives /clear)
/gsd:capture Save an idea / todo / note
/gsd:ship <N> Open a PR from a completed phase
末尾给出进阶指引:/gsd:help(默认导览)· /gsd:help --full(全部)· /gsd:help <topic>(单章节)。注意 --brief 不会重复解释命令的完整语义,它的定位是"最小记忆成本"。
4.2 default.md:一页式新手导览
无参数时的默认输出,面向第一次接触 GSD 的用户。其结构是典型的三段式引导:
- 起步三步(Start here):
并提示存量代码库应先用/gsd:new-project # Greenfield: questioning → research → requirements → roadmap /gsd:plan-phase 1 # Create a detailed plan for phase 1 /gsd:execute-phase 1 # Execute all plans in the phase/gsd:map-codebase让 GSD 落地到实际代码。 - 常用命令表:以表格列出
progress、quick、fast、discuss-phase、debug、capture、verify-work、ship、help --full各自用途,覆盖"从定位到发布"的关键链路。 - 进阶路径:给出
--brief/--full/<topic>/--brief <topic>四种用法示例,并列出可查询的话题全集:workflow·planning·execute·quick·debug·capture·ship·config·milestones·spike·sketch·review·audit·progress。 - 更新方式:
npx get-shit-done-cc@latest。
4.3 full.md:完整命令参考(信息量最大的模式)
这是全系统命令知识的"单一事实来源",也是 <topic> 模式的内容母版。其内容覆盖:
- 快速开始与核心工作流:
/gsd:new-project → /gsd:plan-phase → /gsd:execute-phase → repeat,以及/gsd:map-codebase、/gsd:discuss-phase、/gsd:plan-phase的完整标志集(如--research-phase <N>、--ingest-format <auto|nygard|madr|narrative>、--tdd、--mvp与 PRD Express Path--prd)。 - 执行与路由:
/gsd:execute-phase [--wave N] [--gaps-only] [--tdd]的按波执行语义,以及/gsd:progress --do "<description>"的智能路由(dispatcher 只做分发、从不亲自执行)。 - 快模式:
/gsd:quick [--full|--validate|--discuss|--research]与内联执行的/gsd:fast(无子代理、≤3 个文件改动、原子提交)。 - 路线图与里程碑:
/gsd:phase [--insert <after>|--remove <number>|--edit <number>](含小数阶段 7.1 插入与重编号)、/gsd:new-milestone、/gsd:complete-milestone。 - 调试、Spike、Sketch、捕获、验收、发布:从
/gsd:debug(可穿越/clear持久化)到/gsd:verify-work、/gsd:ship、/gsd:review、/gsd:pr-branch、/gsd:capture --note|--list|--seed|--backlog。 - 配置与工具:
/gsd:settings、/gsd:config [--profile|--advanced|--integrations](四个模型画像 quality/balanced/budget/inherit)、/gsd:surface、/gsd:cleanup、/gsd:update。 - 附加命令清单:按「发现与规约」「规划与执行」「质量与评审」「诊断与维护」「知识上下文」「工作流编排」「仓库集成」分组罗列其余全部命令。
- 命名空间路由器:
/gsd-context、/gsd-ideate、/gsd-manage、/gsd-project、/gsd-quality、/gsd-workflow六个面向模型的两级分层路由元技能。 - 目录结构与规划配置:完整的
.planning/文件树、interactive / yolo两种工作流模式、planning.commit_docs与planning.search_gitignored两个配置项及 JSON 示例。 - 常用工作流剧本:新项目启动、中断后恢复、紧急插单、里程碑收尾、工作中捕获、问题调试六个可复制片段。
4.4 topic.md:话题别名解析与作用域控制
topic.md 是全系统最"程序化"的一个模式文件,它定义了一张话题别名解析表,将用户输入的话题别名映射到 full.md 中的具体章节:
话题别名(不区分大小写,忽略单个前导 --) |
对应 full.md 章节 |
|---|---|
workflow / core / core-workflow |
## Core Workflow(整节至 ### Quick Mode 结束) |
init / new-project |
### Project Initialization |
map / map-codebase |
### Project Initialization 下的 map-codebase 块 |
plan / planning / plan-phase |
### Phase Planning |
execute / exec / execute-phase |
### Execution |
progress / route |
### Progress Tracking + ### Smart Router |
debug / debugging |
### Debugging |
spike / sketch / spike-sketch / experiments |
### Spiking & Sketching(或对应子块) |
capture / notes / todos |
### Capturing Ideas, Notes, and Todos |
ship / pr |
### Ship Work + pr-branch 块 |
config / settings / configuration |
### Configuration |
files / structure / layout |
## Files & Structure |
modes / interactive / yolo |
## Workflow Modes |
help |
## Getting Help |
| …(完整表见下文链接) | … |
topic.md 的输出规则同样严格:
- 解析
$ARGUMENTS,检测--brief(或-b)选定紧凑作用域,否则为全量作用域;去除标志后,剩余 token(剥掉单个前导--)即话题别名。 - 用别名查表;若未命中,输出一行错误 + 去重后的规范话题名列表,并提示
/gsd:help --full,然后停止。 - 命中后先输出一行解析路由前导(preamble):
**Topic:** \` → ` ` (scope: full | compact)`,让用户看到自己到底命中了哪一节。 - 读取
full.md,按匹配单元格的提取规则与作用域输出正文:全量作用域输出从该标题到下一个同级/更高级标题为止的全部内容;紧凑作用域只输出标题 + 节内首个**\/gsd:...`**` 签名行及其后一行摘要;多节拼接("plus")则按文档顺序依次输出;子块("the /gsd:X block under …")则在该章节内从每个签名行开始,到下一个签名行或标题为止。 - 结尾固定输出一行:
More: /gsd:help --full · /gsd:help <topic> · /gsd:help --brief <topic>,且不允许附加任何项目评论或追问。
该模式的落位逻辑与 full.md 中"Every topic output starts with a preamble so resolved routing is visible"的说明相互印证。
五、从源码与测试看实现约束
从仓库证据看,这套帮助系统不是一个"演示性质"的文档,而是有明确实现约束与回归保护的正式模块:
- 命令入口壳:commands/gsd/help.md 的 frontmatter 声明了
name: gsd:help、argument-hint: "[--brief | --full | <topic> | --brief <topic>]",并把allowed-tools收敛到Read——即帮助命令原则上只读文件、不改动任何项目状态,这与"只输出 reference 正文"的纪律一致。 - 分发依赖工作流:该命令的
execution_context引用安装后的~/.claude/get-shit-done/workflows/help.md,说明命令与工作流是"壳 + 逻辑"的分离式架构,help.md承担全部路由逻辑。 - 测试保障:仓库中 feat-3039-help-tiered.test.cjs 直接针对分层帮助特性编写;bug-2954-help-md-slash-command-stubs.test.cjs 验证帮助文档与斜杠命令存根的一致性;bug-3019-help-passthrough.test.cjs 则覆盖
help参数透传的正确性。这些用例共同把"四档路由、参数解析、话题别名"固化为可回归的行为契约。
可以推断,任何新增命令或话题别名,都需要同时更新 full.md 的命令清单与 topic.md 的别名表,并接受上述测试的校验——这也是该仓库"文档即契约"工程风格在帮助系统上的体现。
六、实战速查:日常如何使用四档帮助
| 场景 | 命令 | 效果 |
|---|---|---|
| 刚装好 GSD,想快速上手 | /gsd:help |
一页新手导览,含 3 个起步命令 |
| 用了几天,想回忆顶层命令 | /gsd:help --brief |
约 10 行速查 |
| 想穷尽某个领域(如调试) | /gsd:help debug |
输出 ### Debugging 整节 |
| 只想看某命令的签名与一行摘要 | /gsd:help --brief ship |
紧凑作用域,省上下文 |
| 想了解全部能力边界 | /gsd:help --full |
完整命令参考 + 目录结构 + 配置 |
| 话题记不清、拼写不确定 | /gsd:help <不存在的词> |
返回规范话题列表,辅助纠正 |
| 更新 GSD 后 | npx get-shit-done-cc@latest 或 /gsd:update |
保持帮助内容与命令同步 |
七、小结
GSD 的 help.md 用"一张路由表 + 四个模式文件 + 严格输出纪律"实现了可量化的分层帮助:--brief 保证最小上下文开销,--full 保证知识完整性,<topic> 保证单点可达,--brief <topic> 则在两者之间取折中。这种渐进式信息揭露模式不仅服务于 /gsd:help 本身,也示范了规约驱动系统中"把文档组织成可被模型按需消费的结构化模块"的通用方法论——同样的 <purpose> / <progressive_disclosure> / <reference> 三段式骨架,在 get-shit-done/workflows 目录下数十个工作流文件中被反复使用,构成了整个 GSD 运行时行为的最小单元。