Claude Terminal

English • Français • Español • Bahasa Indonesia • 简体中文 • Português (Brasil)

下载量 版本 平台 许可证 Electron CI 状态 贡献者 i18n 法语 i18n 西班牙语 i18n 印尼语 i18n 简体中文

一款跨平台桌面应用,用于管理你的 Claude Code 项目, 内置终端、完整的 Git 工作流、插件管理等等。

官网 • 下载 • Twitter • Buy Me a Coffee

Claude Terminal - The missing desktop app for Claude Code developers | Product Hunt

主要语言 语言数 代码体积

--- ## 📊 项目健康度 ### 贡献者 贡献者 ### 活跃度 [![提交活跃度](https://img.shields.io/github/commit-activity/m/Sterll/claude-terminal?label=commits%2F%E6%9C%88)](https://github.com/Sterll/claude-terminal/graphs/commit-activity) [![最近提交](https://img.shields.io/github/last-commit/Sterll/claude-terminal)](https://github.com/Sterll/claude-terminal/commits/main) [![Issues](https://img.shields.io/github/issues/Sterll/claude-terminal)](https://github.com/Sterll/claude-terminal/issues) [![Pull Requests](https://img.shields.io/github/issues-pr/Sterll/claude-terminal)](https://github.com/Sterll/claude-terminal/pulls) ### 国际化(i18n) | 语言 | 覆盖率 | 键数 | | --- | --- | --- | | 🇺🇸 英语(基准) | ![100%][i18n-en-badge] | 3641 / 3641 | | 🇫🇷 法语 | ![i18n fr][i18n-fr-badge] | 3641 / 3641 | | 🇪🇸 西班牙语 | ![i18n es][i18n-es-badge] | 3641 / 3641 | | 🇮🇩 印尼语 | ![i18n id][i18n-id-badge] | 3641 / 3641 | | 🇨🇳 简体中文 | ![i18n zh-CN][i18n-zh-cn-badge] | 3641 / 3641 | > 覆盖率徽章会在每次推送语言文件时自动更新。 > 详情以及新增语言的方法请见 [`.github/i18n-coverage.md`](.github/i18n-coverage.md)。 [i18n-en-badge]: https://img.shields.io/badge/i18n-100%25-brightgreen [i18n-fr-badge]: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Sterll/ec1241ea62520261790ef5a411b4b212/raw/i18n_fr.json [i18n-es-badge]: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Sterll/ec1241ea62520261790ef5a411b4b212/raw/i18n_es.json [i18n-id-badge]: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Sterll/ec1241ea62520261790ef5a411b4b212/raw/i18n_id.json [i18n-zh-cn-badge]: https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/Sterll/ec1241ea62520261790ef5a411b4b212/raw/i18n_zh-CN.json --- ## 目录 - [环境要求](#环境要求) - [安装](#安装) - [功能](#功能) - [使用](#使用) - [构建](#构建) - [测试](#测试) - [键盘快捷键](#键盘快捷键) - [架构](#架构) - [参与贡献](#参与贡献) - [安全](#安全) --- ## 环境要求 - [Node.js](https://nodejs.org/) 18+ - 已全局安装 [Claude Code](https://github.com/anthropics/claude-code) - **Windows** 10 或 11 - **macOS** 12+(Intel 或 Apple Silicon) - **Linux** Ubuntu 22.04+、Fedora 38+ 或同等版本 - Ubuntu 24.04+ 上的 AppImage 需要 `libfuse2`:`sudo apt install libfuse2` - 存储 GitHub 令牌需要 `libsecret`:`sudo apt install libsecret-1-dev gnome-keyring` ## 安装 从 [Releases](https://github.com/Sterll/claude-terminal/releases) 下载最新安装包。 > [!IMPORTANT] > **macOS 用户:** 如果提示 *"Claude Terminal is damaged and can't be opened"*,请在终端执行: > ```bash > xattr -cr /Applications/Claude\ Terminal.app > ``` > 这是因为应用尚未进行代码签名。也可以右键点击应用 → 打开。 或者从源码构建: ```bash git clone https://github.com/Sterll/claude-terminal.git cd claude-terminal npm install ``` --- ## 功能 ### 聊天界面(Claude Agent SDK) - 由 Claude Agent SDK 驱动的内置聊天界面,支持流式响应 - 关闭聊天标签页会取消尚未完成的启动并关闭其 SDK 会话;延迟执行的提示不会重新启动已关闭的标签页。 - **富 Markdown 渲染**:mermaid 图表、KaTeX 公式、语法高亮代码、文件树、看板、diff 块、HTML 预览等 - **权限卡片**:对工具调用请求选择允许、始终允许或拒绝;当触发提示的是你自己的 `permissions.ask` 规则时,卡片会指明该规则并隐藏「始终允许」,避免被一键绕过 - **计划模式**:在执行前审阅并批准或拒绝智能体的计划 - **思考块**:可展开的区块,展示 Claude 的推理过程 - **工具卡片**:可折叠卡片,详细展示工具执行情况,包含 MCP 工具刷新、反馈提交和技能提案操作 - **子智能体可视化**:对派生智能体的嵌套任务跟踪;每个子智能体的摘要会显示其 git worktree 分支以及中途的任何模型切换 - **待办小组件**:输入框上方的常驻任务列表,完成后自动消失 - **附件**:粘贴、拖放或选择 PNG/JPEG/GIF/WebP 图片(最大 20MB),以及文本文件和 PDF - **斜杠命令**:命令自动补全(/compact、/clear、/help、自定义技能) - **行内 @提及**:富文本输入框允许你在撰写区内直接输入 @提及,无需离开 - **文件回溯**:通过 SDK 的 checkpoint 机制把上下文回退到更早的文件状态,适合撤销会话中途不想要的改动 - **成本跟踪**:状态栏显示模型名称、token 数和美元成本 - **100 万上下文窗口**:为大型代码库提供扩展上下文(仅 API 模式) - **动态切换模型与思考强度**:模型选择器直接由 Claude CLI 自身的目录实时构建,新发布的模型(例如 Fable 5.1)会自动出现;可在对话中途切换模型和思考强度(low、medium、high、xhigh),无需重开会话 - **模型、强度与权限模式按对话独立**:每个标签页各自保存设置,一个对话里的选择绝不会渗入下一个。存储的值只是新标签页的默认值,只能通过各菜单中的「用于新对话」一项来更改 - **权限模式**:可在会话中途从输入区切换默认、接受编辑、计划和跳过权限 - **高级模型层**:Fable 系列的模型以紫色标注,带「Premium」徽章、标签页标记,以及新标签页继承它时的提示,因为该系列会消耗自己独立的用量额度 - **后台任务抽屉**:一个属于当前会话的可折叠抽屉,展示 Claude 正在后台运行的工作,你可以继续对话 - **制品库与文档标签页**:Claude 生成的文件和片段会保存到可复用的制品库,同时出现在每个对话独立的文档标签页中,另有专门的制品面板列出该项目已发布的全部内容 - **对话内搜索**:按 Ctrl+F 在当前对话记录中搜索 - **置顶对话**:把重要会话固定在列表顶部 - **分叉会话**:从任意消息分叉以探索其他路径;若会丢失排队中的一轮,Claude Terminal 会提示而不是直接丢弃 - **后续建议**:Claude 回复后出现与上下文相关的建议按钮,帮助推进对话 - **会话回顾**:为已完成的会话自动生成摘要 - 输入 @project 可把任意项目的 README.md 和文件树作为上下文附上 - 输入 **@tab** 分享当前终端会话,或输入 **@conversation** 引用另一个聊天线程 - 输入 **@context** 注入上下文包,或输入 **@prompt** 插入已保存的提示词模板 - **提示词增强**:发送前用 Haiku 一键由 AI 重写你的消息,让指令更清晰 - 可在一轮中途打断流式输出,标签页名称由 haiku 模型自动生成 - 上下文压缩期间显示压缩指示,让你知道何时在压缩 ### 终端 - 每个项目可开多个 Claude Code 终端,采用标签页界面 - 通过 xterm.js + WebGL 实现 GPU 加速渲染(可回退到 DOM) - 每个标签页可在终端模式和聊天模式之间切换 - 标签页拖放排序、重命名、桌面通知 - 按项目筛选终端 - 自适应就绪检测,带状态指示 - 捕获终端输出,使终端读取工具和 MCP 工具能真正返回实际运行的内容 ### 导航 - 自选浏览项目的方式:顶部的项目标签栏,或侧边经典的项目列 - 首次启动向导会询问一次,之后随时可在设置中切换 ### 文件 - 专门的文件页面展示一次会话中改动过的每个文件,并以 GitHub 风格渲染逐会话 diff - 无需离开聊天上下文即可快速审阅 Claude 的改动 - 也可以像文件页面出现之前那样,把项目树停靠在对话旁边 ### 账户 - 为每个项目绑定独立的 Claude 账户,各自拥有隔离的凭据存储 - 切换项目时无需手动切换账户,一个项目的登录也不会影响另一个 - 设置中显示各账户的用量,并在达到限额时切换账户以延续对话 ### Claude Remote Control(claude.ai 与手机端) - 把聊天会话放到 [claude.ai/code](https://claude.ai/code) 和 Claude 手机应用上,可以在手机上跟进或操控 - **按对话决定**,绝非全局:只有你在该标签页中通过底部按钮或 `/remote-control` 命令提出时,会话才会接入 - 只读镜像或完整操控,由你选择;提示词、打断和权限回应都会回到桌面端 - 终端标签页可选加 `--rc`,让 CLI 会话也一并接入 - **连接性 → claude.ai** 标签页列出每个已共享的对话,并可跳回对应标签页 - 遵守 Claude Code 托管设置中的 `disableRemoteControl` 开关,因此组织策略无法从应用内被解除 ### Claude in Chrome - 让聊天会话通过 Claude 的 Chrome 扩展来操控你的浏览器 - 为会话添加 `claude-in-chrome` MCP 服务器及其 22 个浏览器工具 - 需主动启用,并且会沿用 Claude Code 已有的原生消息宿主,而不是将其覆盖 ### 语音 - 用麦克风向聊天输入框口述消息(Groq 转写) - 逐字听写模式,并路由到当前聚焦的标签页,确保内容落到正确的对话里 - 免手操作的会话配置,可完全用语音驱动会话 - 会按你说话的方式念项目名,让语音 @提及 能正确解析 ### 项目管理 - 用拖放把项目组织进嵌套文件夹 - 为每个项目自定义颜色和 emoji 图标 - 快捷操作栏:每个项目可配置一键命令(build、test、deploy、自定义脚本……) - 内置文件浏览器,支持树状视图、多选、搜索、git 状态标识和行内重命名;右键任意文件即可作为上下文附加到当前聊天 - 模块化的项目类型系统(标准、FiveM、webapp、Python、API、Minecraft、Discord 机器人) - 每个项目独立的设置窗口 ### Git 集成 - **分支**:切换、创建、删除,本地与远程分支以树状视图呈现 - **同步**:pull(rebase)、push、merge,带冲突检测与解决 - **变更面板**:查看已暂存、未暂存和未跟踪文件,暂存/取消暂存并提交 - **提交历史**:IntelliJ 风格的提交图,SVG 渲染,按分支和作者筛选,无限滚动 - **Cherry-pick 与 revert**:从历史中执行高级提交操作 - **Worktree 管理**:创建、切换和删除 git worktree,工具栏带快速切换标记 - **Stash 管理**:保存、应用、弹出与查看 - **历史搜索**:在提交历史中做全文搜索 - **丢弃改动**:按文件快速丢弃未暂存的编辑 - **修改提交**:推送前修改最后一次提交的信息或内容 - **AI 提交信息**:通过 GitHub Models API 自动生成符合约定式提交的信息 - **Pull Request**:直接在应用内创建和查看 PR ### GitHub 集成 - OAuth Device Flow 认证(安全,无需复制粘贴令牌) - **支持 GitHub Enterprise**:可连接自建的 GitHub Enterprise 实例 - **克隆向导中的仓库搜索**:不离开应用即可按名称搜索 GitHub 仓库 - **CI/CD 状态胶囊**:在终端标题栏内联显示最新工作流运行的实时状态,并有一个按钮直接跳到失败的步骤 - 按仓库查看 CI/CD 工作流运行 - 在应用内查看、创建和评审 pull request;支持多平台(GitHub、GitLab) - 令牌通过 keytar 安全存储(Windows 凭据管理器、macOS 钥匙串、Linux libsecret) ### 控制塔 - 实时总览所有项目中处于活动状态的 Claude 智能体 - 查看每个智能体正在做什么(运行中的工具、当前状态、最近活动) - 网格视图:每个打开的会话一张卡片,按项目分组,附实时终端缩略图、模型徽章和各项目的新建会话按钮 - 筛选与排序:按项目、按状态、文本搜索,并按你最近的交互排序 - 聚焦视图:在面板内最大化任意会话,附该项目其他会话的胶片条、可编辑的会话标题,以及一键跳转到 Claude 视图 - 已结束的会话会保持高亮直到你查看过,完成的工作不会被漏掉 - 直接在面板中打断任何运行中的会话 - 无需切到聊天标签页即可回应 AskUserQuestion 提示 - 提供用于智能体监控和远程打断的 MCP 工具 ### 并行任务 - 把一个功能拆解成并行子任务,作为彼此独立的 Claude 智能体同时执行 - 每个任务在自己的 git worktree 和分支中运行,彼此隔离 - 自动模式让 Claude 决定并行任务的最佳数量 - 可折叠的任务卡片,每个任务都带 diff 查看器和终端入口 - 自动合并智能体:Claude 审阅并把已完成的分支合并回你的主分支 - 完整的运行状态持久化到磁盘,应用重启后恢复 ### 会话回放 - 浏览过往的 Claude Code 会话并逐步回放 - 时间线视图按时间顺序展示所有提示词、工具调用和响应 - 视频播放器风格的进度条,可跳到会话的任意位置 - 问答卡片突出显示一问一答的交流,便于回顾 ### 仪表盘 - 三个子视图:**总览**、**看板** 和 **时间线** - 总览:当前分支、领先/落后的提交数、最近提交、贡献者 - 代码统计:按语言的行数、文件数、提交数 - 活动终端数量 - Claude API 用量监控,自动刷新 - **项目时间线**:把应用本已保存的各类记录合并成一个按时间排序的视图——提交、Claude 会话、记录的工时、工作流运行、并行运行和制品——可按时间段和类型筛选,让「这个项目发生过什么」只用一个页面而不是六个 ### 时间跟踪 - 按项目自动检测会话(15 分钟空闲超时,睡眠/唤醒检测) - 独立的轻量存储(`timetracking.json`),带月度归档 - 按时间段查看:今天、本周、本月、自定义范围 - 统计:日均、最长连续天数、演变图表、最近会话 - 午夜滚动切换与周期性检查点 ### Hooks - 与 Claude Code CLI 的 hooks 集成,实现实时活动跟踪 - 一键安装到 `~/.claude/settings.json`(非破坏性,保留你已有的 hooks) - Hook 类型:PreToolUse、PostToolUse、Notification、SessionStart、Stop、DirectoryAdded(由 `/add-dir` 触发)等 - 事件总线,提供归一化事件用于会话、工具和子智能体跟踪 - 当 hooks 不可用时,回退到解析终端输出 ### 插件 - 从已配置的市场浏览和发现插件 - 直接在应用内安装插件(通过 Claude CLI) - 通过 GitHub URL 添加社区市场 - 分类筛选与搜索 - 查看插件详情和 README ### 技能市场 - 搜索并浏览可用的技能 - 一键安装与卸载 - **更新检查**:查看哪些已安装的技能和插件有新版本 - 查看技能的 README 和详情 - 本地缓存,浏览更快 ### 素材库 - 管理可复用的**上下文包**(文档、片段、文件内容)和**提示词模板** - 通过 @context 和 @prompt 提及,把上下文包或提示词模板直接注入聊天 - 从工具栏一键把提示词模板插入任意终端 - 使用 Agent SDK 在后台生成技能和智能体 ### 技能与智能体 - 浏览和管理 Claude Code 的技能与智能体 - 查看 SKILL.md 和智能体配置文件 - **语法高亮编辑器**:编辑技能和智能体文件,带行号和完整的 highlight.js 高亮 - 从 `~/.claude/skills`、插件和内置资源加载技能 ### MCP 服务器 - 配置、启动和停止 MCP 服务器 - 环境变量配置 - **MCP 注册表**:浏览并搜索公共 MCP 服务器注册表 ### 会话 - 按项目查看 Claude Code 会话 - 浏览带时间戳和元数据的会话历史 - 在恢复对话框中置顶会话并行内重命名 - 现代化的会话恢复弹窗,带搜索和置顶会话 - 会话显示真实的对话标题而非时间戳,并可按 id 搜索 - **把会话移到另一个项目**:迁移对话而不丢失历史 - 自定义标签页名称会被锁定,不再被自动命名悄悄覆盖 ### 记忆与全局知识 - 编辑全局、设置级和项目级的 CLAUDE.md 文件 - 为常见模式提供模板插入 - **全局知识**:跨项目的事实、约定和偏好存储,每条一个 markdown 条目,在每个会话中都可用 - 可置顶、启用/禁用和搜索条目;已启用的条目会同步到 `~/.claude/CLAUDE.md` 的标记区块中,写入前可预览该区块 - 提供 MCP 工具(`knowledge_list`、`knowledge_write`、`knowledge_search`……),让 Claude 自己读写 ### 看板 - 每个项目一块看板,支持自定义列、列间拖放和归档 - 卡片支持优先级、截止日期、标签和指派 - 筛选、搜索和按列统计 - 完整的 MCP 工具集,让 Claude 在工作时创建和移动卡片,另有 `kanban_create_card` 工作流节点 ### 错误日志 - 集中记录应用捕获的每一个错误:IPC 失败、服务错误、未处理的异常与 rejection - 按级别和领域筛选,并自动检测模式以归并重复失败 - 对某条记录进行 **AI 诊断**,并可导出用于提交 bug 报告 - `critical` 表示应用真的出了问题(未处理的异常或 rejection),而不只是有东西被记录了 - 提供 MCP 工具,让 Claude 在调试时读取日志 ### 设置 - 强调色主题(预设配色 + 自定义十六进制) - 终端字体大小(10 到 24 px),实时应用到已打开的终端 - 聊天工具卡片可按智能体和按工具自定义颜色 - 语言:英语、法语、西班牙语、印尼语和简体中文,支持自动检测 - 编辑器集成:VS Code、Cursor、WebStorm、IntelliJ IDEA - 可自定义的键盘快捷键 - 桌面通知偏好 - 关闭行为(询问、最小化到托盘或退出) - 开机自启开关 - 自动更新,带后台下载和安装横幅,随后在下次启动时显示**新功能**面板,先讲有什么变化,再给出完整的版本说明 - **Discord Rich Presence**:在 Discord 状态中显示你正在做的项目(VSCode 风格),可选择隐藏项目名以保护隐私;在设置中开关 - **遥测默认关闭且需主动开启**:只要你不在设置中打开,就不会收集任何数据,匿名与否都不会 ### 工作流自动化 - **Automations**:面向常见任务的简易无图模式——用普通表单描述 Claude 该做什么、什么时候做,不需要节点编辑器和 cron 语法,并附带六个入门预设 - Automations 可以由事件而非时间表触发:git 活动、文件变更、命令执行完毕、Claude 会话结束、Claude 回复(可加文本过滤)或打开项目——每个事件监视你为它指定的项目,与 Claude 在哪里运行无关 - 基于节点的可视化工作流编辑器,采用自研 canvas 引擎(Blueprint 风格) - **31 种节点类型**:shell、git、HTTP、Claude(提示词/智能体/技能)、条件、循环、转换、switch、子工作流、数据库、文件、项目、时间、变量、读取变量、触发器、代码(执行 JavaScript 片段)、模板(由变量拼接字符串)、终端、快捷操作、通知、Discord 通知、日志、等待、重试、错误处理、webhook、并行启动、会话回顾、看板卡片、工作区文档 - 带类型的数据引脚,节点之间有可视化的数据流 - AI 助手面板,可实时编辑图和创建节点 - 撤销/重做、复制/粘贴、对齐网格、缩略图、注释 - 运行历史,带实时循环进度和每一步的输出检查 - 工作流社区中心,用于分享和导入 - **12 种触发器类型**:手动、cron、hook、webhook、工作流之上、聊天消息、文件变更、git 事件、打开项目、终端退出码、Claude 会话开始、Claude 会话结束 - 提供 MCP 工具,可从 Claude Code 完整操控工作流 ### 连接性(远程与云端) - 统一的**连接性**标签页,把本地远程访问和云同步合并到一处 - 自建的 Docker 中继服务器,用于远程访问项目 - 项目上传与自动同步,带文件监视和冲突解决 - **按实体的同步开关**:精确选择要同步的内容(项目、设置、技能、智能体、MCP 配置、快捷键、记忆、hooks、归档) - **从云端恢复会话**:从另一台机器接着做任意会话 - **跨机器通知**:云端会话结束时在你的桌面收到提醒 - 在云端运行的无界面 Claude 会话 - diff 弹窗,用于比较本地与云端文件 - 用户资料与会话管理 - 自动化安装脚本,包含 Docker、反向代理和 SSL 配置 ### 远程 SSH 项目 - 通过 SSH 打开位于另一台机器上的项目,类似 IntelliJ Gateway:应用仍是界面,而终端、Claude 聊天、git 和文件都在主机上运行 - 使用系统自带的 OpenSSH 客户端,因此 `~/.ssh/config`、密钥、`ssh-agent`、ProxyJump 和代理转发的行为与在终端中完全一致。应用不保存任何密码或密钥:密码在 OpenSSH 自己的提示中输入,从不保存 - **打开远程项目**:选择已保存的主机配置,浏览其目录,然后打开、创建文件夹,执行 `git init` 或将仓库克隆到其中 - 每个远程项目都带有主机徽章,显示连接状态。连接中断后会自动重连,终端和聊天标签页会从中断处继续(启用 tmux 时在 tmux 中继续) - Claude Code 在主机上运行(需要在主机上安装,未安装时应用会提示),会话历史从主机读取 - Git 面板、仪表板、文件浏览器、文件界面、文件标签页和差异对比都在主机上工作。VS Code、Cursor 和 Windsurf 通过其 Remote-SSH 扩展打开远程文件 - 主机上不安装任何东西:没有代理,没有守护进程,每个连接只需一个 `sh` 会话 - 仅在本地才有意义的功能(项目类型仪表板、并行任务、在本机运行的工作流节点、账户绑定、云端上传、在资源管理器中打开)会显示为禁用,并以提示说明原因 ### 数据库面板 - 多驱动支持:SQLite、MySQL、MariaDB、PostgreSQL、MongoDB - **Redis 浏览器**:树状的键浏览器,按类型查看值 - 分栏式数据浏览器,支持行内编辑 - SQL 查询编辑器,带语法高亮、模板和多语句执行 - 插入/删除行、搜索过滤 - 自定义数据库选择器,快速切换连接 - 连接池,带空闲连接回收 ### 工作区 - **跨项目**的知识中心:把相关项目围绕一个共享知识库归到一起,让横跨多个仓库的上下文有地方存放 - 带标签的 markdown 知识库文档,并可在整个工作区做全文搜索 - **概念链接**:记录实体之间的关系(`Web App depends-on API Service`)并以图的形式查看 - **顾问聊天**:就你的工作区提问,基于知识库内容得到回答 - **@workspace 提及**:在聊天中输入 @workspace,把知识库作为上下文注入 - 提供 MCP 工具,可从 Claude Code 读写工作区内容 ### MCP 服务器(claude-terminal) 一个统一的 MCP 服务器,由应用自动配置,把 Claude Terminal 自身暴露给 Claude Code。**23 个工具模块**,动态加载——只要往 `resources/mcp-servers/tools/` 里放一个新的 `.js` 文件就会被注册。 | 模块 | 提供给 Claude 的能力 | | --- | --- | | `projects` | 列出项目、项目信息、TODO/FIXME 扫描 | | `timetracking` | 今天、本周、按项目以及汇总统计 | | `sessions` | 列出、回放、跨项目关键词搜索、会话回顾 | | `workflow` | 创建、编辑、运行、取消、诊断、运行日志、变量 | | `automation` | 列出、查看、创建、更新、启用/禁用、删除 Automations | | `parallel` | 启动、列出、查看、取消、合并和清理并行运行 | | `kanban` | 列与卡片:添加、移动、更新、筛选、统计 | | `knowledge` | 跨项目事实:列出、读取、搜索、写入、删除 | | `workspace` | 列出、信息、读写文档、搜索、概念链接 | | `artifacts` | 列出、读取、搜索、版本、统计、删除 | | `database` | 查询、列出/描述表、完整 schema、统计、导出 | | `terminal` | 创建、列出、发送命令、读取输出、关闭 | | `tabs` | 带权限控制的标签页编排 | | `sidebar` | 用 `ui_navigate` 和 `ui_state` 驱动并读取当前显示的面板 | | `control-tower` | 列出活动智能体、远程打断其中之一 | | `errorlog` | 条目、统计、模式、导出、清空 | | `usage` | 读取并刷新 Claude 用量 | | `settings` | 读写应用设置 | | `marketplace` / `plugins` | 搜索、安装和卸载技能与插件 | | `webapp` / `fivem` / `discord` | 各项目类型专属工具 | 另外还附带一个专用的 `database-mcp-server.js`,供只需要数据库能力的场景使用。 ### WebApp 预览 - 使用 Chromium webview 的实时预览(取代 iframe) - 视觉反馈,每页支持多个标注图钉 - 响应式断点检查器 - 视觉问题自动检测扫描器 - 标尺间距测量工具 - 基于 axe-core 的无障碍审计面板 ### 远程控制(自建 PWA) - 移动端 PWA,可从手机或浏览器操控,由应用自身提供服务 - 云中继,用于在本地网络之外访问(通过自建服务器) - 实时会话监控、聊天交互和项目切换 - 6 位 PIN 码认证,配二维码 - 已完整翻译,自带 content-security-policy,且对话记录能撑过不止一轮 > [!NOTE] > 这是**自建**的远程控制,与 [Claude Remote Control](#claude-remote-controlclaudeai-与手机端) 不同,后者把会话放到 claude.ai 和 Claude 官方手机应用上。两者可任选其一,也可同时使用。 ### 侧边栏自定义 - 拖放侧边栏标签来按自己的习惯排序 - 置顶常用标签;不常用的收进「更多」溢出菜单 - 可通过弹窗自定义,也可直接拖动 ### 命令面板 - 统一的命令面板(Ctrl+P),对项目、命令和快捷操作做模糊搜索 - 智能启动器,带微光骨架加载和匹配高亮 - 不碰鼠标即可跳转到任意面板或触发任意操作 ### CLAUDE.md 自动更新 - 会话结束后,Claude 会分析对话并为你项目的 CLAUDE.md 提出相关补充 - 在 diff 风格的弹窗中审阅并接受建议,然后才会应用 ### 其他 - **会话恢复**:跨重启保存并恢复完整的工作区会话 - **文件查看器**:终端面板内置 .md 查看器、PDF 查看器和 3D 模型查看器(.glb、.gltf、.obj) - **仪表盘洞察**:项目健康徽章和提交热力图 - **文件浏览器监视**:文件系统变化时自动更新树 - **标签页右键菜单**:右键任意标签页即可执行快捷操作 - **窗口状态持久化**:记住位置、大小和最大化状态 - 首次启动向导,可选安装 hooks - 系统托盘集成,图标使用强调色 - 自定义 toast 通知,支持堆叠、点击穿透透明和操作按钮 - 全局快捷键(`Ctrl+Shift+P` / `Cmd+Shift+P` 快速选择器,`Ctrl+Shift+T` / `Cmd+Shift+T` 新建终端) - 单实例锁 - 定制 NSIS 安装程序,带品牌图(Windows)、DMG(macOS)、AppImage(Linux)、Snapcraft、Flatpak - FiveM 服务器管理(启动、集成控制台、资源扫描、资源创建向导) - Minecraft 项目类型,带 Java 插件生成器和按平台适配的启动脚本 - Web 应用管理,带框架自动检测和脚手架模板 - Python 项目检测(版本、venv、依赖、入口点) - API 项目类型,带集成的路由测试器、变量和控制台 - **Discord 机器人项目类型**:可视化 embed 和组件构建器,带实时预览 ## 使用 ```bash # 依赖只需安装一次 npm install # 构建 renderer 并运行应用 npm start # 打开 DevTools 运行 npm run start:dev # 以 watch 模式构建 renderer(开发用) npm run watch ``` > [!TIP] > 如果你修改了 `src/renderer/`、`src/project-types/` 或 `renderer.js` 下的文件,请在打包或提交 PR 前运行 `npm run build:renderer`。 ## 构建 ```bash # 为当前平台构建 npm run build # 为指定平台构建 npm run build:win # Windows(NSIS 安装程序) npm run build:mac # macOS(DMG) npm run build:linux # Linux(AppImage) ``` 安装包会生成在 `build/` 目录下。 ## 测试 ```bash # 运行测试套件(149 个 Jest 套件,jsdom) npm test # 开发期间以 watch 模式运行测试 npm run test:watch # 对 main、renderer、shared、MCP 服务器和脚本执行 ESLint npm run lint npm run lint:fix # 若 CLAUDE.md 与它所描述的目录树不一致则失败 npm run check:docs # 针对真实 Electron 应用的 Playwright 冒烟测试 npm run test:e2e ``` CI 在每次推送和每个 PR 上运行三个 job:`lint`(最快,最先失败)、`test`(Node 18 和 20, 覆盖 Windows、Linux 和 macOS)以及 `e2e`(Ubuntu,在 `xvfb-run` 下)。E2E 这个 job 是 **阻断性**的:它会打开真实应用、遍历每个侧边栏标签页,只要出现任何 renderer 控制台错误 或主进程崩溃就判定失败。 `npm run test:e2e` 特意不放进 `npm test`,因为它需要显示环境和已构建的 renderer bundle。 在本地运行还需要针对 Electron ABI 编译好原生模块(`npm run postinstall`)。 --- ## 键盘快捷键 | 快捷键 | 操作 | | --- | --- | | `Ctrl+Shift+P` | 快速项目选择器(全局) | | `Ctrl+Shift+T` | 在当前项目新建终端(全局) | | `Ctrl+Shift+W` | 新建 worktree(全局) | | `Ctrl+Shift+E` | 会话面板 | | `Ctrl+T` | 新建终端 | | `Ctrl+W` | 关闭终端 | | `Ctrl+N` | 新建项目 | | `Ctrl+E` | 显示/隐藏文件浏览器 | | `Ctrl+P` | 快速选择器 | | `Ctrl+,` | 设置 | | `Ctrl+←` / `Ctrl+→` | 切换终端(左/右) | | `Ctrl+↑` / `Ctrl+↓` | 切换项目(上/下) | | `Ctrl+F` | 在当前对话记录中搜索 | | `Escape` | 关闭对话框 | 快捷键可在设置中自定义。 --- ## 架构 Claude Terminal 是纯 CommonJS JavaScript,用 JSDoc 标注类型。没有 TypeScript,也没有 前端框架:renderer 由 esbuild 打包为带代码分割的 ESM。 ``` claude-terminal/ ├── main.js # Electron 入口、生命周期、单实例锁 ├── renderer.js # renderer 入口(打包到 dist/renderer.bundle.js) ├── index.html # 主窗口 UI ├── notification.html # 自定义 toast 通知窗口 ├── quick-picker.html # 命令面板窗口 ├── setup-wizard.html # 首次启动向导 ├── styles/ # 30 个模块化 CSS 文件,由 index.css 用 @import 汇总 ├── src/ │ ├── main/ # ── 主进程(Node.js)── │ │ ├── preload.js # 上下文桥(window.electron_api) │ │ ├── preload-quickpicker.js # 命令面板窗口的 preload │ │ ├── ipc/ # 34 个 IPC 文件,322 个 handler │ │ │ ├── index.js # 编排器,注册每一个 handler │ │ │ ├── git.ipc.js # 69 个 handler,最大的一个 │ │ │ ├── chat.ipc.js # Agent SDK 流式会话 │ │ │ ├── github.ipc.js # OAuth device flow、PR、CI 运行 │ │ │ └── ... # terminal、dialog、workflow、remote、database、 │ │ │ # accounts、knowledge、artifacts、workspace、 │ │ │ # parallel、cloud-*、errorLog、voice、chrome…… │ │ ├── services/ # 35 个服务 │ │ │ ├── ChatService.js # Claude Agent SDK 桥接 │ │ │ ├── TerminalService.js # node-pty,自适应输出批处理 │ │ │ ├── AccountManager.js # 多个 Claude 账户 │ │ │ ├── RemoteControlService.js # claude.ai / 手机端桥接 │ │ │ ├── ChromeBridgeService.js # Claude in Chrome │ │ │ ├── WorkflowService.js # + Runner、Scheduler、Storage │ │ │ ├── ParallelTaskService.js # 每个子任务一个 worktree │ │ │ ├── KnowledgeService.js # 全局知识库 │ │ │ ├── ErrorLogService.js # 集中式错误收集 │ │ │ └── ... │ │ ├── windows/ # MainWindow、QuickPicker、SetupWizard、Tray、Notification │ │ ├── utils/ # paths、git、shell、fileLock、claudeBridge、sdkCli…… │ │ └── workflow-nodes/ # 31 种节点类型,各一个 *.node.js,自动注册 │ ├── renderer/ # ── renderer 进程(浏览器)── │ │ ├── index.js # 模块加载器与初始化流程 │ │ ├── core/ # DI 容器、BaseService/Component/Panel、ApiProvider │ │ ├── state/ # 17 个可观察状态模块(基类 State.js) │ │ ├── services/ # 28 个服务 │ │ │ ├── MarkdownRenderer.js # + markdown/ 子系统(configure、streaming、 │ │ │ │ # postProcess、interactivity、blocks) │ │ │ ├── WorkflowGraphEngine.js # 自研 canvas 节点编辑器(不用 LiteGraph) │ │ │ ├── DiffRenderer.js # GitHub 风格的统一 diff │ │ │ ├── ProjectTimeline.js # 把六类记录合并成一条时间线 │ │ │ ├── VoiceCaptureService.js │ │ │ └── mention-sources/ # 可插拔的 @提及 与命令面板数据源 │ │ ├── ui/ │ │ │ ├── components/ # 18 个组件(ChatView、TerminalManager、 │ │ │ │ # FileExplorer、ProjectList、ProjectBar、Modal……) │ │ │ ├── panels/ # 25 个面板(Settings、GitChanges、ControlTower、 │ │ │ │ # ParallelTask、Workspace、Database、Kanban、 │ │ │ │ # ErrorLog、Files、Artifacts、Connectivity……) │ │ │ └── themes/ # terminal-themes.js │ │ ├── features/ # KeyboardShortcuts、QuickPicker、DragDrop │ │ ├── events/ # ClaudeEventBus + Hooks / Scraping 提供者 │ │ ├── workflow-fields/ # 13 个用于节点的自定义 UI 字段 │ │ ├── workflow-triggers/ # 12 种触发器类型(定义 + 配置器) │ │ ├── viewers/ # PDF 查看器、3D 查看器(three.js)—— ESM,按需加载 │ │ ├── i18n/locales/ # en、fr、es、id、zh-CN(各 3641 个键,保持同步) │ │ └── utils/ # dom、color、format、paths、fileIcons、syntaxHighlight │ ├── shared/ # 12 个由 main、renderer 和 MCP 服务器共用的模块 │ │ ├── artifact-store.js # 被 MCP 服务器进程原样使用 │ │ ├── model-options.js # 高级模型层的定义 │ │ ├── permission-modes.js # SDK 模式 <-> 旧的 executionMode 写法 │ │ └── simple-task.js # 把 Automation 编译成工作流图 │ └── project-types/ # 可插拔的类型系统(base-type.js + registry.js) │ ├── general/ api/ webapp/ python/ minecraft/ fivem/ discord/ │ └── ... # 每个包含:main/ 服务+ipc,renderer/ 仪表盘+向导,i18n/ ├── resources/ │ ├── mcp-servers/ # 随应用一起分发的 MCP 服务器 │ │ ├── claude-terminal-mcp.js # 统一服务器 │ │ ├── database-mcp-server.js # 仅数据库的服务器 │ │ └── tools/ # 23 个自动注册的工具模块 │ ├── bundled-skills/ # create-skill、create-agents │ └── hooks/ # hook 处理脚本,通过 HTTP 上报事件 ├── remote-ui/ # 移动端 PWA,作为 extraResources 打包 ├── tests/ # 149 个 Jest 套件 + 一个 Playwright 冒烟测试 ├── scripts/build-renderer.js # esbuild 打包脚本 └── website/ # 官网首页、更新日志、法律声明 ``` > `cloud/`(中继)和 `hub-worker/`(一个 Cloudflare Worker)是独立的包,各自带 > `package.json`。两者都不会被打包进桌面应用。 ### 边界 main 与 renderer 的分离由 ESLint 强制执行,而不只是约定: - renderer 永远拿不到 `child_process`、`fs`、`net` 或 `electron`。它只通过 `window.electron_api` 与主进程通信。**`child_process` 是刻意永不暴露的**:renderer 会渲染由模型生成的 markdown,因此一条通往进程启动的桥会把任何 HTML 注入变成代码执行。 - 五个窗口全部设置 `contextIsolation: true` 和 `nodeIntegration: false`。 - `index.html` 的 CSP 不含 `'unsafe-inline'`,所以注入到聊天里的 HTML 无法执行脚本。 所有渲染的 markdown 都会经过 `dompurify`。 如果这些规则中有一条被触发,正确的修法是新增一个 IPC handler,而不是加 `eslint-disable`。 --- ## 参与贡献 规范请见 [CONTRIBUTING.md](CONTRIBUTING.md)。 翻译方面的贡献请见[翻译(i18n)章节](CONTRIBUTING.md#translations-i18n)。 想贡献翻译,请查看我们的 [i18n 指南](.github/i18n-coverage.md)。 ## 安全 报告漏洞请见 [SECURITY.md](SECURITY.md)。 ## 许可证 [GPL-3.0](LICENSE) 有关部署要求和验证命令,请参阅[运行环境、数据保护与恢复说明](RUNTIME_RELIABILITY.md)(英文)。