oudecheng
51e06c8f73
feat: 实现两段历史压缩的同步处理,替换会话的活动历史记录
2026-07-03 09:52:45 +08:00
oudecheng
4fabbe47e9
feat: 增强MCP集成,支持配置路径和连接重试机制
2026-06-30 10:46:33 +08:00
oudecheng
26cbe7aa2d
feat: 更新 created_by_message_id 逻辑,仅在内容或状态变化时进行更新
2026-06-29 15:01:32 +08:00
oudecheng
ef18500100
feat: 更新 created_by_message_id 字段的赋值逻辑,确保使用 tool_call_id 进行消息关联
2026-06-25 10:50:16 +08:00
oudecheng
c72853c79d
feat: 添加 user_message_id 字段以支持用户消息的关联和同步
2026-06-24 15:13:36 +08:00
oudecheng
4efc8b51e7
feat(todo): 添加待办项关联的创建消息ID并支持消息高亮
...
- 在待办相关数据结构和存储中新增 created_by_message_id 字段
- 记录待办项创建时对应的消息ID,支持追溯来源
- 在前端待办列表项增加点击事件,点击后滚动并高亮对应消息
- 在消息列表组件中实现高亮动画及自动滚动功能
- 更新相关工具、协议和数据库查询,确保新字段正确传递和存储
- 增加 CSS 动画实现待办对应消息的高亮闪烁效果
- 优化前端状态管理,支持设置与获取高亮消息ID
2026-06-22 14:50:37 +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
oudecheng
6f8c4a7ce8
feat: 更新 load_messages_for_topic 方法,支持按 session_id 过滤消息
2026-06-12 19:05:06 +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
3c889caacf
feat: 添加日志记录以持久化待办事项时的调试信息
2026-06-12 16:22:43 +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
e4bc8153a0
feat: 更新测试用例中的技能描述,提供更准确的技能定义
2026-06-07 22:00:09 +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
1b571e943f
feat: 添加停止当前执行的 Agent 功能,支持通过 /stop 命令取消执行
2026-06-03 16:49:29 +08:00
oudecheng
f8fc0f7d0f
feat: 添加工具结果处理功能,支持执行时长记录和显示
2026-06-02 16:15:05 +08:00
oudecheng
eebfe0faa5
feat: 增强错误处理和日志记录,优雅处理通道关闭情况
2026-06-02 15:23:50 +08:00
1288ba268f
feat: 限定记忆命名空间为7种分类
...
- 新增 ALLOWED_MEMORY_NAMESPACES 常量定义允许的命名空间
- 添加 namespace 验证函数 is_valid_namespace()
- memory_manage 工具 schema 使用 enum 限制 namespace
- memory_search 工具 schema 使用 enum 提示可用 namespace
- 更新系统提示词添加命名空间分类说明
- 更新记忆维护提示词添加命名空间分类说明
- 修复测试中使用旧 namespace 的问题
命名空间分类:
- user: 用户记忆
- semantic: 语义记忆
- episodic: 情景记忆
- skill: 技能记忆
- environment: 环境记忆
- reflection: 反思记忆
- other: 其他记忆
2026-05-30 13:06:55 +08:00
oudecheng
4cb26b5b67
feat: 子智能体任务消息查看,实时广播工具调用事件
...
- 新增 LoadTaskMessages 命令,加载子智能体任务的历史消息
- SubAgentEmitter 通过 MessageBus 实时广播子智能体工具调用
- 前端新增子智能体视图,支持导航进入/退出子智能体会话
- 外部渠道过滤子智能体事件,避免推送到飞书/微信
- ToolCall/ToolResult 新增 subagent_task_id 字段
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-29 11:15:38 +08:00
oudecheng
5e5de7ce9f
refactor: 移除 show_tool_results 开关,始终实时推送工具调用消息
...
简化工具消息推送逻辑,去掉条件判断,让所有工具消息(含结果)
直接通过 emit_live_tool_call_message 实时发送给用户。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-28 18:52:40 +08:00
oudecheng
86d48a3ec0
feat: 实现自定义子代理加载功能
...
- 添加 SubagentCatalog::discover() 方法,支持从文件系统加载自定义子代理
- 支持 ~/.picobot/subagents/ 和 ./.picobot/subagents/ 两个目录
- 项目级定义可覆盖用户级定义
- 支持 YAML frontmatter + body 格式解析
- 修复 Windows 换行符兼容性问题
- 移除未使用的 read_only 字段
- 实现 TaskTool 动态 schema,子代理类型列表从运行时获取
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-25 11:56:44 +08:00
b571d7b7b3
feat: 添加图片上下文限制配置,支持最大图片数量和消息轮次限制
2026-05-24 18:06:22 +08:00
5e04832f20
feat: 更新 MCP 配置和工具适配器,支持 Claude Desktop 格式,优化服务器连接管理
2026-05-23 23:37:45 +08:00
cbb384a4e6
feat: 添加 MCP (Model Context Protocol) 支持,包含客户端管理器和工具适配器
2026-05-23 22:52:36 +08:00
b6f2de053d
refactor: 移除会话重置逻辑中的 reset_cutoff_seq 字段,优化会话管理和历史压缩逻辑
2026-05-23 18:38:34 +08:00
b4ef56803f
feat: 添加内存维护配置,优化记忆整理逻辑和限制
2026-05-23 16:05:11 +08:00
oudecheng
70b35d2cc1
feat: 更新聊天历史加载逻辑,支持按话题加载历史记录并避免借用冲突
2026-05-22 10:47:25 +08:00
oudecheng
49475783a2
feat: 添加子智能体支持到保存话题和会话功能,优化数据持久化
2026-05-20 17:52:46 +08:00
oudecheng
8830027cbc
feat: 添加原始话题 ID 支持,优化消息保存逻辑以处理用户话题切换
2026-05-20 12:05:58 +08:00
oudecheng
8f82009c32
feat: 重命名工具名称,简化工具调用接口
2026-05-19 15:18:04 +08:00
e62424d130
feat: 在测试中添加默认的 TaskConfig,增强测试用例的配置完整性
2026-05-17 22:00:30 +08:00
428df8da59
feat: 自动从数据库恢复当前话题,增强会话管理功能
2026-05-16 20:45:28 +08:00
831832664d
feat: 重构会话管理逻辑,添加获取当前话题的方法,简化命令处理中的会话获取逻辑
2026-05-16 20:19:49 +08:00
bee1a39a06
feat: add task management tool with subagent support
...
- Introduced `TaskConfig` struct to manage task-related configurations.
- Implemented `TaskTool` for creating and managing subagents for complex tasks.
- Added `TaskSession` and `TaskRepository` for handling task sessions and persistence.
- Created `DefaultSubAgentRuntime` to execute tasks with timeout and history support.
- Enhanced `ToolContext` to include `subagent_description` for better context tracking.
- Implemented error handling for task execution and session management.
- Updated `ToolRegistryFactory` to register task tools conditionally based on configuration.
- Added prompt builders for subagent tasks to improve interaction clarity.
2026-05-16 16:12:28 +08:00
oudecheng
549bf4df04
feat: 优化话题管理,确保在加载新话题历史前正确设置当前话题
2026-05-15 18:34:10 +08:00
oudecheng
a2d4ed9193
feat: 添加历史话题管理功能,支持获取和记录每个 chat 的历史话题
2026-05-15 17:43:12 +08:00
oudecheng
2cc3b1ce9c
feat: 添加话题管理功能,支持按 chat_id 隔离话题
2026-05-15 16:41:00 +08:00
oudecheng
e709773464
feat: 添加话题管理功能,支持切换和持久化话题历史
2026-05-15 15:28:07 +08:00
oudecheng
025c0b5d7f
feat: 添加 session_id 支持到 OutboundMessage,优化会话管理
2026-05-15 10:00:17 +08:00
oudecheng
86ba3b447e
feat: 添加会话管理功能,支持会话过期清理;引入 session_ttl_hours 配置项以控制会话存活时间
2026-05-14 15:29:37 +08:00
oudecheng
1c1efcabf4
feat: 移除冗余的 provider_config 字段,优化 AgentFactory 和 Session 的构造逻辑
2026-05-13 15:41:52 +08:00
oudecheng
a06fceaf0c
feat: 添加系统提示词提供者,支持动态注入和组合多个提示词源
2026-05-13 14:55:50 +08:00
oudecheng
cadc5e5577
feat: 支持分离 session_chat_id 和 notification_chat_id,优化任务执行逻辑
2026-05-13 09:39:05 +08:00
9d9fa1dc4b
feat: 添加 memory_maintenance_timeout_secs 配置,优化内存维护超时设置
2026-05-12 22:11:34 +08:00