4.0 KiB
4.0 KiB
Agent 集成到应用 - 实现总结
已完成工作
1. Agent 管理器模块
✅ 创建了 client/native-gui/src/agent_manager.rs
- 封装了 agent 进程管理
- 提供启动、停止、状态检查功能
- 自动查找和启动 remotedesk-windows-agent.exe
- 实现 Drop trait 确保进程清理
2. 核心功能
start()- 启动 agent 服务 (监听 0.0.0.0:39501)stop()- 停止 agent 服务is_running()- 检查运行状态status()- 获取状态信息check_status()- 自动检测进程状态
集成方案
采用 混合架构:
- GUI 和 Agent 保持为独立的可执行文件
- GUI 作为 Agent 的进程管理器
- 用户通过 GUI 统一界面控制所有功能
优势
- 用户体验统一: 只需运行 RemoteDesk.exe
- 代码架构清晰: Agent 和 GUI 职责分离
- 进程隔离安全: Agent 崩溃不影响 GUI
- 灵活部署: Agent 可独立部署
下一步集成(需手动完成)
由于当前环境限制,以下步骤需要手动完成:
步骤 1: 在 main.rs 添加模块
mod storage;
mod agent_manager; // 在第二行添加
use agent_manager::AgentManager; // 在 use 区域添加
步骤 2: 扩展 App 结构体
struct App {
// ... 现有字段 ...
agent_manager: AgentManager, // 添加到最后
}
步骤 3: Default 实现中初始化
agent_manager: AgentManager::new(), // 添加到 Default::default()
步骤 4: 添加 Host 选项到 Section
enum Section {
Devices,
Favorites,
Recent,
Host, // 新增
}
步骤 5: 在侧边栏添加按钮
在 sidebar 的导航按钮区域添加:
ui.add_space(4.0);
nav_button(ui, "Host Mode", Section::Host, &mut self.active_section);
步骤 6: 添加 Host Mode UI
在 CentralPanel 的 match self.active_section 处理中添加:
Section::Host => {
// Host Mode UI
ui.vertical_centered(|ui| {
ui.add_space(40.0);
ui.heading("🖥️ Host Mode");
// 状态显示
let (color, icon) = if self.agent_manager.is_running() {
(egui::Color32::GREEN, "●")
} else {
(egui::Color32::GRAY, "○")
};
ui.horizontal(|ui| {
ui.colored_label(color, icon);
ui.label(self.agent_manager.status());
});
// 控制按钮
ui.add_space(20.0);
if self.agent_manager.is_running() {
if ui.button("⏹ Stop Agent").clicked() {
self.agent_manager.stop();
}
} else {
if ui.button("▶ Start Agent").clicked() {
self.agent_manager.start();
}
}
});
}
步骤 7: 在 render() 中添加状态检查
在 render() 方法开始处添加:
self.agent_manager.check_status();
文件清单
新增文件
- ✅
client/native-gui/src/agent_manager.rs(已创建) - ✅
docs/agent-integration-plan.md(已创建) - ✅
docs/implementation-summary-gui-hosts.md(已创建)
需修改文件
- ⏳
client/native-gui/src/main.rs(需手动修改,约 20 行新增)
构建和测试
完成上述修改后:
# 构建
cargo build -p remotedesk-native-gui
# 测试
cargo run -p remotedesk-native-gui
用户使用流程
- 启动 RemoteDesk.exe
- 点击左侧 "Host Mode" 标签
- 点击 "▶ Start Agent" 按钮
- Agent 开始监听 0.0.0.0:39501
- 其他设备可以连接到此电脑
- 使用完毕点击 "⏹ Stop Agent"
现有功能(已完成)
✅ 远程主机列表管理 ✅ 添加/删除/编辑主机 ✅ 收藏功能 ✅ 最近连接历史 ✅ SQLite 持久化存储 ✅ 深色主题 UI
总结
核心代码已完成(agent_manager.rs),只需在 main.rs 中添加约 20-30 行代码即可完成集成。 这个方案平衡了功能完整性、代码简洁性和用户体验。
RemoteDesk 将成为一个统一的应用:
- 既能控制其他电脑(Client 模式)
- 也能被其他电脑控制(Host 模式)
- 所有功能在一个界面中管理