Files
zentao-flow/.agents/skills/codemap/SKILL.md
T

237 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: sn-codemap
description: 将代码仓库转化为结构化 YAML 知识图谱(符号索引、API 详情、调用链、数据对象、交叉引用,L4 含公式/决策点/错误/阈值等业务知识)。当用户要求"分析项目"、"生成 codemap"、"提取符号/调用链"、"生成完整代码文档"或输入 /sn-codemap、/codemap 时使用。
---
# Code Map 代码知识图谱生成 (sn-codemap)
## 功能概述
将代码仓库转化为结构化的 YAML 知识图谱:
**代码结构**:
- 符号信息:类、方法、字段的定义和位置
- API 详情:请求参数、响应字段、错误码
- 调用链:以 API 入口为根的调用图
- 交叉引用:callers/callees、继承关系、前后端映射
- 数据对象:Entity/DTO/VO 的字段和关系
**业务知识(L4 可选扩展)**:
- 公式提取:计算逻辑的伪代码和配置依赖
- 决策点:if-else 分支和业务判断条件
- 错误信息:异常消息和触发条件清单
- 阈值常量:业务相关的常量值
---
## 加载链路(执行时如何读取本技能)
1. 触发本技能后,**先加载 `executor.yaml`**,按其中 Phase 0 → Phase 12 的顺序执行。
2. `templates/`、`schemas/` 在各 Phase 生成产物时按 executor 中的引用查阅。
3. `workflows/` 的 5 个子工作流在 executor 对应 Phase 中被引用时加载。
4. `guides/`(lsp-*.md)仅在需要 LSP/Serena 具体操作指引且对应工具可用时查阅,否则忽略。
---
## 分析等级(开始时与用户确认)
| 等级 | 名称 | 产出范围 | 适用场景 |
|------|------|----------|----------|
| **L1** | 快速扫描 | 技术栈 + 各平台符号索引 + 主索引 | 快速了解项目 |
| **L2** | 标准分析 | L1 + API 目录 + 核心数据对象/调用链/前后端映射 | 日常开发 |
| **L3** | 完整生成 | L2 全量化 + 交叉引用 + 跨端映射 + Mermaid 图 + 域模型 | 完整文档 |
等级通过 `--level` 参数或 Phase 0 交互确认,默认 L2。
### L4 可选扩展(业务知识提取)
executor.yaml 的执行流程覆盖 L1–L3。L4(formulas / decisions / errors / thresholds
业务知识提取)为**按需扩展**:在 L3 完成后,用户可要求提取业务知识,Agent 使用
`templates/formula|decision|error|threshold.template.yaml` 模板与
`schemas/codemap.formula|decision|error|threshold.schema.json` 进行提取,
产出写入 `formulas/`、`decisions/`、`errors/`、`thresholds/` 目录(各含 `_index.yaml`),
按 15 个/批 分批处理。
---
## 多语言支持(检测到什么平台分析什么)
技术栈检测(Phase 2)决定分析范围,只分析实际检测到的平台。
已验证路径:
| 平台 | 语言 | 分析内容 | 产出目录 |
|------|------|----------|----------|
| 后端 | Java | Controller, Service, Mapper, Entity | symbols/java/, api/java/, dataobjects/java/, callchains/java/ |
| Web 前端 | Vue | 页面组件, API 调用层 | symbols/vue/ |
| 小程序 | uni-app | 页面, 组件, API 调用 | symbols/miniapp/ |
备用路径(仅在检测到对应代码时启用,使用备用模板):
| 平台 | 备用模板 |
|------|----------|
| Android (Kotlin) | `templates/kotlin-symbol.template.yaml` |
| iOS (Swift) | `templates/swift-symbol.template.yaml` |
符号分析主路径为 Grep/Glob/Read/Bash;若环境提供 Serena MCP(mcp__serena__*)
可用于加速,否则用 Grep/Read 完成,不得因此中断。
---
## 输出目录结构(L3 全量示例,按实际检测平台生成)
```
codemap/
├── _index.yaml # 项目主索引
├── _summary.yaml # 分析摘要
├── .codemap/state.yaml # 分析状态(支持增量/断点续跑)
│
├── context/ # 项目背景
│ ├── _project_context.yaml
│ └── _tech_stack.yaml
│
├── symbols/ # 符号索引(按检测到的平台)
│ ├── java/_symbols_index.yaml
│ ├── vue/_symbols_index.yaml
│ └── miniapp/_symbols_index.yaml
│
├── api/ # API 目录与详情(L2 核心、L3 全量)
│ └── java/
│ ├── _api_catalog.yaml
│ └── {endpoint-name}.yaml
│
├── dataobjects/ # 数据对象详情(L2 核心、L3 全量)
│ └── java/
│ ├── _dataobjects_index.yaml
│ └── {entity-name}.yaml
│
├── callchains/ # 调用链(L2 核心流程、L3 全量)
│ └── java/
│ ├── _callchains_index.yaml
│ └── {chain-name}.yaml
│
├── mapping/ # 前后端/跨端映射
│ ├── _frontend_backend_mapping.yaml
│ ├── _cross_platform_api_mapping.yaml # L3 多端项目
│ └── _api_consumer_matrix.yaml # L3 多端项目
│
├── xrefs/ # 交叉引用(L3)
│ ├── _xrefs_index.yaml
│ ├── callers-callees.yaml
│ └── inheritance.yaml
│
├── graphs/ # Mermaid 图(L3)
│ ├── _index.yaml
│ ├── state-machines/
│ └── callchains/
│
├── domain-entities/ # 统一业务域模型(L3 多平台)
│
├── formulas/ # 业务公式(L4 可选扩展)
├── decisions/ # 决策点(L4 可选扩展)
├── errors/ # 错误信息(L4 可选扩展)
└── thresholds/ # 阈值常量(L4 可选扩展)
```
---
## 执行流程(与 executor.yaml 的 Phase 一一对应)
| Phase | 名称 | 说明 | 主要产出 |
|-------|------|------|----------|
| 0 | 交互式初始化与参数确认 | 收集代码目录、输出目录、等级 | 分析计划 |
| 1 | Git 检测与增量分析判断 | Git 状态、历史状态、增量/全量决策 | 变更清单 |
| 2 | 技术栈检测 | 平台与框架检测,决定分析范围 | context/_tech_stack.yaml |
| 3 | 辅助文档分析(可选) | SQL、对接文档 | schema/、external/、context/ |
| 4 | Java 后端分析 | 符号/API/数据对象/调用链 | symbols/java/、api/java/、dataobjects/java/、callchains/java/ |
| 5 | 前端分析 | Vue/小程序页面与 API 调用层 | symbols/vue/、symbols/miniapp/ |
| 6 | 前后端映射与跨端 API 分析 | 路径匹配、跨端追踪 | mapping/ |
| 7 | 交叉引用生成(L3) | callers/callees、继承 | xrefs/ |
| 8 | Mermaid 图生成(L3) | 可视化图 | graphs/ |
| 9 | 统一业务域模型(L3 可选) | 跨端实体映射 | domain-entities/ |
| 10 | 索引生成 | 主索引与摘要 | _index.yaml、_summary.yaml |
| 11 | 状态更新与缓存 | checksum、状态文件 | .codemap/state.yaml |
| 12 | 完整性检查与完成报告 | 验证产出、补缺、报告 | 检查报告 |
---
## 完整性检查(Phase 12,只检查可兑现项)
- 核心文件存在:`_index.yaml`、`.codemap/state.yaml`、`context/_tech_stack.yaml`
- 符号索引与技术栈检测一致:检测到哪个平台就存在对应的 `symbols/{platform}/_symbols_index.yaml`
- 按等级生成的索引文件存在:L2 起 `api/java/_api_catalog.yaml`、`dataobjects/java/_dataobjects_index.yaml`、`callchains/java/_callchains_index.yaml`;L3 增 `xrefs/_xrefs_index.yaml`
- API/dataobject 详情文件按等级生成(L2 核心、L3 全量),以索引文件存在为准,不做数量硬指标
---
## 上下文管理
### 文件大小管理
读取任何文件前先 `wc -l` 检查:≤500 行直接读;500–2000 行分批读;
>2000 行或 >100KB 先用 Grep 定位结构再定点读。详细规则见 executor.yaml
`file_size_management` 节。
### 分批执行(大型项目)
| 内容类型 | 批次大小 |
|----------|----------|
| 数据对象 | 20 个/批 |
| 调用链 | 10 个/批 |
| API 详情 | 30 个/批 |
| L4 业务知识 | 15 个/批 |
### 断点续跑
状态保存在 `.codemap/state.yaml`(增量变更保存在 `.codemap/pending_changes.json`),
中断后重新执行 `/sn-codemap --resume` 可继续。
---
## 使用场景
- 用户说"分析项目"、"生成 codemap"
- 用户说"提取符号"、"分析调用链"
- 用户说"生成完整代码文档"
- 直接输入 `/sn-codemap` 或 `/codemap`
## 命令格式
```
/sn-codemap <project_path> [options]
选项:
--output, -o 输出目录
--auxiliary, -a 辅助文档目录
--level 分析等级 (L1/L2/L3)
--incremental 强制增量分析
--full-rebuild 强制全量重建
--resume 从上次中断处继续
```
---
## 资源清单
- `executor.yaml` — 执行指引(Agent 按 Phase 0–12 执行,**执行时首先加载**)
- `workflows/` — 子工作流(被 executor 对应 Phase 引用时加载):
- `incremental-analysis.yaml` — 增量分析:Git diff / checksum 变更检测、影响分析、增量合并(Phase 1/11)
- `cache-management.yaml` — 分析结果缓存:checksum 验证、级联失效、淘汰策略(Phase 1/11)
- `cross-platform-api-mapping.yaml` — 跨端 API 识别的**唯一定义**:各端调用模式、路径匹配、一致性检查(Phase 6)
- `mermaid-generation.yaml` — Mermaid 图生成步骤(Phase 8)
- `unified-domain-model.yaml` — 统一业务域模型生成步骤(Phase 9)
- `templates/` — 产物 YAML 模板(生成对应产物时查阅;`kotlin-symbol` / `swift-symbol` / `miniapp-page` 为备用模板,仅在检测到对应平台时使用)与 `templates/mermaid/` 图模板
- `schemas/` — 产物 JSON Schema(验证产物结构时查阅)
- `guides/`(lsp-*.md)— LSP/Serena 工具使用指南;需对应 LSP server 或 Serena MCP 可用,否则忽略
---
## 版本历史
| 版本 | 更新内容 |
|------|----------|
| v4.0 | 彻底重构:对齐执行链路(SKILL.md → executor.yaml → workflows/templates/schemas),Phase 重排为连续整数,符号分析主路径改为 Grep/Read/Bash,L4 转可选扩展,多语言收敛为按检测分析,删除无人消费的配置与孤儿文件 |
| v3.x 及更早 | 历史版本(LSP/Serena 中心架构、L1–L4 等级、缓存/增量机制引入等),已被 v4.0 取代 |
当前版本:v4.0