# botmanager **Repository Path**: hqiu/botmanager ## Basic Information - **Project Name**: botmanager - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-08 - **Last Updated**: 2026-02-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Bot Manager 一个基于 Tauri + Vue 3 的 macOS 应用,用于管理 SSH 主机、终端和 OpenClaw 实例。 ## 功能特性 ### 已实现 - ✅ 主机管理(增删改查) - ✅ 主机配置持久化(~/.botmanager/config/hosts.json) - ✅ 标签页管理系统 - ✅ 响应式 UI(支持暗色模式) - ✅ 主机搜索和筛选 ### 开发中 - 🚧 SSH 终端功能(russh + xterm.js) - 🚧 SSH 隧道和端口转发 - 🚧 内置浏览器(WebView) - 🚧 Discord 模块和代理配置 ## 技术栈 - **前端**: Vue 3 + TypeScript + Tailwind CSS + Pinia - **后端**: Rust + Tauri 2.0 - **终端**: xterm.js - **状态管理**: Pinia - **路由**: Vue Router ## 项目结构 ``` botmgr/ ├── src/ # 前端源代码 │ ├── components/ # Vue 组件 │ ├── views/ # 页面视图 │ ├── stores/ # Pinia 状态管理 │ ├── types/ # TypeScript 类型定义 │ └── assets/ # 静态资源 ├── src-tauri/ # Rust 后端 │ └── src/ │ ├── models/ # 数据模型 │ ├── commands/ # Tauri 命令 │ ├── services/ # 业务逻辑 │ └── utils/ # 工具函数 └── dist/ # 构建输出 ``` ## 开发环境要求 - Rust 1.70+ - Node.js 18+ - Cargo - npm/yarn ## 快速开始 ### 1. 安装依赖 ```bash # 安装前端依赖 npm install # Rust 依赖会在构建时自动安装 ``` ### 2. 开发模式运行 ```bash # 方式一:使用 Tauri CLI(推荐) cargo tauri dev # 方式二:分别启动前后端 # 终端 1:启动前端 npm run dev # 终端 2:启动 Tauri cd src-tauri && cargo run ``` ### 3. 构建生产版本 ```bash # 构建前端 npm run build # 打包成 macOS .app 应用 npm run tauri build ``` 打包后的应用位置: ``` src-tauri/target/release/bundle/macos/Bot Manager.app ``` 详细的打包说明请参考 [BUILD.md](BUILD.md) ## 配置文件 应用会在用户目录下创建配置文件: ``` ~/.botmanager/ ├── config/ │ ├── hosts.json # 主机配置 │ ├── settings.json # 全局设置 │ └── tokens.json # OpenClaw Token └── data/ ├── cookies/ # Discord Cookie └── webview/ # WebView 数据 ``` ### hosts.json 示例 ```json { "hosts": [ { "id": "uuid", "name": "bot1", "ip": "203.0.113.1", "username": "ubuntu", "ssh_key_path": "/Users/xxx/.ssh/id_rsa", "tags": ["production"], "openclaw_port": 18789, "created_at": "2024-01-01T00:00:00Z" } ], "groups": [] } ``` ## 使用说明 ### 主机管理 #### 添加主机 1. 点击"➕ 新建主机"按钮 2. 填写主机信息: - **名称**:主机别名(如 bot1、server-prod) - **IP地址**:主机 IP 地址(如 203.0.113.1) - **SSH端口**:SSH 服务端口(默认 22) - **用户名**:SSH 登录用户名(如 ubuntu、root) - **SSH密钥路径**:私钥文件路径(如 ~/.ssh/id_rsa) 3. (可选)启用 SSH 隧道: - 勾选"启用 SSH 隧道" - 设置本地端口(默认 18791) - 设置远程主机(默认 127.0.0.1) - 设置远程端口(默认 18789) - 设置 OpenClaw URL(可选,用于浏览器访问) 4. 点击"添加"保存 #### 编辑主机 1. 在主机卡片上点击"✏️ 编辑"按钮 2. 修改需要更改的信息 3. 点击"保存" #### 删除主机 1. 在主机卡片上点击"🗑️ 删除"按钮 2. 确认删除 #### 搜索主机 1. 在顶部搜索框输入主机名或 IP 地址 2. 列表会实时过滤显示匹配的主机 ### 终端操作 #### 打开终端 1. 在主机卡片上点击"💻 终端"按钮 2. 应用会创建新标签页并建立 SSH 连接 3. 连接成功后会显示"✓ 已连接" 4. 如果该主机已有终端标签页,会自动切换到该标签页 #### 在终端中查找文本 1. 打开终端标签页 2. 按 `Cmd+F` 打开查找对话框 3. 输入要查找的文本 4. 使用 ↑ ↓ 按钮导航查找结果 5. 按 `Esc` 关闭查找 #### 关闭终端 1. 点击标签页上的"✕"按钮 2. 或使用快捷键 `Cmd+W` ### 浏览器操作 #### 打开浏览器 1. 在主机卡片上点击"🌐 浏览器"按钮 2. 应用会创建新标签页并打开浏览器 3. 如果该主机已有浏览器标签页,会自动切换 #### 浏览器功能 - **地址栏**:输入 URL 并按 Enter 或点击 Go 按钮导航 - **后退/前进**:点击 ← → 按钮 - **刷新**:点击 ↻ 按钮 - **查找**:按 `Cmd+F` 在页面中查找文本 #### 关闭浏览器 1. 点击标签页上的"✕"按钮 2. 或使用快捷键 `Cmd+W` ### OpenClaw 操作 #### 打开 OpenClaw 1. 在主机卡片上点击"🌐 OpenClaw"按钮 2. 应用会: - 创建 SSH 隧道(本地端口 18791+) - 在内置浏览器中打开 OpenClaw 界面 - 自动注入 Token 认证 3. 如果该主机已有 OpenClaw 标签页,会自动切换 ### Discord 操作 #### 打开 Discord 1. 点击右上角"💬 Discord"按钮 2. 在弹出对话框中输入代理地址(如 http://127.0.0.1:7890) 3. 点击"打开 Discord"按钮 #### 配置代理 1. 点击右上角"💬 Discord"按钮 2. 输入代理地址 3. 点击"✓ 启用代理"启用代理 4. 或点击"✗ 禁用代理"禁用代理 ### 标签页管理 #### 切换标签页 - 点击标签页标题切换 - 使用快捷键 `Cmd+1` 到 `Cmd+9` 快速切换 - 使用快捷键 `Cmd+[` 切换到上一个标签页 - 使用快捷键 `Cmd+0` 切换到主机列表 #### 关闭标签页 - 点击标签页上的"✕"按钮 - 使用快捷键 `Cmd+W` #### 标签页编号 - 主机列表标签页编号为 0 - 其他标签页按打开顺序编号为 1、2、3... ### 查找功能详解 #### 打开查找对话框 按 `Cmd+F` 打开查找对话框,会在右上角显示一个搜索框。 #### 查找操作 1. **输入文本**:在搜索框中输入要查找的文本 2. **查找下一个**: - 按 `Enter` 键 - 或点击 ↓ 按钮 3. **查找上一个**: - 点击 ↑ 按钮 4. **关闭查找**: - 按 `Esc` 键 - 或点击 ✕ 按钮 #### 支持的查找范围 - **终端**:✅ 在 SSH 终端的输出内容中查找(完全支持) - **主机列表**:✅ 在主机列表页面中查找(完全支持) - **浏览器**:⚠️ 有限支持(见下方说明) #### 浏览器查找的限制 由于浏览器安全限制(CORS 跨域策略),应用无法直接访问 iframe 内的网页内容进行查找。 **解决方案**:在浏览器标签页中使用浏览器的原生查找功能: - 按 `Cmd+F` 打开浏览器的原生查找框 - 或在地址栏中使用浏览器的查找功能 #### 查找提示 - 查找是实时的,输入时会自动查找 - 查找会高亮显示匹配的文本 - 使用 ↑ ↓ 按钮可以在多个匹配结果之间导航 - 对话框会显示当前标签页的查找范围提示 ### 窗口状态记忆 应用会自动记忆窗口的大小和位置: - **自动保存**:关闭应用时自动保存当前窗口的大小、位置和最大化状态 - **自动恢复**:启动应用时自动恢复到上次关闭时的窗口状态 - **存储位置**: - macOS:`~/Library/Application Support/botmanager/window_state.json` - Linux:`~/.config/botmanager/window_state.json` ## 快捷键 | 快捷键 | 功能 | |--------|------| | `Cmd+0` | 切换到主机列表 | | `Cmd+1~9` | 切换到第 N 个标签页 | | `Cmd+[` | 切换到上一个标签页 | | `Cmd+F` | 打开查找对话框(在终端或浏览器中查找文本)| | `Cmd+W` | 关闭当前标签页 | | `Cmd+Q` | 退出应用 | ### 查找功能 1. 按 `Cmd+F` 打开查找对话框 2. 输入要查找的文本 3. 按 `Enter` 或点击 ↓ 按钮查找下一个 4. 点击 ↑ 按钮查找上一个 5. 按 `Esc` 或点击 ✕ 关闭查找对话框 查找功能支持: - 终端内容查找 - 浏览器页面内容查找 - 主机列表页面查找 ## 开发计划 - [ ] 实现 SSH 终端功能 - [ ] 实现 SSH 隧道和端口转发 - [ ] 集成内置浏览器 - [ ] 实现 Discord 模块 - [ ] 添加通知系统 - [ ] 支持主机分组 - [ ] 添加连接状态监控 - [ ] 支持批量操作 ## 故障排除 ### 构建失败 如果遇到构建错误,尝试: ```bash # 清理缓存 rm -rf node_modules dist target npm install cd src-tauri && cargo clean && cd .. ``` ### 配置文件损坏 删除配置目录重新开始: ```bash rm -rf ~/.botmanager ``` ## 许可证 MIT ## 贡献 欢迎提交 Issue 和 Pull Request!