Skip to content

[Priority: High] [Refactor] 解耦 Executor 核心模块,拆分为独立服务类 #273

@liujuanjuan1984

Description

@liujuanjuan1984

🔍 发现的问题 / 原始需求描述

src/opencode_a2a_server/execution/executor.py 目前承担了过多的职责(1500+ 行代码),包括协议映射、会话控制、策略校验、中断管理等,导致维护难度大,测试耦合度高。

🛠️ 详细实施方案

  • 涉及文件: src/opencode_a2a_server/execution/
  • 核心逻辑:
    1. 抽取 SessionManager: 负责 (identity, contextId) -> session_id 的映射、TTL 维护及所有权校验逻辑。
    2. 抽取 PolicyEnforcer: 处理 A2A_SANDBOX_MODE、目录边界校验(_normalize_and_validate_directory)等声明式策略。
    3. 抽取 InterruptCoordinator: 独立管理 a2a.interrupt.* 相关请求的缓存、匹配和过期处理。
  • 伪代码:
    class SessionManager:
        def get_or_create_session(self, identity: str, context_id: str) -> str: ...
    
    class PolicyEnforcer:
        def validate_directory(self, path: str) -> Path: ...

🧪 回归测试建议

  • 为各子模块编写单元测试,模拟不同租户/路径的边界条件。
  • 验证 A2A 消息转发链路在拆分后行为完全一致。

Metadata

Metadata

Assignees

No one assigned

    Labels

    status:todoPlanned but not started

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions