🔬 CodeGraph × Hermes Skills 知识库深度分析

研究问题:将 Hermes skills 文件夹当成知识库来管理,CodeGraph 代码图谱对未来 Harness 优化是否存在有益作用?
分析日期:2026-06-24
工具版本:CodeGraph (latest) · Hermes Agent · tree-sitter AST parser
分析对象~/.hermes/skills/(60+ 技能目录 · 714 文件 · 含 Harness Engineering 16 章知识体系)
714
总文件数
139
CodeGraph 索引
568
Markdown(未索引)
19%
覆盖率
2,823
提取节点
6,702
提取边

📋 目录

  1. CodeGraph 是什么——核心能力概览
  2. 实测:对 skills 文件夹的索引结果
  3. 关键发现:80% 的知识内容被完全忽略
  4. 有益部分:脚本执行层的代码图谱
  5. 无益部分:知识内容层完全缺失
  6. 如果要让知识图谱对 Harness 产生系统性价值
  7. 结论:分层评估与建议路线

1. CodeGraph 是什么——核心能力概览

CodeGraph 是一个语义代码智能平台,通过 tree-sitter 将源代码解析为 AST,提取符号(函数、类、方法)和关系(调用、导入、继承),存储到本地 SQLite 知识图谱中,并通过 MCP 协议暴露给 AI Agent。

官方基准:在 7 个真实开源仓库(VS Code / Django / Tokio / OkHttp 等)上测试——
平均节省 ~16% 成本 · ~47% token · ~22% 时间 · ~58% 工具调用

核心架构

AI Agent (Hermes / Claude Code / Cursor)
  │
  │  MCP 协议调用
  ▼
CodeGraph MCP Server
  │  explore · search · callers · callees · impact · node
  ▼
SQLite 知识图谱
  symbols · edges · files · FTS5 全文搜索

MCP 工具集

工具用途典型场景
codegraph_explore语义探索:一次调用返回相关符号的源码 + 调用路径"这个系统如何工作?"
codegraph_search快速符号搜索(FTS5 全文 + 结构化过滤)"找到所有 auth 相关函数"
codegraph_callers查找调用某符号的所有位置"谁调用了 submit()?"
codegraph_callees查找某符号调用了什么"pipeline.run() 依赖哪些模块?"
codegraph_impact影响分析:改一个符号会影响什么"重构前评估爆炸半径"
codegraph_node单符号详情 + 源码,替代 Read 工具"查看这个函数的完整实现"

技术特点


2. 实测:对 skills 文件夹的索引结果

~/.hermes/skills/ 执行 codegraph init -i,3.3 秒完成索引:

$ cd ~/.hermes/skills && codegraph init -i
  ◆ Scanning files — 139 found
  ◆ Parsing code — done
  ◆ Resolving refs — done
  ● 2,823 nodes, 6,702 edges in 3.3s

索引统计

维度数据
索引文件数139
节点总数2,823(function: 1,233 · import: 692 · variable: 498 · method: 196 · class: 66)
边总数6,702
DB 大小7.32 MB
语言分布Python: 132 文件 · YAML: 4 · Liquid: 2 · JavaScript: 1

索引查询示例

Impact 分析——修改 submit() 函数的爆炸半径:

$ codegraph impact "submit" --depth 1
Impact of changing "submit" — 27 affected symbols:

creative/comfyui/scripts/run_workflow.py
  method      submit:173
  function    main:565

creative/comfyui/scripts/health_check.py
  function    smoke_test:103

last30days/scripts/lib/bird_x.py
  function    search_handles:346

last30days/scripts/lib/pipeline.py
  function    run:175
  function    _retry_thin_sources:743
...(共 27 个受影响的符号,横跨 5 个技能目录)

符号搜索——render 相关函数:

$ codegraph query "render" --kind function --limit 15
function    render_full          last30days/scripts/lib/render.py:788
function    render_html          last30days/scripts/lib/html_render.py:346
function    render_context       last30days/scripts/lib/render.py:932
function    render_compact       last30days/scripts/lib/render.py:95
function    render_for_html      last30days/scripts/lib/render.py:190
function    render_comparison_multi  last30days/scripts/lib/render.py:574
...(共 15 个 render 系列函数)

3. 关键发现:80% 的知识内容被完全忽略

⚠️ 核心盲区:CodeGraph 基于 tree-sitter 做 AST 解析,它根本不支持 Markdown。而 skills 知识库 80% 的内容是 Markdown 文件(SKILL.md、chapters/、references/、patterns.md、cheatsheet.md 等)。
文件类型实际数量CodeGraph 索引覆盖率
Markdown (.md)56800%
Python (.py)132132100%
Shell (.sh)1400%
YAML (.yaml)44100%
Liquid (.liquid)22100%
总计71413919%

这意味着什么?

Harness Engineering 技能的全部核心价值都在 Markdown 中:

CodeGraph 看不到:


4. 有益部分:脚本执行层的代码图谱

✅ CodeGraph 对 skills 文件夹内 ~132 个 Python 脚本的分析是有价值的——这些脚本是技能的"执行引擎",它们之间的依赖关系、调用图和影响分析对 Harness 治理有实际意义。

4.1 脚本间依赖可视化

CodeGraph 的 impact 分析揭示了一个重要发现:

last30days/scripts/lib/pipeline.py
  → calls submit() from comfyui (跨技能复用!)
  → calls query() from academic-research/search_arxiv.py
  → imports from 14+ sibling modules

Harness 优化点:last30days 技能的脚本生态已经形成了一个紧密耦合的子图,任何改动 submit() 函数的行为会影响 27 个下游符号。这正是 Harness Engineering 里"影响分析"的核心。

4.2 发现跨技能复用模式

submit() 被 5 个不同技能的脚本调用(comfyui、last30days、bird_x、competitors、github)。

⚠️ Harness 风险:没有共享库,但存在事实上的共享依赖。如果 comfyui 的 submit() 改了签名,last30days 会默默坏掉。这违反了 Harness Engineering 的"隔离"原则。

4.3 测试覆盖率盲区

CodeGraph 对每个 blast radius 节点都标注了 ⚠️ no covering tests found。skills 脚本目前零测试覆盖,这对 Harness 的"验证门控"(verification-gate)是一个真实的缺口。

方向价值说明
脚本依赖治理⭐⭐⭐ 高发现跨技能脚本耦合、推动共享库抽取
测试盲区定位⭐⭐⭐ 高配合 verification-gate,定位零覆盖脚本
脚本 impact 分析⭐⭐ 中改一个脚本函数前知道影响范围

5. 无益部分:知识内容层完全缺失

❌ CodeGraph 对 Harness 知识体系的核心内容完全无法感知——80% 的知识存储在 Markdown 中,tree-sitter 不解析 Markdown。
需求CodeGraph 现状需要的能力
概念提取函数/类/方法章节标题、术语、原则条目
关系类型calls / imports / extends"引用" / "依赖" / "矛盾" / "补充"
全文搜索FTS5 on 代码符号FTS5 on 中文术语 + 英文关键词
影响分析改一个函数影响什么改一条原则影响哪些技能/规则
覆盖分析测试覆盖率知识覆盖率(哪些 Harness 概念没有对应技能?)
方向价值说明
知识体系治理⭐ 无CodeGraph 不解析 Markdown,对核心知识内容无效
概念交叉分析⭐ 无需要 LLM Wiki 或专门的 Markdown 图谱工具
prompt cache 优化⭐ 无与代码图谱无关,属于 Harness 运行时治理

6. 如果要让知识图谱对 Harness 产生系统性价值

需要的不是 CodeGraph(代码图谱),而是一个 Markdown-native 的知识图谱方案

方案 A:LLM Wiki(已有基础设施)

你已经在用的 LLM Wiki (nashsu/llm_wiki) 天然支持 Markdown 知识图谱:

建议:创建一个 "Harness Engineering" 项目,将 skills/ 下的 Markdown 知识全部导入。

方案 B:定制 SKILL.md frontmatter 解析器

编写一个轻量级解析器,从 SKILL.md 的 YAML frontmatter 中提取:

related_skills: [llm-wiki-api, persistence-strategy, verification-gate, ...]
tags: [harness, prompt-engineering, query-loop, ...]
metadata.hermes.category: devops
metadata.hermes.related_skills: [...]

构建技能间的关系图,输出为 JSON 或 SQLite,供 curator 和 Agent 查询。

方案 C:混合架构(推荐)

┌─────────────────────────────────────────┐
│          Harness Knowledge Hub          │
│                                         │
│  ┌─────────────┐   ┌────────────────┐   │
│  │ CodeGraph   │   │ LLM Wiki /     │   │
│  │ (脚本层)     │   │ Markdown 图谱  │   │
│  │             │   │ (知识层)        │   │
│  │ 132 个 .py  │   │ 568 个 .md    │   │
│  │ 2,823 nodes │   │ 概念 + 原则    │   │
│  │ 调用/导入图  │   │ + 章节关系     │   │
│  └──────┬──────┘   └───────┬────────┘   │
│         │                  │            │
│         └────────┬─────────┘            │
│                  ▼                      │
│        Unified Query Layer             │
│   "改 verification-gate 原则会影响     │
│    哪些脚本和哪些章节?"                 │
└─────────────────────────────────────────┘

7. 结论:分层评估与建议路线

🎯 总结论:CodeGraph 对 skills 文件夹的分析,覆盖了 Harness 知识体系的 ~19%(执行层),遗漏了 ~80%(知识层)

对 Harness 优化的实际价值

方向价值评级说明
脚本依赖治理⭐⭐⭐ 高发现跨技能脚本耦合(submit() 被 5 个技能调用),推动共享库抽取,降低隐性耦合风险
测试盲区定位⭐⭐⭐ 高配合 verification-gate,定位零覆盖脚本(当前 132 个 .py 全部无测试)
脚本 impact 分析⭐⭐ 中改一个脚本函数前知道影响范围(27 个下游符号),辅助重构决策
知识体系治理⭐ 无CodeGraph 不解析 Markdown,对 16 章 Harness 知识内容完全无效
概念交叉分析⭐ 无"十条原则"↔"最终六问"、五层架构↔章节引用等,需要 LLM Wiki 或专用工具
prompt cache 优化⭐ 无与代码图谱无关,属于 Harness 运行时治理(compression/preflight)

建议行动路线

  1. 短期(立即可做):保持 CodeGraph 索引 skills/ 文件夹,用于脚本层治理。定期运行 codegraph impact 分析高扇入函数,推动测试覆盖。
  2. 中期(1-2 周):在 LLM Wiki 中创建 "Harness Engineering" 项目,导入 568 个 Markdown 文件,构建概念间知识图谱。
  3. 长期(框架层面):设计混合查询层——当 Agent 问"改 verification-gate 原则会影响什么"时,同时查询脚本依赖(CodeGraph)和概念引用(LLM Wiki),返回完整影响报告。
🔑 核心结论:如果要让"技能文件夹当知识库管理"这件事对 Harness 产生系统性价值,CodeGraph 可以作为补充(管脚本层),但不能作为主体。需要的是 Markdown-native 的知识图谱方案(LLM Wiki 或定制解析器),与 CodeGraph 形成互补的双层架构