-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Labels
status:todoPlanned but not startedPlanned but not started
Description
🔍 发现的问题 / 原始需求描述
src/opencode_a2a_server/execution/executor.py 目前承担了过多的职责(1500+ 行代码),包括协议映射、会话控制、策略校验、中断管理等,导致维护难度大,测试耦合度高。
🛠️ 详细实施方案
- 涉及文件:
src/opencode_a2a_server/execution/ - 核心逻辑:
- 抽取
SessionManager: 负责(identity, contextId) -> session_id的映射、TTL 维护及所有权校验逻辑。 - 抽取
PolicyEnforcer: 处理A2A_SANDBOX_MODE、目录边界校验(_normalize_and_validate_directory)等声明式策略。 - 抽取
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 消息转发链路在拆分后行为完全一致。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
status:todoPlanned but not startedPlanned but not started