Files
AirCoding/AirPlan/docs/architecture/Qwen3.7开发阶段审计.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

28 KiB
Executable File
Raw Blame History

Qwen3.7-Max 开发阶段全量审计报告

审计模型: Qwen3.7-Max
审计日期: 2026-06-03
审计范围: V1.0.0 Alpha 全部代码实现 vs 原始需求/基线/设计文档/UML类图
审计分支: GLM5-Achieve
代码规模: 7 个包, 137 个 TypeScript/TSX 源文件, 4 个根配置文件


0. 审计总览

严重程度 数量 说明
CRITICAL 31 架构性缺陷,阻塞核心不变量或导致运行时崩溃
HIGH 22 功能性缺陷,子系统与设计断连或关键逻辑缺失
MEDIUM 19 部分实现偏差,影响完整性但不阻塞骨架
LOW 12 命名/结构偏差、多余类型、文档注释问题

总体评估: 代码骨架覆盖了 V1.0.0 Alpha 的 8 个阶段目标monorepo 结构、包分层、SQLite schema、事件注册表均存在。但实现与设计文档之间存在大量结构性偏差核心子系统Scheduler 状态机、IPC 协议、安全模型、上下文装配)与冻结基线的匹配度不足 40%。当前代码属于 Phase 0-1 骨架 + Phase 2-7 桩代码 状态,多数子系统有类无逻辑或有逻辑但语义不匹配。


1. 需求覆盖度审计 (requirements.md → 代码)

1.1 功能需求 (FR) 覆盖矩阵

FR ID 需求 覆盖状态 说明
FR-001 CLI 启动与项目初始化 PARTIAL CLI 命令齐全 (11 个),但 init 不创建 17 个规范子目录
FR-002 项目本地状态 .air/ PARTIAL ProjectInitializer 存在,但 .air/shared/plan/docs/ 等子目录缺失
FR-003 会话持久化 SQLite PASS 17 表、38 索引、WAL/NORMAL/FK-OFF 全部正确
FR-004 事件驱动运行时 PARTIAL EventStore/EventBus/EventIngestor 存在,但事务边界违反 (F-04)
FR-005 主代理对话 PARTIAL MainAgent 存在但缺 7/13 个状态,分类用正则而非 LLM
FR-006 架构设计师 PARTIAL ArchitectureDesigner 存在但不产出 BlockerReport不发事件
FR-007 调度器与 TaskGraph FAIL Scheduler 缺 BLOCKED/CANCELLED 状态3 个方法缺失,接口不匹配
FR-008 独立 Worker 进程 PARTIAL 5 个角色均存在,但 WorkerResult 形状不匹配IPC 协议偏差大
FR-009 Claude Code 级执行原语 FAIL read-before-edit 未强制,工具 schema 字段名大量偏差
FR-010 ToolRegistry 与内置工具 FAIL 28 个 MVP 工具中 16 个缺失
FR-011 权限与安全模型 FAIL 0/10 cut line 项完全满足profile/action/grant_scope 类型不匹配
FR-012 插件与能力基础 PARTIAL CapabilityRegistry 存在但 manifest schema、trust level、依赖模型全部偏差
FR-013 Provider 层 PARTIAL AnthropicAdapter 和 OpenAICompatibleAdapter 存在,能力矩阵仅实现 ~20%
FR-014 上下文装配与压缩 FAIL L6-L9 层缺失,输出非 Anthropic canonical 格式,无冲突检测
FR-015 工件与证据管理 PARTIAL ArtifactStore 正确实现 temp-rename 流程EvidenceStore 用内存 map
FR-016 TUI 与 HUD PARTIAL 9 个组件齐全,无 OpenTUI rendererProjectionStore.rebuild() 为桩
FR-017 完整 C++ 开发工作流 FAIL CppToolRegistrar 注册工具但 6 个 cpp.* 工具未注册到 ToolRegistry
FR-018 Doctor PARTIAL DoctorService 存在但无 provider 检查和平台检测
FR-019 日志与诊断 PARTIAL Logger 存在但与 DeveloperLogEncryptor 完全断连
FR-020 发布门禁 FAIL release 命令为桩,无 fixture 项目

1.2 非功能需求 (NFR) 覆盖矩阵

