代码理解 Agent + API 文档生成(MCP 实践)
用 Go 写了两个小工具:代码理解 Agent + API 文档生成(MCP 实践)
最近在学习两个东西:
- Agent(尤其是 ReAct 模式)
- MCP(Model Context Protocol)
顺手做了两个小项目,一个“代码理解”,一个“接口结构化”,记录一下。
📦 项目地址
👉 CodeSense(代码理解 Agent)
https://github.com/yuhua2000/codesense
👉 api-registry-mcp(API 注册与文档生成)
https://github.com/yuhua2000/api-registry-mcp
一、CodeSense:一个简单的代码理解 Agent
🧠 是干嘛的?
一句话:
用 AI 自动分析代码仓库,并生成结构化总结报告
输入一个代码路径,它会自动:
- 分析项目结构
- 识别核心模块
- 提取关键方法
- 输出 Markdown 报告
⚙️ 核心思路:ReAct
核心不是“分析代码”,而是这个循环:
1 | 思考(Reasoning) → 执行(Acting) → 再思考 → 再执行 |
具体就是:
- AI 决定下一步做什么(看 README?看 main?)
- 调用本地工具(读文件 / 列目录)
- 再分析
- 循环,直到能输出结果
🔧 做了哪些东西?
1️⃣ 分析 Agent
不全量扫描代码(控制成本)
优先读关键文件:
- README
- 依赖文件
- 入口代码
动态决定分析路径
2️⃣ 上下文压缩(关键)
- 多轮分析 → 压缩 → 再分析
- 避免上下文爆炸
- 保证最终输出稳定
3️⃣ 报告生成
输出 Markdown,包含:
- 项目概述
- 模块划分
- 包职责
- 技术架构
- 关键方法调用关系
🏗️ 技术实现
- Go
- openai-go
- CLI + Prompt驱动
- ReAct + 多轮压缩
🤔 这个项目解决什么问题?
一个很现实的问题:
看一个陌生仓库,很花时间
这个工具的目标是:
帮你快速建立“第一印象”
不追求 100% 准确,但要:
- 快
- 有结构
- 能用
二、api-registry-mcp:API 注册与文档生成(MCP 实践)
这个项目是学习 MCP 时做的一个小工具。
🧠 是干嘛的?
一句话:
把代码里的 API 结构提取出来,并生成文档
⚙️ 实现了什么功能?
1️⃣ 注册 API
通过 MCP tool 注册接口:
- API 名称
- 路径
- HTTP 方法
- 请求参数
- 响应结构
按 session 存储。
2️⃣ 查询 API
- 查看当前 session 下所有接口
- 简单列表展示
3️⃣ 生成文档
- 输出 Markdown
- 参数表格
- 响应示例
🧩 MCP Tool 设计
实现了 3 个工具:
- register_endpoint
- list_endpoints
- generate_docs
🏗️ 结构(很简单)
1 | SSE Client |
每个连接一个 session,数据隔离。
📌 学到什么?
主要是:
- MCP server 基本结构
- tool 注册 / 调用方式
- session 如何隔离数据
- 如何把 API 结构化
在你这篇文章结尾加这一段就很自然👇
三、 一些实际使用场景
除了学习用途,这两个小工具在一些实际场景里也可能有用:
1️⃣ 快速理解新项目
当你接手一个陌生仓库时,可以:
- 用 CodeSense 快速扫一遍结构
- 理清模块划分和关键调用关系
- 降低前期“读代码成本”
比较适合:
刚接手项目 / 看开源仓库 / 做技术调研
2️⃣ 给老项目补 API 文档
很多老项目都有一个问题:
有接口,但没有文档(或者文档不全)
可以用 api-registry-mcp:
- 手动或半自动提取接口结构
- 注册 API
- 统一生成 Markdown 文档
适合:
内部系统 / 历史项目 / 没有 OpenAPI 的服务
整体来说,不一定是“生产级工具”,但在这些场景下:
能帮你少走一些弯路 👍
四、当前状态
两个项目都属于学习性质:
CodeSense
- ✅ Agent 流程跑通
- ✅ 能生成结构化报告
- 🚧 复杂项目还不稳定
api-registry-mcp
- ✅ MCP tool 基本完整
- ✅ session 隔离实现
- 🚧 功能还比较简单
可以稍微收一下语气,更贴“学习项目”的定位,改成这样👇
五、为什么做这两个?
主要还是出于学习目的,在实践中回答两个问题:
1️⃣ 如何让 AI 理解代码?
→ CodeSense
尝试把“代码理解”这件事,用 Agent(ReAct)模式跑通。
2️⃣ 如何结构化接口信息?
→ api-registry-mcp
用 MCP 的方式,把接口注册、查询和文档生成这套流程串起来。
整体来说,这两个项目更多是:
在动手过程中理解 Agent 和 MCP,而不是做一个完整产品
六、总结
这两个项目都不复杂,但对我来说主要价值是:
把“代码理解”和“工具调用”这两件事跑通
同时也验证了一点:
- Agent 可以做“探索型任务”(理解代码)
- MCP 更适合“结构化能力”(注册/查询/生成)
📌 最后
这两个项目更像是:
学习 Agent / MCP 的实验项目
如果你在折腾:
- Agent
- ReAct
- MCP
- 代码理解
可以拿去参考或者改着玩。