From 72c888a41f0e663eab430076b27ea4ec4f344862 Mon Sep 17 00:00:00 2001 From: xiaoxixi Date: Sun, 26 Apr 2026 17:18:13 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84:=20=E6=95=B4=E5=90=88?= =?UTF-8?q?=E5=AE=A2=E6=88=B7=E7=AB=AF=E4=BB=A3=E7=A0=81=E5=88=B0=20client?= =?UTF-8?q?=20=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 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-client-refactor-design.md | 40 +++++++++++++++++++ src/cli/mod.rs | 5 --- src/{cli => client}/channel.rs | 0 src/{cli => client}/input.rs | 6 +-- src/client/mod.rs | 9 +++-- src/lib.rs | 1 - 6 files changed, 48 insertions(+), 13 deletions(-) create mode 100644 docs/plans/2026-04-26-client-refactor-design.md delete mode 100644 src/cli/mod.rs rename src/{cli => client}/channel.rs (100%) rename src/{cli => client}/input.rs (96%) diff --git a/docs/plans/2026-04-26-client-refactor-design.md b/docs/plans/2026-04-26-client-refactor-design.md new file mode 100644 index 0000000..43b5273 --- /dev/null +++ b/docs/plans/2026-04-26-client-refactor-design.md @@ -0,0 +1,40 @@ +# 客户端代码整合设计 + +## 目标 + +将分散在 `src/cli/` 和 `src/client/` 的客户端代码整合到 `src/client/` 目录。 + +## 变更 + +### 目录结构 + +``` +src/ +├── client/ # 整合后的客户端模块 +│ ├── mod.rs # 主程序入口 (run 函数) +│ ├── input.rs # InputHandler + InputCommand (从 cli/input.rs 合并) +│ └── channel.rs # CliChannel (从 cli/channel.rs 合并) +├── cli/ # 删除 +└── protocol.rs # 保留 +``` + +### 关键变更 + +| 变更 | 说明 | +|------|------| +| `InputEvent::Message(String)` | 简化为只携带文本内容,不再使用 `ChatMessage` | +| `cli` 模块删除 | 代码合并到 `client` | +| 解耦 | `client` 不再依赖 `bus::ChatMessage` | + +## 实施步骤 + +1. 创建 `src/client/input.rs` - 从 `cli/input.rs` 合并,修改 `InputEvent::Message` 为 `String` +2. 创建 `src/client/channel.rs` - 从 `cli/channel.rs` 直接复制 +3. 更新 `src/client/mod.rs` - 更新 import +4. 更新 `src/lib.rs` - 删除 `pub mod cli;` +5. 删除 `src/cli/` 目录 + +## 验证 + +- `cargo build` 通过 +- 功能保持不变 diff --git a/src/cli/mod.rs b/src/cli/mod.rs deleted file mode 100644 index e582818..0000000 --- a/src/cli/mod.rs +++ /dev/null @@ -1,5 +0,0 @@ -pub mod channel; -pub mod input; - -pub use channel::CliChannel; -pub use input::{InputCommand, InputEvent, InputHandler}; diff --git a/src/cli/channel.rs b/src/client/channel.rs similarity index 100% rename from src/cli/channel.rs rename to src/client/channel.rs diff --git a/src/cli/input.rs b/src/client/input.rs similarity index 96% rename from src/cli/input.rs rename to src/client/input.rs index d024374..6dd4aba 100644 --- a/src/cli/input.rs +++ b/src/client/input.rs @@ -1,9 +1,7 @@ -use crate::bus::ChatMessage; - use super::channel::CliChannel; pub enum InputEvent { - Message(ChatMessage), + Message(String), Command(InputCommand), } @@ -41,7 +39,7 @@ impl InputHandler { return Ok(Some(InputEvent::Command(cmd))); } - Ok(Some(InputEvent::Message(ChatMessage::user(line)))) + Ok(Some(InputEvent::Message(line))) } Ok(None) => Ok(None), Err(e) => Err(InputError::IoError(e)), diff --git a/src/client/mod.rs b/src/client/mod.rs index a3178f9..cc91313 100644 --- a/src/client/mod.rs +++ b/src/client/mod.rs @@ -1,9 +1,12 @@ pub use crate::protocol::{WsInbound, WsOutbound, serialize_inbound, serialize_outbound}; +mod channel; +mod input; + use futures_util::{SinkExt, StreamExt}; use tokio_tungstenite::{connect_async, tungstenite::Message}; -use crate::cli::{InputCommand, InputEvent, InputHandler}; +use input::{InputCommand, InputEvent, InputHandler}; fn format_session_list(sessions: &[crate::protocol::SessionSummary], current_session_id: Option<&str>) -> String { if sessions.is_empty() { @@ -181,9 +184,9 @@ pub async fn run(gateway_url: &str) -> Result<(), Box> { } continue; } - InputEvent::Message(msg) => { + InputEvent::Message(content) => { let inbound = WsInbound::UserInput { - content: msg.content, + content, channel: None, chat_id: current_session_id.clone(), sender_id: None, diff --git a/src/lib.rs b/src/lib.rs index 8f78d5a..74ea319 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,6 @@ pub mod config; pub mod providers; pub mod bus; -pub mod cli; pub mod agent; pub mod gateway; pub mod client;