NFR ID 需求 覆盖状态 说明
NFR-001 本地优先 PASS 所有状态在 .air/
NFR-002 可恢复性 FAIL Recovery 的 scanOrphanReferences 和 checkPidLiveness 均为桩
NFR-003 可扩展性 PARTIAL toolchain-* 包模式存在但能力注册不完整
NFR-004 Provider 灵活性 PARTIAL 适配器模式存在但能力矩阵验证不完整
NFR-005 UI 响应性 PASS ProjectionStore 架构正确隔离了 UI 与 DB
NFR-006 基于证据的完成 FAIL 完成门禁未强制,验证桩代码
NFR-007 Linux 优先 PASS 代码无平台特定障碍
NFR-008 安全边界保持 FAIL PathClassifier 类别错误,无 credential_store 检测

2. 契约包审计 (packages/contracts vs interface-contracts-v1.md)

2.1 缺失的契约接口 (15 个)

# 契约名 设计位置 严重程度
1 EventBus SS7 CRITICAL
2 EventStore SS7 CRITICAL
3 EventIngestor SS7 CRITICAL
4 ContextAssembler SS16 CRITICAL
5 EventSchemaRegistry SS7 HIGH
6 EventAppendOptions SS7 HIGH
7 SessionRecord SS6 HIGH
8 MessageRecord SS6 HIGH
9 PersistedEventRecord SS6 HIGH
10 PersistedEventInsert SS6 HIGH
11 EventRepository SS6 HIGH
12 ContextAssembleInput SS16 HIGH
13 AssembledContext SS16 HIGH
14 CompactionPolicy SS16 HIGH
15 CompactionResult SS16 HIGH

2.2 字段级偏差

契约 字段 设计 代码 文件:行
ProviderCapabilityMatrix supports JsonObject ProviderSupports (强类型) provider.ts:70
ProviderCapabilityMatrix conversion JsonObject ProviderConversion (强类型) provider.ts:71
ProviderCapabilityMatrix (额外字段) 不存在 display_name?, limits?, default_use?, notes? provider.ts:64,72-74
ModelRequirement required JsonObject Partial<ProviderSupports> provider.ts:146
ProviderManager (额外方法) 不存在 load_config(): Promise<void> provider.ts:277
DoctorIssueSeverity (缺失值) 包含 "error" 缺少 "error" platform.ts:41
TaskGraph dependencies TaskDependencyRecord[] 内联结构等价物 task.ts:147
PromptLayerLoader 参数类型 ProjectContext, TaskSpec 内联结构子集 runtime.ts:94-104

2.3 多余契约 (需 ADR)

ProviderIdentity, ProviderConversionReport, ProviderLimits, ProviderDefaultUse, DoctorIssue, DoctorIssueCategory, ToolErrorOutput (来自 error-taxonomy-v1.md 但未实现) 等均为代码中新增但设计文档中不存在的契约。


3. 存储层审计 (packages/runtime/src/storage/ vs db-schema-v1.md)

3.1 会话 DB Schema: 完整 (PASS)

17 个表、38 个索引、3 个 PRAGMA、5 个 schema_meta 种子键全部正确匹配。

3.2 CRITICAL 发现

F-01: DebugKnowledgeStore schema 完全不匹配 db-schema-v1.md §20.1

  • DB 路径: 代码 .air/shared/debug-records.db vs 设计 .air/local/debug-records.db
  • 7 个列名/语义不匹配: failure_signaturesignature, fix_reffix_applied, 缺失 summary/evidence_json/verification_json/updated_at/metadata_json
  • 多余列: session_id, error_kind, status, resolved_at
  • 索引名不匹配

F-02: LearnedMemoryStore schema 完全不匹配 db-schema-v1.md §20.2

  • DB 路径: 代码 .air/shared/learned-memory.db vs 设计 .air/local/learned-memory.db
  • 表名: 代码 learned_memory vs 设计 learned_memories
  • 6 个列名/语义不匹配
  • 枚举值完全不匹配: 设计 project_rule|toolchain_rule|skill_update|debug_experience vs 代码 pattern|rule|skill|experience
  • 状态枚举不匹配: 设计 candidate|promoted|archived|rejected vs 代码 draft|promoted|archived

