atharvm416/codedoc-ai

GitHub: atharvm416/codedoc-ai

一款支持增量和确定性输出的 AI 文档生成 CLI 工具,为代码仓库构建可持久复用的结构化文档记忆层。

Stars: 1 | Forks: 0

# codedoc-ai `codedoc-ai` 为源代码仓库生成结构化且可增量复用的文档。它在本地扫描源代码,构建确定性的依赖关系图, 仅将需要分析的文件发送到配置的 LLM,并输出 JSON、 Markdown 或两者兼有。 ## 为什么选择 codedoc-ai 大多数文档生成器只运行一次,并从零开始重新生成所有内容。 codedoc-ai 被构建为 AI 辅助开发的文档*记忆层*:它将文档视为持久的、 可复用的状态,而不是一次性的输出。 - 它进行**增量**文档化 —— 仅将源代码或分析标识发生变化的文件 发送给 LLM;其他所有内容都会被复用。 - 其完成后的输出是**确定性的** —— 相同的输入会产生 字节完全相同的文档,没有时间戳会产生虚假的 diff。 - 它是**崩溃安全**的 —— 中断的运行会从恢复文件中恢复,而不会 重复付费工作。 - 在写入之前,它会**验证所有权**,因此它绝不会覆盖 它不认可为自己产出的文件。 - 它生成**结构化的 JSON 和 Markdown**,旨在供人类 和工具重读。 这样的文档可以低成本重新生成,并且在一次次的运行中始终与代码保持同步。 ## 架构概览 ``` flowchart TD A["Repository"] --> B["Scan - local, deterministic"] B --> C["Dependency graph, entry-based selection"] C --> D["Plan"] D -->|"unchanged (content hash + analysis identity)"| E["Reuse"] D -->|"compatible crash-recovery work"| F["Resume"] D -->|"changed files only"| G["LLM"] E --> H["Write JSON / Markdown - atomic, ownership-guarded"] F --> H G --> H ```
纯文本版本(适用于不渲染 Mermaid 的查看器) ``` repository │ ▼ scan (local, deterministic) │ ▼ dependency graph → entry-based selection │ ▼ plan ─── reuse unchanged (content hash + analysis identity) │ ── resume compatible crash-recovery work │ ── send only changed files to the LLM ▼ write JSON / Markdown (atomic, ownership-guarded) ```
有关完整的逐阶段运行生命周期 —— 包括缓存和恢复标识 以及失败不变量 —— 请参见 [RUN_FLOW.md](https://github.com/atharvm416/codedoc-ai/blob/main/RUN_FLOW.md)。 ## 核心设计原则 这些原则由代码强制执行,而非仅是愿景: - **确定性输出** —— 相同的输入产生字节完全相同的文档; 完成后的输出不包含时间戳。 - **默认增量** —— 未更改的文件将被复用,永远不会重新发送给 provider。 - **Fail-closed(失败即停止)验证** —— 未知的配置、格式错误的指令 profile 以及外部的输出文件会停止运行,而不是被静默 忽略。 - **最小的缓存失效** —— 更改仅重新处理它 实际影响的文件。 - **明确的所有权** —— codedoc-ai 仅覆盖它认可为自己 产出的文件。 - **可读的输出契约** —— 完成后的 JSON 和 Markdown 结构化设计,适合 人类、脚本和 AI 助手阅读。 - **基于验证的兼容性** —— CodeDoc 会读取已识别的 CodeDoc 文档 和恢复文件,并拒绝外部或格式错误的 artifact。 - **配置优于 CLI 膨胀** —— 深度定制存在于 `codedoc.config.json` (`codedoc --init-config`)中;命令行接口保持精简。 ## 核心亮点 - 显式或自动检测的入口文件,支持 `entry` 或 `all` 文档范围。 - 默认每个文件一次组合的 provider 调用;可选的 triple-agent 分析。 - 基于源哈希和分析标识,在 JSON 和 Markdown 之间进行增量复用。 - 一个固定的崩溃恢复文件,可在中断后保留已完成的工作。 - 仅限配置的、经过验证的指令定制,并带有强制性的语义审查。 - 支持 OpenAI、Anthropic、Gemini 和 OpenAI 兼容的 endpoint。 - 只读的 dry run、付费文件上限、确定性的所有权防护,以及稳定的 面向 CI 的退出代码。 ## 安装 ``` pip install codedoc-ai ``` ## 快速开始 在进程环境中设置 provider 凭证,然后运行 CodeDoc: ``` export OPENAI_API_KEY="your-key" codedoc --entry src/main.py ``` PowerShell: ``` $env:OPENAI_API_KEY="your-key" codedoc --entry src/main.py ``` 默认输出为 `codedoc/codedoc.json`。常见的替代方案: ``` codedoc --format md codedoc --format both codedoc --output docs/report.json codedoc --documentation-scope all codedoc --dry-run --max-files 25 ``` 入口是可选的:CodeDoc 可以从所选输出中恢复它, 自动检测配置的候选对象,或者在不存在 候选对象时记录所有扫描的文件。 在后续运行中,CodeDoc 会复用未更改的自身记录,并重新处理已更改的 文件。如果你在 JSON 和 Markdown 之间切换,并且请求的目标 尚不存在,则会验证并使用格式完全相反的同级文件作为 转换源;未更改的文件不需要调用 provider。 空和仅包含空格的源文件会在解析之前和 其每文件文档化调用之前被跳过。它们不算作失败,也不会产生每文件 provider 费用。运行会通过 `files_skipped_insufficient_source` 报告它们;如果被跳过的路径在 旧的输出中有文档,该过期的记录将从新完成的输出中 省略。 ## 将输出与 AI 助手结合使用 CodeDoc 的输出设计为可以粘贴、被索引或附加到 AI 编码助手中。为了获得最佳效果: - 当人类和工具需要读取同一次运行的结果时,使用 `--format both`:Markdown 更容易浏览,而 JSON 更便于 agent 和脚本查询。 - 对于具有明确起点的应用程序流程、CLI、服务 和库,使用 `--entry` 加上默认的 `documentation_scope: entry`。 - 对于包索引、SDK 风格的参考,或者 没有有意义入口文件的仓库,使用 `--documentation-scope all`。 - 在大型或首次运行之前,运行 `codedoc --dry-run --max-files N` 以查看 有多少文件将到达 provider。 - 将 `codedoc/codedoc.json` 或 `codedoc/codedoc.md` 保持在稳定的位置,以便 将来的运行和 AI 助手可以与相同的文档 记忆进行比较。 - 更倾向于使用 `analysis_mode: single` 以获得快速、经济的文档。当依赖推理和角色分离比 provider 调用次数更重要时,请使用 `analysis_mode: triple`。 ## 文件契约 CodeDoc 会自动管理一小组刻意设计的持久化文件: | 阶段 | 确切文件 | 用途 | | --- | --- | --- | | 配置 | `/codedoc.config.json` | 可选的运行时配置和内联指令。 | | 活动运行 | `/crash_recovery.json` | 正在进行的恢复状态。 | | 最终输出 | 确切选定的 `.json`、`.md` 或两者 | 稳定的 CodeDoc 自有结果。 | 没有备用配置搜索、外部 prompt-profile 搜索、prompt 目录、`.env` 加载、检查点/构建/数据库迁移、全目录范围的 输出发现、持续的问题日志或托管的 `.gitignore` 行为。唯一的 回退是下面描述的确定性的同名 JSON/Markdown 对应物;不相关的文件 不会被打开、迁移、重命名或删除。 临时的原子写入同级文件和可写性探测是短暂的 实现细节。它们在目标目录中使用唯一的名称,并 尽最大努力进行清理。 ### 输出格式 | 选择 | 稳定输出 | 最佳用途 | | --- | --- | --- | | `--format json` | `/codedoc.json` 或提供给 `--output` 的确切 `.json` 路径 | 用于脚本、CI 和 AI agent 的机器可读项目记忆。 | | `--format md` | `/codedoc.md` 或提供给 `--output` 的确切 `.md` 路径 | 带有用于复用的隐藏 CodeDoc 元数据的、人类可读的文档。 | | `--format both` | 选定输出目录中的 `codedoc.json` 和 `codedoc.md` | 一次运行即可同时服务于工具和人类。 | 提供 `--output docs/report.json` 或 `--output docs/report.md` 会选择该 确切文件,并根据其扩展名推断格式。`--format both` 会写入两个 文件,因此需要输出目录。 ### 运行元数据 完成的 JSON 文档包含一个规范的运行元数据块:`last_run`。 它包括入口文件、入口源、文档范围、分析模式、 扫描/选定的计数,以及在最近运行中发生的精确划分。 如果你以编程方式读取 CodeDoc 文档,请使用 `last_run` 获取运行 元数据,并使用 `files[]` 获取每文件文档。 | `last_run` 字段 | 含义 | | --- | --- | | `entry_file` | 用于选择的入口文件,如果未使用入口则为 `null`。 | | `entry_source` | `explicit`、`recovered`、`auto-detected` 或 `none`。 | | `documentation_scope` | `entry` 或 `all`。 | | `analysis_mode` | `single` 或 `triple`。 | | `files_scanned` | 扫描器找到的受支持的源文件。 | | `files_selected` | 为此次文档运行选择的文件。 | | `files_documented_by_llm` | 在此次运行中由 provider 成功生成文档的文件。 | | `files_failed` | 在此次运行中出错的选定文件。 | | `files_unattempted` | 在受限中止后未尝试的选定文件。 | | `files_reused_unchanged` | 由于内容和分析标识未更改而复用的文件。 | | `files_reused_identical_content` | 从具有相同内容的另一路径复用的文件。 | | `files_resumed_from_recovery` | 从兼容的崩溃恢复状态还原的文件。 | 真实的 `last_run` 划分是: ``` files_selected == files_reused_unchanged + files_reused_identical_content + files_documented_by_llm + files_failed + files_unattempted ``` 当首次运行的文件在存在任何先前记录之前失败或未被尝试时,文档中的文件记录数可能少于 `last_run.files_selected`。`files_resumed_from_recovery` 是 `files_reused_unchanged` 的子集,而不是单独的分区类别。 `files[]` 记录中每个以 `_` 开头的键都是 CodeDoc 内部的。 外部使用者应忽略这些键;它们被持久化用于缓存、 恢复和依赖项复用,而不是稳定的公共契约。 ### 所有权标记 完成的 `codedoc.json` 输出可以通过严格的 CodeDoc 文档 结构来识别:包含 `entry_file` 的 `last_run` 以及结构化的 `files` 集合。 没有这种结构的外部 JSON 在覆盖之前会被拒绝。 其他由 CodeDoc 管理的 artifact 仍然需要内部所有权元数据: | 文档 | 所有权标记 | | --- | --- | | 完成的 `codedoc.json` | `last_run.entry_file` 加上结构化的 `files` | | `crash_recovery.json` | 内部的 `_codedoc` 恢复元数据 | | `codedoc.md` | 隐藏的 `` 元数据注释 | 完成的 JSON 是公共的机器可读契约。恢复 JSON 和 Markdown 带有各自内部的 ownership marker,因为它们服务于不同的 运行时角色。 ## 配置 从规范默认值生成一个完整的、有效的、可编辑的配置: ``` codedoc --init-config ``` 这会在当前目录写入 `codedoc.config.json`。它包含每个 公共设置,`api_key: null`,以及可编辑的无版本 single/triple 指令 默认值(`requested_shape` 语法)。凭证永远不会被复制到文件中。 除非提供 `--force`,否则拒绝覆盖现有目标。强制重新生成 会验证现有文件并仅以原子方式替换 `prompt_profiles`; 其他所有顶级设置和值都会被保留,并且不会创建备份。CodeDoc 从这个确切的活动文件中读取后续的编辑。 有用的默认值包括: | 设置 | 默认值 | | --- | --- | | `llm_provider` | `auto` | | `model_name` | provider 默认值 | | `documentation_scope` | `entry` | | `analysis_mode` | `single` | | `output_dir` | `codedoc` | | `output_format` | `json` | | `max_parallel_files` | `5` | | `file_retry_attempts` | `1` | | `max_file_size_kb` | `500` | | `max_content_chars` | `12000` | | `follow_symlinks` | `false` | | `propagate_changes` | `true` | | `rate_limit_adaptive` | `true` | | `response_correction_enabled` | `false` | 当你需要完整的当前键集时,请运行 `codedoc --init-config`,而不是 复制部分示例。 ### 响应纠正(选择性开启) Provider 响应必须满足确定性的 JSON 契约:请求的 键、请求的类型、每个必填字段有非空值,以及 至少有一个可用的请求字段。未通过契约的响应将被 拒绝,并带有受限的、结构化的诊断信息。 响应纠正**默认禁用**。设置 `"response_correction_enabled": true` 以允许针对每个失败的 agent 响应最多进行**一次**针对性的 纠正调用 —— 这是一次额外的付费 provider 调用, 要求模型将响应修复为确切的 schema,保留有效的 事实且不捏造任何内容。 - 在纠正**关闭**(默认)的情况下,被拒绝的响应**不会**被静默 转换为整个文件的重试;该文件在其初始调用时失败一次。 - 在纠正**开启**的情况下,将对该 agent 响应进行一次修复调用;如果 修复也未通过契约,则该文件失败,不再进行进一步重试。 - 纠正**不是**对事实性的绕过。格式错误的输出或缺失或 空的必填字段仍然可能导致文件失败,无论是否开启纠正。 - `file_retry_attempts`仍然是针对传输、速率限制和其他 可恢复失败的策略;它不受响应纠正的影响。 - 在 `--verbose`(`log_level: DEBUG`)下,诊断信息仅添加受限的结构化 元数据(移除的字段路径和原因代码、返回的值类型、解析 位置、响应字符计数)。绝不会记录任何原始的 provider-response 文本、source、 prompt 或凭证。 ## 命令行选项 | 标志 | 用途 | | --- | --- | | `--entry FILE` | 选择一个入口文件;否则恢复或自动检测。 | | `--documentation-scope {entry,all}` | 记录入口可达的文件或所有扫描的文件。 | | `--provider NAME` | 选择 `auto`、`openai`、`anthropic` 或 `gemini`。 | | `--model MODEL` | 覆盖 provider 模型。 | | `--output PATH` | 选择一个输出目录或确切的 `.json`/`.md` 文件。 | | `--format {json,md,both}` | 选择输出格式。 | | `--ignore PATH` | 添加项目相对的忽略路径;可重复使用。 | | `--skip-dirs DIRS` | 用逗号分隔的列表替换默认跳过的目录名。 | | `--add-skip-dir DIR` | 添加一个跳过的目录名;可重复使用。 | | `--remove-skip-dir DIR` | 移除一个默认跳过的目录名;可重复使用。 | | `--dry-run` | 在不写入或不调用 provider 的情况下进行规划。 | | `--max-files N` | 限制允许进行文档调用的文件数(`0` 表示无限制)。 | | `--force-files FILE` | 即使未更改也重新处理选定的路径;可重复使用。 | | `--allow-partial` | 在包含文件失败的运行完成后以零退出码退出。 | | `--no-parallel` | 在 triple 模式下禁用文件内的并行 agent。 | | `--analysis-mode {single,triple}` | 选择一次组合调用或三 agent 路径。 | | `--init-config` | 创建完整的活动配置并退出。 | | `--force` | 与 `--init-config` 一起使用,仅刷新可编辑的 profile。 | | `--max-parallel-files N` | 设置并发文件处理(默认为 `5`)。 | | `--truncation-head-ratio FLOAT` | 设置头/尾源截断比例。 | | `--verbose`, `-v` | 启用调试日志。 | | `--version` | 打印安装的版本并退出。 | 忽略规则通过 `--ignore`/`ignore_paths` 和 `--skip-dirs`/`--add-skip-dir`/`--remove-skip-dir` 系列解析。路径是 项目相对的;skip-directory 值是目录名。 ## Provider 和环境变量 凭证和普通的标量覆盖可能来自操作系统 环境变量。CodeDoc 不会读取 `.env` 文件。 | 变量 | 用途 | | --- | --- | | `OPENAI_API_KEY` | OpenAI 凭证。 | | `ANTHROPIC_API_KEY` | Anthropic 凭证。 | | `GEMINI_API_KEY` / `GOOGLE_API_KEY` | Gemini 凭证。 | | `LLM_API_KEY` | 通用回退凭证。 | | `LLM_PROVIDER` | `auto`、`openai`、`anthropic` 或 `gemini`。 | | `MODEL_NAME` | Provider 模型名称。 | | `API_BASE_URL` | OpenAI 兼容的 endpoint 基础 URL。 | | `OUTPUT_DIR` | 输出目录或确切的输出文件。 | | `CODEDOC_OUTPUT_FORMAT` | `json`、`md` 或 `both`。 | | `LOG_LEVEL` | `DEBUG`、`INFO`、`WARNING` 或 `ERROR`。 | | `CODEDOC_IGNORE_PATHS` | 以分号分隔的项目相对忽略路径。 | | `CODEDOC_MAX_PARALLEL_FILES` | 文件并发。 | | `CODEDOC_FILE_RETRY_ATTEMPTS` | 每个文件的重试次数。 | | `CODEDOC_MAX_CONSECUTIVE_FAILURES` | 连续失败中止阈值。 | | `CODEDOC_MAX_CONTENT_CHARS` | 每个文件 prompt 内容上限。 | | `CODEDOC_DRY_RUN` | 仅规划模式。 | | `CODEDOC_MAX_FILES` | 付费文件上限(`0` 表示无限制)。 | | `CODEDOC_FORCE_FILES` | 以分号分隔的项目相对路径。 | | `CODEDOC_ALLOW_PARTIAL` | 允许已完成的部分运行以零退出码退出。 | | `CODEDOC_ANALYSIS_MODE` | `single` 或 `triple`。 | | `CODEDOC_TRUNCATION_HEAD_RATIO` | 用于源截断的头部比例。 | Provider 默认值为 OpenAI `gpt-4o-mini`、Anthropic `claude-haiku-4-5-20251001` 和 Gemini `gemini-2.5-flash`。使用 `--provider` 和 `--model` 显式选择,或者使用带有已识别模型前缀的 `auto`。 ## 内联指令 唯一的运行时指令源是确切的 `codedoc.config.json` 中的 `prompt_profiles`(或内存中的 Python 覆盖)。生成的 profile 是 无版本的,并使用 `requested_shape`。 每个存在的模式都使用必需的 `common` 信封和可选的 `per_extension` 完整替换,以文件扩展名为键: ``` { "prompt_profiles": { "single": { "common": { "requested_shape": { "description": "Explain what this file does.", "role_in_system": "Explain its architectural role." } }, "per_extension": { ".js": { "requested_shape": { "description": "Explain this JavaScript module for a reviewer." } } } } } } ``` Triple 模式在每个 `per_extension` 覆盖(完整替换)中携带所有三个 agent 键, 并且非空的 `triple.per_extension` 需要 `triple.common.documentation`: ``` { "prompt_profiles": { "triple": { "common": { "structure": { "requested_shape": { } }, "dependency": { "requested_shape": { } }, "documentation": { "requested_shape": { } } }, "per_extension": { ".cs": { "structure": { "requested_shape": { } }, "dependency": { "requested_shape": { } }, "documentation": { "requested_shape": { } } } } } } } ``` **扩展解析。** 对于每个文件,有效块由 `最长匹配的 per_extension > common > 内置默认值` 选择。匹配基于文件小写的 **basename**,因此多部分后缀可以工作,并且最长匹配 获胜:对于 `types.d.ts`,`.d.ts` 击败 `.ts`,并且匹配是大小写不敏感的(`Types.D.TS` 选择 `.d.ts`)。整个名称为 `.ts` 的文件不会被当作带有 `.ts` 后缀的文件对待。覆盖是该块的 **完整替换**, 绝不是逐字段合并。每个 `per_extension` 键必须是一个小写的点分 后缀,其最后一段是项目配置的扩展名之一(来自 `extension_language_map`);当仅配置了 `.py` 时,`.pyy` 会被拒绝, 这防止了静默无效的覆盖。匹配不到任何扫描文件的条目会 经过验证,但不会产生任何成本——它不渲染 prompt,不进行审查调用,也 不会使缓存失效。编辑已使用的覆盖仅重新处理 basename 解析为它的文件;回退到未更改的 `common` 的文件保持 可复用状态。 不支持的结构化 profile 会被拒绝,并给出针对性指导。 `analysis_mode: single` 在 `single.common` 处公开了一个可编辑的组合指令 JSON。Triple 模式在 `triple.common.structure`、`.dependency` 和 `.documentation` 处公开了三个独立可编辑的指令 JSON 块。 支持的字段顺序、可选字段和受限的指令文本是可编辑的; 固定的系统、安全、事实性、扫描、重试、缓存和序列化规则 不可编辑。`per_extension` 仍然是完整的块替换。 仅当有效的非默认指令将要到达计划好的 LLM 文档调用时,才会对其进行审查。`SAFE` 继续,`RISKY` 需要每次运行明确 确认,而 `TOO_RISKY` 总是停止。初始化、未编辑的默认值、 dry run、仅限缓存的工作以及确定性的 JSON↔Markdown 转换不会发出安全 审查调用。不存在存储的绕过方式。 当自定义字段看起来需要单文件遍历无法 看到的跨文件上下文时,CodeDoc 还会计算确定性的、非阻塞的可行性建议。这些建议不需要 provider,出现在 dry-run 和实际运行的总结中, 永远不会阻塞运行,也永远不会更改标准/安全审查结论。 固定的系统角色、事实性/安全规则、解析器事实、清理器、provider 选择、扫描、重试、缓存、所有权和 artifact 序列化不可 自定义。 使用 `codedoc --init-config` 作为注册表支持的参考,以获取确切的字段、 类型和完整的默认值。 ## 输出、增量复用和所有权 在单格式运行中,现有的请求目标是权威的。如果它 缺失,CodeDoc 可能会严格验证并仅复用其完全相反格式的 同级文件:`codedoc.json` 与 `codedoc.md` 配对,而命名的 `docs/report.json` 仅与 `docs/report.md` 配对。未更改的兼容记录 无需调用 provider 即可转换;已更改、强制、缺失或 缓存不兼容的文件将正常进行文档化。同级文件是只读的, 仅写入请求的格式。 如果存在的外部回退或格式错误的回退在联系 provider 之前阻塞,而不是 静默地开始一个新的付费运行。不使用目录遍历、修改 时间选择、不相关的默认文件名或额外的候选对象。入口 恢复仍然绑定到选定的输出;当它不存在时,运行普通的源 入口自动检测。 Both 模式会读取其确切的两个目标,如果 entry、路径集、哈希或缓存标识不一致,则会在联系 provider 之前阻塞。当只存在一个有效目标时, 它会提供用于创建两个输出的记录。 CodeDoc 拒绝覆盖外部的、空的或格式错误的最终目标。当明确提供时,仍然支持自定义 输出名称: ``` codedoc --output docs/report.json codedoc --output docs/report.md ``` `--format both` 需要一个目录,因为它会写入两个文件。 ## 崩溃恢复 每次实际运行都只使用确切的 `/crash_recovery.json`。该文件 仅在所有权/路径检查、确定性验证、只读 规划、付费上限以及任何强制性语义审查成功后才创建。它会在每个文件完成后以原子方式 更新。 恢复文件包括涵盖项目根目录、确切选定的 目标、入口、文档范围和分析模式/修订版本的版本化标识。它不再 绑定整个 profile 的摘要:每个恢复的已完成记录都将根据当前文件的 `_prompt_profile_digest` 单独 重新验证, 因此不相关的 profile 编辑或新添加的文件不再会丢弃可恢复的 运行。兼容的正在进行的文件将被恢复。外部、格式错误、已完成、 不受支持或标识不匹配的文件将原样阻塞。要重新开始, 请删除输出目录中的 `crash_recovery.json`;要恢复,请还原 先前的运行配置。 成功时,首先原子性地替换最终输出,然后再移除恢复文件。中断、provider 失败和最终输出失败会保留 稳定的先前输出和恢复文件。Dry-run 可以检查确切的恢复 路径,但永远不会创建、更改或删除它。 ## 规划和诊断 `--dry-run` 执行扫描和规划,没有持久化突变、创建 provider 或 API 调用。它单独报告空/仅包含空格的文件, 并排除了它们预期的文档调用和 prompt token。`--max-files N` 仍是对 pre-gate 文档调用候选者的保守上限,而 dry-run 还显示了在其只读源快照之后,实际有多少候选者将到达文档 调用。`--force-files PATH` 绕过选定文件的复用。 问题在内存中受限,打印到终端,并包含在允许的 最终/恢复元数据中。CodeDoc 不会写入 `error.log`。 退出代码: | 代码 | 含义 | | --- | --- | | `0` | 成功、dry-run 成功或明确允许的已完成的部分输出。 | | `1` | 处理/输出失败或受限的速率限制停止。 | | `2` | 无效的输入/配置/路径、所有权/恢复冲突、上限失败或致命的 provider 失败。 | | `130` | 键盘中断。 | ## Python API ``` from codedoc import run_pipeline stats = run_pipeline({ "entry_file": "src/main.py", "output_format": "json", "max_parallel_files": 3, }) stats = run_pipeline("/path/to/project", {"output_format": "both"}) ``` 支持内存中的覆盖,但不会创建另一个持久化的配置 源。不受支持的设置(如外部 prompt 路径、风险审查绕过、 安全模式和托管输出忽略文件)会引发针对性的配置错误。 ## 故障排除 - 凭证缺失:设置匹配的 provider 环境变量。 - 意外的付费工作:使用 `--dry-run` 运行相同的命令并检查 确切的输出选择和分析模式。 - 恢复冲突:查看错误中的 expected/found 字段,然后恢复 先前的配置或删除确切的 `crash_recovery.json` 以重新开始。 - 文件缺失:检查入口选择、`documentation_scope`、`skip_dirs`、 `ignore_paths`、`extension_language_map` 和 `max_file_size_kb`。 - 速率限制:降低 `max_parallel_files`;自适应步长默认开启。 ## 许可证 参见 [LICENSE](https://github.com/atharvm416/codedoc-ai/blob/main/LICENSE)。
标签:AI辅助编程, LLM集成, Petitpotam, SOC Prime, 代码分析, 凭证管理, 开发工具, 文档生成, 文档结构分析, 逆向工具