Handbooks
指南

渲染输出

Markdown、HTML 站点、单个自包含页面、面向智能体的定位索引,以及 llms.txt——全部确定性,重跑零成本。

handbook render --work <workdir> [--title <t>] [--html] [--html-single] [--agent-site] [--llms-txt]

不用 LLM。不联网。确定性。 同样的模型进来,逐字节相同的文件出去——所以它属 于 CI,每次提交都该跑。

五种输出

总是会写出。

<out>/
  overview.md      system prose + a mermaid stage map + "see also" links
  index.md         every stage, nested by depth, a paragraph each
  <stage-id>.md    one page per content-bearing stage
  register.md      the cross-stage state table (only when registers exist)

阶段页面先给出该阶段的摘要和指向子阶段的链接,然后是它的文件——按 phase 2c 决定 的方式分组排序,每个文件渲染成一张文件卡片:用途、角色、生命周期、调用事实, deep 卡片还带逐函数注记。

两个值得了解的行为:

  • 过期页面会被清理。 阶段 id 会在两次生成之间变化;每次渲染会先删除上一次渲染 的页面,因此改名后的阶段不会留下幽灵页面被 skill 打包器捡走。
  • 每个阶段的寄存器小节是幂等的——只在标记不存在时才追加到标记之下。重复渲染 永远不会堆出重复内容。

链接到你的源码

handbook render --work $WORK --source-base-url https://github.com/me/repo/blob/main

手册里的每个文件路径都会变成指向真实文件的链接。如果你希望手册引用的是生成它时的 那份代码,就把这个地址指向某个 tag 或 commit SHA,而不是 main

不加这个标志,输出中完全不含任何外部 URL——对私有代码库来说,这正是合适的默 认值。

标题与语言

handbook render --work $WORK --title "Payments Service — Engineering Handbook"

叙述语言在生成时就已固定(--narrate-lang),保存在 phase3/narration.json 中。渲染器从那里读取——每个标签、标题和表头都会相应地本地化。两种语言下的结构 完全一致,因此读取输出的工具不需要知道它是哪种语言。

把重新渲染变成习惯

渲染免费且确定性,所以把它接进 CI:

.github/workflows/handbook.yml
- run: handbook render --work work/api --title "API Handbook" --html --agent-site --llms-txt
- run: handbook skill --handbook work/api/handbook --out skills/api --name api \
    --work work/api --source . --agent-dir work/api/handbook/agent
- run: handbook validate --skill skills/api --source .

CI 集成

发布 HTML 站点

输出是一个链接全为相对路径、不含外部资产的静态目录,所以任何静态托管都行:

# GitHub Pages
cp -R work/api/handbook/html/* docs-site/ && git add docs-site

# Netlify / Vercel / S3 / nginx
npx serve work/api/handbook/html

llms.txt 放在站点根路径下,好让智能体能找到它。

本页目录