feat(agent): Wave 2 medium coupling (G4/G7/G9) #5

Merged
fischer merged 5 commits from feat/agent-wave2-medium-coupling into main 2026-06-30 09:09:33 +08:00
Owner

Wave 2 of advanced-agent gap optimization. 4 implementation units (U1-U4), 73 new tests, all ruff clean. Plan: docs/plans/2026-06-29-003-feat-agent-wave2-medium-coupling-plan.md

Wave 2 of advanced-agent gap optimization. 4 implementation units (U1-U4), 73 new tests, all ruff clean. Plan: docs/plans/2026-06-29-003-feat-agent-wave2-medium-coupling-plan.md
fischer added 5 commits 2026-06-29 23:39:17 +08:00
8d5ccca604 feat(U1): G4 ContextCompressor 辅助 LLM 路由
_summarize 优先尝试 auxiliary_model(成本优化的廉价模型,如 qwen-turbo),
失败或返回空内容(Finding 4 反模式)时回退到主模型,主模型失败仍走
_simple_summary 兜底。auxiliary_model=None 时保持既有单模型调用行为。

- ContextCompressor 新增 auxiliary_model 参数
- LLMConfig 新增 auxiliary_model 字段,ServerConfig._build_llm_config 透传
- agentkit.yaml 文档化 llm.auxiliary_model: fast(注释,保留默认行为)
- 测试: 9 场景覆盖成功/空内容/异常/双向失败/aux=main 跳过/审计字段/配置接线
5b2377469a feat(U2): G7 Emergency 规则模板 + TaskResult.error_struct
新增 EmergencyError 数据类(stable error_code + 中文 message + suggestions
+ retryable + original_error)和 EmergencyRules 规则分类器(纯规则,无 LLM):
- TaskTimeoutError → timeout (retryable)
- LoopDetectedError → loop_detected (retryable)
- LLMProviderError → llm_failure (retryable)
- Exception → internal_error (not retryable)
- TaskCancelledError 不分类(调用方须先检查,否则 ValueError)

TaskResult 新增并行 error_struct 字段(默认 None 保持既有契约)。
to_dict 当 error_struct=None 时不输出该键(byte-for-byte 兼容)。

- fallback.py 既有 3 常量不变(EMPTY_LLM_RESPONSE/MAX_STEPS_REACHED/SHELL_NO_OUTPUT)
- 支持 config 覆盖(suggestions/retryable/message 按 error_code 分组)
- 27 测试覆盖分类/序列化/配置覆盖/契约保持
b1841ce21b feat(U4): G9 PlanPhase rollback + RollbackExecutor
- PlanPhase 新增 validation_command / rollback_command 可选字段 (KTD6 opt-in)
- to_dict 仅在字段非 None 时输出新键,保持既有 dict shape (KTD6 契约)
- 新增 RollbackExecutor (orchestrator/rollback.py) 复用 VerificationLoop
  subprocess 模式,绕过 ShellTool 避免 confirm_callback 拦截 (KTD7)
- TeamOrchestrator._run_phase_rollback 实现 R21 顺序:
  validation → rollback → checkpoint.save (仅在前者通过时调用)
- ServerConfig.from_dict 读取 rollback.default_timeout
- 20 个测试覆盖 characterization / happy / timeout / git integration / 配置
Test / backend-test (pull_request) Has been cancelled Details
Test / frontend-unit (pull_request) Has been cancelled Details
Test / api-e2e (pull_request) Has been cancelled Details
Test / frontend-e2e (pull_request) Has been cancelled Details
80b02f58a6
feat(U3): G7 三级 fallback 链路接通 chat REST
- 新增 agentkit/server/_fallback_chain.py: execute_with_fallback_chain
  Main (ReActEngine) → Recovery (ReflexionEngine) → Emergency (EmergencyRules)
- chat.py send_message 用 chain 包装 react_engine.execute (KTD5)
- ReflexionEngine 内部 ReAct 调用不走 chain (避免递归)
- TaskCancelledError 直接传播, 不进入 Emergency (KTD3)
- soft failure (empty_fallback/verify_failed) 也触发 Recovery
- Recovery 失败/异常 → Emergency 用 EmergencyRules.classify 分类
- ServerConfig.from_dict 读取 fallback_chain.{recovery,emergency}
- 17 个测试覆盖 Main/Recovery/Emergency 三层 + 配置
fischer merged commit a2dcde01b8 into main 2026-06-30 09:09:33 +08:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: fischer/fischer-agentkit#5
No description provided.