本文件是为 AI Agent 与人类开发者协作维护 CodeWiki/CodeDoc 项目而写的工程指南。
优先级: 代码实现 > 本文件 > README/DEVELOPMENT 文档。
CodeWiki 是一个“代码仓库 -> 结构化技术文档”的生成系统,核心能力包括:
- 多语言源码分析与依赖图构建(AST + call graph)。
- 基于 LLM 的模块聚类与分层文档生成。
- CLI 生成流程(
codewiki generate)与可选 CLI Agent 子进程模式(--with-agent-cmd)。 - Web 服务(FastAPI)任务队列、缓存、文档浏览与管理接口。
- 可选文档翻译(
--output-lang)与 HTML 浏览页(--github-pages/--index-page)。
非目标:
- 该仓库当前不包含稳定的单元测试套件。
- 当前 lint 基线存在大量历史问题,不应把“全仓 lint 清零”作为默认改动目标。
codewiki/: 主 Python 包。docs/: 文档产物/示例文档。docker/: Dockerfile、compose 与容器运行说明。output/: 运行时产物(缓存、临时克隆、生成文档)。pyproject.toml: 打包、依赖、工具配置(black/mypy/ruff/pytest)。README.md,DEVELOPMENT.md: 说明文档(部分内容与当前实现可能有偏差)。
codewiki/cli/codewiki/cli/main.py: CLI 根命令注册(config,generate)。codewiki/cli/commands/config.py: 配置管理命令。codewiki/cli/commands/generate.py: 文档生成命令入口。codewiki/cli/adapters/doc_generator.py: CLI 到后端编排适配层。codewiki/cli/adapters/translator.py: 翻译后处理。codewiki/src/be/codewiki/src/be/documentation_generator.py: 后端主编排(依赖分析、聚类、文档生成、overview)。codewiki/src/be/agent_orchestrator.py: pydantic-ai 模式模块生成。codewiki/src/be/cmd_agent_orchestrator.py: CLI Agent 子进程模式模块生成。codewiki/src/be/dependency_analyzer/: 仓库结构分析、call graph、多语言 analyzer。codewiki/src/fe/codewiki/src/fe/web_app.py: FastAPI 应用入口。codewiki/src/fe/background_worker.py: 队列执行器、克隆、任务状态、缓存。codewiki/src/fe/routes.py: Web/API 路由与文档浏览逻辑。codewiki/src/fe/github_processor.py: 仓库 URL 解析与 clone 工具。codewiki/templates/github_pages/: 静态 HTML 模板。
codewiki generate- 读取配置(env/config/keyring 优先级在
ConfigManager中实现)。 - 仓库校验(语言扫描、git 状态、输出目录可写)。
DependencyGraphBuilder构建组件与叶子节点。cluster_modules进行层次模块聚类(可能走 API 或 agent_cmd)。DocumentationGenerator.generate_module_documentation:- 并行叶模块。
- 顺序父模块。
- 最后生成
overview.md。 - 可选 HTML 与翻译后处理。
- FastAPI 接收任务(
/,/admin,/api/tasks)。 BackgroundWorker入队并串行处理。- clone 仓库到
output/temp/<job_id>。 - 若配置了子项目目录(
subproject_path),则在克隆仓库中切到对应子目录作为分析根目录。 - 调用
DocumentationGenerator.run()。 - 写缓存索引、任务状态、日志文件。
- 提供
/docs/{job_id}与/static-docs/...浏览。
config set/show/validate/agent必须保持可用。generate支持以下关键参数:--output/-o--github-pages--index-page--no-cache--include/--exclude/--focus/--doc-type/--instructions/--skills--max-tokens/--max-token-per-module/--max-token-per-leaf-module/--max-depth--output-lang--with-agent-cmd--concurrency/-j- 已有“断点续跑”行为依赖于输出目录中
.md是否存在,避免破坏此逻辑。
标准生成目录至少包含:
overview.mdmodule_tree.jsonfirst_module_tree.jsonmetadata.json- 各模块
*.md
翻译目录契约:
- 输出在
<output-dir>/<lang>/。 - 非 markdown 关键文件(如 JSON)需复制到翻译目录。
当使用 --with-agent-cmd:
- 叶子/普通模块: agent stdout 必须是“纯 markdown 内容”,不能带额外解释。
- 父模块/overview: 期望
<OVERVIEW>...</OVERVIEW>包裹(代码有兜底提取,但不要依赖)。 - 聚类: 期望
<GROUPED_COMPONENTS>...</GROUPED_COMPONENTS>包裹 JSON 字典。
- Python >= 3.12(
pyproject.toml要求)。 - Node.js >= 14(Mermaid 校验依赖链需要)。
- git。
推荐命令:
python3.12 -m venv .venv
source .venv/bin/activate
pip install -e .
pip install -r requirements.txt可选打包构建:
python -m pip install build
python -m builddocker-compose -f docker/docker-compose.yml up -d --buildWeb 默认端口 8000,容器入口为:
python codewiki/run_web_app.py --host 0.0.0.0 --port 8000./.venv/bin/codewiki --help
./.venv/bin/codewiki config --help
./.venv/bin/python -m compileall -q codewikicodewiki config validate --quick需要连通性时去掉 --quick。
当前仓库没有 tests/ 目录;pyproject.toml 中 pytest 配置包含 testpaths = ["tests"] 与覆盖率参数。
已知问题:
- 直接运行
pytest会在tests/缺失时递归扫描整个仓库。 - 会误收集
output/temp/...下外部仓库测试,导致大量 collection error。 pytest-cov在 0 tests 时通常以非 0 退出。
因此当前建议:
- 不把“根目录直接
pytest通过”作为默认验收标准。 - 新增测试时先创建
tests/,再用pytest tests -q。 - 若仅做局部改动,优先执行“目标模块级烟雾验证 + compileall”。
- 行宽 100(black/ruff 配置一致)。
- 目标 Python 版本
py312。 mypy为宽松模式(未强制完全类型化)。
- 改动时优先保持兼容,不要重构无关文件。
- 优先做“最小充分改动”,避免扩大影响面。
- 对新增参数,需同步 CLI、配置模型、后端消费层。
- 不要破坏已有 JSON/Markdown 产物格式。
- 涉及并发(
concurrency)时,确认串行路径仍可工作。
ruff check codewiki 当前存在大量历史问题(未使用变量、E402、E722 等)。
除非任务明确要求“全量治理 lint”,否则只要求:
- 新增代码不引入明显同类问题。
- 修改文件尽量不扩大已有问题数量。
- 在
codewiki/cli/commands/generate.py或config.py加 option。 - 在
codewiki/cli/models/config.py的AgentInstructions/Configuration扩展字段。 - 在
codewiki/cli/config_manager.py补充加载/保存/覆盖逻辑。 - 在
codewiki/src/config.py和消费方透传。 - 更新 README/本文件相关命令说明。
- 在
codewiki/src/be/dependency_analyzer/analyzers/新增 analyzer。 - 在
call_graph_analyzer.py增加语言路由。 - 在
patterns.py与语言扩展映射中登记后缀。 - 检查 CLI
detect_supported_languages是否需要同步(当前与后端能力存在轻微不一致风险)。
- 更新
web_app.py路由函数签名。 - 更新
routes.py的create_task_api/admin_post解析逻辑。 - 更新
models.py的GenerationOptions。 - 更新
background_worker.py的参数应用逻辑。 - 若参数影响任务维度(如
subproject_path),同步调整job_id与缓存 scope 生成规则。
提交前至少确认:
- 目标功能路径可运行(CLI 或 Web)。
python -m compileall -q codewiki通过。- 受影响命令
--help/参数解析无回归。 - 输出目录关键文件契约未破坏(
overview.md,module_tree.json,metadata.json)。 - 若涉及 agent_cmd,输出协议符合约定(见 4.3)。
- 文档与参数说明同步更新。
如果本文件与当前实现冲突,以代码为准,并在同一提交中修正本文件。