8.4 KiB
| title | status | created | plan_type |
|---|---|---|---|
| feat: AgentKit 劣势项改进 | active | 2026-06-10 | feat |
feat: AgentKit 劣势项改进
Summary
针对代码审查后识别的 6 个延后劣势项进行改进:Soul演变多维度触发、中文分词增强、端到端可观测性、测试覆盖补充、ReWOO渐进回退、Agent间通信协议。
Problem Frame
当前 AgentKit 的多Agent架构已基本成型,但存在 6 个影响生产就绪度的劣势项。这些项不阻塞核心功能,但会随使用规模扩大而暴露问题。
Scope Boundaries
In Scope
- Soul演变多维度触发(时间衰减+质量梯度+场景权重)
- 中文分词增强(2-gram+停用词,零依赖)
- 端到端可观测性(OpenTelemetry埋点)
- 集成测试补充(多模块交互测试)
- ReWOO渐进回退链
- Agent间通信协议(消息总线)
Out of Scope
- jieba分词集成(可选依赖,后续按需)
- 分布式消息总线(Redis实现,后续按需)
- Live测试(需要真实API Key,CI中标记跳过)
- UI可视化trace(Jaeger/Zipkin前端,运维配置)
Key Technical Decisions
KTD1: 中文分词采用2-gram+停用词方案(零依赖)
jieba虽精准但是额外依赖,2-gram方案对"数据分析""代码生成"等复合词已有足够捕获率。后续可按需引入jieba作为可选依赖。
KTD2: 可观测性基于OpenTelemetry标准
各引擎已有 trace_recorder 参数,只需实现 OTel 导出器。配置通过 telemetry.otlp_endpoint 启用。
KTD3: Agent间通信采用请求-响应+广播+协商三模式
基于 AgentMessage 数据类和 MessageBus 接口。先实现 InMemoryMessageBus,后续扩展 RedisMessageBus。
KTD4: ReWOO回退链为 ReWOO简化→PlanExec→ReAct→Direct
渐进式降级,每一步保留更多结构化能力。
Implementation Units
U1. Soul演变多维度触发
Goal: 扩展Soul演变触发条件,支持时间衰减、质量梯度、场景权重
Dependencies: None
Files:
- Modify:
src/agentkit/evolution/lifecycle.py - Modify:
src/agentkit/evolution/config.py(新增 SoulEvolutionConfig) - Test:
tests/unit/test_soul_evolution.py
Approach:
- 新增
SoulEvolutionConfigdataclass,包含reflection_window_seconds、time_decay_factor、task_type_weights、quality_gradient_threshold - 修改
evolve_soul方法:时间衰减计算effective_count = sum(factor^age_hours)替代len(reflections) - 新增质量梯度检测:追踪最近N次评分趋势,连续下降超过阈值时提前触发
- 场景权重:高风险任务降低触发阈值
Test scenarios:
- 时间衰减:1小时内的3次反思触发,超过窗口的不计入
- 质量梯度:连续3次评分下降0.15触发,即使总反思次数<3
- 场景权重:code_generation任务2次即触发(权重1.5),chat任务需4次(权重0.5)
- 兼容性:无config时行为与现有一致
Verification: 新增测试全部通过,现有Soul演变测试不受影响
U2. 中文分词增强
Goal: 替换空格分词为2-gram+停用词方案,提升中文能力关键词提取
Dependencies: None
Files:
- Modify:
src/agentkit/chat/skill_routing.py - Test:
tests/unit/test_cost_aware_router.py
Approach:
- 提取
_tokenize_content()为独立方法 - 标点分割 → 对长中文段补充2-gram → 停用词过滤
- Layer 2 路由调用新方法
Test scenarios:
- 中文:"帮我做数据分析" → 提取 ["数据分析", "帮我"]
- 英文:"help with code generation" → 提取 ["code generation", "help"]
- 混合:"用python做data analysis" → 提取 ["python", "data analysis"]
- 停用词过滤:"的了一个" → 过滤后为空
Verification: 中文分词测试通过,现有路由测试不受影响
U3. 端到端可观测性(OpenTelemetry埋点)
Goal: 为核心组件添加OTel trace/metrics埋点
Dependencies: None
Files:
- Create:
src/agentkit/telemetry/__init__.py - Create:
src/agentkit/telemetry/tracer.py(OTel导出器) - Modify:
src/agentkit/chat/skill_routing.py(路由埋点) - Modify:
src/agentkit/core/react.py(ReAct埋点) - Modify:
src/agentkit/core/rewoo.py(ReWOO埋点) - Modify:
src/agentkit/core/reflexion.py(Reflexion埋点) - Modify:
src/agentkit/quality/alignment.py(Guard埋点) - Test:
tests/unit/test_telemetry.py
Approach:
- 定义
TelemetryConfig和get_tracer()工厂 - 实现
OTelTraceRecorder适配器,桥接现有TraceRecorder接口 - 各组件在关键节点创建 Span:路由决策、引擎执行、约束检查
- 配置通过
telemetry.otlp_endpoint启用,未配置时为 no-op
Test scenarios:
- 未配置时:所有埋点为 no-op,不影响功能
- 配置endpoint时:Span正确创建,属性包含 layer/complexity/status 等
- 路由埋点:Layer 0/1/2 各产生带属性的 Span
- 引擎埋点:执行完成后 Span 记录 steps_count/total_tokens/status
Verification: 新增测试通过,无OTel依赖时功能正常
U4. 集成测试补充
Goal: 补充多模块交互集成测试,覆盖核心链路
Dependencies: U1, U2
Files:
- Create:
tests/integration/test_router_engine_chain.py - Create:
tests/integration/test_rewoo_fallback.py - Create:
tests/integration/test_reflexion_loop.py - Create:
tests/integration/test_soul_evolution_trigger.py
Approach:
- 路由→执行→审计全链路测试(仅mock LLM)
- ReWOO规划失败→回退测试
- Reflexion多轮循环测试
- Soul演变触发条件测试
Test scenarios:
- 全链路:CostAwareRouter路由到ReActEngine → AlignmentGuard检查通过
- 全链路违规:AlignmentGuard检查失败,返回violations
- ReWOO回退:规划异常时正确回退到ReAct
- Reflexion:3轮循环后返回最佳结果
- Soul触发:3次低质量反思后触发update_soul
Verification: 集成测试全部通过
U5. ReWOO渐进回退链
Goal: ReWOO规划失败时渐进降级,而非直接回退ReAct
Dependencies: None
Files:
- Modify:
src/agentkit/core/rewoo.py - Test:
tests/unit/test_rewoo_engine.py
Approach:
- 新增
FALLBACK_CHAIN配置:simplified_rewoo → plan_exec → react → direct - 规划失败时先尝试简化规划(max_plan_steps=3)
- 简化仍失败则按链降级
- 回退信息记录在 ReWOOResult 中
Test scenarios:
- 正常规划成功:无回退
- 规划失败→简化规划成功:结果标记 fallback=simplified
- 规划失败→简化失败→ReAct回退:结果标记 fallback=react
- 所有回退都失败:返回错误结果
Verification: 回退链测试通过
U6. Agent间通信协议
Goal: 实现轻量级消息总线,支持Agent间请求-响应、广播、协商
Dependencies: None
Files:
- Create:
src/agentkit/bus/__init__.py - Create:
src/agentkit/bus/message.py(AgentMessage数据类) - Create:
src/agentkit/bus/interface.py(MessageBus接口) - Create:
src/agentkit/bus/memory_bus.py(InMemoryMessageBus实现) - Modify:
src/agentkit/server/app.py(初始化MessageBus) - Test:
tests/unit/test_agent_bus.py
Approach:
- 定义
AgentMessagedataclass:sender, recipient, msg_type, content, correlation_id, timestamp, ttl - 定义
MessageBus抽象接口:publish, subscribe, request - 实现
InMemoryMessageBus:基于 asyncio.Queue - 与 AlignmentGuard 集成:消息经过约束检查
- 与 CascadeDetector 集成:消息传递计入级联检测
Test scenarios:
- 请求-响应:Agent A发送请求,Agent B响应,correlation_id匹配
- 广播:Agent A广播,所有订阅者收到
- 协商:Agent A发起协商,Agent B回复建议
- TTL过期:超时消息被丢弃
- 级联检测:超过阈值的消息链触发 CascadeAlert
Verification: 消息总线测试通过,与Guard/Cascade集成正确
Risks & Mitigations
| Risk | Impact | Mitigation |
|---|---|---|
| OTel依赖增加包体积 | Low | OTel为可选依赖,未配置时no-op |
| 消息总线内存泄漏 | Medium | TTL过期清理 + 定期GC |
| ReWOO回退链增加延迟 | Low | 每步设置timeout,总回退时间上限5s |
| 2-gram分词噪声 | Low | 停用词过滤 + 长度阈值 |
Deferred to Follow-Up Work
- jieba分词集成(可选依赖)
- RedisMessageBus分布式实现
- Live测试(需真实API Key)
- Jaeger/Zipkin前端配置
- 消息总线持久化