把 Claude Code 装进一个 Windows 桌面窗口。 不是聊天套壳 —— 内嵌的是
@anthropic-ai/claude-agent-sdk
的完整代理能力:读写文件、执行命令、改代码、调工具、向你提问,和终端里的 claude 是同一套东西,
只是换了个能拖能拽的界面,并且后端可以换(DeepSeek / 中转站 / Claude 官方)。
English — A desktop GUI for Claude Code on Windows, built on Electron + the official Claude Agent SDK. Full agent capability (file edits, shell commands, tool calls, permission prompts), a single-window canvas where every panel is a draggable glass card, pluggable LLM backends (DeepSeek / OpenAI-compatible relay / Anthropic official), voice input & TTS, skill packs, image understanding, and self-updating from GitHub Releases. The UI is in Simplified Chinese.
一个无边框窗口 = 一块画布,每张面板是画布里可自由拖拽 / 八向缩放 / 重叠 / 折叠的玻璃卡片。 关掉窗口不销毁画布,只是收进托盘;下次打开,卡片位置原样还在。
| 卡片 | 干什么 |
|---|---|
| 对话 | 可以同时开好几张,各连各的会话,互不串台 |
| 会话列表 | 复用 Claude Code 自己的历史存储,点开即 resume |
| 设置 | 后端 / 权限 / 主题 / 项目目录 / 应用更新 |
| 技能 | 列出用户级与项目级 skills,可从内置技能包一键选装 |
| 配置向导 | 环境检测 + 密钥填写 + 语音依赖安装 + 视觉服务配置 |
| 用量 | 花了多少钱 |
| 窗口控制 / 面板菜单 | 置顶、铺满、全部折叠等 |
- 完整代理能力:Read / Edit / Bash / Glob / Grep / Task…… 与终端 Claude Code 同源
- 三档权限(全局设置,也可按会话覆盖)
自动安全(默认):读、编辑自动放行,执行命令时弹窗询问逐条询问:落盘和命令都询问全自动:全部直接放行(危险,自己掂量)
- 多后端切换
- DeepSeek:
DEEPSEEK_API_KEY - 中转站:任意 Anthropic 兼容网关,
CLAUDE_RELAY_URL+CLAUDE_RELAY_TOKEN - Claude 官方:走本机
claude的 OAuth 登录 - 密钥一律存 Windows 用户环境变量,不写进本应用的配置文件
- DeepSeek:
- 流式渲染:markdown、代码高亮、可折叠的工具调用卡片、思考过程、网关重试提示
- 语音:本地 Python 服务(
faster-whisper转写 +edge-tts朗读,127.0.0.1:5123),支持全局热键 - 图像理解:截图直接粘进输入框,自动转成文字描述喂给助手。默认走智谱 GLM-4.x V, 也可切到任意 OpenAI 兼容的视觉接口(硅基流动 / 百炼 / 自建推理服务……)
- 技能包:扫描
~/.claude/skills与项目级技能;安装版还带一份内置技能包,可勾选安装(合并覆盖,不删你已有的) - 后端隔离:给子进程一个应用独占的
CLAUDE_CONFIG_DIR,避免~/.claude.json里的env段 把切换后的后端悄悄改回去;历史与技能目录用 junction 桥接回去共享 - 自动更新:从 GitHub Releases 检查 / 下载 / 重启安装;断网或内网时可以「从本地更新包安装」,
自己下好
-setup.exe选中即可(同目录放latest.yml会顺带做 sha512 完整性校验)
到 Releases 下载 desktop-assistant-<版本>-setup.exe 安装。
装完打开 → 配置向导 → 填一个后端的密钥 → 就能用了。
安装包未做代码签名,Windows 可能弹 SmartScreen,「更多信息 → 仍要运行」。 便携版(
-portable.exe)不接收自动更新。
需要 Node ≥ 22.12。
git clone https://github.com/chadcx/claude-code-desktop.git
cd claude-code-desktop
npm install
npm startnpm install 之后如果 node_modules\electron\dist\electron.exe 不存在(国内网络常见),手动补:
$env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
node node_modules\electron\install.jsnpm run pack:win # 安装版 + 便携版 → dist/打包前置 npm run skills:bundle 会把本机 ~/.claude/skills 快照进 resources/skills/
(带明文密钥扫描闸),所以技能包是打包那台机器的快照;仓库内的 skills/ 则一定会带上。
| 环境变量 | 用途 | 不填时 |
|---|---|---|
DEEPSEEK_API_KEY |
DeepSeek 后端 | 该后端不可用 |
CLAUDE_RELAY_URL / CLAUDE_RELAY_TOKEN |
中转站后端 | 该后端不可用 |
VISION_API_KEY |
图像理解密钥(兼容旧的 ZHIPU_API_KEY) |
粘贴图片时提示去向导配置 |
VISION_BASE_URL |
自定义视觉接口(OpenAI 兼容的 /chat/completions) |
智谱默认端点 |
VISION_MODEL |
自定义视觉模型名 | 智谱四级降级链 |
全都能在配置向导里点着填,不用自己开系统设置。
main/ Electron 主进程(CommonJS)
main.js 生命周期、托盘
workspace.js WorkspaceManager:唯一窗口的显隐/置顶/多屏 + 托盘命令转发
agent-session.js SessionManager:SDK query 流式泵、权限裁决、会话上限、成本
ipc.js 全部 IPC
backend-presets.js 三后端 → 子进程 env + model
claude-home.js 应用独占 CLAUDE_CONFIG_DIR + junction 桥接
updater.js electron-updater 事件泵;update-feed.js / update-local.js 是纯函数层
vision.js 粘贴图片 → PowerShell 脚本;vision-config.js 是纯函数层
voice.js skills.js env.js settings.js usage.js
preload/preload.cjs contextBridge 白名单 API
renderer/ 原生 ESM,无打包器
workspace.js 画布宿主:卡片生命周期、拖拽、八向缩放、z 序、布局持久化
ui/chat-panel.js createChatPanel():每张对话卡片一个实例
ui/select.js 自绘下拉框(原生 <select> 留在 DOM 里当唯一事实源)
shared/ipc-channels.cjs 通道常量 + 白名单(两端共用)
skills/vision-skill/ 仓库内技能:图像理解
voice/voice_service.py 本地语音服务
smoke/ 测试脚本
几个关键实现点:
- SDK 用流式输入模式(
query({ prompt: 异步生成器实例 }))保持会话存活,多轮 = 持续推进;interrupt()只在这个模式下可用。传生成器函数会直接 "Operation aborted" - 主进程是 CommonJS,SDK 是纯 ESM → 靠 Node 22+ 的
require(esm);preload 必须是.cjs env选项是替换子进程环境,切后端前先清掉 8 个受管ANTHROPIC_*变量再按预设覆盖- 会话持久化直接复用 Claude Code 自己的存储(
listSessions/getSessionMessages/ resume),不另建数据库
npm test # 零成本:不起 Electron、不跑真实回合、不联网覆盖权限重投递、会话上限与回收、技能包安装、项目增删、热更新纯函数层、本地包校验、视觉配置解析。
端到端用 CDP 驱动真实窗口,先起应用再跑:
npx electron . --remote-debugging-port=9223
npm run smoke:workspace # 画布:卡片交互、布局持久化、干净退出
npm run smoke:wizard # 配置向导(含视觉一节)
npm run smoke:update # 应用更新一节
npm run smoke:select # 自绘下拉框
# 还有 chatflow / multichat / agents / context / retry- 只支持 Windows。托盘、全局热键、PowerShell 脚本、NSIS 安装器都是 Windows 特有的
- 安装包未签名,SmartScreen 会拦一下
- GitHub Releases 在国内下载可能很慢 —— 设置里的「更新地址」可以填镜像前缀 +
/releases/latest/download/ - 便携版收不到自动更新
- 视觉的「OpenAI 兼容」模式只保证
/chat/completions+image_url这一种形状, 用原生协议的厂商(如 Gemini)不在范围内 - 语音需要自己装 Python 依赖,向导里有一键安装
MIT,见 LICENSE。
本项目不隶属于 Anthropic,只是 Claude Agent SDK 的一个第三方 GUI。 Claude 与 Claude Code 是 Anthropic 的商标。