F-04: EventStore.project() 未将事务句柄传递给仓库

  • append() 正确开启事务,但 project() 方法接收 _tx 参数后从不传给仓库方法
  • 违反 db-schema-v1.md §1 规则 8: "持久事件插入与域表更新必须在同一事务中"
  • 影响: 域表写入失败时事件行仍会提交,造成不一致状态

F-05: EventStore 写入无效的 workspace status 值

  • workspace.created 写入 status: 'created',但有效枚举为 active|merged|conflicted|abandoned|cleaned
  • workspace.merge.started 写入 status: 'merging',不在枚举中
  • 导致 assertEnumValues 抛出 AirError首次 workspace 创建即崩溃

F-06: TaskAttemptRepository.update() 列映射 bug

  • 检查 patch.failure_signature 但更新 failure_summary
  • 导致 failure_signature 永远不会被更新,failure_summary 被静默覆盖

F-07: EventRepository 路由前缀过滤器使用错误分隔符

  • 过滤用 . 拼接,但存储用 / 分隔
  • 所有路由前缀查询返回零结果

3.3 HIGH 发现

F-08: Recovery.scanOrphanReferences() 为桩 — FK-off 孤儿扫描未实现
F-09: Recovery.checkPidLiveness() 为桩 — PID 存活检查未实现
F-10: Workspace GC SQL 逻辑错误 — AND/OR 缺少括号,session_id 过滤被绕过
F-11: EvidenceStore 使用内存 Map — 重启后证据查询为空
F-12: SessionManager.close_session() 不刷新 ui_state — 违反退出时刷新不变量

3.4 MEDIUM 发现

F-13: command.completed 投影传递 diagnostic_idscommand_runs 表无此列
F-14: EventStore 单例用空 DatabaseHandle 初始化
F-15/F-16: 多个仓库在 insert 时硬编码 status与 EventStore 传递值冲突


4. 安全模型审计 (packages/runtime/src/security/ vs security-model-v1.md)

4.1 路径分类器 (CRITICAL 偏差)

设计 PathRiskCategory 实现 状态
project project_source, project_config 拆分为二
project_air_shared 缺失
project_air_local 缺失
credential_store 完全缺失 (~/.ssh, ~/.gnupg 等均不检测)
unknown 缺失; 默认为 project_config (过于宽松)

4.2 命令风险分析器 (CRITICAL 偏差)

设计 CommandRisk 实现 状态
build_or_test 缺失
dependency_install 缺失
privilege_escalation 缺失
unknown 缺失

运行时 Bug: 'sudo_likely' in trimmedin 操作符在字符串上检查 String 原型属性,永远为 false

4.3 权限引擎 (CRITICAL 偏差)

设计要素 实现 状态
4 个 Profile (low/normal/high/developer) 按 agent 类型的 profile 完全不匹配
6 个 Action (allow/deny/ask_user/block/refuse/announce_then_run) 7 个 Action (3 个不同) 缺失 block/refuse/announce_then_run
PermissionGrantScope (5 级) 完全缺失 无授权范围追踪
risk_level 字段 缺失
backup_required 字段 缺失 无写入前备份逻辑
策略违规 refuse 缺失 无拒绝检测

Cut line 合规: 0/10 项完全满足, 4 项部分满足, 6 项不满足。

4.4 SecretRedactor: 良好但有缺口

14 个模式类别覆盖良好。缺失: .env 文件路径级检测、云凭证目录模式、auth_ref 引用系统、Provider 适配器集成。


5. 工具注册表审计 (ToolRegistry vs tool-registry-v1.md)

5.1 MVP 工具缺失 (16/28 缺失)

缺失工具 类别
fs.stat 文件系统
process.kill 进程
git.worktree.create Git
git.merge_workspace Git
project.scan 项目
project.profile.write 项目
cpp.detect C++ 工具链
cpp.cmake.configure C++ 工具链
cpp.build C++ 工具链
cpp.test C++ 工具链
cpp.static.cppcheck C++ 工具链
cpp.clangd.query C++ 工具链
debug.run 调试
debug.parse_logs 调试
gui.screenshot GUI 证据
network.capture 网络证据

5.2 多余工具 (10 个不在 MVP 索引中)

git.commit, git.branch, project.rules, project.context, artifact.read, context.compact, permission.check, permission.prompt, doctor.check, doctor.fix

5.3 工具 Schema 偏差 (主要工具)

