Skip to main content

codemap

代码流程分析与可视化工具,将复杂代码执行流转化为清晰的可视化图谱。支持本地文件分析、历史版本管理、导入导出等功能。

Source facts

Repository
Dwsy/codemap
Last source activity
January 23, 2026 at 01:24
Detected SKILL.md language
Chinese
Stars
1
Forks
0

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
codemap
description
代码流程分析与可视化工具,将复杂代码执行流转化为清晰的可视化图谱。支持本地文件分析、历史版本管理、导入导出等功能。
# CodeMap 高级代码架构分析和可视化工具,将用户的查询和代码库上下文转化为结构化的 CodeMap JSON,并提供多种可视化表达(文本图、Mermaid 图、Markdown 指南)。 ## 执行环境 | 路径类型 | 路径 | 基准目录 | | -------------- | ------------------------------------- | -------- | | **技能目录** | `~/.pi/agent/skills/codemap/` | 固定位置 | | **SKILL 文件** | `~/.pi/agent/skills/codemap/SKILL.md` | 技能目录 | | **客户端目录** | `~/.pi/agent/skills/codemap/client/` | 技能目录 | ## 功能特性 ### 核心功能 - **代码流程分析**:自动识别 Controller、Service、Mapper 等关键代码节点 - **可视化输出**:生成三种可视化形式(文本调用图、Mermaid 流程图、Markdown 指南) - **本地处理**:所有代码分析在本地完成,保护隐私 ### 高级功能 - **历史版本管理**:保存和管理多个 CodeMap 版本,支持版本对比 - **目录树浏览**:交互式文件目录树,支持多文件/文件夹选择 - **导入导出**:支持 JSON、Markdown、自包含 HTML 格式 - **分享功能**:导出独立 HTML 文件,包含所有可视化和数据 ## 客户端架构 ### 技术栈 - **后端**:Rust + Tauri - **前端**:Web(HTML + CSS + JavaScript) - **存储**:基于文件系统(JSON 格式,存储在 `docs/.codemap/` 目录) - **可视化库**:mermaid.js、marked.js ### 目录结构 ``` ~/.pi/agent/skills/codemap/ ├── SKILL.md # 技能文档 ├── client/ # Tauri 客户端 │ ├── src-tauri/ # Rust 后端 │ │ ├── src/ │ │ │ ├── main.rs # Tauri 入口 │ │ │ ├── commands.rs # Tauri 命令 │ │ │ ├── analyzer.rs # 代码分析逻辑 │ │ │ ├── codemap.rs # CodeMap 生成 │ │ │ └── storage.rs # 文件系统存储 │ │ └── Cargo.toml │ ├── src/ # Web 前端 │ │ ├── components/ # 组件 │ │ ├── styles/ # 样式 │ │ ├── app.js # 主应用 │ │ └── index.html │ └── package.json └── README.md ``` ## 使用方式 ### 方式 1:通过 Tauri 客户端(推荐) ```bash # 启动客户端(开发模式) cd ~/.pi/agent/skills/codemap/client npm run tauri dev # 构建生产版本 npm run tauri build ``` ### 方式 2:集成到 AI 工作流 在 AI 对话中调用 codemap 技能: ``` 用户:请分析"用户登录全流程"的代码执行路径 AI(调用 codemap): 1. 读取代码库上下文 2. 识别关键节点(Controller、Service、Mapper) 3. 生成 CodeMap JSON 4. 返回可视化结果 ``` ## CodeMap JSON Schema ```json { "schemaVersion": 1, "title": "流程标题", "description": "流程的简要概述", "mermaidDiagram": "全局视角的 Mermaid graph TB 流程图代码", "traces": [ { "id": "序号 (e.g., 1, 2)", "title": "步骤标题", "description": "步骤简述", "locations": [ { "id": "节点ID (e.g., 1a, 1b)", "path": "文件绝对路径", "lineNumber": 整数行号, "lineContent": "关键代码行内容", "title": "节点行为标题", "description": "在该行发生了什么" } ], "traceTextDiagram": "基于文本的树状调用图", "traceGuide": "Markdown 格式的详细指南" } ] } ``` ## Tauri 命令 API ### `analyze_code` 分析代码并生成 CodeMap。 ```rust #[tauri::command] async fn analyze_code( files: Vec<String>, // 文件路径列表 query: String, // 用户查询 project_root: String, // 项目根目录 ) -> Result<CodeMap, String> ``` ### `save_codemap` 保存 CodeMap 到数据库。 ```rust #[tauri::command] async fn save_codemap( codemap: CodeMap, // CodeMap 数据 tags: Vec<String>, // 标签 notes: String, // 备注 ) -> Result<u64, String> // 返回 ID ``` ### `list_codemaps` 列出所有保存的 CodeMap。 ```rust #[tauri::command] async fn list_codemaps() -> Result<Vec<CodeMapMeta>, String> ``` ### `load_codemap` 加载指定 ID 的 CodeMap。 ```rust #[tauri::command] async fn load_codemap(id: u64) -> Result<CodeMap, String> ``` ### `delete_codemap` 删除指定 ID 的 CodeMap。 ```rust #[tauri::command] async fn delete_codemap(id: u64) -> Result<(), String> ``` ### `export_codemap` 导出 CodeMap 为指定格式。 ```rust #[tauri::command] async fn export_codemap( id: u64, format: String, // "json" | "markdown" | "html" output_path: String, ) -> Result<(), String> ``` ### `import_codemap` 导入 CodeMap 从文件。 ```rust #[tauri::command] async fn import_codemap( file_path: String, // JSON 或 Markdown 文件路径 ) -> Result<CodeMap, String> ``` ## 前端界面设计 ### 主界面布局 ``` ┌─────────────────────────────────────────────────────┐ │ CodeMap - 代码流程可视化工具 [设置] [帮助] │ ├──────────────┬──────────────────────────────────────┤ │ │ │ │ 📁 目录树 │ 查询输入 │ │ │ ┌────────────────────────────────┐ │ │ ├─ src/ │ │ 请输入要分析的流程... │ │ │ │ ├─ ctrl/ │ └────────────────────────────────┘ │ │ │ ├─ svc/ │ │ │ │ └─ dao/ │ [分析] [清除选择] │ │ └─ tests/ │ │ │ │ ┌────────────────────────────────┐ │ │ 历史版本 │ │ │ │ │ 📋 版本列表 │ │ │ │ │ ├─ 登录流程 │ │ 可视化展示区 │ │ │ ├─ 订单流程 │ │ (Mermaid / 文本图 / 指南) │ │ │ └─ 支付流程 │ │ │ │ │ │ │ │ │ │ │ └────────────────────────────────┘ │ │ │ │ │ │ [导出 JSON] [导出 Markdown] [分享] │ └──────────────┴──────────────────────────────────────┘ ``` ### 组件说明 #### 1. 目录树组件(DirectoryTree) - 显示项目目录结构 - 支持多文件选择(复选框) - 支持文件夹全选 - 显示文件类型图标 #### 2. 查询输入组件(QueryInput) - 文本输入框 - 支持历史查询记录 - 提供示例查询提示 #### 3. 可视化展示区(VisualizationPanel) - 三个 Tab:Mermaid 图、文本调用图、Markdown 指南 - 支持缩放和全屏 - 支持节点点击查看代码 #### 4. 历史版本列表(HistorySidebar) - 显示所有保存的 CodeMap - 支持搜索和过滤 - 显示创建时间和标签 - 支持删除和重命名 #### 5. 导出组件(ExportDialog) - 格式选择:JSON、Markdown、HTML - 文件路径选择 - 导出进度显示 ## 数据存储 ### 文件系统结构 CodeMap 使用基于文件系统的存储方式,所有数据存储在项目的 `docs/.codemap/` 目录中。 ``` 项目根目录/ ├── docs/ │ ├── .codemap/ # CodeMap 数据目录 │ │ ├── index.json # CodeMap 索引(元数据) │ │ ├── codemaps/ # CodeMap 数据文件 │ │ │ ├── 20250106-001-login-flow.json │ │ │ ├── 20250106-002-order-process.json │ │ │ └── ... │ │ ├── exports/ # 导出文件 │ │ │ ├── login-flow.html │ │ │ ├── order-process.md │ │ │ └── ... │ │ └── cache/ # 缓存目录(可选) │ ├── issues/ # Workhub Issues │ └── pr/ # Workhub PRs └── src/ # 源代码 ``` ### index.json 结构 ```json { "version": 1, "projectRoot": "/path/to/project", "codemaps": [ { "id": "20250106-001", "filename": "20250106-001-login-flow.json", "title": "用户登录流程", "description": "从前端登录请求到后端验证的完整流程", "query": "用户登录全流程", "createdAt": "2025-01-06T10:30:00Z", "updatedAt": "2025-01-06T15:20:00Z", "tags": ["v1.0", "生产环境"], "note": "包含异常处理逻辑" } ] } ``` ### CodeMap 文件结构 每个 CodeMap 保存为独立的 JSON 文件: ```json { "schemaVersion": 1, "metadata": { "id": "20250106-001", "title": "用户登录流程", "description": "从前端登录请求到后端验证的完整流程", "query": "用户登录全流程", "projectRoot": "/path/to/project", "createdAt": "2025-01-06T10:30:00Z", "updatedAt": "2025-01-06T15:20:00Z", "tags": ["v1.0", "生产环境"], "note": "包含异常处理逻辑" }, "title": "用户登录流程", "description": "从前端登录请求到后端验证的完整流程", "mermaidDiagram": "graph TB\n A[前端提交] --> B[Controller.login]\n B --> C[Service.validateUser]", "traces": [...] } ``` ## 代码分析逻辑 ### 关键节点识别 #### Controller 层 - 特征:类名包含 `Controller`、`Api`、`Endpoint` - 关键方法:`@RequestMapping`、`@GetMapping`、`@PostMapping` 等 #### Service 层 - 特征:类名包含 `Service`、`Manager`、`Handler` - 关键逻辑:业务判断、数据处理 #### Mapper/DAO 层 - 特征:类名包含 `Mapper`、`Dao`、`Repository` - 关键操作:数据库查询、插入、更新 #### 分支判断 - 特征:`if`、`switch`、`try-catch`、三元运算符 - 记录条件表达式 ### 文本调用图生成 ``` 流程名称 ├── Phase 1: 前端提交 │ ├── LoginController.login() < -- 1a │ │ └── 调用 UserService.validateUser() < -- 1b │ └── 返回登录结果 < -- 1c └── Phase 2: 后端处理 ├── UserService.validateUser() < -- 2a │ ├── 检查用户存在性 < -- 2b │ ├── 验证密码 < -- 2c │ └── 生成 Token < -- 2d └── UserMapper.selectById() < -- 2e ``` ## 示例使用 ### 示例 1:分析登录流程 **输入**: - 查询:`用户登录全流程` - 文件:`src/controller/LoginController.java`, `src/service/UserService.java`, `src/mapper/UserMapper.java` **输出**: ```json { "schemaVersion": 1, "title": "用户登录全流程", "description": "从前端登录请求到后端验证和Token生成的完整流程", "mermaidDiagram": "graph TB\n A[前端提交] --> B[Controller.login]\n B --> C[Service.validateUser]\n C --> D[Mapper.selectById]\n D --> C\n C --> E[生成Token]\n E --> B\n B --> A", "traces": [...] } ``` ### 示例 2:历史版本管理 1. 生成多个 CodeMap 版本 2. 在历史版本列表中查看 3. 点击版本加载到可视化区域 4. 对比不同版本的差异 ### 示例 3:分享功能 1. 选择要分享的 CodeMap 2. 点击"分享"按钮 3. 选择"导出 HTML" 4. 生成独立的 HTML 文件,包含所有可视化 5. 发送给同事,直接在浏览器中打开查看 ## 最佳实践 ### 代码选择 - 选择完整的业务流程相关文件 - 包含 Controller、Service、Mapper 层 - 避免选择过多无关文件 ### 查询编写 - 使用清晰的业务术语:`用户登录流程`、`订单创建流程` - 可以包含特定关注点:`支付流程 - 异常处理` - 中英文均可,系统会自动识别 ### 版本管理 - 为重要的 CodeMap 添加标签:`v1.0`、`生产环境` - 添加备注说明版本变更点 - 定期清理过期的历史版本 ### 导出格式 - **JSON**:用于程序化处理和二次开发 - **Markdown**:用于文档归档和版本控制 - **HTML**:用于分享和演示 ## 扩展计划 - [ ] 支持更多编程语言(Python、Go、TypeScript) - [ ] 添加代码复杂度分析 - [ ] 集成 AI 智能建议 - [ ] 支持团队协作(云端同步) - [ ] 添加插件系统 ## 故障排查 ### 常见问题 **Q:Mermaid 图表不显示?** A:检查网络连接,mermaid.js 需要从 CDN 加载。可配置本地离线版本。 **Q:代码分析不准确?** A:确保选择的文件包含完整的业务流程,代码需要符合常见的命名规范。 **Q:历史版本丢失?** A:检查 SQLite 数据库文件权限,确保应用有读写权限。 ## 技术支持 - 技能目录:`~/.pi/agent/skills/codemap/` - 客户端目录:`~/.pi/agent/skills/codemap/client/` - 数据存储:`项目根目录/docs/.codemap/`
View on GitHub