3.1 dsh-doc:文档结构化与评审
它是什么
dsh-doc 的官方描述是:创建、重构、评审、审计或迁移 DeepSeek Harness 文档。
它是 dsh 团队写文档的主力技能,也是这批技能里体量最大的一份:SKILL.md 约 18418 字节,另带 4 个 references 与 9 个 templates。作为参照,同批技能里体量最小的 agent-experience 只有 70 字节——一个技能可以短到只是一句话,也可以像 dsh-doc 这样自带一整套文档方法论。
注意描述里的五个动词:创建、重构、评审、审计、迁移。它管的不是“写新文档”这一个动作,而是文档的整个生命周期——老文档要重构,写完要评审,定期要审计,结构变化要迁移。这也是它体量大的根本原因:覆盖的场景多,每个场景都要有规矩。
这批技能全部住在 dsh 仓库的 .agents/skills/ 目录,对应六层发现优先级里的 project-agents 层(rank 200)。项目根目录取包含 .git 的最近祖先目录,所以团队成员克隆仓库后自动获得同一套文档规范,不需要每人各自安装、各自维护版本。
它能火不是没有原因:文档工作最难的从来不是“写”,而是结构、层级、元数据、双语同步这些看不见的东西。模型生成文字的速度早就不是瓶颈,瓶颈是生成的文字有没有结构、能不能被检索、双语之间对不对得上——这些恰好都是技能能固定的部分。
九个模板:文档类型决定结构
官方记录 templates 目录共 9 个模板,覆盖包文档、持久化文档与升级指南三大场景。下表逐个说明其中八个的名称与对应文档类型——名字本身就说明了用途:
| 模板 | 对应文档类型 | 固定下来的内容 |
|---|---|---|
package-bundle.md |
组合包文档 | 组合包的组成与装配说明 |
package-group.md |
包组文档 | 一组相关包的总览与导航 |
package-library.md |
库文档 | 面向使用者的 API 说明 |
package-reference.md |
参考包文档 | 字段、配置项等查阅型内容 |
persistence-change.md |
持久化变更记录 | 一次存储相关变更的记录格式 |
persistence-format.md |
持久化格式说明 | 数据落盘的格式与约束 |
persistence-release.md |
持久化发布说明 | 发布涉及存储层时的说明 |
upgrade-guide.md |
升级指南 | 破坏性变更的迁移步骤 |
已记录名称的八个分属三条线:package 系四个,管包类文档怎么写;persistence 系三个,把存储相关文档拆得最细——变更、格式、发布各管一段,因为持久化改动直接影响老数据能不能被新版本读出,混在一篇里写必丢信息;upgrade-guide 一个,专治破坏性变更。
九个模板对应九种文档类型。这意味着“该写什么、按什么顺序写、每节放什么”是被固定下来的,不靠作者临时发挥。写库文档的人不会漏掉 API 说明,写升级指南的人不会被漏掉迁移步骤——模板先行的价值就在于此。
四个 references 的分工
| 参考文件 | 分管领域 | 为什么单独拆出 |
|---|---|---|
metadata-links-i18n.md |
元数据、链接与国际化 | 标题、描述、kind 字段和跨语言链接是高频出错点,值得独立规则 |
review.md |
评审要点 | 文档写完要走一轮评审,不是写完就发布 |
structure-hierarchy.md |
结构与层级 | 目录怎么组织、父子页面怎么分层 |
style.md |
文风 | 文字质量标准,与 dsh-prose-standard 同源 |
主指令负责流程与判断,四个 references 各管一个专项。这种“主文件 + 专项参考”的结构本身就是技能组织的范式:SKILL.md 保持可读,细节按需加载,改规则时也知道该改哪一份。
其中 metadata-links-i18n.md 的存在特别值得抄。元数据和链接的问题有个共同点:不出在正文里。正文写错了评审时能看出来,标题写错、kind 标错、双语链接指错语言版本,评审时根本想不起来查。把它单独拆成一份参考,等于给这类隐形问题一个固定的检查入口。
大技能为什么不会拖慢会话
有人看到 18418 字节就担心:每次会话都背着这么一大篇?不会。skill 的官方定位是可选的指令而非会话事件:模型可调用的会话目录只使用 name 与 description,从不使用正文;正文要等模型判断任务相关、主动调用 skill 工具,或用户输入 /技能名 时,才完整加载。宿主也不会根据文件扩展名把 references 和 templates 一股脑塞进上下文。
所以技能可以放心做得深——入口必须小,内容可以厚。写 description 时把“什么时候该用我”说清楚,比堆正文更重要。
什么时候会触发它
| 场景 | 技能做什么 |
|---|---|
| 新建一个包,要写它的文档 | 按对应模板起手,该有的节一节不缺 |
| 老文档结构混乱,要重构 | 先过结构层级的规则,再动内容 |
| 改了存储格式 | 走持久化三件套:变更记录、格式说明、发布说明 |
| 发布了破坏性变更 | 按升级指南模板列迁移步骤,不靠用户自己猜 |
| 定期巡检 | 拿元数据与链接的规则审计存量文档 |
对个人作者的启发是:写文档前先花十秒选模板。这十秒省的是写完发现结构不对、推倒重来的半小时。
值得你抄走的三条方法
第一条:文档类型决定模板。 不要用一套结构写所有文档。参考包、库、组合包的读者预期完全不同:查参考的人要精确字段,读库文档的人要能照着跑的示例。模板先行能避免“写着写着跑偏”。落地做法很简单:建一个 templates/ 目录,每类文档一个文件,新建文档时先复制模板再填内容。
第二条:元数据与链接单独成篇。 元数据(标题、描述、kind 字段)决定文档能否被正确检索和索引,跨语言链接决定双语站点不出现断链。这两类问题不出在正文里,最容易被忽略,所以值得独立规则、独立检查。落地做法:写一份元数据检查清单,每次发布前逐项过。
第三条:评审是独立环节。 review.md 单独存在,意味着文档流程里有明确的一环是“写完先评再发”。把评审从写作里拆出来,写的人敢收尾,看的人有据可查。落地做法:文档类改动也走评审流程,清单照 review.md 的思路列,哪怕只有五条。
你要不要装
| 你的情况 | 建议 |
|---|---|
| 维护技术文档站 / 知识库 | 强烈建议,直接改造使用 |
| 团队有文档规范 | 建议,用来把规范变成可执行清单 |
| 只是偶尔写个 README | 不必,杀鸡用牛刀 |
判断标准很简单:你一年写超过十篇需要他人阅读的文档,就值得装;低于这个数,模板带来的收益抵不过维护成本。
怎么改造成你的版本
# 取过来(路径按你的克隆位置调整)
cp -r /path/to/dsh/.agents/skills/dsh-doc ~/.dsh/skills/my-doc
放 ~/.dsh/skills/ 属于用户层(rank 400),对所有项目生效;只想给单个项目用,就放进项目的 .agents/skills/(rank 200),随仓库走,队友克隆即得。
然后改三处:
description里的“DeepSeek Harness 文档”换成你的项目名——description 是模型唯一必读字段,决定技能能否被选中。改写时保留原来的动词结构:text 改前:创建、重构、评审、审计或迁移 DeepSeek Harness 文档 改后:创建、重构、评审、审计或迁移 XX 项目的技术文档- 删掉你不需要的模板,保留三五个最常用的;模板越少,作者越容易选对;
references/structure-hierarchy.md里换上你的目录约定。
改完验证一下:新起一个会话,让它“按规范写一份 XX 文档”,看它是否主动调用你的技能;也可以直接输入 /my-doc 强制加载,检查清单和模板是否按预期工作。
小结
dsh-doc是 dsh 团队的文档主力技能:主指令约 18418 字节 + 4 份参考 + 9 个模板。- 核心方法:文档类型决定模板、元数据与链接独立规则、评审独立成环节。
- 技能入口小、内容厚,靠渐进加载不拖慢会话。
- 维护文档站的人强烈建议改造使用;偶尔写 README 不必。
延伸阅读
- 本章其余小节:3.2 dsh-code-review、3.6 dsh-prose-standard
- 相关书籍:DeepSeek Harness 技术参考与深度解析
- 技能基础:1.1 skill 是什么
