|
|
93945b626c
|
refactor(tools): 优化交互式进程输出捕获逻辑
- 删除了 PendingUserAction 相关的冗余辅助消息发送代码
- 引入自适应 drain_until_stable 函数循环读取输出直到稳定
- 用 drain_until_stable 替代固定延时等待以捕获最终提示内容
- 确保进程等待 stdin 时完整且及时地捕获所有输出数据
- 移除过时的常量和注释,简化代码逻辑
- 保持对最大循环次数和间隔时间的限制防止死循环
|
2026-06-13 14:56:44 +08:00 |
|
|
|
4598370fd2
|
fix(agent): 优化等待工具输出内容的提取逻辑
- 跳过标记行、session_id元数据和空行
- 跳过提示行,提取提示行之后的实际内容
- 限制提取内容最多20行,防止消息过长
- 当提取内容为空时,使用默认提示消息
- 改善助手消息的显示内容格式
|
2026-06-13 14:12:09 +08:00 |
|
|
|
c5f4209d33
|
fix(agent): 优化工具待处理输出和交互会话行为
- 从工具输出中过滤元数据和内部标记,仅显示有意义内容
- 增加等待stdin输入时的短暂延迟,确保提示内容传入通道
- 始终创建交互式会话,即使当前输出为空,避免丢失会话信息
- 优化交互会话保存逻辑,确保正确处理stdin等待状态
- 修改.gitignore,添加.qoder目录忽略规则
|
2026-06-13 13:28:42 +08:00 |
|
|
|
a7883dbed9
|
refactor(todo): 重构待办事项管理逻辑及更新状态规则
- 移除 TodoItem 中的 priority、created_at 和 updated_at 字段
- 强制每个任务都必须有唯一 id,且由用户负责生成
- 修改合并模式逻辑,merge=true 下保留未提及的旧任务
- 支持已完成和已取消任务重新激活(状态改回 pending 或 in_progress)
- 禁止 in_progress 状态退回到 pending,必须标记为 completed 或 cancelled
- 优化状态转换校验,允许特定状态间合法切换
- 简化任务变更消息,移除详细的新增/更新/移除统计
- 更新文档和示例,明确 id 必须由用户生成和使用
- 修复和补充测试,增强状态转换和合并模式验证
- 调整任务时间戳生成逻辑,统一使用当前时间及索引
- 该变更提供更合理的任务状态机械及管理模式,提升稳定性和易用性
|
2026-06-13 09:22:33 +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 |
|
oudecheng
|
86543f19fe
|
feat: 添加获取时间的工具调用,确保时间准确性
|
2026-06-12 10:40:34 +08:00 |
|
oudecheng
|
f808bd09ea
|
feat: 隐藏无实质内容的助手消息气泡以优化界面显示
|
2026-06-12 08:44:14 +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
|
694b3ce0e0
|
fix: send_session_message 增加详细 debug 日志和文件名归一化匹配
- filename_matches_target 关键日志从 trace 升级到 debug
- 增加 on-disk bytes hex dump 输出,便于定位编码差异
- UTF-8 解码成功但不匹配时继续尝试 GBK 解码
- 新增 normalize_filename() 去除空白/零宽字符后模糊比对
解决 LLM 在中文文件名中多插空格的问题
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-11 09:44:47 +08:00 |
|
oudecheng
|
0de0b93896
|
feat: send_session_message 支持非 UTF-8 编码中文文件路径回退
Linux 环境下,当文件名包含非 UTF-8 编码的中文字符(如 GBK)
时,LLM 从 bash ls 输出获取的 UTF-8 路径无法匹配磁盘上的实
际字节,导致文件访问失败。
此提交新增 resolve_attachment_path() 函数,采用目录扫描+
多编码解码匹配策略:
1. 先按 UTF-8 原样访问(快速路径)
2. 失败后列出父目录,对每个文件尝试 UTF-8/GBK/lossy 解码
与目标文件名比对,匹配成功则返回磁盘实际路径
同时修复 file_name 提取使用 to_string_lossy() 替代 to_str()
避免非 UTF-8 文件名静默丢失。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-06-11 09:27:18 +08:00 |
|
oudecheng
|
a2c4bf1d8c
|
feat: 优化附件路径解析,增加文件名匹配逻辑以支持非 UTF-8 编码
|
2026-06-11 09:15:05 +08:00 |
|
oudecheng
|
0646a17073
|
feat: 添加附件路径解析功能,支持非 UTF-8 编码文件名的回退机制
|
2026-06-10 18:07:17 +08:00 |
|
oudecheng
|
a4cdb31ba0
|
feat: 优化话题描述生成逻辑,增加空描述回退机制;更新话题创建命令以自动聚焦新话题
|
2026-06-10 11:26:35 +08:00 |
|
oudecheng
|
dad0f57b9b
|
feat: 添加启动脚本和文档,支持 PicoBot 网关的管理与构建
|
2026-06-10 11:12:25 +08:00 |
|
oudecheng
|
0104b96bf2
|
feat: 添加 logs 目录到 .gitignore 文件,避免日志文件被纳入版本控制
|
2026-06-09 15:15:55 +08:00 |
|
|
|
62810bd0b3
|
feat: 添加 PicoBot 启动脚本和构建脚本,支持后台运行和构建打包功能
|
2026-06-08 23:38:48 +08:00 |
|
oudecheng
|
d0741ef4fc
|
feat: 优化话题选择逻辑,避免用户手动选择后自动切换;重构消息列表滚动逻辑,提升用户体验
|
2026-06-08 18:01:32 +08:00 |
|
oudecheng
|
3f9bb22097
|
feat: 添加 favicon.svg 文件并在 index.html 中引用
|
2026-06-08 14:43:47 +08:00 |
|
oudecheng
|
f470affb2f
|
feat: 添加技能列表功能,支持列出所有技能并在前端展示
|
2026-06-08 14:13:54 +08:00 |
|
oudecheng
|
4c2a2ebf28
|
feat: 优化记忆面板的 SectionHeader 组件样式,增强用户交互体验
|
2026-06-08 11:57:26 +08:00 |
|
oudecheng
|
ef274e0387
|
feat: 更新记忆面板样式,确保面板在打开时占满高度
|
2026-06-08 11:52:21 +08:00 |
|
oudecheng
|
2fbe5bdde1
|
feat: 更新 README.md,添加 Windows 用户构建与启动指南,提供 Makefile 命令对照
|
2026-06-08 11:07:36 +08:00 |
|
|
|
e4bc8153a0
|
feat: 更新测试用例中的技能描述,提供更准确的技能定义
|
2026-06-07 22:00:09 +08:00 |
|
|
|
c0d4f65de4
|
feat: 更新数据库连接管理,使用连接池优化会话存储,添加新的错误处理
|
2026-06-07 21:35:47 +08:00 |
|
|
|
cca913b610
|
feat: 添加记忆 CRUD 功能,支持创建、更新和删除记忆,优化记忆面板交互
|
2026-06-07 20:16:54 +08:00 |
|
|
|
7708112649
|
feat: 添加记忆功能,支持列出所有记忆并在前端展示,优化记忆面板
|
2026-06-07 19:50:46 +08:00 |
|
|
|
1f04c62d0d
|
feat: 添加图片轻箱功能,支持点击图片预览和下载,优化附件展示逻辑
|
2026-06-07 18:47:17 +08:00 |
|
|
|
62ea6de3a7
|
feat: 更新时间戳处理逻辑,支持从消息中提取并格式化时间,同时为话题列表添加分页功能
|
2026-06-07 18:17:13 +08:00 |
|
|
|
7e8b6a832e
|
style: 调整刷新按钮的样式和尺寸,优化用户界面
|
2026-06-07 18:01:59 +08:00 |
|
|
|
eeea7d44d0
|
feat: 添加 topic_id 支持,确保消息按话题隔离
|
2026-06-07 17:49:22 +08:00 |
|