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
5a0c018ee7
feat: 更新内存维护逻辑,调整返回类型为Option以处理无结果情况
2026-05-12 21:04:17 +08:00
oudecheng
3db0225838
feat: 重构记忆维护逻辑,移除不再使用的字段,添加新的整理和摘要功能
2026-05-11 15:19:46 +08:00
daec690f59
feat: 更新会话配置,重命名 session_ttl_hours 为 chat_history_ttl_hours,并调整相关逻辑以支持聊天历史过期管理
2026-05-10 19:29:55 +08:00
0ea98c6e8e
feat: 添加生成系统环境信息提示词功能,并在会话历史中注入该提示词
2026-05-10 14:47:22 +08:00
33e6b78267
feat: 添加工具配置示例,支持工具启用/禁用功能;更新调度器管理工具描述以支持标准 cron 语法
2026-05-10 13:57:47 +08:00
597881f72e
feat: Implement WeChatBot SDK with error handling and message protocol
...
- Add WeChatBotError enum for error handling with various error types.
- Create a Result type alias for easier error management.
- Implement ILinkClient for low-level API interactions including QR code generation, message sending, and updates retrieval.
- Define message types and structures for handling incoming messages and media content.
- Add tests for error handling and message parsing to ensure reliability.
Co-authored-by: Copilot <copilot@github.com>
2026-05-06 14:18:47 +08:00
7c48a0f7f9
feat: 简化内存维护逻辑,移除不必要的时间戳参数,优化代码可读性
2026-05-05 19:40:07 +08:00
260266b90f
feat: 添加会话消息发送工具,支持文本和附件的发送,优化消息发送逻辑
2026-05-02 09:15:36 +08:00