88f8a86b99
feat(storage): 实现 Storage 主结构和初始化
2026-04-28 22:12:30 +08:00
c4c87aac95
feat(storage): 创建 storage 模块骨架
2026-04-28 22:09:10 +08:00
22546d3ad0
feat(storage): 添加 StorageError 类型
2026-04-28 22:08:47 +08:00
3ed7ac7cbd
deps: 添加 sqlx + sqlite 依赖
2026-04-28 22:07:55 +08:00
575f264773
docs: 添加 Phase 1 Storage 基础实现计划
...
9 个 Task:
1. 添加 sqlx + sqlite 依赖
2. 创建 StorageError 类型
3. 创建 storage 模块骨架
4. 实现 Storage 主结构 + init_schema
5. 定义 SessionMeta / MessageMeta
6. 实现 Session CRUD
7. 实现 Message CRUD
8. 添加写入重试逻辑
9. 编写 7 个单元测试
2026-04-28 21:46:32 +08:00
2cbd959ac4
docs: 添加 Session 持久化设计方案
...
设计目标:
- SQLite 持久化,消息实时落盘
- Session = Dialog 概念等价,不再分层
- handle_message 自动恢复或创建 session
- Dialog 完整生命周期管理(/new /sessions /switch /rename /delete)
- Title 自动生成(10 条用户消息后)
- TTL 自动内存清理,Storage 保留所有数据
2026-04-28 21:45:05 +08:00
1ac6de118a
修复 /dump 命令:保存到文件并注入系统提示词
...
- /dump 现在保存到 {workspace}/dumps/ 目录而非仅返回文本
- dump 文件包含注入模型的完整系统提示词(AgentLoop + Skills)
- 修复 cli_chat 中 current_session_guard 变量声明问题
- gateway 正确处理 HandleResult::AgentResponse 和 CommandOutput
- 移除 cli_chat 中未使用的 parse_slash_command 导入
2026-04-28 21:27:36 +08:00
e61b78eaff
重构:斜杠命令通过 handle_message 处理,Channel 不再管理 Session
...
架构优化:
- Feishu 渠道的 handle_and_publish 简化为只发布消息到 bus
- Session 创建/复用由 SessionManager 在 handle_message 内部处理
- 斜杠命令检测移到 handle_message,execute_slash_command 直接调用
- CLI 和 Feishu 统一通过消息总线处理斜杠命令
2026-04-28 21:10:28 +08:00
e787203e94
修复飞书渠道会话创建时机:执行斜杠命令前先确保会话存在
...
在 Feishu 收到斜杠命令时,先通过 CreateDialog 创建会话,
再执行实际的命令。这样 /dump 等命令就能正确获取对话历史。
2026-04-28 21:06:25 +08:00
c52461055d
修复飞书渠道 /dump 和 /info 命令:支持无会话时自动创建
...
当 Feishu 用户首次发送斜杠命令时,如果没有会话则自动创建。
这使得 /dump 和 /info 命令可以在对话开始前使用。
2026-04-28 21:03:58 +08:00
30b68599a4
为飞书渠道添加斜杠命令支持
...
重写 FeishuChannel 的 handle_and_publish 方法,在发布消息前
检查是否为斜杠命令。如果是,则通过控制平面执行命令并返回结果。
2026-04-28 20:58:31 +08:00
a3d8ebb534
添加 /dump 命令,导出 session 为 markdown 文档
...
/dump 命令会输出当前 session 的完整信息:
- Session 元信息 (ID, channel, chat_id, model 等)
- 所有对话历史 (system, user, assistant, tool)
- 每条消息包含角色、时间戳、内容、工具调用等
2026-04-28 20:54:54 +08:00
84bb06cc76
优化日志输出:斜杠命令执行时打印,过滤冗余的压缩日志
...
- 添加斜杠命令执行的 info 日志
- Context compression 日志只在实际触发压缩时输出 (debug级别)
2026-04-28 20:52:20 +08:00
7220e89a22
简化斜杠命令,移除不可用的命令
...
删除:sessions, switch, rename, archive
保留:new, delete, compact, info
2026-04-28 20:50:01 +08:00
8219e7c928
优化系统提示词:移除冗余的工具列表,自动创建skills目录
...
- 移除 ToolsSection:工具定义已通过 API 的 tools 参数传递,无需在提示词中重复
- SkillsLoader 启动时自动创建 ~/.picobot/skills 目录
2026-04-28 20:41:36 +08:00
6c50f433d1
删除旧的session持久化机制
2026-04-28 20:34:44 +08:00
61eea62bfc
增强斜杠命令功能,支持参数解析和新命令;实现双重 Ctrl+C 退出确认
2026-04-28 00:01:28 +08:00
c11eb348f9
Refactor: Make AgentLoop stateless, clean up architecture
2026-04-27 23:23:10 +08:00
1abac85034
集成技能功能到系统提示词框架
...
- 在 AgentLoop 中添加 SkillsLoader 支持\n- 在系统提示词构建中集成技能提示\n- 更新 Session 以传递 SkillsLoader\n- 修复所有编译错误和测试问题
2026-04-27 23:04:24 +08:00
8226e8429d
Merge remote-tracking branch 'origin/main'
2026-04-27 22:47:37 +08:00
cc73344192
Add AGENTS.md and CLAUDE.md for agent guidance
...
- AGENTS.md: build/run commands, config, tests, reference directory,
architecture with data flow diagram, module responsibilities,
functional boundaries, key constraints, known issues
- CLAUDE.md: redirect to AGENTS.md for Claude Code
- .gitignore: stop ignoring AGENTS.md and CLAUDE.md
2026-04-27 18:35:09 +08:00
f704900e07
统一工作目录管理
2026-04-27 17:23:52 +08:00
75a3bf9df4
增加系统提示词框架
2026-04-27 17:07:01 +08:00
ac2333900a
重构: 添加技能加载和获取工具,优化技能管理
2026-04-26 23:35:06 +08:00
401a7b6473
初步实现skill
2026-04-26 23:18:23 +08:00
98259a7770
重构: 添加斜杠命令支持和命令菜单功能
2026-04-26 22:09:04 +08:00
0c356e7ac4
重构: 添加斜杠命令解析和执行功能
2026-04-26 21:51:24 +08:00
38425e23f6
重构: 优化终端初始化和清理流程
2026-04-26 21:40:34 +08:00
bcee62713f
重构: 移除调试日志以简化消息处理流程
2026-04-26 21:26:27 +08:00
cf6d57c568
重构: 添加 TUI 组件以支持聊天界面和输入处理
2026-04-26 21:00:17 +08:00
86dea0f874
Refactor session management to support dialog-based architecture
...
- Removed InputHandler and related input event handling code.
- Updated GatewayState to handle new session commands for dialogs.
- Introduced UnifiedSessionId for managing session identifiers across channels and chats.
- Refactored Session and SessionManager to manage dialogs instead of sessions.
- Added methods for creating, listing, switching, renaming, archiving, and deleting dialogs.
- Updated storage functions to accommodate dialog IDs in persistent session management.
- Enhanced tests to cover new dialog functionalities and ensure stability.
2026-04-26 20:59:54 +08:00
5ce5502c56
refactor: 抽取独立 session 模块
...
将 Session/SessionManager 从 gateway 抽取到独立的 session 模块:
- 新建 src/session/ 目录
- mod.rs: 模块导出
- error.rs: SessionError 类型
- commands.rs: SessionCommand 枚举
- events.rs: SessionEvent 枚举
- session.rs: Session 和 SessionManager 实现
- 更新 src/gateway/mod.rs
- 移除 pub mod session
- 改用 crate::session::SessionManager
- 更新 src/lib.rs
- 添加 pub mod session
- 删除 src/gateway/session.rs (内容已移动)
注意: ControlInbound/ControlOutbound/ControlMessage 保留在 bus/message.rs,
cli_chat 仍通过消息总线与 SessionManager 通信,待后续简化。
2026-04-26 17:48:23 +08:00
75281952d0
refactor: 统一 current_timestamp 函数到 bus::message 模块
...
- bus/message.rs: current_timestamp 改为 pub(crate) 导出
- cli_chat.rs: 删除本地定义,改用 crate:🚌 :message::current_timestamp()
- feishu.rs: 改用 crate:🚌 :message::current_timestamp()
- storage/mod.rs: 删除本地定义,改用 crate:🚌 :message::current_timestamp()
2026-04-26 17:24:44 +08:00
72c888a41f
重构: 整合客户端代码到 client 目录
...
- 将 cli/ 目录合并到 client/
- InputEvent::Message 改为简单 String 类型,移除对 ChatMessage 的依赖
- cli 模块从 lib.rs 移除
- client/mod.rs 添加 mod channel 和 mod input 声明
- 添加设计文档 docs/plans/2026-04-26-client-refactor-design.md
2026-04-26 17:18:13 +08:00
dfe0fad61e
重构: 统一消息总线与通道管理,消除重复引用
...
- OutboundDispatcher 改用 ChannelManager 获取通道,不再维护独立注册表
- CliChatChannel 通过控制消息通道操作 SessionStore,移除独立引用
- MessageBus 统一通过 ChannelManager 创建,避免重复实例
- GatewayState 移除冗余字段,统一通过 ChannelManager 访问
- 新增 ControlInbound/ControlOutbound/ControlMessage 类型支持会话管理操作
- 添加 ARCHITECTURE_REVIEW.md 记录架构问题与修复状态
2026-04-26 17:09:52 +08:00
6a3a1b5edf
重构: 将CLI通道统一为CliChatChannel
...
- 创建CliChatChannel实现Channel trait
- 简化ws.rs为纯粹的传输桥接
- CLI消息通过MessageBus走统一流程
- 重命名命令从agent改为chat
- 通道名称从cli改为cli_chat
2026-04-26 12:04:11 +08:00
ef80ae27ac
fix(feishu): 修复内容类型处理,确保返回字符串格式
2026-04-26 11:22:01 +08:00
447cb2eee5
保存图片按实际格式储存。
2026-04-24 16:25:52 +08:00
81dcc67932
compressor不再使用独立的LLMProvider实例。减少开销
2026-04-24 10:04:21 +08:00
393d980742
feat(session): 添加逻辑重置功能,优化会话历史管理
2026-04-20 22:35:13 +08:00
eb0f6c0bc7
feat(storage): 移除工具调用 JSON 列的数据库检查,优化会话存储逻辑
2026-04-18 14:40:12 +08:00
ef601107ac
feat: 添加工具调用支持,优化消息处理和持久化
2026-04-18 14:17:23 +08:00
8bb32fa066
feat: enhance WebSocket session management and storage
...
- Added SessionSummary struct for session metadata.
- Updated ws_handler to create and manage CLI sessions more robustly.
- Implemented session creation, loading, renaming, archiving, and deletion via WebSocket messages.
- Introduced SessionStore for persistent session storage using SQLite.
- Enhanced error handling and logging for session operations.
- Updated protocol definitions for new session-related WebSocket messages.
- Refactored tests to cover new session functionalities and ensure proper serialization.
2026-04-18 13:09:14 +08:00
c971bc3639
feat: 添加上下文压缩功能,优化消息历史管理和工具调用日志记录
2026-04-12 18:38:38 +08:00
dcf04279a7
feat(feishu): add reply context handling for messages and improve content fetching
2026-04-12 13:31:55 +08:00
fb0a9e06aa
feat(agent): add loop detection and result truncation for tool calls
2026-04-12 13:18:16 +08:00
3d72f3dfa8
feat(feishu): enhance message sending with dynamic format detection and support for interactive cards
2026-04-12 11:38:31 +08:00
394b5fdd6a
feat:1、agentloop支持多轮工具调用
...
2、并发工具调用
3、可观测性改进。
2026-04-12 11:02:48 +08:00
862eb1115a
Revert "feat(agent): add parallel tool execution with concurrency-safe batching"
...
This reverts commit 0c0d0c14436a230ca34c0cd9647c8fc14f62d7cc.
2026-04-12 09:54:38 +08:00
0c0d0c1443
feat(agent): add parallel tool execution with concurrency-safe batching
...
Implement parallel tool execution in AgentLoop, following the approach
used in Nanobot (_partition_tool_batches) and Zeroclaw (parallel_tools).
Key changes:
- partition_tool_batches(): group tool calls into batches based on
concurrency_safe flag. Safe tools run in parallel via join_all;
exclusive tools (e.g. bash) run in their own sequential batch.
- execute_tools(): now uses batching instead of flat sequential loop.
- CalculatorTool: add read_only() -> true so it participates in
parallel batches (it has no side effects, so concurrency_safe = true).
4 unit tests added covering: mixed safe/exclusive, all-safe single
batch, all-exclusive separate batches, unknown tool defaults.
2026-04-08 12:04:03 +08:00