# ClaudeBox **Repository Path**: hrx-open-platform/ClaudeBox ## Basic Information - **Project Name**: ClaudeBox - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-23 - **Last Updated**: 2026-04-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

ClaudeBox Logo

ClaudeBox

Claude Code 原生桌面客户端

Release Downloads Platform Tauri v2 License

功能特性安装开发架构常见问题

简体中文 | English

--- ClaudeBox 将 [Claude Code](https://docs.anthropic.com/en/docs/claude-code) 封装为一个轻量级的原生桌面应用,基于 [Tauri v2](https://v2.tauri.app) 构建。它提供可视化的聊天界面,支持多项目 Claude Code 会话、交互式工具审批、文件附件、任务跟踪等功能 —— 无需离开桌面即可完成所有操作。

ClaudeBox 截图

## 功能特性 ### 核心功能 - **多会话管理** — 同时打开多个项目文件夹,每个项目拥有独立的 Claude Code 会话。绿色指示灯标识正在运行的会话。 - **流式聊天界面** — 实时消息流,支持 Markdown 渲染、语法高亮代码块和 GitHub 风格 Markdown。 - **会话恢复** — 通过 Claude 的 Session ID 自动恢复对话上下文,应用重启后无需重新发送历史消息即可继续对话。 - **持久化存储** — 所有会话数据存储在 `~/.claudebox/data/`,不受应用更新和 WebView 重置影响(首次运行自动从 localStorage 迁移)。 ### 交互式工具 - **工具审批卡片** — 以可视化卡片展示所有工具调用(Read、Write、Edit、Bash、Glob、Grep、WebFetch、WebSearch、NotebookEdit、Agent、Skill 等),支持批准/拒绝操作。 - **AskUserQuestion** — 以交互式表单呈现,包含可选选项和自定义文本输入。 - **计划模式 (ExitPlanMode)** — 显示 `.claude/plans/` 中的完整计划文件内容,供用户审阅后批准或拒绝执行。 - **Agent 子运行容器** — 嵌套的 Agent 工具调用被分组为可折叠的容器,显示进度、当前运行的工具和汇总信息。 - **扩展思考** — Claude 的思考/推理过程以可折叠区块展示,带有视觉标识。 ### 附件与图片 - **文件附件** — 通过工具栏附加代码文件和图片。文本文件内嵌展示,图片传递给 Claude 的 Read 工具处理。 - **剪贴板图片粘贴** — 支持直接从系统剪贴板粘贴图片 (Ctrl/Cmd+V)。图片保存至 `~/.claudebox/tmp/` 并自动附加。超过 24 小时的临时文件在启动时自动清理。 ### Git 集成 - **分支显示** — 当前 Git 分支显示在输入工具栏中。 - **分支切换** — 直接在应用内列出和切换本地分支,无需离开应用。 ### 网络与代理 - **系统代理自动检测** — 自动检测系统代理设置:macOS 通过 `scutil --proxy`,Windows 通过注册表。区分 HTTP 和 SOCKS5 代理。 - **动态代理轮询** — 每 30 秒检测代理变化,支持动态代理切换(如 Clash、V2Ray)。 - **自定义 API 端点** — 可配置自定义 Base URL 用于 API 代理或兼容端点。 ### 配置选项 - **模型与模式切换** — 在输入工具栏中按会话切换模型和权限模式(默认 / 自动 / 计划)。 - **模型验证** — 添加模型前通过 API 验证模型可用性。 - **工具白名单** — 按会话配置 Claude 可使用的工具(Read、Write、Edit、Glob、Grep、Bash 等)。 - **深色 & 浅色主题** — 从侧边栏一键切换深色和浅色主题。 - **国际化** — 支持英文和简体中文界面,覆盖 100+ 翻译条目。 ### 项目工具 - **文件浏览器** — 内置文件树和文件查看面板,支持语法高亮、行号显示和一键复制。 - **任务看板** — 在输入区上方展示 Claude 的 `TodoWrite` 任务进度,包含完成度追踪和进行中指示器。 - **在终端中打开** — 快捷操作:在系统终端中打开项目文件夹。 - **调试面板** — 按 `Cmd+Shift+D` 切换。显示 Rust 后端和前端的彩色日志(info、warn、error、stdin、stdout、stderr、process),支持过滤和自动滚动。 ### 更新与平台 - **自动更新** — 内置更新检查器,支持 Cloudflare Workers 代理和 GitHub Releases 回退。后台下载并显示进度,支持签名验证。 - **跨平台** — 支持 macOS(Apple Silicon + Intel)和 Windows。 ## 安装 ### Homebrew(macOS,推荐) ```bash brew tap braverior/tap brew install --cask claudebox ``` ### 下载 从 [GitHub Releases](https://github.com/braverior/ClaudeBox/releases) 下载最新版本: | 平台 | 文件 | |------|------| | macOS (Apple Silicon) | `ClaudeBox_x.x.x_aarch64.dmg` | | macOS (Intel) | `ClaudeBox_x.x.x_x64.dmg` | | Windows | `ClaudeBox_x.x.x_x64-setup.exe` | ### 前置依赖 - **Node.js** >= 18(运行 sidecar 桥接程序所需) - 全局安装 **Claude Code CLI**: ```bash npm install -g @anthropic-ai/claude-code ``` - **Anthropic API Key** — 启动应用后在设置中配置 ## 开发 ### 环境要求 - [Node.js](https://nodejs.org/) >= 18 - [Rust](https://rustup.rs/)(stable 工具链) - [Tauri v2 前置依赖](https://v2.tauri.app/start/prerequisites/) ### 启动开发 ```bash # 克隆仓库 git clone https://github.com/braverior/ClaudeBox.git cd ClaudeBox # 安装依赖 npm install # 启动开发模式(启动 Tauri + Vite 开发服务器) npx tauri dev ``` ### 构建 ```bash # 构建 sidecar 桥接 + 前端 + Tauri 应用 npm run build:sidecar && npx tauri build ``` 产物输出至 `src-tauri/target/release/bundle/`。 ### 项目结构 ``` ClaudeBox/ ├── src/ # React 前端 │ ├── components/ │ │ ├── chat/ # ChatPanel, MessageBubble, InputArea, │ │ │ # ToolCallCard, CodeBlock, FileTree, │ │ │ # FileViewer, TaskBoard │ │ ├── sidebar/ # Sidebar, SessionList, NewSessionDialog │ │ ├── settings/ # SettingsDialog │ │ └── debug/ # DebugPanel (Cmd+Shift+D) │ ├── stores/ # Zustand 状态管理 │ │ ├── chatStore.ts # 会话、消息、流式状态 │ │ ├── settingsStore.ts # 设置、主题、语言 │ │ └── taskStore.ts # 任务跟踪 │ ├── lib/ │ │ ├── claude-ipc.ts # Tauri IPC 封装(25+ 命令) │ │ ├── stream-parser.ts # 流事件类型定义 │ │ ├── storage.ts # 基于文件的持久化存储 │ │ ├── i18n.ts # 国际化 (en/zh) │ │ ├── updater.ts # 自动更新(支持多端点回退) │ │ └── utils.ts # 工具函数 │ └── index.css # Tailwind CSS v4 + 主题变量 ├── src-tauri/ # Rust 后端 │ └── src/ │ ├── claude.rs # 进程管理、IPC 命令、 │ │ # 代理检测、Git 操作 │ ├── lib.rs # Tauri 应用初始化 │ └── main.rs # 入口 ├── sidecar/ │ └── bridge.mjs # Node.js sidecar(Agent SDK 桥接) └── .github/workflows/ └── release.yml # CI:构建 macOS + Windows 发布包 ``` ## 架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ React 前端 │ │ ┌───────────┐ ┌───────────┐ ┌──────────┐ ┌──────────┐ │ │ │ ChatPanel │ │ Sidebar │ │ Settings │ │ Debug │ │ │ │ Messages │ │ Sessions │ │ Dialog │ │ Panel │ │ │ │ InputArea │ │ FileTree │ │ │ │ │ │ │ └─────┬─────┘ └───────────┘ └──────────┘ └──────────┘ │ │ │ Zustand 状态管理 (chatStore, settingsStore) │ ├────────┼───────────────────────────────────────────────────┤ │ │ Tauri IPC (invoke / listen) │ ├────────┼───────────────────────────────────────────────────┤ │ ▼ Rust 后端 (Tauri v2) │ │ ┌────────────────────────────────────────────────────┐ │ │ │ claude.rs │ │ │ │ - 启动 / 管理 Node.js sidecar 子进程 │ │ │ │ - 通过 stdin/stdout 传输 NDJSON 协议 │ │ │ │ - 向前端发送流式事件 │ │ │ │ - Shell 环境解析(PATH、API Key 等) │ │ │ │ - 系统代理检测与注入 │ │ │ │ - Git 分支操作 │ │ │ └──────────┬─────────────────────────────────────────┘ │ ├─────────────┼──────────────────────────────────────────────┤ │ ▼ Node.js Sidecar (bridge.mjs) │ │ ┌────────────────────────────────────────────────────┐ │ │ │ @anthropic-ai/claude-agent-sdk query() API │ │ │ │ - 从 stdin 接收 NDJSON 命令 │ │ │ │ - 通过 stdout 输出流式事件 │ │ │ │ - canUseTool 拦截: AskUserQuestion / ExitPlanMode │ │ │ │ - 文件附件处理 │ │ │ │ - 会话恢复支持 │ │ │ └────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` ### 通信流程 **用户发送消息:** 1. React `InputArea` 调用 `handleSend()` 2. `chatStore` 存储用户消息,设置流式状态 3. `claude-ipc.ts` 调用 Rust `send_message` 命令 4. Rust 启动 `node bridge.bundle.mjs`,通过 stdin 写入 NDJSON `start` 消息 5. Sidecar 调用 Agent SDK 的 `query()`,将结果流式输出到 stdout 6. Rust 逐行读取 stdout,向前端发送 `claude-stream` 事件 7. `chatStore.handleStreamData` 解析事件,响应式更新消息 **交互式工具审批:** 1. Sidecar 的 `canUseTool` 回调拦截 `AskUserQuestion` / `ExitPlanMode` 2. 输出带 `requestId` 的 `ask_user` / `exit_plan` 事件 3. 前端在 `ToolCallCard` 中渲染交互式 UI 4. 用户响应后,前端调用 `sendResponse` IPC 5. Rust 将 JSON 响应写入 sidecar 的 stdin 6. Sidecar 解析响应并 resolve 对应的 Promise,SDK 继续执行 ## 配置 点击侧边栏齿轮图标打开**设置**: | 设置项 | 说明 | |--------|------| | **API Key** | Anthropic API 密钥(必填) | | **Base URL** | 自定义 API 地址(可选,用于代理) | | **Models** | 可选模型列表(添加前自动验证可用性) | | **Claude CLI Path** | `claude` 二进制路径(默认自动检测) | | **Theme** | 深色 / 浅色 | | **Language** | 英文 / 中文 | 会话级设置在输入工具栏中调整: - **模型** — 选择当前会话使用的模型 - **权限模式** — 默认(手动审批)/ 自动 / 计划 - **允许的工具** — 逐个开关各工具 数据存储在 `~/.claudebox/data/`,跨应用更新持久保存。 ## 快捷键 | 快捷键 | 操作 | |--------|------| | `Enter` | 发送消息 | | `Shift+Enter` | 输入换行 | | `Cmd/Ctrl+V` | 从剪贴板粘贴图片 | | `Cmd+Shift+D` | 切换调试面板 | ## 常见问题 **Q:需要安装 Claude Code CLI 吗?** A:是的。ClaudeBox 使用 [Agent SDK](https://www.npmjs.com/package/@anthropic-ai/claude-agent-sdk),依赖 Claude Code(`@anthropic-ai/claude-code`)并要求其在系统 PATH 中可访问。 **Q:会话数据存储在哪里?** A:会话和消息持久化存储在 `~/.claudebox/data/`,独立于 WebView 存储,应用更新后不会丢失。 **Q:可以使用自定义 API 端点吗?** A:可以。在设置中配置 **Base URL** 即可指向你的代理或兼容的 API 端点。 **Q:支持系统代理吗?** A:支持。ClaudeBox 自动检测系统代理设置(HTTP/SOCKS5),并注入到 sidecar 环境中。每 30 秒轮询一次代理变化,因此切换代理工具(Clash、V2Ray 等)后会自动生效。 **Q:macOS 提示应用已损坏/无法打开?** A:在终端运行 `xattr -cr /Applications/ClaudeBox.app` 以移除隔离标记。 **Q:能否恢复之前的对话?** A:可以。ClaudeBox 自动保存 Claude 的 Session ID。在已有会话中发送新消息时,对话会自动恢复完整上下文。 ## 参与贡献 1. Fork 本仓库 2. 创建功能分支(`git checkout -b feature/my-feature`) 3. 提交更改(`git commit -m 'Add my feature'`) 4. 推送分支(`git push origin feature/my-feature`) 5. 发起 Pull Request ## 许可证 [MIT](LICENSE) ---

基于 Tauri + React + Claude Code 构建