feat(engine): 添加MCP连接管理和工具集成功能

- 集成MCP连接管理器,支持MCP服务器连接
- 添加多种内置工具:ClarifyTool、CronTool、DelegateTool、ExecuteCodeTool、
  PatchFileTool、ProcessTool、SendMessageTool、SpawnTool、TerminalTool、
  TodoTool、WebFetchTool、WebSearchTool、WriteFileTool等
- 实现工具注册和装配功能
- 添加技能选择上下文参数
- 支持思考模式控制参数thinking_enabled

feat(coordinator): 重构任务执行计划器参数命名

- 将learning_candidate_enabled重命名为allow_candidate_generation
- 更新TeamGraphScheduler中的参数传递
- 修改LocalAgentRunner中的相关参数处理
- 更新README文档中的相应描述

refactor(context): 标准化工具调用参数格式

- 添加_json导入用于参数序列化
- 实现_provider_tool_calls方法标准化OpenAI兼容的工具调用载荷
- 修复工具调用中参数非字符串类型的序列化问题

refactor(session): 优化消息历史记录过滤逻辑

- 修改get_messages_as_conversation为基于运行状态过滤消息
- 排除未完成、失败或错误结束的运行记录
- 改进对话历史的可见性控制机制

fix(store): 修复FTS索引重建逻辑

- 添加异常处理防止FTS索引创建失败
- 实现_rebuild_fts_index方法重新构建全文搜索索引
- 优化索引触发器和表的维护流程
This commit is contained in:
2026-05-14 09:43:48 +08:00
parent 8a12c30141
commit 30ab74ffb2
149 changed files with 12293 additions and 2812 deletions

View File

@ -35,7 +35,7 @@
- `task_id`
- `task_mode`
- `attempt_index`
- `learning_candidate_enabled`
- `allow_candidate_generation`
4. `RunRecord` 已记录:
- `task_id`
- `attempt_index`
@ -55,7 +55,7 @@
8. 学习触发已经收紧。
- Task 模式 run 不再直接生成成功学习候选
- 只有“自动验证通过 + 用户点击满意”才触发成功学习候选
- “放弃”写 Failure Memory不生成成功 Skill draft
- “放弃”只写失败证据,不默认写主 memory不生成成功 Skill draft
9. Agent Team v1 已落地为 Beaver 自有轻量 coordinator。
- 新增 `AgentDescriptor / DelegationEnvelope / ExecutionNode / ExecutionGraph / TeamRunResult`
- 新增 `TeamService.run_team(...)` 作为内部服务入口
@ -72,7 +72,7 @@
- `TaskExecutionPlanner` 使用 LLM JSON 规划 `single / team`
- team node 只声明 `skill_query / required_capabilities`,不声明固定 specialist 人设
- 新增 `beaver/tasks/skill_resolver.py`
- `TaskSkillResolver` 为 generic sub-agent 选择 published skill未命中时生成 draft-only skill并作为本次 run 的 ephemeral pinned instruction 使用
- `TaskSkillResolver` 为 generic sub-agent 选择 published skill未命中时生成 ephemeral guidance并作为本次 run 的 pinned guidance 使用
- 只允许 v1 已实现的 `sequence / parallel / dag`
- planner 失败或 graph 非法时降级为 `single`
- team run 先作为 sub-agent 内部执行,输出注入主 Agent synthesis run
@ -1407,7 +1407,7 @@ Hermes 官方公开说明里,明确把这些能力作为它的核心区别:
│ ├─ provider/chat/tool loop
│ ├─ sessions.append_message(event_type="run_completed" 或 "run_failed", hidden)
│ │
│ └─ AgentLoop._record_skill_learning(...)
│ └─ AgentLoop._record_run_receipts(...)
│ ├─ 构造 `RunRecord`
│ ├─ 构造 `SkillEffectRecord[]`
│ ├─ 默认只记录 receipts/effects不生成学习候选
@ -1750,7 +1750,10 @@ app-instance 镜像也已经切到新 Beaver 后端:
- 当前 channel 职责很窄:
- 把外部输入发布成 `InboundMessage`
- 接收并投递 `OutboundMessage`
- old-style 平台字段(如 `chat_id/message_id/thread_id/raw_channel_payload`)只能在 adapter 层映射和保留
- adapter 负责生成稳定 `session_id`,例如 `telegram:{chat_id}` / `slack:{channel_id}:{thread_ts}`
- `MemoryChannelAdapter` 只用于本地测试和内嵌接入,不是正式消息 broker
- WebSocket 是 Web 入口适配层,不是 Gateway channel真实多渠道仍统一走 `ChannelAdapter -> MessageBus -> AgentService.handle_inbound_message(...)`
所以现在已经明确:
@ -2191,13 +2194,13 @@ app-instance 镜像也已经切到新 Beaver 后端:
1. planner team JSON 支持 `skill_query / required_capabilities`,不要求 agent role。
2. `TaskSkillResolver` 命中 published skill 时,写入 `ExecutionNode.inherited_pinned_skills`。
3. sub-agent run 的 published pinned skill receipt 记录 `activation_reason=pinned_delegation`。
4. 未命中 skill 时创建 draft-only skill,并写入 `ExecutionNode.inherited_pinned_skill_contexts`。
5. draft-only skill receipt 记录 `activation_reason=generated_missing_skill`。
6. missing skill draft 不自动 approve/publish不进入 runtime skill catalog。
7. plan event 写入 `skill_queries / selected_skill_names / generated_skill_draft_ids / skill_resolution_report`。
4. 未命中 skill 时创建 ephemeral guidance,并写入 `ExecutionNode.inherited_pinned_skill_contexts`。
5. ephemeral guidance receipt 记录 `activation_reason=ephemeral_guidance`。
6. ephemeral guidance 不写入 draft store不自动 approve/publish不进入 runtime skill catalog。
7. plan event 写入 `skill_queries / selected_skill_names / ephemeral_guidance_ids / skill_resolution_report`。
8. `/api/sessions/{session_id}/process` 能把隐藏 Task/team/validation 事件投影成 `processRuns / processEvents`。
9. ChatWorkbench 桌面端有 `ProcessLane`,移动端有 `Process` tab。
10. process view 展示 selected skills、generated draft id、ephemeral skill used不展示 specialist agent selection。
10. process view 展示 selected skills、ephemeral guidance id、ephemeral skill used不展示 specialist agent selection。
11. team 部分失败时process view 显示失败节点,但最终回答仍来自主 Agent。
12. `SkillLearningPipelineService` 能串起 candidate -> draft -> safety/eval -> review -> approve/reject -> publish。
13. rejected draft 不能 publish。