Files
evotraders/docs/OPTIMIZATION_PLAN.md
cillin 16b54d5ccc feat(agent): complete EvoAgent integration for all 6 agent roles
Migrate all agent roles from Legacy to EvoAgent architecture:
- fundamentals_analyst, technical_analyst, sentiment_analyst, valuation_analyst
- risk_manager, portfolio_manager

Key changes:
- EvoAgent now supports Portfolio Manager compatibility methods (_make_decision,
  get_decisions, get_portfolio_state, load_portfolio_state, update_portfolio)
- Add UnifiedAgentFactory for centralized agent creation
- ToolGuard with batch approval API and WebSocket broadcast
- Legacy agents marked deprecated (AnalystAgent, RiskAgent, PMAgent)
- Remove backend/agents/compat.py migration shim
- Add run_id alongside workspace_id for semantic clarity
- Complete integration test coverage (13 tests)
- All smoke tests passing for 6 agent roles

Constraint: Must maintain backward compatibility with existing run configs
Constraint: Memory support must work with EvoAgent (no fallback to Legacy)
Rejected: Separate PM implementation for EvoAgent | unified approach cleaner
Confidence: high
Scope-risk: broad
Directive: EVO_AGENT_IDS env var still respected but defaults to all roles
Not-tested: Kubernetes sandbox mode for skill execution
2026-04-02 00:55:08 +08:00

7.4 KiB
Raw Blame History

大时代项目优化和功能补齐计划

当前状态评估

已完成的工作

  1. EvoAgent 核心实现 (backend/agents/base/evo_agent.py)
  2. ToolGuardMixin 工具守卫 (backend/agents/base/tool_guard.py)
  3. Hooks 系统 (backend/agents/base/hooks.py)
  4. Smoke test 脚本 (scripts/smoke_evo_runtime.py)
  5. 选择性 EvoAgent 测试 (backend/tests/test_evo_agent_selection.py)
  6. 删除 backend/agents/compat.py 兼容性层
  7. 删除 useWebsocketSessionSync.js 旧钩子

遗留问题清单

🔴 P0: 阻塞 EvoAgent 全面推出

# 问题 位置 影响 解决方案
P0-1 EvoAgent 不支持长期记忆 evo_agent.py:165-166 启用 memory 时回退到 Legacy Agent 集成 ReMe 记忆系统
P0-2 Pipeline 运行时分析师创建路径不一致 pipeline.py 运行时动态创建可能跳过 EvoAgent 路径 统一 _create_runtime_analyst 逻辑
P0-3 Workspace 加载路径混乱 workspace.py, workspace_manager.py workspace_id vs run_id 语义混合 明确区分 design-time 和 runtime 路径
P0-4 Smoke test 失败排查 scripts/smoke_evo_runtime.py 无法验证 EvoAgent 是否正确启动 修复测试并确保通过

🟡 P1: 功能完善

# 问题 位置 影响 解决方案
P1-1 Team 基础设施未完成 evo_agent.py:41-48 Agent 间通信和任务委托不可用 完成 messenger 和 task_delegator
P1-2 ToolGuard 与 Gateway 审批流程集成 tool_guard.py, api/guard.py 审批状态同步可能不一致 统一审批存储和事件通知
P1-3 Skills 沙盒执行 tools/sandboxed_executor.py 生产环境需要 Docker 隔离 完善沙盒执行器
P1-4 错误处理和重试机制 多处 部分错误未正确处理 添加统一的错误处理

🟢 P2: 代码质量和可维护性

# 问题 位置 影响 解决方案
P2-1 重复的 Agent 创建逻辑 main.py, pipeline.py, pipeline_runner.py 维护困难,容易遗漏 提取统一的 Agent 工厂
P2-2 类型注解不完整 多处 IDE 提示不足 完善类型注解
P2-3 缺少 EvoAgent 集成测试 backend/tests/ 无法确保功能完整 添加集成测试
P2-4 文档和注释 多处 新贡献者理解困难 完善文档

详细实施方案

Phase 1: P0 阻塞问题修复

P0-1: EvoAgent 长期记忆支持

问题描述:

# main.py 中当前逻辑
if long_term_memory and agent_id not in EVO_AGENT_IDS:
    # 使用 Legacy Agent
else:
    # 使用 EvoAgent

目标: EvoAgent 支持 ReMe 长期记忆系统

实施步骤:

  1. EvoAgent.__init__ 中正确接收 long_term_memory 参数
  2. 集成 ReMe 记忆系统的读写
  3. 在 Hooks 中添加记忆相关的生命周期管理
  4. 修改 main.py, pipeline.py 中移除 EvoAgent 的记忆回退逻辑

文件修改:

  • backend/agents/base/evo_agent.py
  • backend/main.py
  • backend/core/pipeline.py

P0-2: Pipeline 运行时分析师创建统一

