|
| 1 | +# QuantStrategyLab AI Autonomy Architecture Draft |
| 2 | + |
| 3 | +> 目标:评估当前 AIAuditBridge / Codex review-gate / monthly audit / dashboard-org-health / auto-merge / QSL 管理链路,是否足够支撑“策略智能监控优化、月度报告审计、健康状态检测、AI 自动修复、自动合并 PR”的无人值守目标。 |
| 4 | +
|
| 5 | +## 结论 |
| 6 | + |
| 7 | +当前架构已经足以支撑**受控自动化**,但**还不足以直接支撑完全无人值守**。 |
| 8 | + |
| 9 | +它已经把下面几件事做对了: |
| 10 | + |
| 11 | +- 把 Codex / OpenAI / Anthropic 的调用边界收进 AIAuditBridge,而不是散落在各个源仓库里。 |
| 12 | +- 用 OIDC、repo allowlist、workflow/ref allowlist、payload 校验、路径白名单、quota、health、review gate、guarded auto-merge 把高风险动作隔离开。 |
| 13 | +- 把“能自动做”的范围收敛到了低风险文档、测试、月度报告类修复,以及有明确 policy 约束的 PR 自动合并。 |
| 14 | + |
| 15 | +但它仍然缺少几个让“无人值守”真正成立的条件: |
| 16 | + |
| 17 | +- 健康检测还偏服务级,不是策略级和组织级闭环。 |
| 18 | +- 月报审计与策略优化没有统一的持久化记忆和评价指标。 |
| 19 | +- 自动修复可以产出补丁,但高风险变更仍必须人工审计。 |
| 20 | +- 自动合并依赖源仓库自己的 CI / merge guard,AIAuditBridge 不能直接替代最终合并决策。 |
| 21 | +- QSL / 版本管理 / internal dependency 管理仍应保持在它们自己的治理链路里,不应该被桥接层吞掉。 |
| 22 | + |
| 23 | +所以更准确的目标不是“完全无人值守”,而是: |
| 24 | + |
| 25 | +> **低风险自动执行 + 中风险建议式执行 + 高风险人工审计 + 所有结果可追溯可回滚。** |
| 26 | +
|
| 27 | +--- |
| 28 | + |
| 29 | +## 1. 当前架构盘点 |
| 30 | + |
| 31 | +### 1.1 入口与职责 |
| 32 | + |
| 33 | +AIAuditBridge 是 QuantStrategyLab 的 AI 审计控制面,负责: |
| 34 | + |
| 35 | +- 接收源仓库的月度审计 / PR review 请求; |
| 36 | +- 通过 GitHub Actions OIDC 认证来源; |
| 37 | +- 克隆源仓库并构造上下文; |
| 38 | +- 调用 Codex service,必要时回退到 OpenAI / Anthropic API; |
| 39 | +- 应用受控 patch、创建 PR、评论 issue、打标签、触发 guarded auto-merge。 |
| 40 | + |
| 41 | +### 1.2 已存在的主要构件 |
| 42 | + |
| 43 | +#### Workflow 层 |
| 44 | + |
| 45 | +- `codex_audit.yml` |
| 46 | + - 处理月度审计 / review_and_fix。 |
| 47 | + - 支持 `provider=auto|api|anthropic|codex|openai`。 |
| 48 | + - 使用 `CODEX_AUDIT_SERVICE_URL` 指向服务端。 |
| 49 | + - 支持 guarded auto-merge。 |
| 50 | + |
| 51 | +- `codex_pr_review.yml` |
| 52 | + - 处理 PR review。 |
| 53 | + - 支持 Codex service + 直接 API fallback。 |
| 54 | + - 上传诊断 artifact。 |
| 55 | + |
| 56 | +- `codex_review_gate.yml` |
| 57 | + - 把 Codex GitHub App review 变成 gate。 |
| 58 | + - 具备 WAIT / REACT 两种模式。 |
| 59 | + - 目标是让 review 结果真正影响 merge。 |
| 60 | + |
| 61 | +- `monthly-orchestrator.yml` |
| 62 | + - 生成月度审计 issue。 |
| 63 | + - 验证目标仓库必须是 snapshot repositories。 |
| 64 | + - 强调月审 issue 由源仓库自己 dispatch AIAuditBridge。 |
| 65 | + |
| 66 | +- `vps_codex_service_ops.yml` |
| 67 | + - 管理 VPS 上的 Codex audit service。 |
| 68 | + - 说明服务端和 GitHub 端已经拆开。 |
| 69 | + |
| 70 | +#### 服务层 |
| 71 | + |
| 72 | +- `service/ai_gateway_service.py` |
| 73 | + - 统一 HTTP 服务。 |
| 74 | + - OIDC 验证、限流、输入校验、job 管理、health/quota 接口。 |
| 75 | + |
| 76 | +- `service/adapters/codex_adapter.py` |
| 77 | + - 只负责在 VPS 上跑 `codex exec`。 |
| 78 | + |
| 79 | +- `service/adapters/llm_adapter.py` |
| 80 | + - 负责 OpenAI / Anthropic API 调用。 |
| 81 | + |
| 82 | +- `service/autonomy.py` |
| 83 | + - 负责风险等级 + 置信度 -> 动作建议。 |
| 84 | + |
| 85 | +- `service/health.py` |
| 86 | + - 负责健康状态、延迟、错误率、降级判断。 |
| 87 | + |
| 88 | +- `service/quota.py` |
| 89 | + - 负责每 repo quota、成本估算、账单快照。 |
| 90 | + |
| 91 | +- `service/feedback.py` |
| 92 | + - 负责反馈记录、效果评估、shadow disagreement。 |
| 93 | + |
| 94 | +#### 桥接脚本层 |
| 95 | + |
| 96 | +- `scripts/run_monthly_codex_audit.py` |
| 97 | + - 月审主流程。 |
| 98 | + - 包括 repo/task 校验、service patch contract、path guard、PR 创建、label 管理、auto-merge 请求、stale label cleanup。 |
| 99 | + |
| 100 | +- `scripts/run_codex_pr_review.py` |
| 101 | + - PR review 主流程。 |
| 102 | + - service 失败时可按条件回退到 API review。 |
| 103 | + |
| 104 | +- `scripts/gate_codex_app_review.py` |
| 105 | + - 以 review gate 的形式保护合并。 |
| 106 | + |
| 107 | +### 1.3 已经具备的自动化能力 |
| 108 | + |
| 109 | +- 来源认证:OIDC / allowlist。 |
| 110 | +- 资源控制:rate limit / quota。 |
| 111 | +- 风险控制:path guard / policy / label gating。 |
| 112 | +- 结果可追踪:issue comment、PR body、artifact、step summary。 |
| 113 | +- 容错:Codex service 失败后可走 API fallback。 |
| 114 | +- 变更应用:支持 patch response -> 本地应用 -> PR。 |
| 115 | +- 合并保护:guarded auto-merge 不是直接绕过 GitHub protection。 |
| 116 | + |
| 117 | +--- |
| 118 | + |
| 119 | +## 2. 能自动处理 vs 必须人工审计的边界 |
| 120 | + |
| 121 | +### 2.1 可以自动处理的范围 |
| 122 | + |
| 123 | +适合自动执行的条件是: |
| 124 | + |
| 125 | +1. 变更范围低风险; |
| 126 | +2. 变更目标明确; |
| 127 | +3. 有稳定 policy / gate; |
| 128 | +4. 失败后能安全回滚或重试; |
| 129 | +5. 不影响资金、策略核心逻辑、权限边界、版本治理。 |
| 130 | + |
| 131 | +当前可自动处理的典型场景: |
| 132 | + |
| 133 | +- docs / tests / README 类变更; |
| 134 | +- 月度报告生成脚本、低风险辅助脚本; |
| 135 | +- 明确的 packaging / lint / warning 修复; |
| 136 | +- 低风险月度审计修复 PR; |
| 137 | +- Codex review / API review 的评论生成; |
| 138 | +- guarded auto-merge 条件满足时的受控打标与交给源仓 CI 合并。 |
| 139 | + |
| 140 | +### 2.2 必须人工审计的范围 |
| 141 | + |
| 142 | +这些场景不应交给无人值守直接合并: |
| 143 | + |
| 144 | +- 策略核心逻辑、交易逻辑、信号生成逻辑; |
| 145 | +- 影响仓库基础架构或权限边界的修改; |
| 146 | +- `.github/codex_auto_merge_policy.json`、workflow、label policy、gate policy 变更; |
| 147 | +- 删除、重命名、复制文件,特别是跨目录调整; |
| 148 | +- 涉及 secrets、credentials、keys、token 的变更; |
| 149 | +- 任何 QSL 版本管理、internal dependency matrix、qslctl 相关治理文件; |
| 150 | +- 低置信度模型输出但影响面大; |
| 151 | +- 运行时 health 仅“看起来健康”但没有真实业务指标支撑的场景; |
| 152 | +- 任何需要跨仓确认的变更,例如消费者仓库与治理仓库之间的契约变动。 |
| 153 | + |
| 154 | +### 2.3 灰区:可以自动建议,但不应自动完成 |
| 155 | + |
| 156 | +这些适合“自动做前半段,人工做最后确认”: |
| 157 | + |
| 158 | +- 月度 audit 结果总结; |
| 159 | +- 策略健康报告的初稿; |
| 160 | +- 变化解释、风险分析、建议动作; |
| 161 | +- 需要看历史效果再决定是否采纳的优化建议; |
| 162 | +- 复杂 PR review 的评论,但不自动 merge。 |
| 163 | + |
| 164 | +--- |
| 165 | + |
| 166 | +## 3. 关键缺口和优先级 |
| 167 | + |
| 168 | +### P0:必须补的缺口 |
| 169 | + |
| 170 | +#### 3.1 策略级与组织级指标缺失 |
| 171 | + |
| 172 | +现在 health/quota 主要是服务层健康,不足以回答: |
| 173 | + |
| 174 | +- 哪个策略长期退化? |
| 175 | +- 哪类月审修复真正降低了人工介入? |
| 176 | +- 哪些 repo 反复触发高风险变更? |
| 177 | +- 自动修复是否真的提高了通过率? |
| 178 | + |
| 179 | +缺少统一的、可持久化的 KPI / 回放数据。 |
| 180 | + |
| 181 | +#### 3.2 人工审计边界虽然存在,但缺少统一执行面 |
| 182 | + |
| 183 | +目前边界分散在: |
| 184 | + |
| 185 | +- policy JSON; |
| 186 | +- workflow; |
| 187 | +- script 内的 path guard; |
| 188 | +- review gate。 |
| 189 | + |
| 190 | +问题是这些规则是“分散一致”,还不是“单点治理”。一旦某处漏改,就会出现策略漂移。 |
| 191 | + |
| 192 | +#### 3.3 自动合并的最终决定仍依赖外部 source CI |
| 193 | + |
| 194 | +这是对的,但也说明 AIAuditBridge 本身还不能闭环完成“无人值守”。 |
| 195 | + |
| 196 | +它能请求 auto-merge,不能替代: |
| 197 | + |
| 198 | +- 源仓库 CI; |
| 199 | +- branch protection; |
| 200 | +- merge queue / required checks; |
| 201 | +- 失败后的 retrigger 逻辑。 |
| 202 | + |
| 203 | +### P1:强烈建议补的缺口 |
| 204 | + |
| 205 | +#### 3.4 缺少统一的任务状态机 |
| 206 | + |
| 207 | +月度审计、PR review、修复、重试、回退、人工升级,这些状态现在是靠脚本和 GitHub 流程串起来的。 |
| 208 | + |
| 209 | +建议显式建模: |
| 210 | + |
| 211 | +- `queued` |
| 212 | +- `running` |
| 213 | +- `reviewed` |
| 214 | +- `patch_applied` |
| 215 | +- `pr_opened` |
| 216 | +- `waiting_for_ci` |
| 217 | +- `auto_merge_requested` |
| 218 | +- `human_review_required` |
| 219 | +- `merged` |
| 220 | +- `failed` |
| 221 | +- `blocked` |
| 222 | + |
| 223 | +#### 3.5 反馈回路还不够强 |
| 224 | + |
| 225 | +已有 `feedback.py`,但还没形成: |
| 226 | + |
| 227 | +- 哪类问题最常复发; |
| 228 | +- 哪个 provider / model 组合最稳定; |
| 229 | +- 哪类变更最适合直接走 API fallback; |
| 230 | +- 哪些 low-risk 规则需要升级或收紧。 |
| 231 | + |
| 232 | +#### 3.6 Dashboard / org-health 还缺“决策联动” |
| 233 | + |
| 234 | +健康面板如果只是展示状态,不足以支持无人值守。 |
| 235 | + |
| 236 | +它至少还需要: |
| 237 | + |
| 238 | +- 健康异常自动降级到 review_only; |
| 239 | +- quota 低时自动降级模型; |
| 240 | +- 失败模式自动切换 provider 或暂停自动修复; |
| 241 | +- 对连续失败仓库自动升级人工审计。 |
| 242 | + |
| 243 | +### P2:可后置优化 |
| 244 | + |
| 245 | +#### 3.7 更细粒度的复杂度路由 |
| 246 | + |
| 247 | +现在有 low / medium / high 的复杂度路由,但还可以更精细地接入: |
| 248 | + |
| 249 | +- repo 历史稳定性; |
| 250 | +- 变更类型; |
| 251 | +- 最近失败率; |
| 252 | +- 真实审批时延。 |
| 253 | + |
| 254 | +这类优化有价值,但不是无人值守的先决条件。 |
| 255 | + |
| 256 | +--- |
| 257 | + |
| 258 | +## 4. 可落地的阶段性改造计划 |
| 259 | + |
| 260 | +### Phase 1:先把“可无人值守的部分”界定清楚 |
| 261 | + |
| 262 | +目标:让系统明确知道什么能自动做,什么必须升级人工。 |
| 263 | + |
| 264 | +建议动作: |
| 265 | + |
| 266 | +- 把自动化边界写成统一 policy 文档,并和代码测试绑定; |
| 267 | +- 把风险分类、label policy、workflow gate 的规则集中到一个共享配置入口; |
| 268 | +- 明确低风险 auto-merge 的文件集合和禁区; |
| 269 | +- 给每类任务加上标准状态输出和 step summary。 |
| 270 | + |
| 271 | +交付物: |
| 272 | + |
| 273 | +- 统一的自治政策说明; |
| 274 | +- 可读的风险分级规则; |
| 275 | +- 每个任务的状态机输出。 |
| 276 | + |
| 277 | +### Phase 2:把反馈回路做实 |
| 278 | + |
| 279 | +目标:让系统不是“做完就走”,而是“做完能学”。 |
| 280 | + |
| 281 | +建议动作: |
| 282 | + |
| 283 | +- 把每次月审 / PR review / auto-fix 的结果持久化; |
| 284 | +- 记录:问题类型、provider、模型、风险级别、是否需要人工、是否 merge 成功、是否复发; |
| 285 | +- 在 dashboard 上展示: |
| 286 | + - 自动处理成功率; |
| 287 | + - 人工升级率; |
| 288 | + - 重试成功率; |
| 289 | + - 最近 30 天回退次数; |
| 290 | + - 高风险变更占比。 |
| 291 | + |
| 292 | +交付物: |
| 293 | + |
| 294 | +- 持久化反馈表; |
| 295 | +- 可查询的 org-health 指标; |
| 296 | +- 月报审计的历史对比。 |
| 297 | + |
| 298 | +### Phase 3:让健康检测影响决策 |
| 299 | + |
| 300 | +目标:把健康状态从“展示”变成“调度输入”。 |
| 301 | + |
| 302 | +建议动作: |
| 303 | + |
| 304 | +- health degraded 时自动切换 review_only; |
| 305 | +- quota 紧张时优先低成本模型或延后任务; |
| 306 | +- 连续失败时强制人工审计; |
| 307 | +- 针对不同 repo 设置不同自治等级。 |
| 308 | + |
| 309 | +交付物: |
| 310 | + |
| 311 | +- 健康驱动的执行降级策略; |
| 312 | +- repo 级别自治阈值。 |
| 313 | + |
| 314 | +### Phase 4:扩大自动修复,但只扩大低风险面 |
| 315 | + |
| 316 | +目标:提升无人值守覆盖率,但不放松安全门。 |
| 317 | + |
| 318 | +建议动作: |
| 319 | + |
| 320 | +- 扩展 docs/tests/report helper 的自动修复能力; |
| 321 | +- 对 packaging/lint 类修复增加更强的自动测试和回归测试; |
| 322 | +- 对月审生成的 PR 增加标准化的 PR body / comment 模板; |
| 323 | +- 维持高风险路径默认人工审计。 |
| 324 | + |
| 325 | +交付物: |
| 326 | + |
| 327 | +- 更高的低风险自动修复成功率; |
| 328 | +- 更稳定的 guarded auto-merge 命中率。 |
| 329 | + |
| 330 | +### Phase 5:再考虑组织级无人值守 |
| 331 | + |
| 332 | +只有在下面条件都满足后,才建议把“无人值守”从局部扩到组织级: |
| 333 | + |
| 334 | +- 反馈数据稳定; |
| 335 | +- 高风险边界清晰; |
| 336 | +- 失败降级机制可自动生效; |
| 337 | +- 关键仓库的 merge gate 行为稳定; |
| 338 | +- 月审结果和人工审计结果长期一致。 |
| 339 | + |
| 340 | +--- |
| 341 | + |
| 342 | +## 5. 对“无人值守”目标的判断 |
| 343 | + |
| 344 | +### 可以放心推进的部分 |
| 345 | + |
| 346 | +- 月度审计 issue 的生成与调度; |
| 347 | +- 低风险 review / 修复; |
| 348 | +- 受控 auto-merge 请求; |
| 349 | +- 服务健康与 quota 监控; |
| 350 | +- 失败后 fallback 和 retry。 |
| 351 | + |
| 352 | +### 不能直接无人值守的部分 |
| 353 | + |
| 354 | +- 策略核心修改; |
| 355 | +- 任何治理 / policy / workflow 变更; |
| 356 | +- QSL 版本管理; |
| 357 | +- 最终 merge 决策; |
| 358 | +- 需要解释原因或承担业务风险的变更。 |
| 359 | + |
| 360 | +### 总体判断 |
| 361 | + |
| 362 | +当前架构更像是: |
| 363 | + |
| 364 | +- **自动化执行层已经有了**; |
| 365 | +- **自治决策层还不完整**; |
| 366 | +- **组织级闭环还差一层数据和治理**。 |
| 367 | + |
| 368 | +所以现在的最佳目标不是“完全无人值守”,而是: |
| 369 | + |
| 370 | +> **把 60%~80% 的低风险审计与修复自动化,把高风险部分稳定地拦在人工审计门前。** |
| 371 | +
|
| 372 | +--- |
| 373 | + |
| 374 | +## 6. 建议的下一步 |
| 375 | + |
| 376 | +1. 先把这份架构草案定稿到仓库文档里。 |
| 377 | +2. 再补一份“自治边界表”,把自动 / 人工 / 禁止 三类动作列清楚。 |
| 378 | +3. 然后补指标持久化和 dashboard 视图。 |
| 379 | +4. 最后再决定是否扩大 auto-merge 覆盖面。 |
0 commit comments