-
Notifications
You must be signed in to change notification settings - Fork 0
ADR 004 knowledge graph
Catown Dev edited this page Apr 10, 2026
·
1 revision
日期: 2026-04-10 状态: 已确认 决策者: BOSS + AI 架构分析
Catown 的多 Agent 工作流中,Agent 需要理解项目代码结构才能高效协作。当前方式是通过 read_file 逐个读取文件,存在以下问题:
- 效率低:大型项目文件多,Agent 逐个读文件浪费 token 和时间
- 缺乏全局视角:Agent 看到的是局部文件,难以把握模块间依赖和架构全貌
- 重复劳动:每个 Agent 上手都要重新理解一遍代码库
- 新 Agent 入驻慢:BOSS 邀请新 Agent 加入项目,它需要从零开始理解代码
需要一种机制,让 Agent 快速获取项目代码的结构化知识,而不是每次从头读文件。
将 graphify 包装为 knowledge-graph Skill,Agent 按需调用。
Agent 需要理解代码
│
├─ 检查 graphify-out/graph.json 是否存在
│ ├─ 不存在 → 请求 BOSS 批准建图(LLM API 调用,有成本)
│ └─ 已存在 → 直接查询(纯本地计算,无成本)
│
└─ 查询结果注入 Agent 上下文
将 graphify 建图作为 Pipeline 的固定阶段,在 analysis 之后自动执行。
analysis → graphify → architecture → development → ...
│
└─ 每次 pipeline 都跑,不管项目大小
不集成,Agent 需要时手动执行 graphify 命令。
采用方案 A:Skills 集成,但建图阶段需 BOSS 审批。
核心原则:建图由人决策,查询由 Agent 自主。
| 操作 | 决策方 | 理由 |
|---|---|---|
建图(graphify . --no-viz) |
BOSS 审批 | 需要 LLM API 调用,有时间和费用成本;不是所有项目都需要知识图谱 |
查询(graphify query) |
Agent 自主 | 纯本地计算,毫秒级响应,无成本 |
增量更新(graphify . --update) |
BOSS 审批 | 同样涉及 LLM API 调用 |
- 不是所有项目都需要:简单脚本项目跑 graphify 是浪费
- BOSS 失去控制权:每次 pipeline 都自动跑,BOSS 无法跳过
- 版本耦合:graphify 在快速迭代(v0.3.27),锁定在 pipeline 里维护成本高
- Agent 无法自主触发:需要 BOSS 手动执行,打断工作流
- 无法融入 Agent 上下文:graphify 产出物不会自动注入 system prompt
- 按需激活:Agent 在真正需要时才请求建图,避免无谓开销
- 成本可控:建图需 BOSS 审批,BOSS 知道何时会产生 LLM API 费用
- 查询零成本:graph.json 存在后,Agent 查询是纯本地操作
- 与 Skills 体系天然契合:graphify 本身就是"按需发现知识结构"的工具
- 独立升级:graphify 包更新只需更新 pip 包,不改 Catown 代码
DeepSeek 建议纯 Skills 集成,认为 graphify 天然适合按需调用,无需额外控制。
DeepSeek 的分析忽略了建图和查询两个阶段的成本差异:
| 阶段 | 成本 | 频率 | 是否需要人控 |
|---|---|---|---|
| 建图 | 高(LLM API 调用,分钟级) | 低(项目开始一次) | ✅ 是 |
| 查询 | 极低(本地计算,毫秒级) | 高(随时) | ❌ 否 |
如果全靠 Skills 自主决策,Agent 可能在不合适的时候触发建图(如编码中途突然要建图等 5 分钟),影响 BOSS 体验。
建图是 BOSS 的决策,查询是 Agent 的决策。 两阶段分开处理,各取所需。
{
"knowledge-graph": {
"name": "知识图谱",
"description": "基于 graphify 构建和查询项目代码知识图谱",
"required_tools": ["execute_code", "read_file", "write_file"],
"prompt_fragment": "## 知识图谱\n- 处理代码相关任务前,检查项目中是否存在 graphify-out/graph.json\n- 不存在 → 向 BOSS 请求建图许可\n- 已存在 → 可直接读取 GRAPH_REPORT.md 获取项目结构概览\n- 具体查询 → 自主执行 graphify query(无需审批)\n- 项目文件变更后 → 向 BOSS 请求增量更新许可",
"category": "analysis"
}
}| Agent | 是否配置 | 理由 |
|---|---|---|
| developer | ✅ | 核心使用者,编码时频繁需要理解代码结构 |
| architect | ✅ | 设计架构时需要了解现有代码依赖 |
| analyst | 可选 | 需求分析阶段可能代码尚未存在 |
| tester | 可选 | 测试时可能需要理解代码结构 |
| release | ❌ | 发布阶段不涉及代码理解 |
| 模块 | 关系 | 改动 |
|---|---|---|
configs/skills.json |
新增 knowledge-graph skill 定义 | 新增条目 |
configs/agents.json |
developer/architect 的 skills 列表加入 knowledge-graph | 新增字段 |
tools/execute_code.py |
用于执行 graphify 命令 | 无改动 |
agents/core.py |
system prompt 组装时注入 skill prompt_fragment | 无改动(已有 Skills 机制) |