Files
AirCoding/AirPlan/docs/开发阶段多模型交叉审计报告.md
AirCoding 79d776fdc9 docs(audit): add Qwen3.7 audit + multi-model cross-audit report
- Qwen3.7开发阶段审计.md: 4th independent audit (84 findings, 31 critical)
- 开发阶段多模型交叉审计报告.md: meta-audit combining DeepSeek/Opus/MiniMax-M3/Qwen3.7

Cross-audit consensus:
- Overall rating: C (skeleton B / execution-path D)
- Not releasable: all 4 models agree
- 15 high-confidence blockers (>=3 models confirm)
- INV compliance: PASS 2 / partial 3 / FAIL 6 (INV-1/2/3 all fail)
- Weighted spec consistency ~52%
- 4/4 unanimous blockers: command injection x3, project DB schema, MainAgent state machine, TUI no rendering

Unified remediation roadmap: Phase A (security red lines) -> B (link connectivity) -> C (spec alignment) -> D (completeness)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:17:54 +08:00

304 lines
19 KiB
Markdown
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AirCoding V1.0.0 Alpha — 开发阶段多模型交叉审计报告
> **报告类型**: 多模型交叉审计综合Meta-Audit
> **生成日期**: 2026-06-03
> **审计分支**: GLM5-Achieve
> **代码规模**: 7 包 / 146 源文件 (137 TS + 9 TSX) / 123 实现任务 (T-001..T-809)
> **参审模型**: 4 个独立审计模型
>
> | 模型 | 报告文件 | 评级 | 发现总数 | 阻断级 | 审计角度 |
> |------|---------|------|---------|--------|---------|
> | **DeepSeek** | Deepseek开发阶段审计.md | B+ | 97 | 10 | 阶段级 + 问题计数 |
> | **Opus 4.8** | Opus开发阶段审计.md | C+ | 140+ | 18 | 逐字段对照规范 |
> | **MiniMax-M3** | MiniMaxM3开发阶段审计.md | C+ | 38+ | 18 | 可执行性 + 治理 |
> | **Qwen3.7-Max** | Qwen3.7开发阶段审计.md | 骨架就位/语义偏差 | 84 (31C+22H+19M+12L) | 31 | 需求覆盖 + 规范一致性% |
---
## 0. 综合结论(四模型共识)
### 0.1 一致裁决
> **四个独立审计模型在以下核心判断上完全一致**
> AirCoding V1.0.0 Alpha 当前处于 **「架构骨架与基础设施质量高,但核心运行时子系统语义大面积偏离冻结基线」** 的状态。
> **不应在当前状态下发布**;必须先关闭阻断级缺陷。
| 维度 | 四模型一致结论 |
|------|--------------|
| **基础设施层** | ✅ Monorepo / SQLite Schema / 事件注册表 / Enum 验证 / 依赖方向 — 质量高 |
| **契约层** | ⚠️ contracts 编码良好,但下游系统性重定义本地类型、不 import 契约Opus + Qwen 明确DeepSeek + M3 印证) |
| **执行链路** | ❌ Scheduler / IPC / Security / Context / TUI / outbox — 语义偏离或链路断裂 |
| **安全** | ❌ 3 处命令注入 + 权限旁路 + 弱加密密钥(四模型均独立发现命令注入) |
| **可发布性** | ❌ 四模型均判定不可发布 |
### 0.2 评级谱系
```
DeepSeek B+ ████████░░ (乐观:文件齐全=骨架完整)
Opus 4.8 C+ █████░░░░░ (严格:逐字段不符规范)
MiniMax C+ █████░░░░░ (务实:接口在但链路断)
Qwen3.7 D+ ████░░░░░░ (最严:规范一致性平均<45%)
─────────────────────────
综合评级 C █████░░░░░ (骨架B级 / 执行链路D级)
```
**评级分歧根源**DeepSeek 以"实现计划任务完成度"123/123 文件创建)为主轴 → B+;其余三模型以"与冻结规范的语义一致性"为主轴 → C+/D+。**Meta 裁决采纳后者**:文件存在 ≠ 语义正确,综合评级 **C骨架 B / 执行 D**
---
## 1. 阻断级缺陷交叉确认矩阵
> 下表汇总四模型发现的阻断级P0/CRITICAL缺陷。**≥2 模型独立确认**的缺陷置信度最高,列为「高置信阻断项」。
### 1.1 高置信阻断项≥3 模型确认 — 必须立即修复)
| # | 缺陷 | 位置 | DeepSeek | Opus | M3 | Qwen | 置信度 |
|---|------|------|:---:|:---:|:---:|:---:|:------:|
| **B1** | EventStore.project() 事务边界违反(`_tx` 不传仓库,域表写在事务外) | EventStore.ts | — | ⚠️ | — | ✅ F-04 | **2/4** ⭐⭐⭐ |
| **B2** | workspace 投影写非法枚举 `'created'`/`'merging'` → 首次创建即崩溃 | EventStore.ts:900,909 | — | ✅#1 | ✅ | ✅ F-05 | **3/4** 🔴 |
| **B3** | 项目级 DBdebug/learned-memory表名/路径/列全面偏离 db-schema §20 | DebugKnowledgeStore.ts, LearnedMemoryStore.ts | ⚠️ | ✅#2 | ✅ | ✅ F-01/F-02 | **4/4** 🔴🔴 |
| **B4** | route_prefix 查询用 `.` 拼接但存储用 `/` → 前缀过滤永久失效 | EventRepository.ts:185 | — | ✅#3 | ✅ | ✅ F-07 | **3/4** 🔴 |
| **B5** | TaskAttemptRepository 列映射 bug检查 signature 却写 summary 列) | TaskAttemptRepository.ts:114 | — | ✅#4 | ✅ | ✅ F-06 | **3/4** 🔴 |
| **B6** | ToolRegistry 权限上下文硬编码 undefined → **权限模型被旁路** | ToolRegistry.ts:262-263 | — | ✅#5 | ⚠️ | ✅ §5.4 | **3/4** 🔴🔴 |
| **B7** | ACTION_BRANCHES 内 `this.*` 调用 → read_only/sandbox 分支运行时崩溃 | ToolRegistry.ts:62,72 | — | ✅#6 | — | ✅ §5.4 | **2/4** 🔴 |
| **B8** | 命令注入 ×3CMake/CppBuilder/Cppcheck execSync 字符串拼接) | CMakeConfigurator.ts:48, CppBuilder.ts:30, CppcheckRunner.ts:36 | ⚠️ | ✅#10-12 | ✅ | ✅ §14.2 | **4/4** 🔴🔴 |
| **B9** | C++ 工具绕过 PermissionEngine违反 INV-3 | CppToolRegistrar.ts | — | ✅#13 | ✅ | ✅ §14.1 | **3/4** 🔴 |
| **B10** | INV-2 outbox 完全未发事件debug.record.created / memory.promoted | wiring.ts:35-73 | ⚠️ | ✅#14 | ✅ | — | **3/4** 🔴 |
| **B11** | Scheduler 状态机缺 BLOCKED/CANCELLED多 TERMINATED | Scheduler.ts:18-29 | — | ✅#8 | ✅ | ✅ §7.1 | **3/4** 🔴 |
| **B12** | Scheduler 是空壳(不调 WorkspaceManager/WorkerManager/ContextAssembler/EventIngestor | Scheduler.ts:74-204 | — | ⚠️ | ✅ | ✅ §7.3 | **3/4** 🔴 |
| **B13** | MainAgent 状态机缺 7/13 状态 + 正则分类非 LLM | MainAgent.ts:13 | ⚠️ | ✅#12 | ✅ | ✅ §9.1 | **4/4** 🔴 |
| **B14** | Worker IPC 握手顺序反转 + 信封缺 5 字段 | WorkerManager.ts:45-91, WorkerProtocol.ts | — | ⚠️ | ✅ | ✅ §8.2/8.3 | **3/4** 🔴 |
| **B15** | TUI 不依赖 OpenTUIrender 走 console.log+ ProjectionClient↔Store 断连 | TuiApp.tsx, ProjectionClient.ts | ⚠️ | ✅#18 | ✅ | ✅ §13.2 | **4/4** 🔴 |
### 1.2 中置信阻断项2 模型确认)
| # | 缺陷 | 位置 | 确认模型 |
|---|------|------|---------|
| **B16** | ModelConfig.api_key 明文存储(应 auth_ref 间接引用) | ModelConfigLoader.ts:17 | Opus#7 + Qwen §11.2 |
| **B17** | DeveloperLogEncryptor 硬编码弱密钥 'dev-key' | DeveloperLogEncryptor.ts:22 | Opus#15 + M3 |
| **B18** | CapabilityTrustLevel 用错误枚举值core/trusted vs 规范 5 级) | CapabilityManifestValidator.ts:19 | Opus#16 + Qwen §6.1 |
| **B19** | PermissionEngine 缺 block/refuse/announce_then_run 动作 | PermissionEngine.ts:19-26 | Opus#17 + Qwen §4.3 |
| **B20** | WorkerProcess 退出码 4 错配blocked vs 规范 parent-cancelled | WorkerProcess.ts:17,30 | Opus#9 + M3 |
| **B21** | CLI init 直接写 FS 绕过 ToolRegistry违反 INV-3 | cli/commands/init.ts | M3 + Qwen §15.2 |
| **B22** | CommandRiskAnalyzer `'sudo_likely' in trimmed` 永远 false | CommandRiskAnalyzer.ts | Qwen §4.2(单模型深挖,逻辑确凿) |
### 1.3 单模型独有阻断项(需复核)
| # | 缺陷 | 来源 | 说明 |
|---|------|------|------|
| **B23** | e2e 命令 hardcoded 全 ✅ 不跑测试release gate 形同欺骗) | M3 独有 | 治理问题,价值归零 |
| **B24** | project_id 用 Date.now() 而非 stable UUID | M3 独有 | 同秒重 init 撞 id |
| **B25** | 16/28 MVP 工具缺失 | Qwen §5.1 独有量化 | DeepSeek/Opus 提及但未量化 |
| **B26** | ContextAssembler L6-L9 四层缺失 + 非 canonical 输出 | Qwen §12 + Opus 印证 | 上下文装配不完整 |
---
## 2. 不变量INV合规交叉裁决
> 综合四模型对运行时不变量的判定。**任一模型判 FAIL 即标红**,多模型一致 PASS 才判绿。
| 不变量 | DeepSeek | Opus | M3 | Qwen | **Meta 裁决** |
|--------|:---:|:---:|:---:|:---:|:------:|
| INV-1 状态列仅经 EventStore.project | ✅ | ⚠️ | ⚠️ | ❌(F-04) | ❌ **FAIL**(事务边界 + Scheduler 旁路写 status |
| INV-2 跨库 outbox 单写者 | ⚠️ | ❌ | ❌ | ✅* | ❌ **FAIL**(完成事件从不发出) |
| INV-3 副作用经 ToolRegistry/PermissionEngine | ⚠️ | ❌ | ❌ | ❌ | ❌ **FAIL**CLI init / C++ / 权限旁路) |
| INV-4 导入方向单向 | ✅ | ✅ | ✅ | ⚠️(llm不引contracts) | ⚠️ **部分**(依赖图合规但 llm 本地定义类型) |
| INV-5 EventBus 仅传输 | ✅ | ✅ | ✅ | ✅ | ✅ **PASS** |
| INV-6 工件 temp-rename 原子写 | — | — | — | ✅ | ✅ **PASS** |
| INV-7 Workspace GC 策略 | — | — | — | ⚠️(SQL bug) | ⚠️ **部分** |
| INV-8 Agent heartbeat 持久化 | — | — | — | ❌(仅内存) | ❌ **FAIL** |
| INV-9 ExperienceMiner 4 触发路径 | — | — | ⚠️ | ❌(0实现) | ❌ **FAIL** |
| INV-10 read-before-edit 强制 | ⚠️ | — | — | ❌ | ❌ **FAIL** |
| INV-11 完成门禁强制 | — | — | — | ❌ | ❌ **FAIL** |
**INV 合规综合得分**PASS 2 / 部分 3 / **FAIL 6**
**关键裁决**:四模型独立得出 INV-1/2/3 三大核心不变量均不达标——这是评级压到 C 的决定性依据。
---
## 3. 规范一致性百分比Qwen 量化 + 三模型印证)
> Qwen3.7 提供了唯一的逐文档一致性%量化,其余三模型的定性结论与之高度吻合。
| 基线文档 | Qwen 一致性 | 其余模型印证 | Meta 评估 |
|---------|:---:|------|:---:|
| event-registry-v1 | 95% | DeepSeek/Opus 均确认 54+7 事件齐全 | ✅ 高 |
| error-taxonomy-v1 | 90% | Opus 确认 AirError 匹配 | ✅ 高 |
| C4 code-view | 90% | Opus 确认 contracts 忠实编码 | ✅ 高 |
| db-schema-v1会话表 | 85% | 四模型确认 17 表正确 | ✅ 高 |
| artifact-naming-v1 | 80% | — | ✅ 中高 |
| cross-platform-matrix | 80% | — | ✅ 中高 |
| interface-contracts-v1 | 65% | Opus 列 15 契约缺失 | ⚠️ 中 |
| solution-architecture | 55% | M3 确认链路断 | ⚠️ 中 |
| prompt-layering-v1 | 50% | Opus 确认 L5-L9 缺 | ❌ 低 |
| system-overview-design | 50% | M3 确认子系统连接断 | ❌ 低 |
| main-agent-state-machine | 45% | 四模型确认缺 7 状态 | ❌ 低 |
| system-detailed-design | 45% | Opus 确认方法签名偏差 | ❌ 低 |
| tool-registry-v1 | 40% | Opus/M3 确认工具缺失 | ❌ 低 |
| runtime-semantics-v1 | 40% | 5/11 不变量违反 | ❌ 低 |
| scheduler-state-machine | 35% | 四模型确认状态/方法缺 | ❌ 低 |
| capability-trust-v1 | 30% | Opus 确认 trust level 错 | ❌ 很低 |
| security-model-v1 | 20% | Opus/M3 确认全面偏差 | ❌ 很低 |
| provider-capability-matrix | 20% | Qwen 确认仅 20% 实现 | ❌ 很低 |
| scope-escalation-v1 | 10% | 未实现 | ❌ 极低 |
**加权平均一致性 ≈ 52%**。基础设施类文档80-95%)拉高均值,但**核心执行类文档10-45%)是真实短板**。
---
## 4. 各模型审计角度与独有贡献
### 4.1 DeepSeek — 阶段级问题计数
- **角度**:以 P0-P8 阶段为主轴,逐文件审查 + 跨引用合约 + 不变量检查
- **独有贡献**完整的「合约合规矩阵」「DB 模式合规表」「测试覆盖率<5%」量化
- **盲区**评级偏乐观B+),未深挖权限旁路、状态机终态等语义级缺陷
- **价值**建立了问题分类框架与技术债务清单TODO.md
### 4.2 Opus 4.8 — 逐字段对照规范
- **角度**4 个子代理并行,全部 16 合约文件逐字段对照
- **独有贡献****首次发现「契约系统性漂移」根因**(下游重定义本地类型不 import 契约权限旁路B6ACTION_BRANCHES this 崩溃B7
- **盲区**:未量化规范一致性%;对治理/可执行性着墨少
- **价值**18 项阻断清单精确到文件:行,最具可操作性
### 4.3 MiniMax-M3 — 可执行性 + 治理
- **角度**:「代码即使符合规范,是否真能跑」
- **独有贡献****Scheduler 空壳B12**TUI 无 OpenTUI 依赖B15**e2e 假报绿B23**project_id Date.nowB24Worker 握手反转细节B14
- **盲区**:发现总数较少(侧重关键链路)
- **价值**:揭示「接口在但连接链路断」的系统性可执行性阻断
### 4.4 Qwen3.7-Max — 需求覆盖 + 一致性%
- **角度**FR/NFR 需求矩阵 + 逐文档一致性百分比
- **独有贡献****唯一的需求覆盖矩阵FR-001..020****唯一的逐文档一致性%量化**CommandRiskAnalyzer `in` 操作符 bugB2216/28 工具缺失量化B25ContextAssembler L6-L9B26
- **盲区**:部分发现与其余模型重叠未交叉标注
- **价值**最全面的规范覆盖视图发现总数最高84 项)
---
## 5. 正面发现(四模型共识 — 已正确实现)
> 以下项目至少 2 个模型独立确认实现正确,构成可信赖的基础设施基座。
| # | 正面项 | 确认模型 |
|---|--------|---------|
| 1 | Monorepo 结构Bun workspace + Turborepo + 7 包分层) | 四模型 |
| 2 | SQLite Schema17 表 / 38 索引 / PRAGMA / 5 schema_meta | 四模型 |
| 3 | 事件注册表54 持久 + 7 临时事件全注册) | DeepSeek/Opus/Qwen |
| 4 | Enum 验证18 闭枚举全覆盖) | Qwen |
| 5 | ArtifactStore 原子写temp→sha256→rename→event | Qwen + Opus |
| 6 | EventBus 错误隔离handler 异常不中断订阅INV-5 | 四模型 |
| 7 | 临时事件合并7 类型 / 5 秒窗口) | DeepSeek/Qwen |
| 8 | EventIngestor 持久/临时路径分离 | Opus/Qwen |
| 9 | SecretRedactor14 凭证模式) | Opus/Qwen |
| 10 | CLI 命令完整11/11 入口) | 四模型 |
| 11 | 依赖方向dependency-cruiser 7 forbidden 规则零违规) | DeepSeek/Opus/M3 |
| 12 | 16 仓库 CRUD 完整 | Qwen |
| 13 | TUI/Worker 模块导入方向干净(仅 contracts | Opus/M3 |
| 14 | ArchitectureDesigner 4 结果枚举正确 | Opus/M3 |
---
## 6. 统一修复路线图(四模型优先级融合)
> 融合四模型的 P0/P1 建议,按「阻断级 → 链路连通 → 规范对齐 → 完整性」分层。
### 阶段 A — P0 安全与崩溃阻断(发布前红线,必须 100% 关闭)
| 任务 | 对应缺陷 | 确认模型数 |
|------|---------|:---:|
| A1. 消除 3 处命令注入execSync → execFileSync + args 数组) | B8 | 4/4 |
| A2. 修复 workspace 投影非法枚举 | B2 | 3/4 |
| A3. EventStore.project() 传递事务句柄给所有仓库 | B1 | 2/4 |
| A4. 修复 ToolRegistry 权限旁路(加载真实 task_scope/profile | B6 | 3/4 |
| A5. 修复 ACTION_BRANCHES this 绑定崩溃 | B7 | 2/4 |
| A6. 修复 TaskAttempt 列映射 + route_prefix 分隔符 | B5,B4 | 3/4 |
| A7. api_key 改 auth_ref + 移除硬编码 'dev-key' | B16,B17 | 2/4 |
| A8. CommandRiskAnalyzer `in` 操作符 bug | B22 | 1/4(确凿) |
### 阶段 B — 执行链路连通(让一个任务真正跑起来)
| 任务 | 对应缺陷 | 确认模型数 |
|------|---------|:---:|
| B1. Scheduler 接通 WorkspaceManager/WorkerManager/ContextAssembler/EventIngestor | B12 | 3/4 |
| B2. Scheduler 补 BLOCKED/CANCELLED 状态 + 状态写入改走事件投影 | B11 | 3/4 |
| B3. Worker IPC 修握手顺序 + 补信封 5 字段 + 退出码 4 语义 | B14,B20 | 3/4 |
| B4. INV-2 outbox 真实发出 debug.record.created / memory.promoted | B10 | 3/4 |
| B5. ProjectionClient↔ProjectionStore 建立推送 + 接入 OpenTUI | B15 | 4/4 |
| B6. CLI init 改走 ToolRegistryINV-3 | B21 | 2/4 |
| B7. 替换 e2e 假报绿为真实测试套件 | B23 | 1/4(治理) |
### 阶段 C — 规范对齐(与冻结基线重新同步)
| 任务 | 对应缺陷 | 确认模型数 |
|------|---------|:---:|
| C1. 项目级 DB schema 对齐 db-schema §20 | B3 | 4/4 |
| C2. MainAgent 补 7 状态 + LLM 分类 | B13 | 4/4 |
| C3. 补 15 缺失契约接口 + 下游 import 契约(消除本地漂移) | (Opus/Qwen) | 2/4 |
| C4. PermissionEngine 补 block/refuse/announce_then_run + grant_scope | B19 | 2/4 |
| C5. CapabilityTrustLevel 改 5 级 + manifest schema 对齐 | B18 | 2/4 |
| C6. PathClassifier 补 credential_store/project_air_*/unknown | (Opus/Qwen) | 2/4 |
| C7. 注册 16 缺失 MVP 工具cpp.*/debug.*/gui.*/network.* | B25 | 1/4(量化) |
### 阶段 D — 完整性(功能补全)
| 任务 | 对应缺陷 |
|------|---------|
| D1. ContextAssembler L6-L9 + canonical 输出 | B26 |
| D2. Provider 能力矩阵补全 ~80% 字段 |
| D3. Worker 结果统一 WorkerResult<T> 信封 |
| D4. Recovery 实现孤儿扫描 + PID 存活检查 |
| D5. EvidenceStore 持久化(弃内存 Map |
| D6. project_id 改 stable UUID |
---
## 7. Meta-Audit 方法论说明
### 7.1 交叉验证原则
- **置信度分级**≥3 模型确认 = 高置信🔴2 模型 = 中置信1 模型 = 需复核
- **冲突解决**评级分歧时采纳「语义一致性」视角3 模型而非「文件完成度」视角1 模型)
- **独有发现保留**:单模型独有项不丢弃,标注「需复核」纳入路线图
### 7.2 四模型互补性
```
DeepSeek (广度·计数) ──┐
Opus (深度·字段) ──┤
├──→ Meta-Audit (交叉确认 + 优先级融合)
MiniMax (链路·治理) ──┤
Qwen (覆盖·百分比)─┘
```
- 四模型从**完全不同的角度**独立审查,关键缺陷(命令注入 B8、DB schema B3、MainAgent B13、TUI B15获**4/4 满票确认**,置信度极高
- 评级从 B+ 到 D+ 的分布反映了「完成度 vs 一致性」的根本张力Meta 裁决取 **C骨架 B / 执行 D**
### 7.3 综合数据
| 指标 | 数值 |
|------|------|
| 四模型发现总数(去重前) | 97 + 140 + 38 + 84 ≈ 359 |
| 高置信阻断项≥3模型 | 15 项 |
| 中置信阻断项2模型 | 7 项 |
| INV 合规 | PASS 2 / 部分 3 / FAIL 6 |
| 加权规范一致性 | ≈ 52% |
| 正面共识项 | 14 项 |
---
## 8. 最终裁决
> **综合评级C骨架 B 级 · 执行链路 D 级)**
>
> **可发布性:否**。四个独立审计模型一致判定 V1.0.0 Alpha 不应在当前状态发布。
>
> **核心判断**
> 1. **基础设施扎实**——Monorepo、SQLite Schema、事件注册表、依赖方向四模型满票通过这是真实的工程资产。
> 2. **契约系统性漂移**——contracts 忠实编码规范,但 runtime/llm/workers/tui/toolchain-cpp 系统性重定义本地冲突类型、几乎不 import 契约Opus 揭示根因Qwen 量化为 15 契约缺失)。
> 3. **核心链路断裂**——Scheduler 空壳、TUI 无渲染、IPC 握手反转、outbox 不发事件使「一个任务从派发到完成」的主路径无法真正贯通M3 揭示)。
> 4. **三大不变量失守**——INV-1/2/3 四模型独立判 FAIL是评级压到 C 的决定性依据。
> 5. **安全红线**——3 处命令注入4/4 满票)+ 权限旁路 + 弱密钥,任一项都是 GA 阻断。
>
> **建议**:冻结新特性,按统一路线图阶段 A安全红线→ B链路连通→ C规范对齐→ D完整性顺序整改。阶段 A 必须 100% 关闭方可考虑下一里程碑。
---
*本报告由 Opus 4.8 (1M context) 综合 DeepSeek、Opus 4.8、MiniMax-M3、Qwen3.7-Max 四份独立审计报告交叉生成。所有阻断项均标注确认模型数以供溯源复核。*
🤖 Generated with [Claude Code](https://claude.com/claude-code)