oudecheng
|
cb58d9f3f0
|
feat: 清理消息历史中不完整的 tool call 序列
新增 sanitize_incomplete_tool_call_sequences() 方法,移除末尾
缺少对应 tool result 的 assistant tool_calls 消息。解决进程中断
导致部分 tool call 序列残留、进而引发 API 报错的问题。
同时清理因父消息被移除而残留的孤儿 tool result 消息。
|
2026-06-02 20:40: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
|
025c355c7d
|
feat: 在消息查询中添加工具执行时长字段,增强消息记录功能
|
2026-06-02 17:27:29 +08:00 |
|
oudecheng
|
590ea9abb0
|
feat: 添加工具执行时长字段到消息存储,增强消息记录功能
|
2026-06-02 17:17:06 +08:00 |
|
oudecheng
|
5f2bc950b1
|
feat: 添加定时任务和聊天消息加载功能,增强调度管理
|
2026-06-02 17:04:00 +08:00 |
|
oudecheng
|
4d6d989247
|
feat: 添加工具执行时长字段,增强消息处理功能
|
2026-06-02 16:52:47 +08:00 |
|
oudecheng
|
5273a7b335
|
feat: 添加记忆数量检查,避免在保留数不足时进行整理
|
2026-06-02 16:18:16 +08:00 |
|
oudecheng
|
f8fc0f7d0f
|
feat: 添加工具结果处理功能,支持执行时长记录和显示
|
2026-06-02 16:15:05 +08:00 |
|
oudecheng
|
eebfe0faa5
|
feat: 增强错误处理和日志记录,优雅处理通道关闭情况
|
2026-06-02 15:23:50 +08:00 |
|
oudecheng
|
1541dd7c10
|
feat: 添加平台特定的进程输入等待检查功能,增强 Bash 工具的用户授权检测
|
2026-06-02 10:59:13 +08:00 |
|
|
|
9b6cae0803
|
feat: 前端静态文件嵌入二进制
- 添加 rust-embed 依赖
- 创建 static_files.rs 模块,编译时嵌入 static/ 目录
- 修改 gateway 路由,默认使用嵌入文件
- 支持 STATIC_DIR 环境变量切换到磁盘文件(开发模式)
- 更新 README 说明 Web UI 和构建流程
|
2026-05-30 17:43:17 +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 |
|
|
|
7d9355fd78
|
feat: WebSocket 媒体文件处理优化
- 后端 ws.rs: 处理前端上传的 base64 内容,保存到本地文件并更新路径
- 后端 ws.rs: 历史消息加载时从文件读取内容填充 base64,过滤 media_refs_json
- 前端 App.tsx: 传递 attachments 给 handleMessage 实现实时显示
- 前端 useChat.ts: handleMessage 支持 attachments 参数
- 前端 MessageInput.tsx: 支持剪贴板粘贴文件/图片
- 前端 MessageInput.tsx: 修复拖拽文件时闪烁问题
- 测试 test_request_format.rs: 补充缺失的 attachments 字段
|
2026-05-30 10:22:30 +08:00 |
|
|
|
c2293238fc
|
feat: 前端支持文件附件输入
- 后端 WsInbound::Message 添加 attachments 字段
- ws.rs 将 attachments 转换为 MediaItem
- 前端 MessageInput 支持点击选择和拖拽文件
- 附件预览列表,支持删除
- 文件大小限制 50MB
- 支持所有文件类型
|
2026-05-30 08:07:02 +08:00 |
|
|
|
3d9c981c2a
|
feat: 前端输入框体验优化
- AI 响应完成后自动聚焦输入框
- 输入框和发送按钮居中对齐
- 隐藏输入框滚动条
- 新建话题无需输入名称,自动生成默认标题
|
2026-05-29 23:12:53 +08:00 |
|
oudecheng
|
06756a4816
|
fix: 修复消息持久化缺失 topic 关联和 assistant 文本丢失
- PersistingEmittedMessageHandler 新增 topic_id 参数,使用 append_message_with_topic 替代 append_message
- agent_loop 的所有退出路径中为最终 assistant 文本添加 emit_live_tool_call_message
- 更新 finalize_result filter,live_emitter 存在时抑制所有消息的 post-loop 广播
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 18:09:00 +08:00 |
|
oudecheng
|
2bda66a042
|
fix:user 消息重复
|
2026-05-29 17:42:05 +08:00 |
|
oudecheng
|
d0051baa07
|
refactor: 消息持久化从批量改为实时逐条,通过装饰器模式实现
- 新增 PersistingEmittedMessageHandler 装饰器,在 emitter 广播前逐条落库
- processor 和 task/runtime 使用装饰器包裹 emitter,替代 post-loop 批量写入
- 移除 session_history 中的批量 DB 写入,仅保留内存历史更新
- execution 中跳过已由 live emitter 实时广播的工具消息,避免重复
- 前端支持运行中 task 工具卡片"查看实时进度"跳转子智能体视图
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 16:47:57 +08:00 |
|
oudecheng
|
3b0b4c1f2e
|
refactor: 消息持久化改为批量单事务插入
- 新增 append_messages_batch 方法,所有消息在一个事务内插入
- session_history 移除逐条 append_persisted_message,统一走批量路径
- 子智能体消息保存从 for 循环改为批量调用
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 13:02:15 +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
|
5d3a583915
|
fix: read工具单行超长时内容被完全丢弃
单行超过 MAX_CHARS(128K) 时,截断循环 end_idx=0 导致 lines[..0] 为空,
整行内容丢失。改为当首行就超长时使用 take_prefix_chars 字符级截断。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 09:47:47 +08:00 |
|
oudecheng
|
182bebdaef
|
feat: 工具消息合并为可展开卡片,添加复制按钮
- 新增 merged_tool 消息类型,将 tool_call 和 tool_result 合并展示
- 卡片支持展开/折叠,显示参数和结果,带状态动画
- 添加复制按钮(hover 显示),支持消息文本和工具结果复制
- 过滤结果中冗余的"工具结果"前缀
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 09:10:34 +08:00 |
|
oudecheng
|
34011a6fa3
|
feat: 优化工具面板UI,外部渠道过滤工具消息
- 飞书/微信渠道不再推送 ToolResult/ToolPending 消息
- 聊天面板过滤 tool_call 消息,工具调用仅在工具面板展示
- 工具面板增加折叠预览、JSON格式化、状态动画等视觉优化
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-29 08:46:50 +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
|
7755164df5
|
feat:记忆修改隔离
|
2026-05-28 14:55:52 +08:00 |
|
oudecheng
|
598d425c28
|
feat: 话题添加描述字段,工具消息按 tool_call_id 合并展示
- TopicSummary 新增 description 字段,侧边栏优先显示描述
- ToolPanel 使用 toolCallId 将 tool_call 和 tool_result 配对合并展示
- 保存消息时同步更新 topics 表的 message_count 和 last_active_at
- ChatMessage 新增 toolCallId 字段
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 14:30:21 +08:00 |
|
oudecheng
|
44e82e8473
|
feat: 附件通过 base64 内容实现前端直接下载
- MediaItem/MediaSummary 新增 content_base64 和 file_name 字段
- 解析附件时读取文件内容并 base64 编码(限 50MB),前端 Blob 下载
- 创建 Session 后返回完整 topics 列表,前端侧边栏实时同步
- 简化话题历史加载逻辑,不再回退到 session 消息
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 14:01:37 +08:00 |
|
oudecheng
|
7898ca69e4
|
feat: 添加附件支持、自动选择话题及消息展示优化
- 消息协议新增 attachments 字段,支持图片/音频/视频/文件附件
- 文本和附件合并在一条消息中发送,不再拆分为多条
- Topics 加载后自动选中第一个话题并加载历史消息
- 用户消息现在通过 WebSocket 发送,可在前端展示
- 前端过滤 tool_result 消息,添加附件卡片展示组件
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 11:51:48 +08:00 |
|
oudecheng
|
542e11d0b3
|
refactor: 将 Session 命令重构为 Topic 命令
- 新增 LoadTopic 命令处理器,替代 LoadSession
- 新增 SwitchTopic 命令处理器,替代 SwitchSession
- 删除 LoadSession 和 SwitchSession 处理器
- 更新 Command 枚举:LoadSession -> LoadTopic, SwitchSession -> SwitchTopic
- 同步更新前端协议类型定义
- 调整适配器和网关代码以适应新命令
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 16:01:07 +08:00 |
|
oudecheng
|
10fb67320a
|
refactor(web): 简化 UI 架构,移除三级选择器
- 移除 ChannelSelector 和 SessionSelector 组件
- 新增 SessionInfo 组件显示当前会话信息
- 简化 useChat hook,移除 channels/sessions 状态管理
- 优化 TopicList UI,添加时间格式化显示
- 将废弃组件移至 .deprecated/ 目录
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 15:39:50 +08:00 |
|
oudecheng
|
e9e1439428
|
feat: 添加通道和话题管理功能
后端:
- 新增 ListChannels 命令,列出所有可用通道 (WebSocket/CLI)
- 新增 ListSessionsByChannel 命令,支持按通道筛选会话
- 新增 ListTopics 命令,列出 Session 的所有 Topics
- 添加 Channel 和 TopicSummary 数据结构
- 更新 WebSocket 协议,支持 channel_list 和 topic_list 消息
前端:
- 新增 ChannelSelector 组件用于通道选择
- 新增 SessionSelector 组件用于会话选择
- 更新 TopicList 组件支持话题展示
- 更新 useChat hook 和协议类型定义
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 14:55:09 +08:00 |
|
oudecheng
|
624d8e8943
|
feat: 添加 React Web UI 前端界面
- 使用 React 18 + TypeScript + Vite + Tailwind CSS 构建前端
- 实现 WebSocket 实时通信(useWebSocket hook)
- 添加聊天界面组件(MessageList, MessageBubble, MessageInput)
- 集成 Topic 管理(新建、列出、切换)
- 支持 Markdown 渲染(react-markdown + remark-gfm)
- 添加工具调用展示面板
- 实现深色科技主题(Tech Dark)
- 后端集成静态文件服务(tower-http)
- 添加 Makefile 和 build.sh 构建脚本
- 更新 .gitignore 忽略前端构建产物
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-26 17:43:15 +08:00 |
|
oudecheng
|
644f5f9132
|
feat: 子代理继承主代理的 MCP 工具
- 为 McpToolWrapper 添加 Clone trait,支持工具实例复用
- 修改 build_subagent_tools 方法,支持传入 MCP 工具列表
- 调整 runtime 构建顺序:先等待 MCP 连接,再将 MCP 工具传递给子代理
子代理现在可以自动使用主代理配置的 MCP 工具(如 filesystem、fetch 等)。
|
2026-05-26 11:53:40 +08:00 |
|
oudecheng
|
861aa04690
|
feat: 将 TaskConfig 默认超时时间统一改为60分钟
- default_task_max_execution_secs: 1200 -> 3600 (20分钟 -> 60分钟)
- default_task_explore_max_execution_secs: 600 -> 3600 (10分钟 -> 60分钟)
确保配置层默认值与代码层一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-26 08:52:30 +08:00 |
|
oudecheng
|
c41c2a1d2e
|
feat: 将内置子代理默认超时时间统一改为60分钟
- general 子代理: 20分钟 -> 60分钟
- explore 子代理: 10分钟 -> 60分钟
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-25 12:59:34 +08:00 |
|
oudecheng
|
b3dc207ad1
|
fix: 移除 temperature 和 max_tokens 的硬编码默认值
如果配置中没有设置 temperature 或 max_tokens,不再传递这些参数给模型,
让模型使用自己的默认值,而不是硬编码 0.7。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-25 12:58:15 +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 |
|
|
|
58b37bb796
|
fix: 更新合并规则,明确命名空间限制和合并条件
|
2026-05-24 22:33:07 +08:00 |
|
|
|
9ae2813c20
|
feat: 添加子代理配置,支持自定义子代理定义和运行时管理
|
2026-05-24 21:35:36 +08:00 |
|
|
|
b571d7b7b3
|
feat: 添加图片上下文限制配置,支持最大图片数量和消息轮次限制
|
2026-05-24 18:06:22 +08:00 |
|
|
|
4605c2dad3
|
feat: 重构 MCP 配置,支持 mcpServers 字段,优化工具注册和连接管理
|
2026-05-24 10:00:25 +08:00 |
|
|
|
0732b31e6b
|
feat: 添加主题描述生成和更新功能,优化会话信息展示
|
2026-05-24 08:32:34 +08:00 |
|
|
|
5e04832f20
|
feat: 更新 MCP 配置和工具适配器,支持 Claude Desktop 格式,优化服务器连接管理
|
2026-05-23 23:37:45 +08:00 |
|
|
|
ef7e899584
|
feat: 集成 MCP (Model Context Protocol),支持 Stdio 和 HTTP 传输方式,优化工具注册和连接管理
|
2026-05-23 23:22:36 +08:00 |
|
|
|
b3fa0bb978
|
feat: 添加 HTTP 传输连接支持,优化 MCP 客户端管理器
|
2026-05-23 22:57:08 +08:00 |
|
|
|
cbb384a4e6
|
feat: 添加 MCP (Model Context Protocol) 支持,包含客户端管理器和工具适配器
|
2026-05-23 22:52:36 +08:00 |
|
|
|
f68e915b04
|
feat: 更新技能管理工具文档,明确技能创建和修改的正确流程及存储路径
|
2026-05-23 21:12:39 +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 |
|