工具 设计字段 代码字段 偏差
fs.edit old_string, new_string, expected_existing_sha256? find, replace 字段名全部不同,缺安全校验和
shell.run cwd (required), timeout_ms?, stdin?, capture_mode?, purpose? workdir (optional), timeout?, env? 名称/必需性/字段均不匹配
artifact.create type, original_name?, content?, source_path?, associated_entity_type?, associated_entity_id?, metadata? name, type, content, metadata 缺 5 个字段
context.assemble purpose (required enum), refs?, token_budget? max_tokens? 缺必需 purpose 枚举和 refs

5.4 ToolRegistry 运行时 Bug

CRITICAL: this.downgrade_to_readonly()this.apply_sandbox_restrictions() 在模块作用域 ACTION_BRANCHES 对象中被调用,this 不是 ToolRegistry 实例,运行时将抛出异常。


6. 能力系统审计 (CapabilityRegistry vs capability-trust-v1.md)

6.1 Manifest Schema (CRITICAL 偏差)

设计字段 实现 状态
capability_id name 重命名
display_name 缺失
source (CapabilitySource) 完全缺失
trust_level (5 级) trust_level (3 级) 不匹配: 设计 built_in/project_local/user_installed/verified_publisher/untrusted vs 代码 core/trusted/untrusted
publisher? 缺失
events? 缺失
config_schema? 缺失
entrypoint? 缺失

6.2 依赖模型

设计: 富 CapabilityDependency 对象 (7 种 kind、检测器、安装器策略)。
实现: 简单 string[]。所有结构信息丢失。

6.3 工具命名空间验证

设计要求 <capability-id>.<tool-name> 命名空间,保留内置命名空间。CapabilityManifestValidator 无命名空间验证。


7. 调度器审计 (Scheduler vs scheduler-state-machine-v1.md)

7.1 缺失状态 (CRITICAL)

设计状态 实现 状态
BLOCKED 缺失
CANCELLED 缺失
TERMINATED 多余 (非设计规范)

7.2 Scheduler 接口不匹配

设计方法 实现 状态
create_tasks(session_id, specs: TaskSpec[]) create_tasks({id,type,title,depends_on}[]) 签名不匹配,缺 session_id
add_dependency(session_id, task_id, dep) 完全缺失
load_graph(session_id) 完全缺失
run_until_idle(session_id): SchedulerRunResult run_until_idle(): SchedulerState 返回值类型不匹配
cancel_task(task_id, reason) 完全缺失

7.3 状态逻辑空洞

状态 设计要求 实现
DISPATCHING 4 个动作 (workspace, events, control message, attempt) 仅标记 running
COLLECTING_RESULTS 5 个动作 (validate, persist, terminal, classify, unblock) 直通到 MERGING
MERGING 策略选择 (main/worktree/isolated_copy) 直通到 REVIEWING_WAVE
REVIEWING_WAVE 调度 review 任务 直通到 REPAIRING_OR_CONTINUING

7.4 TaskGraph 偏差

  • 缺失 serialization 依赖类型 (4 种中缺 1 种)
  • soft 依赖对调度无任何影响
  • 冲突依赖不阻止同波次并发
  • TaskNode 缺少 spec, assigned_agent_id, retry_count, workspace_id

7.5 WavePlanner 偏差

  • 所有任务分配到 'default' write area — write-area 串行化无效
  • wave_idnumber (Date.now()) 而非设计要求的 string
  • workspace_assignments, model_assignments, reason 字段
  • 8 条波次规划规则中仅 1 条部分实现

7.6 RetryPlanner: 死代码

逻辑正确 (重复失败签名升级),但从未被 Scheduler 调用。


8. IPC 协议审计 (WorkerProtocol vs interface-contracts-v1.md §10)

8.1 缺失 IPC 类型

设计 IpcKind 实现 状态
control 缺失 (个别控制消息存在但无 control 信封)
log 完全缺失
tool.stream 完全缺失
protocol.error 缺失 (用非标准 worker.error 替代)

8.2 信封形状不匹配

设计 IpcEnvelope 有 9 个字段: id, direction, kind, timestamp, session_id, agent_id, correlation_id?, protocol_version, payload
实现 WorkerMessage 有 5 个字段: id, type, direction, timestamp, payload
缺失: kind, session_id, agent_id, correlation_id, protocol_version

8.3 握手顺序反转

