核心架构
相关源文件
关键发现 先看这些,再下钻
8/12
报告按规模截断
ensure_codexqa.ts / draft_report.ts 以及 smoke.mjs 等不在这 8 页里,不要把本图当成全仓地图。
p02
p02 测试数据适配存储是枢纽
JsonObject 用法和 store/adapter。
3
三条互不连通的技能簇
p06
测试数据主链路走得通
_verify_enterprise_onboard.ts 进适配层,再进 bind_action.ts / selectTool。
p05
p05 审查扫描器是独立模块
scan_file 扇入很高,但这次导出没有列出跨社区依赖。它是 code-reviewer 的规则扫描脚本簇,不进入口/应用/领域/存储四层,后看即可。系统怎么运转 一句话定位 + 主链路
这是 CodexQA 技能仓库:若干可单独安装的技能脚本(缺陷扫描、测试数据、用例生成、代码审查、根因诊断等),外加文档预览与发布脚本。它不是一个统一进程里的「请求进来再落库」产品,社区检测也按类型/符号簇切开,而不是按技能目录一一对应。
主协作落在三处。测试数据技能:校验套件(p06)进出适配与存储(p02),再和工具绑定流水线(p04)互调,其中 p04→p02 的调用最重。缺陷扫描技能:Python 编排(p03,render_html_report / ensure_scan_tools)与仓库脚本入口(p01,含 scan_full、cmd_submit、文档预览重建)双向依赖。用例生成技能:知识库与 HTML 报告(p07,render_html / ingest_one)和增量拉取/冻结(p08,fetch_pr / archive)互指。
入口层是「人怎么把任务跑起来」:p01 里的 CLI/扫描/预览脚本,以及 p06 的验证套件 main。应用层是两条编排:p03 缺陷扫描、p07 用例知识与报告。领域层是 p04 的 selectTool / runPipeline / invokeEntity。存储层是 p02 的配置/数据/API 适配,以及 p08 对远程代码的拉取与归档。
索引质量:本地节点约 2467、占位约 366(约 13%),无碰撞组。社区边界和跨技能边可以信方向,但 p01 把文档预览、根因 CLI、测试数据 mock 和需求解析捆在同一页,标题 rebuild_previews · ZipReader 只是规则名,不要当成单一产品模块。
模块地图 入口 → 应用 → 领域 → 存储
| 编号 | 分层 | 模块 | 规模 | 依赖谁 |
|---|---|---|---|---|
| p01 | 入口 | 仓库脚本入口 · CLI / 预览 / 扫描启动 | 354 | p03 |
| p06 | 入口 | 测试数据校验套件 · 企业接入与场景验证 | 207 | p02 |
| p03 | 应用 | 缺陷扫描编排 · 工具、范围、HTML 报告 | 292 | p01 |
| p07 | 应用 | 用例知识与报告 · 入库、门禁、HTML | 185 | p08 |
| p04 | 领域 | 工具绑定流水线 · selectTool / runPipeline | 271 | p02 |
| p02 | 存储 | 测试数据适配存储 · 配置、目录、HTTP | 312 | p06,p04 |
| p08 | 存储 | 增量拉取与冻结 · fetch_pr / archive | 129 | p07 |
分层 入口 → 应用 → 领域 → 存储
架构图 分层与真实依赖
%%{init: {'theme':'base','themeVariables':{'background':'#f0f3f6','primaryColor':'#ffffff','primaryTextColor':'#1a2332','primaryBorderColor':'#d5dde8','lineColor':'#5a6578','secondaryColor':'#e6f4ee','tertiaryColor':'#f0f3f6','clusterBkg':'#f8fafc','clusterBorder':'#d5dde8','fontFamily':'Segoe UI,PingFang SC,sans-serif'}}}%%
flowchart TB
subgraph entry["Entry"]
P01["p01 仓库脚本入口"]
P06["p06 测试数据校验套件"]
end
subgraph app["Application"]
P03["p03 缺陷扫描编排"]
P07["p07 用例知识与报告"]
end
subgraph domain["Domain"]
P04["p04 工具绑定流水线"]
end
subgraph store["Storage"]
P02["p02 测试数据适配存储"]
P08["p08 增量拉取与冻结"]
end
P01 -->|deps| P03
P03 -->|deps| P01
P06 -->|deps| P02
P02 -->|deps| P06
P02 -->|deps| P04
P04 -->|deps| P02
P07 -->|deps| P08
P08 -->|deps| P07
classDef add fill:#e6f4ee,stroke:#0f6b4c,color:#1a2332
classDef change fill:#ffedd5,stroke:#c2410c,color:#1a2332
classDef risk fill:#fde8e4,stroke:#b42318,color:#1a2332
class P02 risk
class P01 change
class P04 change
%%{init: {'theme':'base','themeVariables':{'background':'#f0f3f6','primaryColor':'#ffffff','primaryTextColor':'#1a2332','primaryBorderColor':'#d5dde8','lineColor':'#5a6578','secondaryColor':'#e6f4ee','tertiaryColor':'#f0f3f6','clusterBkg':'#f8fafc','clusterBorder':'#d5dde8','fontFamily':'Segoe UI,PingFang SC,sans-serif'}}}%%
flowchart LR
G1["p06 校验套件"]
G2["p02 适配存储"]
G3["p04 绑定流水线"]
G1 -->|deps| G2
G2 -->|deps| G3
classDef add fill:#e6f4ee,stroke:#0f6b4c,color:#1a2332
classDef change fill:#ffedd5,stroke:#c2410c,color:#1a2332
classDef risk fill:#fde8e4,stroke:#b42318,color:#1a2332
class G2 risk
数据流与存储 主链路怎么穿过各层
测试数据:人从 p06 的验证 main / runEnterpriseOnboardSuite 进来,落到 p02 的配置、目录和 HTTP 适配(loadConfig、JsonObject),再进入 p04 的 selectTool → runPipeline → invokeEntity。反向边也存在:绑定流水线大量调用适配层。
缺陷扫描:p01 的 scan_full / scan_incremental / cmd_submit 与 p03 的 ensure_scan_tools、build_scope_plan、render_html_report 互相调用。没有再连到 p02 存储簇。
用例生成:p07 的 ingest_one / render_html 调用 p08 的拉取与归档(fetch_pr、archive);p08 再指回 p07。这是第二条存储出口,只服务用例技能。
p05 不出现在上述任何边上。
阅读路径 按这个顺序读源码
runEnterpriseOnboardSuite / runPipelineScenarioSuite 把场景跑起来,下一步是它列出的依赖 p02。JsonObject 和 store。p04 对它的调用最重,改这里会同时碰到绑定流水线。selectTool、runPipeline、invokeEntity,看一次实体怎么被绑到工具。scan_full / cmd_submit,且依赖 p03;到 p03 读 ensure_scan_tools 与 render_html_report。两条之间有真实双向依赖,不要跳到 p02。ingest_one / render_html 依赖 p08 的 fetch_pr / archive。只在改增量用例时走这条。模块笔记 点开看接口和谁在往来
p01 仓库脚本入口 规模最大
职责:把「人怎么启动任务」捆在一起:文档预览重建、缺陷扫描 CLI、根因 diagnose.ts、需求解析、测试数据 mock。规则标题是 rebuild_previews · ZipReader。
对外接口:scan_full、scan_incremental、cmd_submit、cmd_write_report、convertFile、runParse。
内部调用:多条命令落到 run_script(scan_full / cmd_finalize / cmd_agent_stage2)。
跨模块:与 p03 双向依赖。不要假设它会调用 p02。
p02 测试数据适配存储 枢纽
职责:测试数据技能的适配层:配置、数据存储、API 目录、收藏、HTTP、slot 脚手架。
对外接口:loadConfig、main、cmdAdd、scaffold,以及多处 executorStub 构造。
内部调用:loadPinned / loadFavorites / search / listByService 都 uses JsonObject。
跨模块:依赖 p06、p04;p04 以 calls/uses 大量指向这里。改 store 或 HTTP 客户端影响绑定流水线。
p03 缺陷扫描编排
职责:缺陷分析技能的编排:选场景、拉 CodexQA、收集增量/全量、SAST 适配、合并 HTML 报告。
对外接口:render_html_report、ensure_scan_tools、build_scope_plan、rag_related_snippets、main。
内部调用:扫描主流程把工具就绪、范围计划和报告渲染串起来。
跨模块:只与 p01 双向依赖(扫描入口脚本)。
p04 工具绑定流水线 高扇出
职责:把用例实体绑到测试数据工具:选工具、跑流水线、调 HTTP、写回。
对外接口:selectTool、runPipeline、invokeEntity、callHttp。
内部调用:main / runWriteback / runDataTrack 都进 dumpManifest。
跨模块:对 p02 有最重的 calls/uses;自身也出现在 p02 的依赖列表里。
p06 测试数据校验套件
职责:企业接入、扩场景、流水线、改写、用户旅程的验证,以及 pack_skills.ts。
对外接口:runEnterpriseOnboardSuite、runExtendSceneSuite、runPipelineScenarioSuite、runUserJourneySuite、main。
内部调用:打包校验 uses work(verifyPackSkills / writeConfig / openapiDir)。
跨模块:依赖 p02,并被 p02 回指。
p07 用例知识与报告
职责:用例生成技能的知识入库、门禁、HTML 报告(generate_case_report)。
对外接口:render_html、ingest_one、initialize、check_stage_artifacts。
内部调用:render_html → 双语/_esc;close_stage → _result。
跨模块:依赖 p08(增量拉取),p08 回指本页。
p08 增量拉取与冻结
职责:增量用例:拉 PR/远程代码、冻结输入与标准、写任务状态。
对外接口:fetch_pr、archive、parse_source_url、resolve_run_context、update。
内部调用:路径/git 辅助在失败时构造 SkillError。
跨模块:被 p07 调用,并依赖 p07。
独立模块 不在主链上,后看或不看
p05 审查规则扫描器
为什么可以后看:本次导出 deps 为空,也不在其他收录页的依赖列表里。它是 code-reviewer 的 scan_file / 规则体脚本(注解边、复杂度、隐私、韧性等),自己内部 scan_file→hit 很密,但不参与测试数据、缺陷扫描或用例生成主链。做审查规则时再打开。
图例 怎么读图和分层
- 入口 / 应用 / 领域 / 存储:图上的四层。没有依赖的页不进这四层。
- risk(赤陶):枢纽或高扇入,改这里影响面最宽。
- change(陶土):规模或依赖偏多的页。
- 独立模块:本次导出没有列出依赖,后看或不看。
术语 本报告用词
- 模块 / 社区:编号
p01起,对应一次导出里的一页。 - 依赖:社区之间的有向边,阅读路径只沿这条边走。
- 枢纽:依赖多或被调用多,先读对外接口。
- 规模:该页收录的符号数量,用来排序,不是质量分。