218 Commits

Author SHA1 Message Date
oudecheng
edc975e6d0 feat(command): 优化 StopExecution 命令按话题取消逻辑
- StopExecutionCommandHandler 新增 SessionManager 依赖
- 优先使用 ctx.topic_id,若无则从 SessionManager 获取当前话题
- 增加获取话题过程中错误处理和日志打印
- 更新命令处理器构造参数,传入 SessionManager
- 在命令路由和 WebSocket 注册时同步修改 StopExecutionCommandHandler 创建方式
2026-06-18 17:17:26 +08:00
oudecheng
2607ca4aa4 refactor(task): 优化任务工具和子代理深度管理
- 在 AgentContext 中新增 task_id 字段,用于标识当前智能体任务 ID
- 统一 TaskTool 构造函数,使用 Option<u32> 表示最大嵌套深度限制
- 调整子代理工具注册,适配新的 TaskTool 构造函数
- 修改子代理运行时创建逻辑,传递并设置 task_id 和 parent_task_id
- 删除重复的 task_id 提取函数,改用传递参数进行关联
- 深度校验改为判断 Option,支持无深度限制和有限层数
- 增强子代理间的任务层级关联,正确传递 parent_task_id 元数据
2026-06-18 11:41:40 +08:00
oudecheng
e506ffd539 feat(agent): 支持子孙智能体的父任务链路传递
- 在 agent_factory 和子代理相关结构体中新增 parent_task_id 字段
- 协议层序列化、反序列化及 WebSocket 适配器支持 parent_task_id 信息传递
- todo_read 与 todo_write 工具添加 parent_task_id 以保持任务层级一致
- 在 DefaultSubAgentRuntime 中实现从 session_id 提取 parent_task_id 的逻辑
- 子智能体创建孙智能体时,正确设置并传递 parent_task_id 元数据
- 前端 useChat 钩子过滤孙智能体的 TaskStarted 事件,避免视图串扰
2026-06-18 11:30:47 +08:00
oudecheng
879f5f243a feat(task): 增加子代理最大嵌套深度支持,更新相关文档和提示 2026-06-17 17:55:22 +08:00
oudecheng
631c61fea2 feat(agent): 支持子代理最大嵌套深度控制
- 在配置结构体中新增 max_nesting_depth 字段,设置子代理最大嵌套深度
- 在 AgentFactory、todo_read、todo_write 等处初始化 nesting_depth 字段为 0
- 允许 Task 工具注册,使用 max_nesting_depth 控制子代理嵌套层数
- SubAgentRuntimeConfig 新增 max_nesting_depth 配置项,默认值为 1
- TaskTool 新增 max_nesting_depth 字段和带深度限制的构造函数
- 任务执行时增加嵌套深度校验,超过最大深度返回错误提示,防止无限递归创建子代理
2026-06-17 14:43:55 +08:00
oudecheng
a9f549f4c0 feat(gateway): 更新查询示例和todo工具使用规范,增加复杂任务规划和进度标记要求 2026-06-16 17:37:43 +08:00
oudecheng
4a28d9ea36 feat(gateway): 更新记忆写入规则,明确命名空间使用及优先调用方式 2026-06-16 17:01:49 +08:00
oudecheng
97c0e46348 feat(tests): 增加工具调用序列清理的单元测试,确保孤立工具结果的正确处理 2026-06-16 16:52:00 +08:00
oudecheng
66e40fc714 feat(config): 增加 Feishu 渠道支持及 MCP 服务器管理界面
- 为配置中的 Channel 添加对 Feishu 配置的可变访问接口
- 在 HTTP 掩码和恢复中支持 Feishu 的 app_secret 字段处理
- 在前端配置页面新增 MCP 服务器配置面板,支持多类型参数编辑
- 在前端配置页面新增渠道管理面板,支持 Feishu 和 Wechat 渠道的增删改查
- 优化配置保存后的提示与刷新,提示需要重启服务生效
- 更新模型配置字段提示,使说明更加友好和明确
- 增加界面图标及样式调整,提升用户操作体验
2026-06-16 14:57:22 +08:00
oudecheng
37f417007e feat(gateway): 添加配置管理功能支持敏感信息脱敏
- 实现 API 端点 /api/config 用于获取和保存配置
- 添加配置信息脱敏功能,保护 API 密钥等敏感数据
- 集成配置验证逻辑,确保时区等参数有效性
- 在前端添加完整的配置管理页面界面
- 实现配置项的动态编辑和保存功能
- 添加连接设置功能用于 WebSocket 连接配置
- 提供多标签页界面分别管理不同配置模块
- 实现配置变更后的实时预览和保存确认
2026-06-15 17:22:32 +08:00
oudecheng
7626ba2d2f feat(gateway): 添加待办事项读取功能
- 引入 TodoReadTool 工具支持读取当前对话的待办事项列表
- 实现从内存或SQLite数据库读取待办事项的功能
- 添加内存回填机制确保数据一致性
- 在ToolRegistryFactory中注册新的待办事项读取工具
- 更新会话初始化逻辑以传递待办事项存储依赖
- 添加完整的单元测试验证各种读取场景
2026-06-15 15:33:43 +08:00
fc7df67474 feat(streaming): 支持流式文本增量与结束信号功能
- 新增 StreamDelta 和 StreamEnd 类型,支持流式数据增量传输
- 扩展 LLMProvider trait,添加带回调的 chat_with_streaming 接口
- 修改 OpenAI Provider 实现,支持流式聊天回调传输增量数据
- Agent 流处理改为异步消费增量消息并传递给前端
- 保证流式增量和最终消息使用相同消息 ID 以便前端替换
- 修改消息总线和协议层,支持携带和识别流式消息的消息 ID
- 客户端 CLI 通过增量输出实现交互式流式响应显示
- Web 前端接收流式增量消息,追加到对应消息,实现实时显示
- 各通道(飞书、微信)支持转发流式增量和结束消息
- 任务工具运行时添加消息 ID 支持,保持消息一致性
- 统一消息构造函数新增流式增量和结束信号的构建方法
2026-06-14 10:24:52 +08:00
229221aab1 refactor(todo): 重构待办事项管理逻辑及更新状态规则
- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段
- 强制每个任务都必须有唯一 id,且由用户负责生成
- 修改合并模式逻辑,merge=true 下保留未提及的旧任务
- 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress)
- 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled
- 优化状态转换校验,允许特定状态间合法切换
- 简化任务变更消息,移除详细的新增/更新/移除统计
- 更新文档和示例,明确 id 必须由用户生成和使用
- 修复和补充测试,增强状态转换和合并模式验证
- 调整任务时间戳生成逻辑,统一使用当前时间及索引
- 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
2026-06-13 17:38:18 +08:00
02172b6065 feat(shell): 实现交互式Shell会话管理
- 新增ShellSessionManager管理交互式shell会话,支持进程保持和交互输入
- BashTool集成会话管理,支持session_id和stdin_input参数实现输入回复
- 修改BashTool执行逻辑,检测进程等待输入状态并保存会话状态
- Windows平台新增底层进程等待输入检测实现,辅助判断Shell交互状态
- 工具注册工厂注入ShellSessionManager,保证安全复用会话管理实例
- 增加默认agent prompt中Shell交互终端说明,提示交互流程及输入格式
- 交互式命令输出增加标识和提示,区分正常与等待输入状态
- 实现会话超时自动清理和优雅关闭接口,避免资源泄露
- 单元测试中统一使用BashTool默认构造,适配会话管理新增功能
2026-06-13 09:06:45 +08:00
oudecheng
6f8c4a7ce8 feat: 更新 load_messages_for_topic 方法,支持按 session_id 过滤消息 2026-06-12 19:05:06 +08:00
oudecheng
24bbd5f8c9 feat: 子代理 todo 列表支持 — 进入子代理视图时显示子代理的待办
- SubAgentEmitter 添加 todo_write 持久化(照搬 BusToolCallEmitter 模式)
- DefaultSubAgentRuntime 加 store 字段,透传给 emitter
- Command::ListTodos 加 task_id 参数
- list_todos handler: 当 task_id 存在时,scope_key = sub:{parent}:{task_id}
- 前端: 子代理视图下自动带 task_id 请求子代理的 todo

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 18:01:57 +08:00
oudecheng
eef0d24dcd fix: topic_id 穿透到 ToolContext,统一 todo scope_key 计算
- AgentBuildRequest 加 topic_id 字段
- Session.create_agent 传入 current_topic
- ToolContext.topic_id 不再硬编码 None
- 删除已废弃的 intercept_todo_write_results
- 工具/emitter/handler 三处 scope_key 计算全部统一

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 17:36:10 +08:00
oudecheng
ec5ddf644a fix: 优先使用 topic_id 更新 todo 列表,确保与工具内存状态一致 2026-06-12 17:25:50 +08:00
oudecheng
4866ea9538 fix: todo_write 持久化从 finalize_result 移到 BusToolCallEmitter,即时触发
之前持久化挂在 agent 全部完成后,长任务永远等不到。
现在每个 todo_write 工具调用完成时立即持久化到 SQLite。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 16:58:05 +08:00
oudecheng
50d0b92336 feat: 添加详细工具视图和状态图标,支持放大查看功能 2026-06-12 16:49:20 +08:00
oudecheng
3c889caacf feat: 添加日志记录以持久化待办事项时的调试信息 2026-06-12 16:22:43 +08:00
oudecheng
750eed7326 feat: 添加 ListTodos 命令处理器,支持列出当前待办事项列表 2026-06-12 15:53:01 +08:00
oudecheng
881fcace47 feat: 添加 todo_write 工具,支持全量替换和增量合并两种模式
- Tool: 纯内存实现 (Arc<RwLock<HashMap>>),零 DB 依赖,解耦持久化
- 状态机: pending → in_progress → completed/cancelled,单 in_progress 约束
- merge=false: 全量替换模式(默认)
- merge=true: 增量更新模式,只传变更的项,其余保留
- 隔离: scope_key = topic_id.unwrap_or(session_id),topic 和子代理隔离
- 持久化: TodoRepository trait + SessionStore SQLite 实现,在 Session 拦截器层完成
- 前端推送: WsOutbound::TodoList 事件
- Prompt: TodoPromptProvider 中文指令,子代理模板也包含
- 测试: 16 个单元测试,全部通过

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 14:19:07 +08:00
oudecheng
87fc8cc3b7 feat: 更新工具调用的ID处理逻辑,确保在缺失时生成唯一ID 2026-06-12 11:48:01 +08:00
oudecheng
86543f19fe feat: 添加获取时间的工具调用,确保时间准确性 2026-06-12 10:40:34 +08:00
oudecheng
7c3363aa47 feat: 更新默认代理配置,建议在思考时使用中文以提高上下文理解 2026-06-11 18:20:23 +08:00
oudecheng
7b1bc39031 feat: 更新代理配置,允许根据用户或技能要求创建多个子智能体以隔离上下文 2026-06-11 18:07:16 +08:00
oudecheng
4487f1a490 feat: 添加思考过程显示功能,允许用户选择是否展示助手的思考内容 2026-06-11 17:15:03 +08:00
oudecheng
6ff5907616 feat: 添加 reasoning_content 字段到多个消息结构,支持思考过程展示 2026-06-11 14:33:29 +08:00
oudecheng
0ce89a0e4e feat: 添加 reasoning_content 字段到多个消息结构,支持思考过程展示 2026-06-11 12:04:52 +08:00
oudecheng
f470affb2f feat: 添加技能列表功能,支持列出所有技能并在前端展示 2026-06-08 14:13:54 +08:00
e4bc8153a0 feat: 更新测试用例中的技能描述,提供更准确的技能定义 2026-06-07 22:00:09 +08:00
cca913b610 feat: 添加记忆 CRUD 功能,支持创建、更新和删除记忆,优化记忆面板交互 2026-06-07 20:16:54 +08:00
7708112649 feat: 添加记忆功能,支持列出所有记忆并在前端展示,优化记忆面板 2026-06-07 19:50:46 +08:00
62ea6de3a7 feat: 更新时间戳处理逻辑,支持从消息中提取并格式化时间,同时为话题列表添加分页功能 2026-06-07 18:17:13 +08:00
eeea7d44d0 feat: 添加 topic_id 支持,确保消息按话题隔离 2026-06-07 17:49:22 +08:00
3a623cc8a3 fix: 修复话题描述更新逻辑的竞态条件和语义错误,前端自动刷新描述
- topic_description.rs: LLM 返回空字符串时返回 Err 而非 Ok(""),防止空值写回 DB 触发循环生成
- processor.rs: 添加 Arc<Mutex<HashSet>> 生成中守卫防止重复触发,改用 DB 中真正第一条用户消息生成描述
- useChat.ts: assistant_response 时检测当前话题描述为空则递增刷新信号
- App.tsx: 监听刷新信号,500ms 防抖后自动发送 list_topics 获取新描述
2026-06-07 16:52:44 +08:00
b5e2886068 feat: 添加删除话题功能,包括命令处理器和前端交互 2026-06-07 14:09:14 +08:00
bf66c00950 feat: 为 WebSocket 消息添加时间戳字段,确保消息的时间信息可用 2026-06-07 09:18:15 +08:00
6f33ec7604 feat: 多通道消息支持与 Session 选择器
后端:
- list_channels 从 ChannelManager 动态查询通道列表(合并 websocket + 所有已注册通道)
- build_channel_list 移至 ChannelManager,网关层直接依赖领域层
- get_current_topic 自动创建默认话题(修复微信等通道无话题的问题)
- is_channel_writable: 仅 websocket 可写,其余通道只读

前端:
- 右上角通道选择器 + Session 选择器(Portal 渲染,固定宽度居中)
- 只读通道显示刷新按钮替代新建按钮
- 话题列表时间戳修复(秒→毫秒)
- 移除冗余的 SessionInfo、AI Ready、所属会话等 UI
- 修复 scheduler view 路由无条件拦截消息的 bug
2026-06-06 22:25:10 +08:00
988e77123c feat: 精简日志记录,移除冗余信息,优化调试输出 2026-06-06 10:41:52 +08:00
fb90641774 feat: 增强日志记录,添加消息处理和工具执行的详细信息 2026-06-06 09:26:50 +08:00
oudecheng
d1d4998a26 feat: 增加工具结果字符限制,提升处理能力至 100,000 字符 2026-06-04 17:33:01 +08:00
oudecheng
1d4ebb27a7 feat: 更新 StopExecution 命令和 CancelManager,支持按话题取消 Agent 执行 2026-06-03 18:13:15 +08:00
oudecheng
1b571e943f feat: 添加停止当前执行的 Agent 功能,支持通过 /stop 命令取消执行 2026-06-03 16:49:29 +08:00
15dfc48837 feat: 根据 chat_id 自动选择 Session,支持定时任务专用 Session 2026-06-03 00:08:28 +08:00
a2c7981d6d feat: 添加 fresh_session 选项以支持清理历史记录 2026-06-02 23:31:05 +08:00
oudecheng
9f2eedf313 feat: 更新消息处理逻辑,仅接受带有匹配 subagent_task_id 的消息 2026-06-02 19:34:11 +08:00
oudecheng
ea6fabe41d feat: 添加持久化消息处理程序,增强定时任务消息的持久化能力 2026-06-02 18:42:50 +08:00
oudecheng
5f2bc950b1 feat: 添加定时任务和聊天消息加载功能,增强调度管理 2026-06-02 17:04:00 +08:00