问题描述: TradingPipeline._create_runtime_analyst 方法需要确保:

  1. 检查 EVO_AGENT_IDS 环境变量
  2. 正确传递所有必要参数给 EvoAgent
  3. 处理 workspace 资产准备

实施步骤:

  1. 统一 pipeline.pymain.py 中的 Agent 创建逻辑
  2. 确保 EvoAgent 路径和 Legacy 路径参数一致
  3. 添加运行时动态 Agent 创建的测试

文件修改:

  • backend/core/pipeline.py
  • backend/main.py

P0-3: Workspace 路径清理

问题描述:

  • workspace_id 有时指 workspaces/ 目录下的设计时 workspace
  • 有时指 runs/<run_id>/ 下的运行时 workspace

解决方案:

  1. 明确命名:design_workspace_id vs run_id
  2. 在 API 路由中区分两种资源
  3. 内部统一使用 run_id 作为运行时标识

文件修改:

  • backend/api/workspaces.py
  • backend/api/agents.py
  • backend/agents/workspace_manager.py

P0-4: Smoke Test 修复

当前测试:

python3 scripts/smoke_evo_runtime.py --agent-id fundamentals_analyst

验证点:

  1. Gateway 正常启动
  2. EvoAgent 日志出现
  3. runtime_state.json 正确写入
  4. 审批流程正常工作

实施步骤:

  1. 运行测试并识别失败点
  2. 修复 EvoAgent 初始化问题
  3. 确保所有 6 个角色都能通过测试

Phase 2: P1 功能完善

P1-1: Team 基础设施

当前状态:

try:
    from backend.agents.team.messenger import AgentMessenger
    from backend.agents.team.task_delegator import TaskDelegator
    TEAM_INFRA_AVAILABLE = True
except ImportError:
    TEAM_INFRA_AVAILABLE = False

目标: 完成 Agent 间通信和任务委托

实施步骤:

  1. 完成 AgentMessenger 实现
  2. 完成 TaskDelegator 实现
  3. 添加 Agent 团队协调的测试

P1-2: ToolGuard 与 Gateway 集成

当前状态:

  • ToolGuardStore 是内存存储
  • Gateway 通过 get_global_runtime_manager() 访问

改进:

  1. 确保审批状态在 Gateway 和 Agent 间同步
  2. 添加审批超时处理
  3. 支持批量审批

P1-3: Skills 沙盒执行

当前状态:

SKILL_SANDBOX_MODE=none  # 开发模式,直接执行

目标: 生产环境使用 Docker 隔离

实施步骤:

  1. 完成 DockerSandboxBackend
  2. 添加资源限制CPU、内存、网络
  3. 添加执行超时控制

Phase 3: P2 代码质量

P2-1: 统一 Agent 工厂

目标: 提取 AgentFactory 统一处理所有 Agent 创建

设计:

class AgentFactory:
    def create_analyst(self, analyst_type: str, **kwargs) -> BaseAgent
    def create_risk_manager(self, **kwargs) -> BaseAgent
    def create_portfolio_manager(self, **kwargs) -> BaseAgent

P2-2: 类型注解

目标: 所有公共 API 完整的类型注解

P2-3: 集成测试

目标: EvoAgent 完整的端到端测试


实施顺序

Week 1: P0 阻塞问题

  1. P0-4: 运行 Smoke Test识别失败点
  2. P0-1: EvoAgent 长期记忆支持
  3. P0-2: Pipeline 运行时统一
  4. P0-3: Workspace 路径清理
  5. 验证所有 Smoke Test 通过

Week 2: P1 功能完善

  1. P1-1: Team 基础设施
  2. P1-2: ToolGuard 集成优化
  3. P1-3: Skills 沙盒执行

Week 3: P2 代码质量

  1. P2-1: 统一 Agent 工厂
  2. P2-2: 类型注解
  3. P2-3: 集成测试
  4. P2-4: 文档完善

成功标准

EvoAgent 全面推出标准

  1. 所有 6 个角色通过 smoke test
  2. 长期记忆功能正常工作
  3. 无需 EVO_AGENT_IDS 环境变量即可使用 EvoAgent
  4. Legacy Agent 代码标记为 deprecated
  5. 集成测试覆盖主要使用场景

架构清理标准

  1. runs/<run_id>/ 是唯一的运行时数据来源
  2. workspaces/ 仅用于设计时注册表
  3. 所有服务边界清晰,无循环依赖
  4. 文档和代码一致

风险和对策

风险 可能性 影响 对策
EvoAgent 与 Legacy 行为不一致 并行运行对比测试
长期记忆集成复杂 分阶段实现,先支持基础功能
性能下降 基准测试,性能剖析
迁移期间系统不稳定 保持 Legacy 作为回退

计划创建日期: 2026-04-01 负责: Claude Code