设计: 父进程先发 agent.startworker 回 worker.ready
实现: worker 先发 worker.ready,父进程后发 agent.start顺序相反


9. 主代理状态机审计 (MainAgent vs main-agent-state-machine.md)

9.1 缺失状态 (7/13)

设计状态 实现 状态
CLASSIFYING 缺失
SCHEDULING 缺失
ARCHITECTURE_DESIGNING 缺失
CONFIRMING 缺失 (用 AWAITING_CONFIRMATION 替代,语义不同)
EXECUTING 缺失
INTERRUPTING 缺失
ARCHITECTURE_REVISING 缺失

9.2 其他偏差

  • 分类用正则而非 LLM
  • Direct Mode /direct//done 不完整
  • SUMMARIZING 不触发 ExperienceMiner
  • requirement.changed 处理

10. Worker 角色审计 (packages/workers/ vs 设计)

10.1 结果形状不匹配

所有 5 个角色均返回局部结果类型而非设计要求的 WorkerResult<T> 信封:

角色 设计要求 实际返回
Executor WorkerResult<ExecutorResult> (12 字段) {status, changes?, verification?, error?} (4 字段)
Reviewer WorkerResult<ReviewerResult> + verdict 枚举 {status, findings[], summary}
Debugger WorkerResult<DebuggerResult> + BlockerReport? {status, root_cause, fix_applied?, evidence_refs}
Compactor WorkerResult<CompactorResult> + summary_id {status, summary_content, tokens_freed}
ExperienceMiner WorkerResult<ExperienceMinerResult> + MemoryCandidate[] {status, entries[], summary}

10.2 执行纪律缺失

  • read-before-edit 未强制
  • 完成门禁 (verification pass or explicit skip) 未强制
  • DebuggerRole 不查 DebugKnowledgeStore
  • ExperienceMiner 触发路径未接入 Scheduler

11. LLM Provider 层审计 (packages/llm/ vs provider-capability-matrix-v1.md)

11.1 能力矩阵覆盖度: ~20%

缺失:

  • quality_tier, cost_tier 字段未在矩阵中使用
  • 17 个 supports 字段中仅 5 个实现
  • 整个 conversion 块、limits 块、default_use 块缺失
  • ProviderKind 分类未使用
  • Fallback 策略、调度器分配模式缺失

11.2 Provider 配置安全

代码直接存储 api_key 原始值,设计要求 auth_ref 间接引用,密钥永不进入 session DB/events/artifacts。

11.3 LLM 包未引用 contracts

packages/llm 在本地定义所有类型而非从 packages/contracts 导入,违反了基线 §4 依赖方向规则。


12. 上下文装配审计 (ContextAssembler vs prompt-layering-v1.md)

12.1 层级缺失 (4/10)

设计 实现 状态
L0 System 系统身份 硬编码字符串 PARTIAL
L1 Capability 能力声明 存在 PASS
L2 Safety 安全规则 硬编码 PARTIAL
L3 Project Rules 项目规则 存在但路径错误 PARTIAL
L4 Architecture 架构上下文 存在 PASS
L5 Plan/Task 计划/任务 存在 PASS
L6 Evidence 证据上下文 缺失 (TODO)
L7 Conversation 对话历史 缺失 (TODO)
L8 Tool Output 工具输出 缺失 (TODO)
L9 Immediate 即时指令 缺失 (TODO)

12.2 输出格式

设计要求输出 Anthropic canonical messages。实现输出自定义 PromptLayer[] 结构,未转换为 canonical 格式。

12.3 冲突检测: 缺失

设计要求层间冲突报告 (如安全规则与项目规则矛盾)。实现无任何冲突检测。

12.4 CompactionPolicy: 无 copy-on-write

设计要求 copy-on-write 压缩,保留回溯引用。实现仅有阈值检查,无工件持久化,无回溯保留。


13. TUI/HUD 审计 (packages/tui/ vs 设计)

13.1 组件覆盖: 完整

9 个视图组件全部存在: SessionView, TaskListView, AgentStatusView, ToolRunView, DiffView, PermissionPrompt, BlockerReport, HudView + TuiApp。

13.2 缺口

  • 无 OpenTUI renderer 集成 (组件定义但无渲染引擎)
  • 无对话消息渲染表面
  • PermissionPrompt/BlockerReport 无路由连接
  • ProjectionStore.rebuild() 为桩 — 仅处理 5 种事件类型
  • HUD 预设 (Full/Essential/Minimal) 未实现

14. C++ 工具链审计 (packages/toolchain-cpp/ vs FR-017)

14.1 组件存在但断连

  • CppProjectDetector, CppBuilder, CMakeConfigurator, CppTestRunner, DiagnosticParser, ClangdClient, CppcheckRunner 均存在
  • CppToolRegistrar 注册了工具定义但 未注册到 ToolRegistry (与 FR-010 的 16 个缺失工具一致)
  • ClangdClient 方法全部为桩
  • 源文件发现返回空数组

14.2 安全风险

CppBuilder.build()CppTestRunner.run() 使用 execSync 字符串拼接,存在命令注入风险。


15. CLI 命令审计 (packages/cli/ vs 设计)

15.1 命令覆盖: 完整 (PASS)

所有 11 个必需命令存在: init, run, doctor, provider, resume, compact, history, session, restore, e2e, release

15.2 init 命令偏差

  • 不创建 17 个规范 .air/ 子目录
  • 直接写文件系统,绕过 ToolRegistry/PermissionEngine (违反 INV-3)

15.3 额外包

代码中存在 packages/workers/ 包,不在基线 §4 的规范包列表中。这是一个合理的分离 (worker 入口点独立于 runtime),但需要 ADR 记录。


16. 运行时语义合规审计 (vs runtime-semantics-v1.md)

不变量 合规 说明
INV-1: 持久事件+域表同事务 FAIL F-04: EventStore.project() 不传事务
INV-2: EventIngestor 不创建调度任务 PASS
INV-3: 副作用经 ToolRegistry/PermissionEngine FAIL init 直接写 FS
INV-4: EventBus handler 错误不中断订阅 PASS
INV-5: 临时事件合并 PASS 5 秒窗口正确
INV-6: 工件 temp-rename 原子写 PASS
INV-7: Workspace GC 策略 PARTIAL GC 逻辑正确但 SQL 有 bug (F-10)
INV-8: Agent heartbeat 持久化 FAIL 仅内存,不写 DB
INV-9: ExperienceMiner 4 种触发路径 FAIL 0 种实现
INV-10: read-before-edit 强制 FAIL 未实现
INV-11: 完成门禁强制 FAIL 未实现

17. 正面发现 (代码与设计匹配的部分)

  1. Monorepo 结构正确: Bun workspace + Turborepo7 个包分层清晰
  2. SQLite Schema 完整: 17 表、38 索引、PRAGMA、schema_meta 完全匹配
  3. 事件注册表完整: 54 个持久事件 + 7 个临时事件全部注册
  4. Enum 验证完整: 18 个闭枚举全部覆盖
  5. ArtifactStore 原子写入正确: temp → sha256 → rename → event 流程完整
  6. EventBus 错误隔离正确: handler 异常不中断订阅
  7. 临时事件合并正确: 7 种临时事件类型全部识别5 秒窗口
  8. EventIngestor 分离正确: 持久/临时路径分离,不创建调度任务
  9. SecretRedactor 覆盖良好: 14 种凭证模式
  10. CLI 命令完整: 11/11 必需命令
  11. WorkspaceManager GC 保留策略正确: merged 7 天, abandoned 3 天
  12. Heartbeat 合并窗口正确: 5 秒
  13. RetryPlanner 失败签名升级逻辑正确: (但未接入)
  14. 所有 16 个仓库 CRUD 操作完整: get/insert/update + 领域查询方法

18. 修复优先级建议

P0 (立即修复 — 阻塞核心不变量)

  1. F-04: EventStore 事务边界 — 将 _tx 传递给所有仓库方法
  2. F-05: Workspace status 枚举值'created''active', 'merging' → metadata
  3. F-06: TaskAttemptRepository 列映射failure_summaryfailure_signature
  4. F-07: EventRepository 路由分隔符./
  5. ToolRegistry this 绑定 bug — 重构 ACTION_BRANCHES 为方法调用
  6. CommandRiskAnalyzer in 操作符 bug'sudo_likely' in trimmedtrimmed.includes('sudo')

