name: wiki-ingest description: 用于将外部源文档或对话知识 ingest 到项目 wiki 中。统一委派 kiwi 蒸馏后执行写入,自动维护原始材料副本和反向链接。只要涉及 wiki 摄入、知识归档或文档蒸馏的请求,就请加载此技能。
Wiki Ingest 技能
将外部源文档或对话发现的知识 ingest 到 ~/.zoo/wiki/ 中。
收到值得归档的源材料时加载此技能,统一委派 kiwi 蒸馏后执行写入。
Phase 0 — 分类源材料
根据源材料的性质确定页面类型:
| 类型 | 特征 | 页面类型 | |------|------|---------| | 架构决策记录 | ADR、设计文档、RFC | source(adr) | | 外部规范 | 第三方 API 文档、标准、指南 | source(rfc) | | 会议记录 | 讨论总结、决策会议笔记 | source(notes) | | 概念知识 | 关于某机制或原理的说明 | concept | | 实体行为 | 某工具、agent、模块的行为 | entity | | 分析对比 | 多个选项的权衡、经验总结 | analysis |
如果源材料无法明确归入以上类型 → 归类为 concept 类型。
该分类仅用于准入决策(确认材料值得摄入)。不传递给 kiwi,包括域分类也不传递。kiwi 会在其流程中基于源材料特征和 wiki 现状独立完成所有分类决策(归属域、页面类型、页面路径),传递任何分类结果会造成锚定效应,剥夺 kiwi 结合 wiki 全貌做决策的机会。
Phase 1 — 委派 kiwi
1.1 准备源材料
根据输入形式执行对应的获取步骤:
| 输入形式 | 操作 |
|---------|------|
| 文件路径 | 用 read 工具读取完整内容 |
| URL | 直接将 URL 传递给 kiwi(kiwi 自己 webfetch 获取内容) |
| 文字描述 | 直接使用,整理为结构化格式 |
| 对话历史引用 | 从对话中提取相关段落 |
将源内容整理为 kiwi 可以直接消费的格式:
- 保留原文结构(标题、列表、代码块)
- 附上元信息:来源路径/URL、获取时间、内容长度
- 如果是 URL 输入,直接将 URL 放入 CONTEXT,kiwi 自行 webfetch 获取内容
1.2 构造三段式 Prompt
构造包含 SUMMARY / CONTEXT / ACCEPTANCE 三段的 prompt:
**SUMMARY:** 将 [源材料简要描述] 蒸馏到 wiki 中
**CONTEXT:**
[源内容摘要,如果是 URL 输入则放入原始 URL 而非嵌入全文]
[调用方掌握的额外上下文:相关页面变动、约束条件、用户偏好]
**源材料特征(Source Profile,可选,仅当长度可能误导 kiwi 时添加):**
简要描述源材料的知识密度特征,帮助 kiwi 区分核心知识和论证包装:
- 文档类型?(调研报告 / 会议记录 / API 文档 / 博客 / 设计文档 / ...)
- 知识密度?(简洁直接 / 论证链路长 / 知识混在大量执行细节中)
- 如果知识密度低,哪些部分可能是包装而非核心知识?(例:风险矩阵、时间线估算、逐接口分析——这些是论证支撑材料,不是可复用的结构知识)
**ACCEPTANCE:**
返回一份结构化分析,描述:
- 要创建/更新的页面路径、完整 frontmatter、完整页面内容(遵循 SCHEMA.md 规范)
- 要在相关**域**的 `index.md`(如 `wiki/<domain>/index.md`)中添加的索引条目(根 index.md 只列域,新建域时才改)
- 需要更新的交叉引用(更新哪些已有页面的 `relations` 字段;反向链接由 `zwiki check` 自动维护,kiwi 无需处理)
- 关于 `overview.md` 是否需要更新的建议
- 要通过 `zwiki log` 追加的日志条目
1.3 委派 kiwi
在 task prompt 开头告知 kiwi 加载 kiwi-distill 技能(kiwi 的技能列表由 config.toml 白名单控制,当前仅 kiwi-distill 可用):
加载
kiwi-distill技能后执行以下蒸馏任务。
将三段式 prompt 传给 kiwi subagent,不要对 kiwi 做额外约束 — 所有要求已在 ACCEPTANCE 中表达。
Phase 2 — 通用写入步骤
kiwi 返回分析后,由调用方 agent 执行写入:
创建新页面时:
- 创建骨架 — 使用
zwiki page create:域由 kiwi 的分析结果决定(kiwi 返回的页面路径含域前缀)。合法域由 wiki 根目录下实际存在的子目录决定(运行zwiki page create --domain <域名> \ --type <concept|entity|analysis|synthesis> \ --title "<页面标题>"zwiki page create --help或查看~/.zoo/wiki/下子目录);团队可通过新建子目录扩展域。对于 source 类型追加--source-type <adr|rfc|notes>;中文标题需加--slug <english-slug> - 填充内容 — 使用
write/edit将 kiwi 提供的页面内容写入
更新已有页面时:
- 无需创建新页面
- 编辑页面 — 使用
edit工具按照 kiwi 的建议修改已有页面的指定节
以下步骤创建和更新共用:
3. 保存原始材料 — 如果输入为 URL 或文件,保存原文副本到 raw/:
bash curl -sL "<url>" -o ~/.zoo/wiki/raw/$(date +%F)-<slug>.md
4. 更新索引 — 创建新页面时在对应域的 index.md(~/.zoo/wiki/<domain>/index.md)对应类型节下追加条目;根 index.md 只在新建域时才改动(通常不需要)。更新已有页面时跳过此步
5. 记录日志 — 调用 zwiki log,--action 用 create 或 edit:
bash zwiki log \ --op ingest --path "<domain>/concepts/<file>.md" \ --action <create|edit> --note "<简短说明>"
6. 更新 overview.md — 如果 kiwi 的分析建议更新,则执行
7. 更新交叉引用 — 按照 kiwi 的建议,在已有页面的 relations 字段中添加新引用(使用域前缀路径,如 <domain>/concepts/<file>.md)。反向链接由 zwiki check 自动同步
8. 同步反向链接 — zwiki check 已自动执行,无需手动调用
Phase 3 — Supersede 确认与写入
如果 kiwi 没有返回 Supersede Proposals,或列表为空 → 跳过此 Phase。
否则,对每个取代提议执行以下步骤:
-
向用户列出每个取代提议:
- 被取代的页面路径
- 旧声明(kiwi 摘录的原文)
- 新声明(新源中的原文)
- 取代理由
-
询问用户是否确认每个提议。用户可以:
- 全部确认
- 部分确认(指定哪些接受,哪些拒绝)
- 全部拒绝
-
只对用户确认的提议执行写入。kiwi 会在每个取代提议中标明哪个页面取代哪个页面。对每对取代关系,使用
zwiki supersede一次性更新两侧 frontmatter:zwiki supersede \ --old <domain>/concepts/old-page.md \ --new <domain>/concepts/new-page.md \ --reason "<kiwi 提供的取代理由>"该命令会自动在取代页面(
--new)的 frontmatter 中追加supersedes条目(含path和reason),并在被取代页面(--old)的 frontmatter 中追加superseded_by条目。
Phase 4 — 矛盾写入
如果 kiwi 没有返回 Contradiction Proposals,或数组为空 → 跳过此 Phase。
否则,对每个矛盾提议执行以下步骤:
-
前提条件 — 矛盾涉及的新页面(
page_b)必须在 Phase 2 中已创建。确认 kiwi 输出的所有page_b路径均已存在。 -
执行写入 — kiwi 返回的 Contradiction Proposals 是一个 JSON 数组,每个元素格式为:
[{"page_a": "domain/existing.md", "page_b": "domain/new.md", "claims": ["冲突描述"], "detected": "YYYY-MM-DD", "resolution": "unresolved"}]将该数组直接管道给
zwiki contradictions apply:echo '<JSON 数组>' | zwiki contradictions apply该命令会追加
contradictions条目并更新last_validated。然后对双方页面执行 status 降级:
zwiki page set "domain/page_a.md" status --downgrade zwiki page set "domain/page_b.md" status --downgrade -
验证写入 — 运行
zwiki contradictions list确认矛盾已记录。
Phase 5 — Validation 确认与写入
如果 kiwi 没有返回 Validation Proposals,或列表为空 → 跳过此 Phase。
否则,对每个验证提议执行以下步骤:
-
向用户列出每个验证提议:
- 被确认的页面路径
- 已确认的旧声明(kiwi 摘录的原文)
- 确认声明(新源中的原文)
- 说明:该操作仅刷新
last_validated,不改变status或timeliness
-
询问用户是否确认每个提议。用户可以:
- 全部确认
- 部分确认(指定哪些接受,哪些拒绝)
- 全部拒绝
-
只对用户确认的提议执行写入。对每个要刷新的页面:
zwiki page set <domain>/concepts/<page>.md last_validated "$(date -u +%Y-%m-%dT%H:%M:%SZ)"注意:
zwiki page set会覆盖已有时间戳。多次确认同一页面时,只需执行一次(以最新时间为准)。 -
记录日志 — 对每个确认的验证,追加日志条目说明验证来源:
zwiki log \ --op validate --path "<domain>/concepts/<page>.md" \ --action edit --note "新源确认声明「…」"--note应包含被确认的声明摘要。
Phase 6 — 验证
写入完成后,执行以下验证:
- 路径确认 — 确认创建/更新的页面路径列表与预期一致
- 日志检查 — 确认
~/.zoo/wiki/logs/目录下已有对应的日志条目(当前月份logs/YYYY-MM.md文件) - 索引检查 — 确认对应域的 index.md 已更新;根 index.md 通常无需改动
- 反向链接检查 —
zwiki check已自动同步,二次运行应报告 0 更新 - 全量健康检查 —
zwiki check同时覆盖结构完整性与内联链接检查:如果检查出本次写入引入的问题(如缺失内联链接)→ 修复(为术语添加zwiki check || echo "⚠ wiki 检查发现问题,请检查并修复"[术语](目标页.md)内联链接等),然后重新运行确认通过。若报告的仅为与本次写入无关的既有问题,向用户说明即可。
如果验证失败 → 检查失败原因,必要时重新委派 kiwi。 如果验证通过 → 向用户报告创建的页面列表和摘要。
Generateur de Documentation API
Documentation
Genere automatiquement de la documentation API OpenAPI/Swagger.
Rédacteur Technique
Documentation
Rédige de la documentation technique claire selon les meilleurs style guides.
Rédiger des notes de version pour piinuts/gaze
Documentation
Utilisez cette compétence pour rédiger ou réécrire les notes de version GitHub pour piinuts/gaze, gaze-lens ou gaze-laravel, en suivant une voix narrative organisée avec TL;DR, points forts, limitations connues, notes pour les adoptants et un lien vers l'étoile polaire.