知识复利文档Skill compound-docs

这是一个用于软件开发团队的知识管理工具,能够自动或手动地将已解决的技术问题、故障和修复方案捕获并归档为结构化的、可搜索的文档。它通过检测重复出现的模式,帮助团队积累和复用知识,避免重复踩坑,提升开发效率。核心功能包括:自动触发记录、上下文收集、相似问题去重、模式识别与提升。关键词:知识管理,问题解决,文档记录,模式检测,DevOps,团队协作,故障排除,代码复用。

DevOps 0 次安装 0 次浏览 更新于 3/2/2026

name: compound-docs description: 将已解决的问题捕获为可搜索的文档,并具备模式检测功能。当用户确认修复有效时(如“这解决了”、“已修复”、“现在正常了”)或通过/compound命令手动触发时,此技能会自动启动。 version: 0.1.0-beta license: MIT compatibility: opencode

知识复利文档

每个被记录的解决方案都在复利式地增长团队的知识。第一次解决问题需要研究。记录下来,下一次再遇到就只需要几分钟。知识会复利增长。

此技能灵感来源于 Every.to 的 compound-engineering 插件

自动触发条件

当用户说出以下短语时,此技能会自动触发:

  • “这解决了”
  • “已修复”
  • “现在正常了”
  • “问题解决了”
  • “搞定了”

手动命令:/compound

工作流程

步骤 1:检测触发

当检测到触发短语或调用 /compound 时:

  1. 确认问题确实已解决(而非仍在处理中)
  2. 检查此修复是否值得记录

跳过记录简单修复:

  • 简单的拼写错误
  • 明显的语法错误(缺少分号、括号)
  • 显而易见的单行修复

如果跳过,简要说明原因:“这是一个简单的拼写错误修复 - 跳过记录。”

步骤 2:收集上下文

读取 schema.yaml 获取有效的枚举值,然后从对话中提取:

字段 必填 描述
症状 错误信息或可观察到的行为
类别 来自 schema.yaml 的 category.values(或添加新的)
组件 来自 schema.yaml 的 component.values(或添加新的)
根本原因 来自 schema.yaml 的 root_cause.values(或添加新的)
解决方案 有效的修复方法
预防措施 未来如何避免此问题

如果某个值在 schema.yaml 中不存在:

  1. 将新值添加到 schema.yaml 中相应的枚举中
  2. 如果是新类别,创建目录:mkdir -p {output_dir}/{new-category}

如果缺少关键信息,询问:

为了记录此修复,我需要一些详细信息:

1. 类别:这是什么类型的问题?
   [列出 schema.yaml 中的当前值]
   如果没有合适的,请建议一个新类别

步骤 3:检查类似问题

在创建新文档之前,搜索现有的类似问题:

  1. 关键词匹配 - 在 {output_dir}/ 中搜索错误信息片段或关键症状短语
  2. 文件路径匹配 - 检查现有文档是否涉及相同的文件
  3. 导入/依赖匹配 - 检查是否提及相同的库或模块
# 搜索示例
grep -rl "错误信息" docs/solutions/
grep -l "路径/到/文件" docs/solutions/**/*.md

如果找到潜在匹配项:

找到可能相关的问题:
- docs/solutions/integration/api-timeout-20250102.md
- docs/solutions/integration/auth-header-missing-20250105.md

这些是相同或相关的问题吗?(y/n)

如果相关,添加到 frontmatter 的 related 字段中。

步骤 4:创建文档

根据 schema.yaml 进行验证:

  1. 读取 schema.yaml 获取当前有效的枚举值
  2. 确保所有必填字段都存在
  3. 确保枚举值存在(或先添加它们)

生成文件名:

  • 格式:{sanitized-symptom}-{YYYYMMDD}.md
  • 清理:小写,空格替换为连字符,移除特殊字符,截断至 80 个字符

在以下位置创建文件: {output_dir}/{category}/{filename}

确保目录存在:

mkdir -p {output_dir}/{category}

使用下面的解决方案文档模板。

步骤 5:模式提升

创建文档后,检查此问题是否已多次发生。

如果类似问题 >= 阈值(默认:2):

此问题已发生 {N} 次:
- {链接到问题 1}
- {链接到问题 2}
- {链接到当前问题}

提升到 patterns.md?这将使其在未来会话中显著展示。
1. 是 - 添加到模式
2. 否 - 仅保留为常规文档

如果选择是: 使用下面的模式模板追加到 {output_dir}/patterns.md

解决方案文档模板

---
date: {YYYY-MM-DD}
category: {category}
symptoms:
  - {症状 1}
  - {症状 2}
component: {component}
root_cause: {root_cause}
tags: [{关键词1}, {关键词2}]
related: []
---

# {问题标题}

## 问题

{1-2 句话描述出错的地方}

## 症状

- {观察到的现象 - 错误信息、行为等}

## 无效的尝试

- {尝试的解决方案 1} - {失败原因}
- {尝试的解决方案 2} - {失败原因}

## 解决方案

{修复方法的描述}

```{语言}
# 之前(有问题的)
{修复前的代码}

# 之后(修复后的)
{修复后的代码}

为什么有效

{对根本原因以及解决方案为何能解决它的技术性解释}

预防措施

{未来如何避免 - 测试、代码检查规则、应遵循的模式}


## 模式模板

当添加到 `patterns.md` 时:

```markdown
## {模式名称}

**发生次数:** {N} 次 ({链接1}, {链接2}, ...)

### 错误做法

```{语言}
{导致问题的代码}

正确做法

{修复它的代码}

原因: {技术性解释}

适用场景: {此模式相关的上下文或条件}


## 集成

### 在 AGENTS.md 中引用

添加到项目的 AGENTS.md 中,以确保检查已知模式:

```markdown
## 必读内容

在进行更改之前,请查阅已知模式:
- [解决方案模式](docs/solutions/patterns.md)

使用解决方案

其他工作流可以发现并应用已记录的解决方案:

按关键词搜索:

grep -rl "关键词" docs/solutions/

按类别搜索:

ls docs/solutions/deployment/

按标签搜索:

grep -l "tags:.*docker" docs/solutions/**/*.md

patterns.md 是主要的集成点 - 在进行更改之前,首先检查它以获取关键模式。

示例场景

用户: “搞定了!Docker 构建失败是因为缓存问题。”

代理响应:

太好了!我来记录这个修复。

**正在读取 schema.yaml...**
当前类别:developer-experience, deployment, ui, integration, performance, testing
当前组件:(暂无)
当前根本原因:(暂无)

**正在收集上下文...**

根据我们的对话:
- 症状:Docker 构建失败,出现“layer not found”错误
- 类别:deployment
- 组件:docker (添加到 schema.yaml)
- 根本原因:stale-cache (添加到 schema.yaml)
- 解决方案:添加了 `--no-cache` 标志并更新了基础镜像标签
- 预防措施:固定基础镜像版本,定期使用 `docker system prune`

**正在更新 schema.yaml...**
已将 'docker' 添加到 component.values
已将 'stale-cache' 添加到 root_cause.values

**正在检查类似问题...**
未找到相关问题。

**正在创建文档...**
已创建:docs/solutions/deployment/docker-layer-not-found-20250106.md

文档记录完成。