Skip to content

Repository files navigation

桌面智能助手 · Claude Code Desktop

把 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 同源
  • 三档权限(全局设置,也可按会话覆盖)
    • 自动安全(默认):读、编辑自动放行,执行命令时弹窗询问
    • 逐条询问:落盘和命令都询问
    • 全自动:全部直接放行(危险,自己掂量)
  • 多后端切换
    • DeepSeekDEEPSEEK_API_KEY
    • 中转站:任意 Anthropic 兼容网关,CLAUDE_RELAY_URL + CLAUDE_RELAY_TOKEN
    • Claude 官方:走本机 claude 的 OAuth 登录
    • 密钥一律存 Windows 用户环境变量,不写进本应用的配置文件
  • 流式渲染: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 start

npm install 之后如果 node_modules\electron\dist\electron.exe 不存在(国内网络常见),手动补:

$env:ELECTRON_MIRROR="https://npmmirror.com/mirrors/electron/"
node node_modules\electron\install.js

打包

npm 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 的商标。

About

Windows 桌面版 Claude Code —— Electron + Claude Agent SDK,可切换 DeepSeek / 中转站 / Claude 官方后端,单窗口画布式多卡片界面,支持语音输入、技能包与自动更新。A desktop GUI for Claude Code / Claude Agent SDK on Windows, with pluggable LLM backends.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages