oudecheng
|
edc975e6d0
|
feat(command): 优化 StopExecution 命令按话题取消逻辑
- StopExecutionCommandHandler 新增 SessionManager 依赖
- 优先使用 ctx.topic_id,若无则从 SessionManager 获取当前话题
- 增加获取话题过程中错误处理和日志打印
- 更新命令处理器构造参数,传入 SessionManager
- 在命令路由和 WebSocket 注册时同步修改 StopExecutionCommandHandler 创建方式
|
2026-06-18 17:17:26 +08:00 |
|
oudecheng
|
9ea5849f22
|
refactor(task): 子智能体相关字段重命名及导航逻辑调整
- 将 runtime 中的 sub_session_id 字段重命名为 task_id,作为持久化的 scope_key
- 调整持久化 todo_write 结果使用 task_id 代替 session_id 作为 scope_key
- 重命名前端消息中的 subagentTaskId 为 navigateToTaskId,增强导航表达
- 修改 MessageBubble 组件中子智能体任务导航相关的字段名和条件判断
- 优化 useChat 中 task tool_call 消息的 navigateToTaskId 设置逻辑,确保正确导航孙智能体任务
- 移除无用的 getTopicId 辅助方法,简化消息处理逻辑
- 在协议类型定义中新增 navigateToTaskId 字段,明确导航用途与关系
|
2026-06-18 17:09:42 +08:00 |
|
oudecheng
|
e585ec71b1
|
refactor(todo): 统一子代理 scope_key 为全局唯一的 task_id
- 修改 list_todos 处理器,子代理使用 task_id 作为 scope_key,替代原先的 sub:{parent_session_id}:{task_id}
- 调整 todo_write 的 scope_key_from_context 函数,子/孙代理使用 task_id 隔离,避免与父代理污染
- 修正子任务消息的 task_id 传递逻辑,在 useChat hook 中为子代理视图的孙子任务回填正确的 task_id
- 清理 MessageBubble 组件中多余的 isSubAgent 变量声明
|
2026-06-18 16:44:54 +08:00 |
|
oudecheng
|
421714dfa3
|
style(TodoPanel): 优化待办面板动画和样式细节
- 新增待办卡片及条目动画效果,提升界面动感
- 添加待办分组折叠内容展开/收起过渡样式
- 优化按钮尺寸及颜色悬浮效果,提升交互体验
- 自动展开新待办项,空列表时自动收起
- 调整待办面板大小、圆角及阴影效果,增强视觉层次
- 改进待办标题栏排版及交互样式,支持拖动操作手感
- 为无待办状态提供占位展示及提示文字
- 优化待办分组标题样式及折叠箭头动画
- 改进待办条目列表项样式,支持悬浮高亮显示
- 移除消息气泡中的冗余子智能体标签显示内容
|
2026-06-18 16:15:08 +08:00 |
|
oudecheng
|
301506a3b1
|
feat(chat): 支持子智能体导航添加子智能体类型参数
- 扩展 enterSubAgentView 方法,新增 subagentType 可选参数
- 更新相关回调 onNavigateToSubAgent,添加 subagentType 参数支持
- 调整 MessageBubble 组件触发子智能体导航时传递 subagentType
- 优化 MessageList 组件显示新消息计数及底部导航按钮交互
- 美化底部浮动导航按钮样式,增加新消息数字提示和动画
- TodoPanel 添加状态点样式,消息内容排版更紧凑
- 维护滚动位置状态,改进滚动时新消息计数逻辑
|
2026-06-18 15:34:27 +08:00 |
|
oudecheng
|
8684ff9549
|
feat(chat): 实现多视图滚动位置保存与恢复功能
- 在 App 组件中新增 viewKey,用于标识当前视图
- 通过属性链传递 viewKey 至 MessageList 以区分不同滚动上下文
- MessageList 中新增滚动位置缓存机制,使用 Map 保存各视图的滚动状态
- 在视图切换时自动恢复对应滚动位置,提升用户体验
- 保持消息新增时的自动滚动行为,兼顾视图切换与消息更新场景
|
2026-06-18 15:02:25 +08:00 |
|
oudecheng
|
bf724b133c
|
feat(chat): 支持子智能体栈和面包屑导航功能
- 引入子智能体栈结构以支持多层子智能体导航
- 替换原有单一子智能体视图为子智能体栈管理消息和状态
- 添加navigateToSubAgentLevel方法,支持通过面包屑快速跳转子智能体层级
- 调整子智能体面包屑条UI,显示完整层级的描述、类型和状态
- 优化子智能体消息流和状态更新逻辑,保持栈顶视图同步
- 更新退出子智能体视图逻辑以支持栈弹出操作
- 添加主会话入口和各层子智能体的切换按钮及状态颜色显示
|
2026-06-18 14:53:05 +08:00 |
|
oudecheng
|
175e7fc01b
|
refactor(subagent): 支持带类型的子智能体标题格式
- 将子智能体标题解析升级为支持 "Subagent [type]: description" 格式
- 兼容旧格式 "Subagent: description",默认类型为 "general"
- 修改子智能体会话标题生成,包含类型信息
- 优化记录解析和会话创建逻辑,提高子智能体信息表达准确性
|
2026-06-18 14:27:38 +08:00 |
|
oudecheng
|
6962ea2eb1
|
feat(todo): 优化悬浮待办面板功能
- 将悬浮待办面板集成到聊天组件上方,避免重复渲染
- 调整状态样式配置,简化颜色和样式管理
- 实现待办面板位置拖拽功能,支持位置持久化保存
- 优化折叠与展开交互,改进分组标题和列表项显示样式
- 设计迷你和完整两种面板展现形态,提升界面灵活性
- 添加刷新按钮及自动展开待办新条目功能
- 精简和改进待办项展示,提高内容可读性和界面美观度
|
2026-06-18 14:25:41 +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
|
761f8577be
|
fix(tools): 修正 scope_key 计算逻辑及任务运行时 topic_id 设置
- 调整 scope_key_from_context 根据 nesting_depth 区分主代理和子代理的 key 策略
- 主代理优先使用 topic_id,子代理使用 session_id 避免污染父代理 todo
- 任务运行时将 parent_topic_id 传入 topic_id,修正为正确的引用
- 完善函数注释,增强代码可读性和维护性
|
2026-06-18 10:40:27 +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
|
e842ae0608
|
feat(chat): 实现todo_write完成后自动刷新待办列表
- 在useChat中添加sendMessage引用,支持从handleServerMessage内部发送命令
- 在App.tsx中通过useEffect将sendMessage注入useChat
- 子代理todo_write完成后自动发送请求刷新对应待办列表命令
- 主视图todo_write完成后自动刷新待办列表,支持子代理和主任务区分
- 优化消息处理逻辑,避免不同子代理消息混淆
|
2026-06-17 14:33:02 +08:00 |
|
oudecheng
|
8af7edfb32
|
fix(todos): 修复子智能体 todo 列表污染主智能体的问题
子智能体创建时 ToolContext.topic_id 继承了父智能体的 topic_id,
导致 scope_key_from_context 优先使用 topic_id 作为 scope key,
父子智能体共享同一个内存中的 TodoItem 列表。
修改为 topic_id: None,使 scope_key_from_context 回退到
子智能体唯一的 session_id (sub:{parent}:task:{uuid}),
实现完全隔离。消息持久化和前端加载链路均不受影响。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-16 17:46:25 +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
|
416ac047e3
|
feat(agent): 在每个 LLM 请求前进行不完整工具调用序列的清理
|
2026-06-16 16:51:40 +08:00 |
|
oudecheng
|
edc1a50d1c
|
feat(todos): 修改 todos 表结构,迁移至复合主键并添加索引
|
2026-06-16 16:17:12 +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
|
027e8661bc
|
feat(todo): 实现待办事项列表的动态刷新和状态管理
- 在 runtime 中为待办事项添加基于系统时间的时间戳
- 修复前端 TodoPanel 组件的数据刷新逻辑
- 添加 setTodos 状态更新函数以支持待办事项清空操作
- 实现根据当前视图动态选择请求命令的功能
- 优化待办事项数据的过滤和映射处理流程
|
2026-06-15 16:20:40 +08:00 |
|
oudecheng
|
7626ba2d2f
|
feat(gateway): 添加待办事项读取功能
- 引入 TodoReadTool 工具支持读取当前对话的待办事项列表
- 实现从内存或SQLite数据库读取待办事项的功能
- 添加内存回填机制确保数据一致性
- 在ToolRegistryFactory中注册新的待办事项读取工具
- 更新会话初始化逻辑以传递待办事项存储依赖
- 添加完整的单元测试验证各种读取场景
|
2026-06-15 15:33:43 +08:00 |
|
|
|
09dd15f557
|
feat(feishu): 支持引用回复消息 - 使用飞书 reply API (POST /im/v1/messages/{id}/reply) - 仅 AssistantResponse 使用回复接口,工具消息走普通发送 - 提取公共逻辑到 prepare_payload / check_send_response - 新增 reply_to_feishu_message / dispatch_send 方法
|
2026-06-14 14:15:21 +08:00 |
|
|
|
3630e62e18
|
style(chat): 优化消息气泡组件样式间距
- 移除消息气泡底部多余外边距,调整整体布局美观
- 为模型思考内容容器增加底部外边距,改善内容分隔
- 统一模型思考区域的外边距,提升视觉一致性
- 根据内容情况动态添加外边距,增强排版灵活性
|
2026-06-14 12:55:49 +08:00 |
|
|
|
b67848180b
|
feat(stream): 添加子代理消息流增量处理功能
- 在 runtime 模块中新增 handle_stream_delta 方法,支持子代理消息流的增量和结束事件处理
- 为流消息新增 stream_message_id,用于标识和管理消息流状态
- 修改 ConversationContext 初始化,加入 stream_message_id 互斥锁字段
- 更新 web 端 Chat 组件,添加对流增量内容的条件渲染,避免空字符串渲染
- 在 useChat 钩子内增加对 stream_delta 和 stream_end 类型消息的识别和处理逻辑
- 实现流增量消息的累积更新,合并多次流增量内容和推理文本
- 处理流结束消息时的无操作逻辑,确保消息流完整性
- 对 assistant_response 消息进行替换更新,修正流消息的最终呈现内容
|
2026-06-14 12:51:26 +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 |
|
|
|
def6df50da
|
chore(git): 更新 .gitignore 文件以忽略新目录
- 添加 .agents 目录到忽略列表
- 添加 .qoder 目录到忽略列表
|
2026-06-13 17:56:32 +08:00 |
|
|
|
e37dea886b
|
refactor(tools): 优化交互式进程输出捕获逻辑
- 删除了 PendingUserAction 相关的冗余辅助消息发送代码
- 引入自适应 drain_until_stable 函数循环读取输出直到稳定
- 用 drain_until_stable 替代固定延时等待以捕获最终提示内容
- 确保进程等待 stdin 时完整且及时地捕获所有输出数据
- 移除过时的常量和注释,简化代码逻辑
- 保持对最大循环次数和间隔时间的限制防止死循环
|
2026-06-13 17:40:44 +08:00 |
|
|
|
640829ce52
|
fix(agent): 优化等待工具输出内容的提取逻辑
- 跳过标记行、session_id元数据和空行
- 跳过提示行,提取提示行之后的实际内容
- 限制提取内容最多20行,防止消息过长
- 当提取内容为空时,使用默认提示消息
- 改善助手消息的显示内容格式
|
2026-06-13 17:40:30 +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
|
43cea50df8
|
feat: 添加连接设置弹窗,支持动态配置 WebSocket 连接
|
2026-06-12 19:17:50 +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
|
0b190b717c
|
fix: merge模式下新item接受任意status,不再限制pending/in_progress
全量替换模式保持原有限制。merge语义就是信任agent传入的状态。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-12 16:12:54 +08:00 |
|
oudecheng
|
c4d10c6413
|
fix: merge 模式下按 content 匹配已有项,无需 agent 记住 UUID
- merge=true 时,无 id 的项先按 content 匹配已有项
- 匹配到→更新,匹配不到→新建(仍需 pending/in_progress)
- 新增 list_todos 命令处理器,支持前端自动拉取
- prompt 增加规则6:更新已有任务必须传 id(作为最佳实践提示)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-12 15:59:43 +08:00 |
|
oudecheng
|
750eed7326
|
feat: 添加 ListTodos 命令处理器,支持列出当前待办事项列表
|
2026-06-12 15:53:01 +08:00 |
|
oudecheng
|
3f32079f92
|
feat: 添加 Todo 面板,支持待办事项的展示与管理
|
2026-06-12 15:17:49 +08:00 |
|
oudecheng
|
ce6dce81f4
|
fix: 新创建 todo 项允许直接设为 in_progress,无需先 pending 再更新
agent 创建 todo 列表时可以将第一个任务直接标为 in_progress,
避免浪费一次工具调用。仍然禁止新项为 completed/cancelled。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-12 14:43:38 +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
|
cedd8b2a69
|
feat: 添加 topic_id 字段到消息结构,优化消息处理逻辑
|
2026-06-12 12:22:21 +08:00 |
|
oudecheng
|
87fc8cc3b7
|
feat: 更新工具调用的ID处理逻辑,确保在缺失时生成唯一ID
|
2026-06-12 11:48:01 +08:00 |
|