Loading...
正在加载...
请稍候

Crush Agent 体系统一演进路线图

✨步子哥 (steper) 2026年04月17日 20:13
> 版本:v2.0 > 日期:2026-04-17(基于代码库全面审计更新) > 适用范围:`internal/agent`、`internal/agent/subagent`、`internal/agent/multiagent`、`internal/a2a`、工具与 UI 协同层、基础设施模块 --- ## 进度标识(持续更新) > 最近更新:2026-04-18 ### 阶段 1–4:已完成 - [x] 阶段 1:统一委派抽象层基础落地(`Delegator`、`DelegationRequest`、`DelegationResult`、`delegationstatus` 子包、错误映射) - [x] 阶段 2:`agent` 工具兼容桥基础落地(`AgentParams = AgentToolV2Input` 类型别名、统一状态/模式字段、默认值收敛、`DelegationResultMetadata` 响应构建管线) - [x] 阶段 2:`subagent`/`notify`/`agent_tool_v2` 的委派状态语义对齐与测试覆盖补齐 - [x] 测试工程化:`agent_tool_v2` 与 `SendMessageTool` 的表驱动与共享 case 收敛 - [x] 工具层:`subagent_status` 委派字段(`delegation_*`)与 `subagent_cancel` 错误/成功文案常量化;表驱动单测覆盖校验与取消路径 - [x] 阶段 3:`subagent` 任务引擎治理全部完成(持久化 memory/sqlite、幂等、背压、中间件链、失败归因、SQLite WAL/busy_timeout/synchronous 配置化、migration registry、原生查询、`/subagent list` 等 30+ 子项) - [x] 阶段 3 交付件:`docs/subagent-stage3-state-machine-spec.md`、`docs/subagent-stage3-middleware-extension-guide.md`、`docs/subagent-stage3-concurrency-failure-injection-report.md` - [x] 阶段 4:`multiagent` 编排层统一委派(`DelegationExecutor` 接口 + 灰度开关、`executeDelegationWithSession` 统一入口、`task_state` 元数据映射、可配置超时/取消传播) - [x] 阶段 4 交付件:`docs/multiagent-messagebus-taskstate-mapping-spec.md` ### 阶段 5–7:待推进(本次审计新规划) - [x] 阶段 5(子项):multiagent `DelegationExecutor` 真正接入 subagent Executor(当前两实现行为一致,仅占位) - [x] 阶段 5(子项):`Delegator` 与 `MultiAgentDelegator` 接口合并或明确边界规范(代码注释界定职责,保留双接口) - [x] 阶段 5(子项):A2A Server 路由层统一——按 `agentType` 路由到 subagent/multiagent 的委派路径标准化 - [x] 阶段 5(子项):Worktree 隔离产品化启用——coordinator 初始化时传入 `WorktreeConfig`(当前功能完整但未启用) - [x] 阶段 5(子项):`send_message` 工具注册上线——当前仅有类型定义,未加入 `allToolNames` 和 `populateToolRegistry` - [x] 阶段 5(子项):`TokenUsageMiddleware` 真实接入——在 LLM runner 回调中调用 `RecordTokens()`(当前 `CostUSD` 始终为 0) - [x] 阶段 5(子项):`LoopDetectionMiddleware.CheckState` 真实接入——在多轮对话每轮调用(当前方法存在但未被调用) - [x] 阶段 5(子项):子代理费用追踪——subagent 经 `SessionAgent` 步进回调写入会话成本;`TokenUsageMiddleware.After` 不再覆盖已由 `CostTracker` 聚合的 `CostUSD` - [x] 阶段 5(子项):产品入口统一——`/subagent` 为标准委派入口,文档与 `/agents`、`/team` 收敛 - [x] 阶段 5(子项):UI 统一展示 task_id / 状态流转 / 结果摘要与成本 - [x] 阶段 6(子项):`internal/metrics` 接入核心业务指标——tool_call 耗时、active_sessions、token_cost_total 等(当前仅 3 个 cache 计数器) - [x] 阶段 6(子项):PostHog 遥测补充——工具使用频次、subagent 执行、cost 维度上报 - [x] 阶段 6(子项):`subagent EventMetrics` 从纯内存态升级为可持久化/可上报(`.crush/subagent_event_metrics.json` + Prometheus `SubagentEventTotal`等) - [x] 阶段 6(子项):multiagent 测试补强——Manager/CoordinatorAdapter/MessageBus/HotReloader/Recovery 单测与集成测试 - [x] 阶段 6(子项):multiagent `HotReloader` 与 `RecoveryManager` 在 `app.go` 装配中实际启用 - [x] 阶段 6(子项):multiagent `Persistence Store` 在 Manager 正常流程中调用(当前仅 Recovery 路径使用) - [x] 阶段 6(子项):`agent` 工具 deprecation 提示(可配置开关) - [x] 阶段 6(子项):遗留代码清理——两套 Registry(基础 + Advanced)收敛、`ForkAdapter` 按里程碑下线(Registry 收敛已完成,ForkAdapter 继续评估) - [x] 阶段 7(子项):`internal/distributed` 接入——Leader 选举、分布式锁、集群管理(当前 EXPERIMENTAL 骨架) - [x] 阶段 7(子项):`internal/scaling` 接入——`CRUSH_SCALING_EXPERIMENTAL=true` 时启动 AutoScaler,按队列指标调用 `Executor.ResizeMaxWorkers`(仅默认 unlimited并发) - [x] 阶段 7(子项):`internal/pool` 接入——`CRUSH_POOL_EXPERIMENTAL=true` 时装配通用连接池骨架(当前 noop 工厂,便于后续替换为 LLM/DB) - [x] 阶段 7(子项):`internal/market` 上线——`CRUSH_MARKET_EXPERIMENTAL=true` 时初始化 `App.Market`与 `/market` 斜杠命令(registries / skills|plugins 搜索) - [x] 阶段 7(子项):跨进程事件总线——PubSub 从纯内存升级为可持久化/跨节点(桥接能力与基础测试已落地) --- ## 一、背景与问题定义 ### 1.1 当前系统能力布局 当前系统存在多套 Agent 相关能力并行发展: - **主会话执行链路**:`Coordinator -> SessionAgent`——唯一 LLM 执行内核,已稳定 - **会话内委托**:`agent` 工具(v2)——通过 `Delegator.DelegateSync()` 创建子会话执行,v1 已退化为纯类型别名 - **任务级委托**:`subagent`——异步任务引擎,含状态机(6 态)、中间件链(5 种)、SQLite/Memory 持久化、WorkerPool、可选 Worktree 隔离 - **组织级协作**:`multiagent`——多角色 Agent 管理,含 Registry(7 种角色)、MessageBus(8 种消息类型)、Workspace 隔离、Persistence、Recovery/HotReload 骨架 - **跨实例互通**:`a2a`——Google A2A 协议服务端,桥接外部 Agent 调用到 Coordinator/subagent/multiagent 此外,已预研但未集成的基础设施模块: | 模块 | 路径 | 成熟度 | 用途 | |------|------|--------|------| | `distributed` | `internal/distributed/` | 骨架 | Leader 选举、分布式锁、服务发现 | | `scaling` | `internal/scaling/` | 骨架 | HPA 风格自动伸缩 | | `pool` | `internal/pool/` | 进行中 | 通用连接池 | | `metrics` | `internal/metrics/` | 进行中 | Prometheus 兼容指标(仅注册 3 个计数器) | | `market` | `internal/market/` | 骨架 | Skills/Plugins 市场 | | `sandbox` | `internal/sandbox/` | **已集成** | 命令/文件/网络过滤 | | `registry` | `internal/registry/` | **已集成** | ServiceRegistry(DI 容器,18+ 命名服务) | | `hooks` | `internal/hooks/` | **已集成** | 12 种事件类型 + 条件表达式引擎 | | `permission/v2` | `internal/permission/v2/` | **已集成** | 4 模式权限引擎 + 增强规则 + SQLite 持久化 | ### 1.2 核心问题 这种并行演进在探索期是合理的,但在工程化阶段带来下列问题: - **能力重叠**:`agent` 与 `subagent` 均可做"委派",语义边界不清;`Delegator`、`MultiAgentDelegator`、`DelegationExecutor` 三套并行接口 - **维护成本高**:并发、超时、取消、统计、事件在多处重复实现(multiagent 的 `execMu` vs subagent 的 WorkerPool) - **功能架空**:Worktree 隔离完整实现但未启用;`send_message` 工具有类型定义但未注册;`TokenUsage`/`LoopDetection` 中间件方法存在但未被调用 - **可观测性碎片化**:PostHog 仅覆盖会话级事件;`internal/metrics` 基础设施完善但仅 3 个计数器;subagent `EventMetrics` 纯内存态 - **测试覆盖不均衡**:核心路径(subagent/delegation/config)覆盖强;multiagent Manager/CoordinatorAdapter/MessageBus/HotReloader/Recovery 缺乏单测 - **用户心智复杂**:何时用哪个 Agent 系统缺乏统一入口 --- ## 二、统一演进愿景 ### 2.1 目标愿景(Target State) 建立三层统一架构: 1. **执行内核层(Execution Core)** 以 `SessionAgent` 为唯一 LLM 执行内核(流式、多轮、工具调用、会话存储、hooks)。 2. **任务编排层(Task Orchestration)** 以 `subagent Executor` 为统一委派引擎(同步/异步、状态机、中间件、限流、取消、超时、可选隔离)。 3. **组织协作层(Organization / Teaming)** 以 `multiagent Manager` 为多角色协作治理层(角色注册、生命周期、消息总线、workspace 管理)。 统一后: - `agent` 工具语义收敛为 `subagent` 的兼容别名或迁移桥 - 委派统一走任务模型,状态可观测、行为可治理 - 多角色协作统一复用任务编排能力,避免两套调度逻辑 ### 2.2 架构原则 - **单一执行内核**:LLM 调用、消息落库、hooks 只保留一套权威实现 - **能力分层,不交叉污染**:执行层不感知组织层;组织层不重复执行细节 - **兼容优先,渐进替换**:保留旧接口,先桥接再淘汰 - **可观测先行**:每一阶段先补事件和指标,再做行为迁移 - **开关化发布**:关键改动必须可回滚、可灰度 --- ## 三、现状与目标能力映射 | 维度 | 当前状态(2026-04-17 审计) | 目标状态 | |---|---|---| | 主执行 | `SessionAgent` 稳定,唯一 LLM 内核 | ✅ 保持 | | 委派入口 | `agent`(v2,走 `Delegator`)+ `subagent`(走 Executor)+ `agent_delegate`(走 `MultiAgentDelegator`)三路并存 | `subagent` 为主,其余兼容桥接 | | 委派模型 | 子会话模型(`sessionDelegator`)与任务模型(Executor)并存;multiagent 的 `DelegationExecutor` 两实现行为一致(占位) | 统一任务模型 | | 并发控制 | subagent WorkerPool(semaphore + queue)与 multiagent `execMu`(TryLock 拒忙)分立 | 汇聚到 subagent 中间件/worker pool | | 持久化 | subagent: memory/sqlite 双后端完善;multiagent: sqlite persistence 仅 Recovery 路径使用 | 统一走 subagent Store | | 角色协作 | multiagent Registry(7 种角色)+ MessageBus + Workspace 完整但部分组件未启用 | 编排层复用统一委派 | | 跨实例 | A2A Server 已集成,支持按 `agentType` 路由 | A2A 路由标准化 | | 可观测性 | PostHog 仅会话级;`internal/metrics` 仅 3 个计数器;subagent `EventMetrics` 纯内存 | 统一指标 + 遥测 + tracing | | 安全治理 | Permission v2(4 模式)+ Sandbox + Hooks 均已集成 | ✅ 保持,按需扩展 | | Worktree 隔离 | `WorktreeManager` 完整实现,但 coordinator 未传入 `WorktreeConfig`,功能被架空 | 产品化启用 | | 工具注册 | 28 个工具名,`send_message` 未注册;两套 Registry(基础 + Advanced)并存 | 收敛注册,清理死代码 | | 中间件 | 5 种已注册,但 `TokenUsage.RecordTokens()` 和 `LoopDetection.CheckState()` 未被实际调用 | 全部真实接入 | | 分布式 | `distributed`/`scaling`/`pool`/`market` 为骨架预研 | 按需启用 | | 用户体验 | `/subagent` 完整(run/list/status/cancel/types);`/agents`、`/team` 与 multiagent 独立 | 统一命令入口 | --- ## 四、统一目标架构(逻辑) ```text External A2A Clients User / UI / Slash Commands | | v v A2A Server ─────────────────────> Coordinator (主入口与装配) (internal/a2a) | 按 agentType 路由 | | +---------+---------+ | | | | v v | SessionAgent Delegation API | (唯一执行内核) (统一委派接口) | | +─── subagent route ──────────> Subagent Executor (任务编排) | | | +--> Middleware Chain | | (timeout/limit/token/log/loop) | +--> Worker Pool (semaphore + queue) | +--> Store (memory/sqlite) | +--> Optional Worktree Isolation | +─── multiagent route ────────> Multiagent Manager (组织治理) | +--> Role Registry (7 种角色) +--> Message Bus (8 种消息类型) +--> Workspace Isolation +--> 通过统一委派接口触发执行 +--> Persistence / Recovery / HotReload ─── 横切关注点 ────────────────────────────────────────────────────── ServiceRegistry (DI) │ Hooks (12 事件) │ Permission v2 (4 模式) Sandbox (安全过滤) │ PubSub (13 Broker) │ Metrics (待填充) ``` ### 4.1 当前实际调用链(审计快照) ```text "agent" 工具 (v2) "subagent" 工具 "agent_delegate" 工具 AgentToolV2() SubagentTaskTool() NewAgentDelegateTool() │ │ │ ▼ ▼ ▼ coordinator. executor. MultiAgentDelegator runSubAgent() ExecuteAsync() .DelegateTaskSync() │ │ │ ▼ ▼ ▼ Delegator.DelegateSync() WorkerPool → CoordinatorAdapter → (sessionDelegator) AgentRunner.Execute() Manager.executeDelegation │ WithSession() ▼ │ SessionAgent.Run() ▼ DelegationExecutor.Execute() (当前委托 legacySessionExecutor) │ ▼ SessionAgent.Run() ``` **关键发现**:三条路径最终均汇聚到 `SessionAgent.Run()`,但中间的治理层(并发/超时/状态机/中间件)各自实现,尚未统一。 --- ## 五、分阶段演进计划(7 阶段,前 4 阶段已完成) ## 阶段 0–4 ✅ 已完成(详见进度标识与上方各阶段审计) **阶段 0 基线观测**:PubSub 13+ Broker 覆盖核心解耦;PostHog 会话级遥测可用;subagent `EventMetrics` 5 维计数器可用。 **阶段 1 统一委派抽象**:`Delegator` + `sessionDelegator` + `DelegationRequest`/`DelegationResult` + `delegationstatus` 子包。类型分散于 agent/delegationstatus/multiagent/tools 四包。 **阶段 2 agent 工具兼容桥**:`AgentParams = AgentToolV2Input` 类型别名;v2 走 `Delegator.DelegateSync()`;`DelegationResultMetadata` 封装 UI 元数据。 **阶段 3 subagent 统一任务引擎**:30+ 子项完成:SQLite/Memory 双后端、幂等、背压、5 种中间件 + 失败归因、migration registry、原生 SQL 查询、配置化 18 字段。 **阶段 4 multiagent 编排复用**:`DelegationExecutor` + 灰度开关 + `executeDelegationWithSession` + `task_state` 元数据 + 可配置超时/取消。 --- ## 阶段 5:执行引擎深度融合与产品化 ✅ ### 目标 - multiagent `DelegationExecutor` 真正接入 subagent Executor,消除两套执行治理 - 被架空的功能(Worktree、TokenUsage、LoopDetection)真正接入运行时 - 对外只暴露清晰的一套委派心智模型 ### 5.1 执行融合 - [x] **multiagent DelegationExecutor 接入 subagent Executor**:`sessionAgentDelegationExecutor.Execute()` 改为创建 subagent Task、走 Executor 中间件链,而非直接委托 legacy。保留灰度开关 - [x] **并发控制统一**:multiagent 从自建 `execMu.TryLock()` 迁移到 subagent WorkerPool 信号量模型 - [x] **接口收敛规范**:明确 `Delegator`(coordinator 级同步入口)/ `MultiAgentDelegator`(工具层高层委派)/ `DelegationExecutor`(改为调用 subagent Executor)三者边界 ### 5.2 中间件真实接入 - [x] **`TokenUsageMiddleware` 接入**:在 `AgentRunner.Execute()` 的 `OnStepFinish` 回调中调用 `RecordTokens()` - [x] **`LoopDetectionMiddleware.CheckState` 接入**:在 subagent 多轮对话循环每一轮末尾调用 - [x] **子代理费用追踪**:subagent 执行路径接入 `CostTracker` ### 5.3 Worktree 产品化 - [x] **coordinator 传入 WorktreeConfig**:在 `NewExecutor` 时根据 `SubagentConfig` 构建 - [ ] **启用策略**:按任务类型(refactor/code-reviewer 等)自动建议或强制启用 - [x] **WorktreeManager 持久化**:从纯内存升级为持久化 ### 5.4 工具与入口统一 - [x] **`send_message` 工具**:决策——注册上线或清理死代码 - [x] **产品入口统一**:`/subagent` 为标准委派入口;更新 `/agents`、`/team` 关系说明 - [x] **UI 统一展示**:task_id / 状态流转 / 结果摘要与成本 ### 5.5 A2A 路由标准化 - [x] A2A Processor 按 `agentType` 路由到 subagent/multiagent 的委派路径标准化 ### 交付件 - 执行融合 PR 集(含灰度开关与回滚能力) - 中间件接入验证报告、Worktree 产品化配置文档 - 新版架构文档与迁移 FAQ ### 验收标准 - multiagent 执行路径走 subagent Executor,中间件链完整生效 - `TokenUsageMiddleware` 输出真实 CostUSD - Worktree 隔离可通过配置开启并正确工作 --- ## 阶段 6:可观测性补齐与遗留清理 ✅ ### 目标 - 可观测性从"有骨架"升级为"可运维";清理历史包袱 ### 6.1 可观测性 - [x] `internal/metrics` 接入核心指标:`tool_call_duration_seconds`、`active_sessions`、`token_cost_total_usd`、`subagent_task_total`、`delegation_duration_seconds`、`middleware_failure_total`(>= 10 个) - [x] subagent `EventMetrics` 持久化/上报 - [x] PostHog 补充:工具使用频次、subagent 执行、cost 维度 - [x] `trace_id` 贯穿:session_id → task_id → tool_call_id 端到端关联 - [ ] 统一日志字段:`session_id`、`task_id`、`agent_type`(持续收敛) ### 6.2 multiagent 组件补强 - [x] 启用 `HotReloader`(`multi_agent.hot_reload_enabled`) - [x] 启用 `RecoveryManager`(崩溃恢复路径验证) - [x] `Persistence Store` 正常流程集成 - [x] `app.go` 中 multiagent adapter 创建需检查 `multi_agent.enabled` ### 6.3 测试补强 - [x] multiagent 单测:Manager/CoordinatorAdapter/MessageBus/HotReloader/Recovery - [x] PubSub 单测:Broker 路由/满 channel 丢弃/并发安全 - [x] E2E 主流程:主会话 → 委派 → UI 渲染完整链路 - [x] 性能基准:高并发任务提交、取消风暴、长任务稳定性 ### 6.4 遗留清理 - [x] agent v1 标记 deprecated(可配置开关) - [x] 两套 Registry 收敛(基础 + Advanced) - [ ] ForkAdapter 按使用率评估是否下线 legacy 路径 - [x] `send_message` 决策:注册上线或删除死代码 - [x] `SubagentConfig` → `subagent.Config` 自动映射函数 - [x] Store cleanup 泄漏修复(`NewExecutor` 部分失败路径) ### 验收标准 - `internal/metrics` >= 10 个核心业务指标 - multiagent 核心组件测试覆盖率 >= 80% - 无残留死代码 --- ## 阶段 7:分布式与生态扩展(长期)🔮 ### 目标 - 预研模块从骨架推向可用;建立 Skills/Plugins 市场生态 ### 7.1 分布式基础设施 - [x] `internal/distributed` 集成:Leader 选举 + 分布式锁 + 集群管理(`CRUSH_DISTRIBUTED_EXPERIMENTAL`) - [x] `internal/scaling` 集成:AutoScaler 与 subagent WorkerPool 动态伸缩(`CRUSH_SCALING_EXPERIMENTAL`,见 `ResizeMaxWorkers`) - [x] `internal/pool` 集成:实验性通用池装配(`CRUSH_POOL_EXPERIMENTAL`;生产路径仍以 `sql.DB` 内建池为主) - [x] PubSub 跨进程扩展:从纯内存升级为可持久化/跨节点(桥接能力与基础测试已落地) ### 7.2 市场生态 - [x] `internal/market` 上线:`App.Market` + `/market`(`CRUSH_MARKET_EXPERIMENTAL`;下载/安装待扩展) - [ ] Plugin 运行时贡献成熟化 ### 7.3 智能路由与编排 - [ ] 策略路由:根据任务类型/复杂度自动选择 subagent type/model - [ ] QoS:按任务优先级分配并发槽位与 Token 预算 - [ ] 任务依赖图(DAG):多任务编排与依赖等待 - [ ] 跨会话/跨项目团队协作拓扑 ### 验收标准 - 多节点部署下任务调度正确(至少 2 节点验证) - Market 可搜索/安装第三方 Skills --- ## 六、里程碑计划 | 里程碑 | 对应阶段 | 状态 | 目标 | |---|---|---|---| | M1 | 阶段 0 | ✅ 已完成 | 基线冻结与观测补齐 | | M2 | 阶段 1 | ✅ 已完成 | 统一委派抽象层(`Delegator` / `DelegationExecutor` / subagent 接口) | | M3 | 阶段 2 | ✅ 已完成 | `agent` 工具兼容桥迁移(v2 上线,v1 降为 type alias) | | M4 | 阶段 3-4 | ✅ 已完成 | `subagent` 生产级强化 + `multiagent` 编排复用 | | M5 | 阶段 5 | ✅ 已完成 | 执行引擎深度融合与产品化 | | M6 | 阶段 6 | ✅ 已完成 | 可观测性补齐与遗留清理 | | M7 | 阶段 7 | 进行中 | 分布式与生态扩展(实验开关、`/market` 等已落地) | --- ## 七、向后兼容策略 ### 7.1 接口兼容 - 保留 `agent` 工具输入字段,内部映射到统一请求结构 - 输出中保留老字段,新增标准字段(如 `task_id`、`status`) ### 7.2 行为兼容 - 默认策略与原行为一致(超时、maxTurns、工具白名单) - 差异行为通过 feature flag 开启 ### 7.3 发布策略 - Canary:先对内部/开发模式启用 - 灰度:按用户/项目/会话维度逐步放量 - 全量:指标稳定后切换默认路径 --- ## 八、风险清单与缓解 ## 风险 A:迁移导致行为漂移 - **表现**:同 prompt 结果质量波动,工具调用序列变化 - **缓解**: - 基准回放集(固定样本) - 关键路径差异报告(turn/tool/cost) ## 风险 B:并发与取消回归 - **表现**:任务卡死、取消不生效、状态错乱 - **缓解**: - 失败注入测试(超时、取消、断网) - 强制状态机校验(非法状态迁移报警) ## 风险 C:多层日志口径不一致 - **表现**:难以串联 session、task、agent runtime - **缓解**: - 强制透传 `trace_id` / `session_id` / `task_id` - 统一日志字段与采样策略 ## 风险 D:worktree 资源泄漏 - **表现**:磁盘膨胀、孤儿 worktree - **缓解**: - TTL 清理 + 启动清理 - 容量阈值告警 ## 风险 E:中间件功能架空(审计新增) - **表现**:`TokenUsageMiddleware.RecordTokens()` 和 `LoopDetectionMiddleware.CheckState()` 从未被调用;CostUSD 始终为 0,循环检测形同虚设 - **缓解**: - 阶段 5.2 中集成中间件调用点 - 添加集成测试验证中间件链路端到端生效 - CI 中增加"中间件覆盖率"检查 ## 风险 F:可观测性碎片化(审计新增) - **表现**:`internal/metrics` 仅 3 个缓存计数器注册;subagent `EventMetrics` 纯内存无持久化;PostHog 仅会话级事件 - **缓解**: - 阶段 6.1 统一注册核心业务指标(>= 10 个) - EventMetrics 接入持久化 / 上报通道 - 定义指标字典(名称、标签、采样率) ## 风险 G:配置与运行时脱节(审计新增) - **表现**:`multi_agent.enabled` 配置存在但 `app.go` 未检查;`DelegationExecutor` 灰度开关两条路径行为完全相同 - **缓解**: - `app.go` 中 adapter 创建增加 `multi_agent.enabled` 守卫 - `DelegationExecutor` 灰度开关接入 subagent Executor(阶段 5.1) --- ## 九、测试与验收体系 ### 9.1 测试分层 - **单元测试**:接口适配、中间件顺序、状态机转换 - **集成测试**:Coordinator → Delegation → Subagent 全链路 - **E2E 测试**:主会话委派、多角色协作、异常恢复 - **性能测试**:高并发任务提交、取消风暴、长任务稳定性 ### 9.2 当前覆盖现状(审计) | 模块 | 测试文件数 | 覆盖评估 | 薄弱点 | |------|-----------|----------|--------| | agent/subagent | ~30 | ✅ 强 | 中间件集成测试缺失(TokenUsage/LoopDetection 从未调用) | | config | ~10 | ✅ 强 | — | | multiagent (Manager/Adapter/MessageBus) | ~2 | ❌ 弱 | Manager/CoordinatorAdapter/MessageBus/HotReloader/Recovery 无测试 | | PubSub | 0 | ❌ 无 | 13+ Broker 无单测 | | hooks | ~4 | ✅ 中 | — | | permission/v2 | ~3 | ✅ 中 | — | | a2a | ~4 | ✅ 强 | — | ### 9.3 核心验收指标(建议阈值) - 任务成功率 >= 99% - 取消成功率 >= 99.5% - 委派链路 P95 延迟不劣于现网基线 10% - 严重故障(卡死/状态错乱)= 0 - **新增**:中间件链路端到端覆盖率 100%(每个中间件至少 1 个集成测试验证调用) - **新增**:核心业务指标 >= 10 个且可在监控面板观测 --- ## 十、实施清单(基于审计的可落地任务) ### A. 阶段 5 — 执行融合(高优先级) - [x] `sessionAgentDelegationExecutor.Execute()` 接入 subagent Executor(含灰度开关) - [x] multiagent 并发控制从 `execMu.TryLock()` 迁移到 WorkerPool - [x] `TokenUsageMiddleware.RecordTokens()` 接入 `AgentRunner.Execute()` 的回调 - [x] `LoopDetectionMiddleware.CheckState()` 接入 subagent 多轮对话循环 - [x] coordinator 传入 `WorktreeConfig` 到 `NewExecutor` - [x] 决策并处理 `send_message` 工具(注册或删除死代码) - [x] A2A Processor `agentType` 路由标准化 ### B. 阶段 6 — 可观测与清理(中优先级) - [x] `internal/metrics` 注册 >= 10 个核心业务指标 - [x] subagent `EventMetrics` 接入持久化 - [x] PostHog 补充工具/subagent/cost 维度事件 - [x] `trace_id` 贯穿 session → task → tool_call - [x] `app.go` 增加 `multi_agent.enabled` 检查守卫 - [x] 启用 `HotReloader` 和 `RecoveryManager` - [x] 两套 Registry 收敛为一套 - [x] Store cleanup 泄漏修复(`managedStore` 在 Executor 创建失败时) ### C. 测试补强(贯穿阶段 5-6) - [x] multiagent 单测:Manager / CoordinatorAdapter / MessageBus - [x] PubSub 单测:Broker 路由 / 满 channel / 并发安全 - [x] 中间件集成测试:验证 `RecordTokens`/`CheckState` 被调用 - [x] E2E:主会话 → 委派 → subagent Executor → UI 渲染 - [x] 性能基准:并发任务提交、取消风暴 ### D. 文档与体验 - [x] 更新 `/help`、`/subagent`、`/agents` 说明 - [x] 增加迁移文档与 FAQ - [x] UI 统一展示 task 状态与结果摘要 - [x] 指标字典文档(名称、标签、采样率) - [x] 故障排查手册(Runbook) --- ## 十一、角色分工建议 - **架构负责人**:统一接口与迁移边界把控 - **执行引擎负责人**:`subagent` 稳定性与中间件治理 - **协作系统负责人**:`multiagent` 编排收敛 - **产品与文档负责人**:用户入口、文档、迁移引导 - **质量负责人**:回放基准、门禁阈值、回归看板 --- ## 十二、决策记录建议(ADR) 已有或建议新增的 ADR: 1. `ADR-001`:为何采用三层统一架构 2. `ADR-002`:为何以 `SessionAgent` 作为唯一执行内核 3. `ADR-003`:为何以 `subagent` 作为统一委派引擎 4. `ADR-004`:`agent` 工具兼容与下线策略 5. `ADR-005`(建议):`DelegationExecutor` 灰度开关与执行融合策略 6. `ADR-006`(建议):中间件链路接入规范(何时/何处调用 `RecordTokens`/`CheckState`) 7. `ADR-007`(建议):`send_message` 工具去留决策 --- ## 十三、长期演进方向(Beyond v1) > 以下方向已在阶段 7 中初步规划,此处保留战略视角。 - **策略路由**:根据任务类型/复杂度自动选择 subagent type / model - **QoS**:按任务优先级分配并发槽位与 Token 预算 - **任务依赖图(DAG)**:多任务编排与依赖等待 - **跨会话/跨项目团队协作拓扑** - **分布式调度**:`internal/distributed` + `internal/scaling` 从骨架推向生产 - **市场生态**:`internal/market` Skills/Plugins 搜索、下载、安装上线 - **A2A 联邦**:跨实例 agent 协作标准化 --- ## 十四、结论 本路线图 v2.0 基于对代码库的系统性审计更新。核心发现:**阶段 0-4 的架构框架已基本就绪,但"最后一公里"集成(中间件链路、可观测性、配置-运行时一致性)仍有显著差距**。 下一步重点(阶段 5):将 multiagent `DelegationExecutor` 真正接入 subagent Executor,激活被架空的中间件,使 Worktree 隔离可配置开启。 演进原则不变:**分阶段、可观测、可回滚**。通过灰度开关保障兼容性,通过审计驱动的实施清单确保每一步都有明确的验收标准。

讨论回复

0 条回复

还没有人回复,快来发表你的看法吧!