基于 CLOSED_LOOP_AUDIT.md(审计日期 2026-05-30,1083 passed / 0 failures)。
用户/MCP Client ✅ MCP tools/call
↓
MCP Gateway → UnifiedToolRegistry ✅ stableagent.task.os_agent
↓
RunLifecycle 状态创建 ✅ ToolRouter → RunContext
↓
TemporalMemoryRouter 时间召回 ✅ Orchestrator 步骤 6.5
↓
ContextCompressionGuard 防降智 ✅ Orchestrator 步骤 6.5(6层保护)
↓
Orchestrator 17步 process_task ✅ 全流程
↓
TraceEvent 执行记录 ✅ ToolRouter._make_event_dict
↓
DecisionTraceBuilder 可解释状态 ✅ 从 RunLifecycle 读取
↓
Dashboard Observer 实时显示 ✅ /runs/{id} WebSocket SSE
↓
Eval → Failure Attribution ✅ _attribute_failure
↓
BadCase → Regression Case ✅ _generate_regression_cases + 持久化
↓
Memory Update Candidate ✅ _generate_memory_candidates (CANDIDATE 状态)
↓
Skill Patch Candidate ✅ _generate_skill_patches
↓
RegressionValidationRunner 验证 ✅ validate_patch (规则 + LLM 混合)
↓
Human Review 审核 ✅ HumanReviewQueue + approve_patch
↓
Export best_skill.md ✅ _export_best_skill_versioned (带版本归档)
- 文件:
stable_agent/self_improvement/proof_loop.pyline 614–618 - 旧行为: 生成 patch 后自动调用
start_validation → mark_validated → submit_for_review - 新行为 (V8.0): 不自动推进状态线。验证由
evaluate_and_learn()中的RegressionValidationRunner.validate_patch()驱动,审核由HumanReviewQueue守卫 - 注释已更新:
# V8.0: 不自动推进状态线...旧行为:start_validation → mark_validated → submit_for_review(已移除)
- 文件:
web/static/avatar_scene.js(新增) - 功能: 将 17 种
avatar_state映射为 Canvas 像素画渲染SCENE_CONFIGS定义每个场景的背景色、道具 emoji、mooddrawCharacter()根据 mood 渲染不同表情(头、眼、嘴、身)renderAvatarScene(state, canvasId)为公开 API
- 集成:
run_observer.js的updateAvatar()调用renderAvatarScene(info.scene, "avatarCanvas") - HTML:
<canvas id="avatarCanvas" width="220" height="220">替换了旧 text label
- 文件:
stable_agent/runtime/run_lifecycle.py - 审计确认 (CLOSED_LOOP_AUDIT.md section 1):
- 8 个阶段完整(TEMPORAL_MEMORY_RETRIEVING → COMPLETED)
- 每个阶段有
progress_pct(0→100 统一分配) - 每个阶段有
status_text_zh、avatar_state、scene - 每个阶段有
default_why_zh+next_step_zh - 被
DecisionTraceBuilder和ToolRouter真实调用 - 无 stub/TODO/pass,无静默失败
- 前端依赖:
run_observer.js的applyEvent()从evt.progress_pct和evt.avatar_state读取,不做本地推算
| 风险 | 严重度 | 说明 | 状态 |
|---|---|---|---|
| Orchestrator 中 TemporalMemory/CompressionGuard 静默 catch | P1 | 异常只记录 warning,不阻断主流程 | 有意为之的优雅降级 |
validation_passed = True 初始值 |
P2 | 语义正确(会被动态覆盖),check_closed_loop.py 已通过检查 | 已确认 |
_generate_skill_patches 自动推进状态 |
P2 | 已在本轮修复 (V8.0) | 已解决 |
| WorkflowStateMachine._step_learn 有 STUB 标记 | P3 | 核心学习已移至 Orchestrator,不阻塞主流程 | 低优先级 |
| ToolRouter line 141 except: pass | P3 | 非关键 RunLifecycle 注入失败 | 低优先级 |
全部 1083 tests passed,0 failures。关键测试文件:
test_run_lifecycle.pytest_temporal_memory_router.pytest_context_compression_guard.pytest_self_improvement_proof_loop.pytest_regression_validation_runner.pytest_validation_report.pytest_decision_trace_builder.pytest_tool_router_events.pytest_avatar_scene_mapping.pytest_dashboard_run_detail.py
python tools/check_closed_loop.py
# 期望: [PASS] Closed-loop structural checks completed.