P1 (短期修复 — 功能性缺陷)

  1. F-01/F-02: 项目级 DB schema — 对齐 DebugKnowledgeStore 和 LearnedMemoryStore
  2. 补全 15 个缺失契约接口 — EventBus/EventStore/EventIngestor/ContextAssembler 等
  3. PathClassifier 类别对齐 — 添加 credential_store, project_air_shared/local, unknown
  4. PermissionEngine 类型对齐 — 4 profile, 6 action, grant scope
  5. Scheduler 状态机补全 — BLOCKED/CANCELLED 状态, cancel_task, load_graph
  6. IPC 信封补全 — 添加 5 个缺失字段, 修正握手顺序
  7. 注册 16 个缺失 MVP 工具 — fs.stat, process.kill, cpp., debug., gui., network.
  8. Main Agent 状态机补全 — 7 个缺失状态

P2 (中期修复 — 完整性)

  1. ContextAssembler L6-L9 — 补全 4 个缺失层
  2. Provider 能力矩阵 — 补全 ~80% 缺失字段
  3. Worker 结果形状对齐 — 统一为 WorkerResult<T> 信封
  4. Capability manifest 对齐 — 5 级 trust, 富依赖模型, 命名空间验证
  5. Recovery 实现 — 孤儿扫描、PID 存活检查
  6. EvidenceStore 持久化 — 从 EvidenceRepository 查询而非内存 Map

P3 (长期 — 质量与文档)

  1. ADR 记录 — workers 包、Provider 类型强化、Doctor 扩展等设计偏差
  2. DoctorIssueSeverity — 添加缺失的 "error"
  3. 工具 Schema 对齐 — fs.edit, shell.run, artifact.create 等字段名/类型
  4. Scope Escalation 实现 — ScopeImpactLevel, BlockerReport 集成
  5. TUI renderer 集成 — OpenTUI/Solid 渲染引擎接入

19. 与设计文档冻结基线的一致性总结

基线文档 一致性 主要偏差
interface-contracts-v1.md 65% 15 个契约缺失Provider 字段偏差
db-schema-v1.md 85% 2 个项目级 DB 完全不匹配,事务边界违反
event-registry-v1.md 95% 事件计数注释偏差 1其余完整
tool-registry-v1.md 40% 16/28 MVP 工具缺失schema 字段名偏差
security-model-v1.md 20% 分类器/权限/Profile 类型全面偏差
capability-trust-v1.md 30% Manifest schema、trust level、依赖模型不匹配
scheduler-state-machine-v1.md 35% 缺 2 状态、3 方法、3 空状态、依赖类型缺失
main-agent-state-machine.md 45% 缺 7/13 状态
prompt-layering-v1.md 50% L6-L9 缺失,输出格式不匹配
provider-capability-matrix-v1.md 20% 能力矩阵仅实现 ~20%
runtime-semantics-v1.md 40% 11 个不变量中 5 个违反
error-taxonomy-v1.md 90% ErrorKind/AirError 匹配ToolErrorOutput 缺失
artifact-naming-v1.md 80% ArtifactStore 路径正确,命名规范部分偏差
scope-escalation-v1.md 10% ScopeImpactLevel/BlockerReport 未实现
cross-platform-matrix-v1.md 80% 平台检测类型存在但 Doctor 未使用
C4 module.md 85% 包结构匹配workers 包为额外添加
C4 code-view.md 90% contracts 文件结构匹配
solution-architecture.md 55% 分层架构存在Agent 交互链不完整
system-overview-design.md 50% 子系统存在但连接断
system-detailed-design.md 45% 类存在但方法签名/状态机偏差大

20. 结论

当前 V1.0.0 Alpha 代码实现处于 骨架基本就位、语义大面积偏差 的状态。monorepo 结构、SQLite schema、事件注册表等基础设施质量较高但核心运行时子系统Scheduler、IPC、Security、Context与冻结基线之间存在结构性分歧。

最高风险项 是 EventStore 事务边界违反 (F-04),它会导致每个持久事件的域表更新在事务外执行,破坏数据一致性不变量。其次是 workspace status 枚举错误 (F-05) 会导致首次 workspace 创建即崩溃。

建议在继续 Phase 2-8 实现之前,先完成 P0 和 P1 修复,确保核心不变量和接口契约与设计文档对齐。


审计完毕。本报告由 Qwen3.7-Max 独立生成,可与其他模型审计报告进行交叉比对。