文档与代码地图

中级 Intermediate 工具型 Tool ⚡ Claude Code 专属 ⚡ Claude Code Optimized
4 min read · 200 lines

自动维护代码地图,保持文档与代码库实时同步

文档与代码地图

概述

doc-updater 代理(Agent)是一个文档专家,负责维护代码地图(Codemap)和文档与代码库的同步。本文整合了代理定义、代码地图更新命令和文档更新命令三个组件。

第二部分:代码地图更新(Update Codemaps)

步骤 1:扫描项目结构

  1. 识别项目类型(单体仓库 / Monorepo、单应用、库、微服务)
  2. 查找所有源代码目录(src/、lib/、app/、packages/)
  3. 映射入口点(main.ts、index.ts、app.py、main.go 等)

步骤 2:生成代码地图

docs/CODEMAPS/(或 .reports/codemaps/)中创建或更新代码地图:

文件 内容
architecture.md 高层系统架构图、服务边界、数据流
backend.md API 路由、中间件链、Service -> Repository 映射
frontend.md 页面树、组件层级、状态管理流
data.md 数据库表、关系、迁移历史
dependencies.md 外部服务、第三方集成、共享库

代码地图格式

每个代码地图应当精简 Token -- 为 AI 上下文消费优化:

# 后端架构

## 路由
POST /api/users -> UserController.create -> UserService.create -> UserRepo.insert
GET  /api/users/:id -> UserController.get -> UserService.findById -> UserRepo.findById

## 关键文件
src/services/user.ts (业务逻辑, 120 行)
src/repos/user.ts (数据库访问, 80 行)

## 依赖
- PostgreSQL (主数据存储)
- Redis (会话缓存, 速率限制)
- Stripe (支付处理)

步骤 3:差异检测(Diff Detection)

  1. 如果存在之前的代码地图,计算差异百分比
  2. 如果变更 > 30%,显示差异并请求用户批准后再覆盖
  3. 如果变更 <= 30%,就地更新

步骤 4:添加元数据

在每个代码地图添加新鲜度头部:

<!-- Generated: 2026-02-11 | Files scanned: 142 | Token estimate: ~800 -->

步骤 5:保存分析报告

将摘要写入 .reports/codemap-diff.txt

  • 自上次扫描以来添加/删除/修改的文件
  • 检测到的新依赖
  • 架构变更(新路由、新服务等)
  • 超过 90 天未更新的文档的过期警告

提示

  • 关注高层结构,而非实现细节
  • 优先使用文件路径和函数签名,而非完整代码块
  • 每个代码地图保持在 1000 Token 以内,以便高效加载上下文
  • 用 ASCII 图表代替冗长描述来展示数据流
  • 在主要功能添加或重构会话后运行

第三部分:文档更新(Update Docs)

步骤 1:识别信息源

信息源 生成内容
package.json 脚本 可用命令参考
.env.example 环境变量文档
openapi.yaml / 路由文件 API 端点参考
源代码导出 公共 API 文档
Dockerfile / docker-compose.yml 基础设施设置文档

步骤 2:生成脚本参考

  1. 读取 package.json(或 MakefileCargo.tomlpyproject.toml
  2. 提取所有脚本/命令及其描述
  3. 生成参考表:
| 命令 | 描述 |
|------|------|
| `npm run dev` | 启动开发服务器(支持热重载) |
| `npm run build` | 生产构建(含类型检查) |
| `npm test` | 运行测试套件(含覆盖率) |

步骤 3:生成环境变量文档

  1. 读取 .env.example(或 .env.template.env.sample
  2. 提取所有变量及其用途
  3. 分类为必需和可选
  4. 记录预期格式和有效值
| 变量 | 必需 | 描述 | 示例 |
|------|------|------|------|
| `DATABASE_URL` | 是 | PostgreSQL 连接字符串 | `postgres://user:pass@host:5432/db` |
| `LOG_LEVEL` | 否 | 日志详细级别(默认:info) | `debug`, `info`, `warn`, `error` |

步骤 4:更新贡献指南

生成或更新 docs/CONTRIBUTING.md,包含:

  • 开发环境设置(前提条件、安装步骤)
  • 可用脚本及其用途
  • 测试流程(如何运行、如何编写新测试)
  • 代码风格规范(Linter、Formatter、pre-commit Hook)
  • PR 提交检查清单

步骤 5:更新运行手册(Runbook)

生成或更新 docs/RUNBOOK.md,包含:

  • 部署流程(分步说明)
  • 健康检查端点和监控
  • 常见问题及解决方案
  • 回滚流程
  • 告警和升级路径

步骤 6:过期检查

  1. 查找超过 90 天未修改的文档文件
  2. 与最近的源代码变更交叉引用
  3. 标记可能过时的文档以供人工审查

规则

  • 单一信息源:始终从代码生成,永远不要手动编辑生成的部分
  • 保留手动部分:只更新生成的部分;保持手写内容不变
  • 标记生成内容:在生成部分周围使用 <!-- AUTO-GENERATED --> 标记
  • 不主动创建文档:只在命令明确要求时创建新文档文件

相关技能 Related Skills