Desktop application
充分利用 Claude Code Desktop:使用 Git 隔离的并行会话、拖放窗格布局、集成终端和文件编辑器、侧边聊天、计算机使用、从手机 Dispatch 会话、可视化 diff 审查、应用预览、PR 监控、连接器和企业配置。
Claude Desktop 应用有三个选项卡:Chat 用于对话,Cowork 用于 Dispatch 和更长的代理工作,Code 用于软件开发。本页是 Code 选项卡的参考。
适用于 Intel 和 Apple Silicon 的通用版本
适用于 x64 处理器
Ubuntu 和 Debian 的 apt 或 .deb
对于 Windows ARM64,请下载 ARM64 安装程序。在 Linux 上,使用 apt 安装;请参阅 Claude Desktop on Linux。
安装后,启动 Claude,登录,然后点击 Code 选项卡。有关首次会话的演练,请参阅快速开始指南。
在 Code 选项卡中,每个对话都是一个会话:它有自己的聊天历史和项目文件夹,独立于任何其他会话。侧边栏列出你的会话,让你可以并行运行多个会话。在一个会话中,你可以:
- 使用 diff 视图审查和评论更改,然后通过 CI 监控生成的 PR
- 在浏览器窗格中预览你的运行应用,同时 Claude 验证自己的更改,并在其旁边打开外部网站
- 在 iOS Simulator 窗格中观看 Claude 运行和测试你的 iOS 应用
- 整理窗格,将聊天、diff、浏览器、终端和文件编辑器并排放置
- 提出侧边问题,使用会话的上下文而不偏离主线
- 让 Claude 检查、消息或存档你的其他会话
- 连接外部工具,如 GitHub、Slack 和 Linear
- 让 Claude 打开应用和控制你的屏幕
- 在你的机器上、云中或通过 SSH 运行
有关计划的定期工作、快捷键或从手机发送任务,请参阅链接的页面和部分。如果你已经使用基于终端的 CLI,请参阅 CLI 比较了解哪些内容可以继续使用。
启动会话
在发送第一条消息之前,在提示区域配置四件事:
- 环境:选择 Claude 运行的位置。选择 Local 在您的机器上运行,选择 Cloud 使用云端会话,该会话在您关闭应用后仍会继续运行;选择 SSH 连接使用您管理的远程机器;或在 Windows 上选择 WSL 发行版。SSH 会话中的任务可以在 Desktop 断开连接时继续运行,但如果使用 Claude 账户,任务可能会在登录过期时停止。请参阅环境配置。
- 项目文件夹:选择 Claude 工作的文件夹或存储库。对于云会话,你可以添加多个存储库。
- 模型:从发送按钮旁的下拉菜单中选择一个模型。你可以在会话期间更改此设置。
- 权限模式:从模式选择器中选择 Claude 拥有多少自主权。你可以在会话期间更改此设置。
输入你的任务并按 Enter 启动。每个会话独立跟踪其自己的上下文和更改。
使用代码
为 Claude 提供正确的上下文,控制它自主执行的工作量,并审查它所做的更改。
使用提示框
输入您想让 Claude 做的事情,然后按 Enter 发送。Claude 会读取您的项目文件,进行更改,并根据您的权限模式运行命令。您可以随时重定向 Claude:点击停止按钮立即中断,或输入更正并按 Enter 发送,无需停止正在运行的操作。Claude 会在当前操作完成后立即读取更正,并在下一步之前进行调整。
提示框旁边的 + 按钮让您可以访问文件附件、skill、连接器 和插件。
接受建议的提示词
Claude 回复后,Code 选项卡可能会在空的输入框中以灰色文本显示建议的下一条提示词。Claude Code 通过一个简短的后台请求,根据您的对话生成每条建议,该请求会计入您套餐的用量限制或您的 API 费用。
- 使用建议:按 Tab 或 右箭头 将其放入输入框,根据需要进行编辑,然后按 Enter 发送。在接受建议之前按 Enter 不会发送它。
- 编写自己的提示词:直接开始输入。建议仅在输入框为空且没有附加文件时显示。
前往 Settings > Claude Code,在 Sessions 下关闭 Prompt suggestions,即可从每个会话下次启动或恢复时起停止显示建议。
向提示添加文件和上下文
提示框支持两种方式来引入外部上下文:
- @mention 文件:输入
@后跟文件名,将文件添加到对话上下文。Claude 随后可以读取和引用该文件。@mention 在云端或 WSL 会话中不可用。 - 附加文件:使用附件按钮将图像、PDF 和其他文件附加到您的提示,或直接将文件拖放到提示中。这对于共享错误的屏幕截图、设计模型或参考文档很有用。
选择权限模式
权限模式控制 Claude 在会话期间的自主程度:它是否在编辑文件、运行命令或两者之前询问。您可以随时使用发送按钮旁边的模式选择器切换权限模式。要自己批准每项更改,请切换到 Manual。
要为新的本地会话设置默认模式,请将 permissions.defaultMode 添加到您的设置文件。桌面应用读取与 CLI 相同的设置文件。您在选择器中选择的模式会被记住(按文件夹),并对该文件夹优先于 defaultMode,除了 Plan,它仅适用于当前会话。
| 模式 | 设置键 | 行为 |
|---|---|---|
| Manual | default |
Claude 在编辑文件或运行命令之前询问。您会看到 diff,可以接受或拒绝每项更改。 |
| Accept edits | acceptEdits |
Claude 自动接受文件编辑和常见的文件系统命令,如 mkdir、touch 和 mv,但在运行其他终端命令之前仍会询问。当您信任文件更改并希望更快迭代时,请使用此选项。 |
| Plan | plan |
Claude 读取文件并运行命令进行探索,然后提出计划而不编辑您的源代码。适合复杂任务,您想先审查方法。 |
| Auto | auto |
Claude 运行时不需要常规提示;在执行 shell 命令和网络请求等操作之前,后台分类器会检查它们是否与您的请求一致。当自动模式可用时出现;没有单独的设置切换。 |
| Bypass permissions | bypassPermissions |
Claude 运行时不需要权限提示,除了任何模式都不会自动批准的操作、当 Claude 在外部网站上操作时的安全分类器,或删除会话等桌面操作(但归档会话不在此列)。等同于 CLI 中的 --dangerously-skip-permissions。在 Pro 和 Max 计划上,在您的设置 → Claude Code 中启用它,在"Allow bypass permissions mode"下;在 Team 和 Enterprise 计划上没有设置切换,由组织策略控制它。仅在沙箱容器或虚拟机中使用。 |
Code 选项卡的早期版本将这些模式标记为 Ask permissions、Auto accept edits 和 Plan mode。
dontAsk 权限模式仅在 CLI 中可用。
在 Plan 中开始复杂任务,以便 Claude 在进行更改之前制定方法。一旦您批准计划,切换到 Accept edits 或 Manual 来执行它。有关此工作流的更多信息,请参阅先探索,然后计划,然后编码。
云端会话支持 Accept edits、Plan 和 Auto。Accept edits 对应于 default 模式:云端会话预先批准文件编辑,因此选择器显示 Accept edits 而不是 Manual。Bypass permissions 在云端会话中不可用,包括自托管环境中的会话。
Enterprise 管理员可以限制哪些权限模式可用。有关详细信息,请参阅企业配置。
自动模式可用性
自动模式对 Anthropic API 上的所有用户可用,需要 Claude Opus 4.6 或更高版本、Sonnet 4.6 或更高版本、Haiku 5.5,或 Fable 模型。组织管理员可以使用托管设置中的 disableAutoMode 键关闭自动模式。
在将 Desktop 路由到 Google Cloud 的 Agent Platform 的 Enterprise 部署中,自动模式也默认可用;有关支持的模型,请参阅 Bedrock、Agent Platform 或 Foundry 上的自动模式。
预览您的应用
Claude 可以启动开发服务器并在浏览器窗格中打开它以验证其更改。这适用于前端 Web 应用以及后端服务器:Claude 可以测试 API 端点、查看服务器日志,并迭代它发现的问题。在大多数情况下,Claude 在编辑项目文件后自动启动服务器。您也可以随时要求 Claude 进行预览。默认情况下,Claude 自动验证每次编辑后的更改。
浏览器窗格也可以打开项目中的静态 HTML 文件、PDF、图像和视频。在聊天中点击 HTML、PDF、图像或视频路径以在那里打开它。
在 SSH 会话中,Claude 无法在浏览器窗格中打开您的应用,因为它在那里没有该窗格的工具。要自己查看应用,请将其端口转发到您的计算机。
从浏览器窗格,您可以:
- 直接在浏览器窗格中与运行的应用交互
- 观看 Claude 自动验证其自己的更改:它拍摄屏幕截图、检查 DOM、点击元素、填充表单,并修复它发现的问题
- 从浏览器窗格标题栏中的 Dev servers 菜单启动或停止服务器,或一次停止所有服务器
- 通过浏览器窗格 ⋮ 菜单中的 Keep cookies,选择浏览器在您退出应用后是否保留 cookie,这样您就不必在开发期间重新登录
Claude 根据您的项目创建初始服务器配置。如果您的应用使用自定义开发命令,编辑 .claude/launch.json 以匹配您的设置。有关完整参考,请参阅配置预览服务器。
要清除浏览器保存的数据,请在浏览器窗格的 ⋮ 菜单中选择 Clear browsing data。要完全关闭浏览器,请在 Settings > Claude Code 中关闭 Browser tools。
浏览外部网站
浏览器窗格是一个选项卡式浏览器,因此您可以在运行的应用旁边打开文档、问题跟踪器或任何其他网站。要打开浏览器,在 macOS 上按 Cmd+Shift+B 或在 Windows 上按 Ctrl+Shift+B,或点击会话标题栏中的 Browser。您可以在窗格中登录网站,包括弹出式登录流程,例如 Google OAuth。
您第一次点击聊天中的外部链接时,会出现一个对话框,询问链接是在浏览器窗格中打开还是在您的默认浏览器中打开。要在之后更改您的选择,请使用浏览器窗格 ⋮ 菜单中的 Open links in built-in browser。在 macOS 上 Cmd 点击或在 Windows 上 Ctrl 点击会直接在您的默认浏览器中打开链接。
Claude 可以使用与验证您的应用相同的工具读取和交互外部页面,并进行两项额外的安全检查:
- 安全分类器在每个权限模式中审查 Claude 在外部页面上的写入操作,例如点击和输入。这些与自动模式使用的分类器相同,当它们标记操作时,无论模式如何,您都会收到权限提示。
- 在 Auto 和 Bypass permissions 以外的权限模式中,在 Claude 导航到新网站之前也会应用域名允许列表检查。
批准 Claude 在网站上的操作
Claude 第一次在外部网站上操作时,会出现权限卡,Claude 等待您的选择:Allow once、Always allow 或 Deny。Allow once 批准操作而不保存任何内容。Always allow 在您的设备上保存该网站的批准,您可以在设置中撤销它。每个网站都需要自己的批准,包括子域。您的本地开发服务器和项目文件不需要批准,因此自动验证继续工作而不需要提示。
即使在批准的网站上,Claude 也不会在没有您的输入的情况下购买物品、创建账户或绕过 CAPTCHA。在浏览器窗格中浏览使用与 Claude in Chrome extension 相同的安全模型。有关 Claude 如何处理敏感网站和风险操作的信息,请参阅安全使用 Chrome 中的 Claude。
在浏览器和 Chrome 扩展之间选择
浏览器窗格使用干净的浏览器配置文件,与您的个人浏览器分开,没有您保存的登录或历史记录。将其用于构建和测试您的应用以及不需要您的身份的网站。当您想让 Claude 在您的登录会话中以您的身份操作时,请改用 Claude in Chrome extension,它共享您的浏览器的登录状态。
为您的组织限制外部浏览
浏览器遵循与 Claude in Chrome 扩展相同的网站允许列表和阻止列表控制。如果您的组织已经为扩展配置了这些列表,浏览器会自动遵循它们。管理员也可以使用 browserExternalPageTools 托管设置关闭 Claude 在外部页面上的工具。禁用工具后,用户仍然可以访问外部网站;Claude 的工具无法读取或操作它们。
要完全关闭外部浏览,请将 disableBrowserExternalNavigation 托管设置设置为 true。这会阻止浏览器中的所有外部导航,包括您的组织允许列表上的网站;localhost 开发服务器和文件预览继续工作。使用 browserExternalPageTools 让用户继续浏览外部网站而不使用 Claude 的工具,使用 disableBrowserExternalNavigation 为用户和 Claude 阻止外部网站。
使用 diff 视图审查更改
Claude 对您的代码进行更改后,diff 视图让您在创建 Pull Request 之前逐个文件审查修改。
当 Claude 更改文件时,会出现一个 diff 统计指示器,显示添加和删除的行数,例如 +12 -1。点击此指示器打开 diff 查看器,它在左侧显示文件列表,在右侧显示每个文件的更改。
要对特定行进行评论,点击 diff 中的任何行以打开评论框。输入您的反馈并按 Enter 添加评论。在多行添加评论后,一次提交所有评论:
- macOS:按 Cmd+Enter
- Windows:按 Ctrl+Enter
Claude 读取您的评论并进行请求的更改,这些更改显示为您可以审查的新 diff。
审查您的代码
要让 Claude 在您提交之前审查您的更改,请在输入框中输入 /code-review。审查完成后,结果会出现在对话中。
在本地、SSH 和 WSL 会话中,结果会显示为一张按文件分组的 Code review 卡片。使用该卡片处理这些结果:
- 点击 Walk through in diff 打开 diff 视图,逐条查看结果。当前 diff 中的结果会显示在其对应的行上,您可以在那里点击 Fix this one 或忽略它。
- 点击 Apply fixes 让 Claude 修复仍未处理的结果。
在任何会话中,您也可以在输入框中要求 Claude 修复审查发现的问题。有关 /code-review 检查的内容及其接受的参数,请参阅使用 /code-review 在本地审查。
监控 Pull Request 状态
打开 Pull Request 后,CI 状态栏会出现在会话中。Claude Code 使用 GitHub CLI 轮询检查结果并显示失败。
- Auto-fix CI & address comments:启用后,Claude 会通过读取失败输出并迭代来自动尝试修复失败的 CI 检查。在本地会话中,当评论作者是仓库所有者、组织成员、协作者或 GitHub App 时,Claude 还会处理除您之外的其他人留下的新审查评论。
- Auto-merge when ready:启用后,Claude 在所有检查通过后合并 PR。合并方法是 squash。请先在您的 GitHub 仓库设置中启用自动合并;没有它,Claude 无法合并 PR。
要启用这些选项,请点击状态栏中的 CI。要在 PR 合并或关闭后自动归档会话,请在 Settings > Claude Code 中打开自动归档。
PR 监控需要在您的机器上安装并认证 GitHub CLI (gh)。如果未安装 gh,Desktop 会在您第一次尝试创建 PR 时提示您安装它。
在 SSH 会话中,请在点击 Create PR 之前在远程机器上设置好 git 和 gh,因为 Claude 会在那里推送分支并运行 gh pr create。请自行在那里安装 gh,因为 Desktop 在 SSH 会话中不会提示您安装。然后在那里检查 git push 是否可用,以及 gh auth status 是否报告您已登录。
整理工作区
Code 选项卡围绕可以以任何布局排列的窗格构建:聊天、diff、浏览器、终端、文件、计划、任务和子代理,以及 macOS 上的 iOS Simulator。通过其标题拖动窗格来重新定位它,或拖动窗格边缘来调整大小。在 macOS 上按 Cmd+\ 或在 Windows 上按 Ctrl+\ 来关闭焦点窗格。点击会话标题栏中的 Terminal、Changes 或 Browser 来打开终端、diff 或浏览器窗格。它们旁边的 ⋮ 菜单可打开更多窗格(例如 Files),并在窗口过窄无法显示这些按钮时容纳它们。
要在多个屏幕上工作,可以将 diff 或终端等窗格弹出到其自己的窗口中,完成后再停靠回来。Claude 继续在主窗口中工作。
本部分中的窗格布局、终端、文件编辑器和视图模式需要 Claude Desktop v1.2581.0 或更高版本。在 macOS 上打开 Claude → Check for Updates 或在 Windows 上打开 Help → Check for Updates 来更新。
在终端中运行命令
集成终端让您无需切换到另一个应用即可在会话旁运行命令。点击会话标题栏中的 Terminal,或在 macOS 或 Windows 上按 Ctrl+`。终端在您的会话工作目录中打开,并与 Claude 共享相同的环境,因此 npm test 或 git status 等命令看到 Claude 正在编辑的相同文件。要打开第二个终端选项卡,点击终端窗格标题中的 + 或右键点击聊天中的文件夹来选择 Open in terminal。
终端在本地和 SSH 会话中可用,但在 Windows 远程机器上存在限制。
打开和编辑文件
点击聊天或 diff 查看器中的文件路径在文件窗格中打开它。HTML、PDF、图像和视频路径改为在浏览器窗格中打开。进行现场编辑并点击 Save 来写回。如果文件自您打开它以来在磁盘上更改,窗格会警告您并让您覆盖或丢弃。点击 Discard 来恢复您的编辑,或点击窗格标题中的路径来复制绝对路径。
文件窗格在本地和 SSH 会话中可用。对于云端会话,要求 Claude 进行更改。
在其他应用中打开文件
右键点击聊天、diff 查看器或文件窗格中的任何文件路径来打开上下文菜单:
- Attach as context:将文件添加到您的下一个提示词
- Open in:在已安装的编辑器(如 VS Code、Cursor 或 Zed)中打开文件
- Show in Finder(macOS)、Show in Explorer(Windows):打开包含文件夹
- Copy path:将绝对路径复制到您的剪贴板
切换视图模式
视图模式控制聊天会话记录中显示的详细程度。要切换视图模式,请从会话标题旁的插入符号打开会话菜单并选择 Transcript view,或在 macOS 或 Windows 上按 Ctrl+O 循环切换。只有在 Claude 于您正在查看的会话中产生思考后,Thinking 模式才会出现在菜单中。
| 模式 | 显示内容 |
|---|---|
| Normal | 工具调用折叠成摘要,带有完整文本回复 |
| Thinking | 工具调用折叠成摘要,加上 Claude 的思考 |
| Verbose | Claude 采取的每个工具调用、文件读取和中间步骤,加上 Claude 的思考 |
使用 Thinking 来跟踪 Claude 的推理,工具调用仍然折叠。在调试 Claude 为什么采取特定操作时使用 Verbose。Claude Desktop 1.46388.1 之前的版本也列出了 Summary 模式,仍然设置为 Summary 的会话在您更新后会以 Normal 打开。
快捷键
在 macOS 上按 Cmd+/ 或在 Windows 上按 Ctrl+/ 来查看 Code 选项卡中可用的所有快捷键。在 Windows 上,对下面的快捷键使用 Ctrl 代替 Cmd。会话循环、终端切换和视图模式切换在每个平台上使用 Ctrl。
| 快捷键 | 操作 |
|---|---|
Cmd / |
显示快捷键 |
Cmd N |
新会话 |
Cmd W |
关闭会话 |
Ctrl Tab / Ctrl Shift Tab |
下一个或上一个会话 |
Cmd Shift ] / Cmd Shift [ |
下一个或上一个会话 |
Esc |
停止 Claude 的回复 |
Tab / Right arrow |
在空输入框中接受建议的提示词 |
Cmd Shift D |
切换 diff 窗格 |
Cmd Shift B |
切换浏览器窗格 |
Cmd Shift S |
在浏览器中选择元素 |
Ctrl ` |
切换终端窗格 |
Cmd \ |
关闭焦点窗格 |
Cmd ; |
打开侧边聊天 |
Ctrl O |
循环视图模式 |
Cmd Shift M |
打开权限模式菜单 |
Cmd Shift I |
打开模型菜单 |
Cmd Shift E |
打开工作量菜单 |
1–9 |
在打开的菜单中选择项目 |
这些快捷键适用于 Code 选项卡。在 Desktop 中,Shift+Tab 不会像在终端的交互模式中那样循环切换权限模式。
检查使用情况
点击模型选择器旁的使用环形图来查看您当前的上下文窗口使用情况和您的计划在该期间的使用情况。上下文使用是按会话的;计划使用在所有 Claude Code 使用入口上共享。
让 Claude 使用你的计算机
计算机使用让 Claude 打开你的应用、控制你的屏幕,并像你一样直接在你的机器上工作。要求 Claude 与没有 CLI 的桌面工具交互,或自动化只能通过 GUI 工作的东西。对于运行和测试 iOS 应用,Desktop 会打开专用的 iOS Simulator 窗格,而不是控制你的屏幕;该窗格无需启用计算机使用即可工作。
计算机使用是 macOS 和 Windows 上的研究预览版,需要 Pro 或 Max 计划。它在 Team 或 Enterprise 计划上不可用。Claude Desktop 应用必须运行。
计算机使用默认关闭。在设置中启用它,然后 Claude 才能控制你的屏幕。在 macOS 上,你还需要授予辅助功能和屏幕录制权限。
在 macOS 上,计算机使用也可以在后台运行:Claude 在你批准的应用中工作,同时你继续工作。
与沙箱化 Bash 工具不同,计算机使用在你的实际桌面上运行,可以访问你批准的任何内容。Claude 检查每个操作并标记来自屏幕内容的潜在提示注入,但信任边界不同。有关最佳实践,请参阅计算机使用安全指南。
何时应用计算机使用
Claude 有多种方式与应用或服务交互,计算机使用是最广泛和最慢的。它首先尝试最精确的工具:
- 如果你有一个服务的连接器,Claude 使用连接器。
- 如果任务是 shell 命令,Claude 使用 Bash。
- 如果任务是浏览器工作且你已设置Chrome 中的 Claude,Claude 使用那个。
- 如果任务是运行或测试 iOS 应用,Claude 使用 iOS Simulator 窗格,它不使用屏幕控制。
- 如果以上都不适用,Claude 使用计算机使用。
按应用访问层强化了这一点:浏览器限制为仅查看,终端和 IDE 限制为仅点击,即使计算机使用处于活跃状态,也会引导 Claude 使用专用工具。屏幕控制保留给其他工具无法到达的东西,如原生应用、硬件控制面板或没有 API 的专有工具。
启用计算机使用
计算机使用默认关闭。如果你要求 Claude 做需要它的事情而它关闭时,Claude 会告诉你如果在设置中启用计算机使用,它可以完成任务。
更新桌面应用
确保你有最新版本的 Claude Desktop。在 macOS 和 Windows 上,在 claude.com/download 下载或更新;在 Linux 上,通过你的包管理器更新(说明)。然后重启应用。
打开切换
在桌面应用中,转到设置 > 此计算机 > 系统。在计算机使用下,打开启用计算机使用。在 Windows 上,切换立即生效,设置完成。在 macOS 上,继续下一步。
如果你看不到切换,确认你在 macOS 或 Windows 上使用 Pro 或 Max 计划,然后更新并重启应用。
授予 macOS 权限
在 macOS 上,在切换生效之前授予两个系统权限:
- Accessibility:让 Claude 点击、输入和滚动
- Screen Recording:让 Claude 看到你屏幕上的内容
设置页面显示每个权限的当前状态。如果任一被拒绝,点击徽章打开相关的系统设置窗格。
应用权限
Claude 第一次需要使用应用时,会话中会出现提示。点击允许此会话或拒绝。批准持续当前会话,或在 Dispatch 生成的会话中持续 30 分钟。
提示还显示 Claude 为该应用获得的控制级别。这些层由应用类别固定,无法更改:
| 层 | Claude 可以做什么 | 适用于 |
|---|---|---|
| 仅查看 | 在屏幕截图中看到应用 | 浏览器、交易平台 |
| 仅点击 | 点击和滚动,但不能输入或使用快捷键 | 终端、IDE |
| 完全控制 | 点击、输入、拖动和使用快捷键 | 其他所有内容 |
像终端、Finder 或文件浏览器以及系统设置或设置这样具有广泛影响的应用在提示中显示额外警告,以便你知道批准它们授予什么。
设置 > 此计算机 > 系统中的计算机使用部分包含以下选项:
- 拒绝的应用:在此处添加应用以拒绝它们而不提示。Claude 可能仍然通过允许应用中的操作间接影响被拒绝的应用,但它无法直接与被拒绝的应用交互。
- Claude 完成时取消隐藏应用:当计算机使用不在后台运行时,Claude 隐藏你的其他窗口,以便它仅与批准的应用交互。当 Claude 完成时,隐藏的窗口被恢复,除非你关闭此设置。
管理会话
每个会话是一个独立的对话,拥有自己的上下文和更改。您可以并行运行多个会话、开启侧边聊天、让 Claude 查看您的其他会话并向其发送消息、将工作发送到云端,或让 Dispatch 从您的手机为您启动会话。
使用会话并行工作
点击侧边栏中的 + New session,或在 macOS 上按 Cmd+N、在 Windows 上按 Ctrl+N,即可并行处理多个任务。按 Ctrl+Tab 和 Ctrl+Shift+Tab 可在侧边栏中循环切换会话。对于 Git 仓库,选择分支名称旁边的 worktree 选项,即可使用 Git worktrees 为会话提供项目的独立隔离副本。
要同时查看两个会话,请在 macOS 上按住 Cmd 或在 Windows 上按住 Ctrl 并点击侧边栏中的会话。该会话会在第二个窗格中打开,与您已打开的会话并排显示。分屏处于活跃状态时,点击侧边栏中的另一个会话会替换当前具有焦点的窗格。在 macOS 上按 Cmd+\ 或在 Windows 上按 Ctrl+\ 可关闭具有焦点的窗格并返回单个会话。
Worktree 默认存储在 <project-root>/.claude/worktrees/ 中。您可以将其更改为自定义目录:
- 本地会话:在 Settings > Claude Code 中设置 Worktree location
- SSH 会话:在 SSH 连接上设置 Worktree folder
您还可以在 Settings > Claude Code 中设置 Branch prefix。Desktop 会将其添加到每个 worktree 分支名称的前面,这有助于让 Claude 创建的分支保持条理。
完成后要删除 worktree,请将鼠标悬停在侧边栏中的会话上并点击存档图标。要让会话在其 Pull Request 合并或关闭时自动存档,请在 Settings > Claude Code 中打开 Auto-archive after PR merge or close。自动存档仅适用于已完成运行的本地会话。
要在新 worktree 中包含被 gitignore 的文件(如 .env),请在项目根目录中创建一个 .worktreeinclude 文件。有关 worktree 会话从何处读取项目设置、hook 和 skill,请参阅 worktree 与主检出共享的内容。
会话隔离需要 Git。大多数 Mac 默认已包含 Git。在终端中运行 git --version 进行检查;如果输出了版本号,则说明 Git 已安装。如果遇到 Git 错误,请在 Cowork 选项卡中请 Claude 帮助排查您的设置。
使用侧边栏顶部的控件可按状态、项目或环境筛选会话,并按项目对会话分组。要重命名会话,请点击活跃会话顶部工具栏中的会话标题。
要检查上下文使用情况,请参阅检查使用情况。当上下文填满时,Claude 会自动总结对话并继续工作。您也可以输入 /compact 提前触发总结并释放上下文空间。有关压缩工作原理的详细信息,请参阅上下文窗口。
当 Code 会话完成任务且您当前未在查看该会话时,桌面应用会发送操作系统通知。对于属于某个项目的会话,您将收到该项目的通知。
在不偏离会话的情况下提出侧边问题
侧边聊天让您可以向 Claude 提出一个使用会话上下文的问题,但不会向主对话添加任何内容。当您想要理解一段代码、检查某个假设或探索某个想法,又不想让会话偏离方向时,可以使用它。
在 macOS 上按 Cmd+; 或在 Windows 上按 Ctrl+; 打开侧边聊天,或在输入框中输入 /btw。侧边聊天可以读取主线程中截至该时刻的所有内容。完成后,关闭侧边聊天,即可从中断处继续主会话。
侧边聊天可在本地、SSH 和 WSL 会话中使用。桌面应用不会将侧边聊天保存到磁盘,因此关闭应用后无法再返回之前的侧边聊天。
查看后台任务
任务窗格显示当前会话内正在运行的后台工作:子代理、后台 shell 命令和动态工作流。会话中有后台工作后,可通过标题栏 ⋮ 菜单中的 Background tasks 打开该窗格。
点击任意条目可在子代理窗格中查看其输出或将其停止。要查看其他会话正在做什么,请使用侧边栏,或请 Claude 为您查看。
跨会话工作
Claude 可以列出您的其他 Code 选项卡会话,读取每个会话一直在做的工作,并在它们之间发送消息。用自然语言提问即可:"哪个会话涉及了身份验证重构?"、"API 会话得出了什么结论?"或"告诉支付会话 schema 已更改"。您也可以请 Claude 重命名或存档会话。Claude 存档会话的方式与侧边栏的存档图标相同,因此可以让它清理 PR 已合并的会话。
通过此使用入口,Claude 只能看到桌面应用自身运行的会话:Code 选项卡中的本地、SSH 和 WSL 会话。Claude 看不到云端会话,也看不到您从终端 CLI 或 VS Code 扩展启动的会话,即使它们位于同一项目的 worktree 中也是如此。因此,如果打开了九个终端 worktree 和两个桌面会话,在其中一个桌面会话中回答的 Claude 只会报告另一个桌面会话。Claude 从不会列出您正在提问的那个会话。默认情况下,它可以看到最近活跃的 20 个会话,并跳过已存档的会话,除非您明确要求。跨会话消息传递则另外让 Claude 可以向您的其他 Claude Code 会话发送消息,包括终端会话。
当 Claude 通过此使用入口向另一个会话发送消息时,Claude Code 会在对方会话中将其显示为一张卡片,卡片标有发送会话的标题和返回链接,因此您始终可以知道消息来自何处。如果接收会话正在执行任务,Claude Code 会暂存该消息,Claude 会在当前工作完成后读取它。接收方的 Claude 可以回复,Claude Code 会通过此使用入口将回复传回。Claude 无法向已存档的会话发送消息,并会在消息未送达时告知您。
Claude Code 在跨会话时应用四项安全行为:
- 在 Claude 存档会话之前,您会看到一张批准卡片,但自动模式和 Bypass permissions 模式除外,在这两种模式下 Claude 可以在没有批准卡片的情况下存档会话。如需在存档前被询问,请切换到 Manual。
- 通过此使用入口,Claude 无法从无人查看的会话(例如定时任务运行)发送跨会话消息,也无法向此类会话发送消息。
- Claude Code 会根据接收会话的入站控制检查来自此使用入口的每条消息,即使接收会话本身未启用跨会话消息传递。如果您在接收会话中将
crossSessionInbound设置为refuse,Claude Code 会丢弃来自此使用入口的消息。Claude Code 会向 Claude 桌面应用报告该拒绝。在 v2.1.234 之前,对于未启用跨会话消息传递的接收会话,Claude Code 会丢弃来自此使用入口的所有消息。 - Claude Code 会引用每条传入消息并注明其来自哪个发送会话,且 Claude 在据此执行操作时仍遵循接收会话自身的权限设置。
Claude 还可以建议新会话。当它注意到值得修复但超出当前任务范围的问题时,会在聊天中以任务标签的形式提供该工作。点击该标签即可在拥有独立 worktree 的新会话中开始该工作;Claude 会继续您的当前会话而不受干扰。
在云端运行长时间运行的任务
对于大型重构、测试套件、迁移或其他长时间运行的任务,请在启动会话时选择 Cloud 而不是 Local。云端会话默认在 Anthropic 管理的基础设施上运行,即使您关闭应用或关闭计算机也会继续运行。您可以随时回来查看进度,或引导 Claude 转向不同的方向。您也可以从 claude.ai/code 或 Claude 移动应用监控云端会话。
云端会话还支持多个仓库。选择云端环境后,点击所选仓库旁边的 + 按钮即可向会话添加更多仓库。每个仓库都有自己的分支选择器。这对于跨越多个代码库的任务很有用,例如更新共享库及其使用方。
有关云端会话工作方式的更多信息,请参阅在云端使用 Claude Code。当一项工作需要许多云端会话时,请在侧边栏中选择 Projects 创建一个项目,Claude 会在一个对话中为您启动并跟踪这些会话。
SSH 会话中的任务也可以在 Desktop 断开连接时继续运行,但如果使用 Claude 账户,该任务可能会在登录过期时停止。
在另一个使用入口继续
要在其他地方继续会话,请通过会话标题旁边的下拉箭头或侧边栏中该会话所在的行打开会话菜单,然后选择 Open in:
- 选择 Cloud 可将会话作为云端会话继续,您的对话会以摘要形式带过去。在您确认之前,对话框会说明您的文件是否也会一并移动,以及云端会话就绪后此会话是否会被存档。通过 SSH 或在 WSL 中运行的会话无法以这种方式移动。
- 选择已安装的编辑器或文件管理器,可在其中打开该会话在磁盘上的文件夹。
控制哪些会话显示在您的其他设备上
本地会话在 Remote Control 将其连接后,会显示在您的其他设备上。已连接的会话会出现在 claude.ai/code 的会话列表中,以及登录了您 claude.ai 账户的设备上的 Claude 应用中。
本地会话会在您为其打开 Remote Control 时连接,或在启动时自动连接:
- 您为该会话打开它:使用该会话的 Remote Control 开关,或在其输入框中输入
/remote-control。 - 在启动时连接:当 Settings > Claude Code 中的 Connect new sessions to Remote Control 处于打开状态时,新会话会自动连接。如果您从未更改过该设置,Desktop 会遵循您的用户设置或托管设置中的
remoteControlAtStartup,其次是您组织的默认值。
要查看会话是否已连接,请查看工具栏中会话标题前的笔记本电脑图标。会话已连接或正在连接时,该图标会高亮显示。点击它可打开该会话的 Remote Control 开关。
要让会话不出现在您的其他设备上,请在所需的级别关闭 Remote Control:
- 单个会话:关闭其 Remote Control 开关。在启动时已自动连接的会话中,输入
/remote-control会保持 Remote Control 打开,并显示Remote Control is already on. This session connected automatically when it started.。点击该行上的 Turn off 即可断开连接。 - 此计算机上的新 Desktop 会话:在 Settings > Claude Code 中关闭 Connect new sessions to Remote Control。如果它已显示为关闭,请先将其打开再关闭,以便 Desktop 保存您的选择。保存后,它优先于
remoteControlAtStartup和默认值。 - 此计算机上的任何会话,包括 CLI:在
~/.claude/settings.json中将disableRemoteControl设置为true,以阻止会话连接。保存该文件时已连接的会话会保持连接,直到您为其关闭 Remote Control。
要隐藏已显示在您其他设备上的会话,请在 Desktop 中将其存档。Desktop 也会存档该会话的 Remote Control 副本,使其从这些设备上的默认会话列表中移除。要在那里查看或删除它,请参阅存档会话。
来自 Dispatch 的会话
Dispatch 是一个与 Claude 的持久对话,位于 Cowork 选项卡中。您向 Dispatch 发送任务消息,由它决定如何处理。
任务可以通过两种方式成为 Code 会话:您直接提出要求,例如"打开一个 Claude Code 会话并修复登录错误";或者 Dispatch 判断该任务属于开发工作,并自行创建一个会话。通常会路由到 Code 的任务包括修复错误、更新依赖、运行测试或创建 Pull Request。研究、文档编辑和电子表格工作则保留在 Cowork 中。
无论哪种方式,Code 会话都会出现在 Code 选项卡的侧边栏中,并带有 Dispatch 徽章。当它完成或需要您批准时,您会在手机上收到推送通知。
如果您启用了计算机使用,由 Dispatch 创建的 Code 会话也可以使用它。这些会话中的应用批准会在 30 分钟后过期并重新提示,而不是像常规 Code 会话那样在整个会话期间有效。
有关设置、配对和 Dispatch 设置,请参阅 Dispatch 帮助文章。Dispatch 需要 Pro 或 Max 计划,Team 或 Enterprise 计划不可用。
Dispatch 是您离开终端时与 Claude 协作的几种方式之一。有关与其他选项的比较,请参阅平台和集成。
扩展 Claude Code
连接外部服务、添加可重用工作流、自定义 Claude 的行为并配置预览服务器。要在一个地方管理连接器、skills 和插件,请点击侧边栏中的自定义。Cowork 标签页在桌面应用中从此自定义配置获取其 skills、插件和连接器,该配置通过你的 claude.ai 账户同步,而不是从 CLI 的 ~/.claude 目录。
Claude Code 还会在你使用同一账户登录的终端会话中加载为你的 claude.ai 账户启用的 skills 和插件。请参阅从 claude.ai 同步的 Skills 和从 claude.ai 同步的插件。
连接外部工具
对于本地和 SSH 会话,点击提示框旁的 + 按钮并选择 Connectors 来添加集成,如 Google Calendar、Slack、GitHub、Linear、Notion 等。你可以在会话之前或期间添加连接器。+ 按钮在云会话或 WSL 会话中不可用,但 routines 在 routine 创建时配置连接器。
要管理或断开连接器,请在桌面应用中转到设置 → Connectors,或从提示框中的 Connectors 菜单中选择 Manage connectors。
连接后,Claude 可以读取你的日历、发送消息、创建问题并直接与你的工具交互。你可以询问 Claude 在你的会话中配置了哪些连接器。
连接器是MCP servers,具有图形设置流程。使用它们快速与支持的服务集成。对于连接器中未列出的集成,通过设置文件手动添加 MCP servers。你也可以创建自定义连接器。
使用 skills
Skills扩展 Claude 可以做的事情。Claude 在相关时自动加载它们,或者你可以直接调用一个:在提示框中输入 / 或点击 + 按钮并选择 Slash commands 来浏览可用的内容。这包括内置命令、你的自定义 skills、来自你的代码库的项目 skills 以及来自任何已安装插件的 skills。选择一个,它会在输入字段中突出显示。在它之后输入你的任务并照常发送。
您可以在 Claude 工作时发送命令,就像发送任何其他消息一样,会话会在该轮次完成后返回空闲状态。
本地会话从 ~/.claude/skills/ 加载你的个人 skills。SSH 会话从远程主机的主目录读取 ~/.claude/skills/,而不是从你的机器。
本地和云会话也加载为你的 claude.ai 账户启用的 skills,除非你的组织设置了 disableSideloadFlags。云会话改为加载它们,而不是 ~/.claude/skills/,如Cowork 和云会话中的 Skills所述。
安装插件
Plugins是可重用的包,为 Claude Code 添加 skills、agents、hooks、MCP servers 和 LSP 配置。你可以从桌面应用安装插件,而无需使用终端。
对于本地和 SSH 会话,点击提示框旁的 + 按钮并选择 Plugins 来查看你已安装的插件及其 skills。要添加插件,从子菜单中选择 Add plugin 来打开插件浏览器,它显示来自你配置的市场的可用插件,包括官方 Anthropic 市场。选择 Manage plugins 来启用、禁用或卸载插件。
你可以将插件限定到你的用户账户、特定项目或仅本地。如果你的组织集中管理插件,这些插件在桌面会话中的可用方式与在 CLI 中相同,除了桌面应用在 disableSideloadFlags 下扣留的那些。
插件浏览器在云会话中不可用,从桌面应用安装的插件不可用于云会话。云会话也不会安装存储库的 .claude/settings.json 声明的插件,如从你的设置中继承的内容所述。插件在 WSL 会话中不可用。有关完整的插件参考,包括创建你自己的插件,请参阅 plugins。
配置预览服务器
Claude 自动检测你的开发服务器设置并将配置存储在启动会话时选择的文件夹根目录的 .claude/launch.json 中。Preview 使用此文件夹作为其工作目录,因此如果你选择了父文件夹,具有自己开发服务器的子文件夹将不会自动检测。要使用子文件夹的服务器,要么直接在该文件夹中启动会话,要么手动添加配置。
要自定义服务器的启动方式,例如使用 yarn dev 而不是 npm run dev,或更改端口,请编辑 .claude/launch.json。该文件支持带注释的 JSON。
{
"version": "0.0.1",
"configurations": [
{
"name": "my-app",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "dev"],
"port": 3000
}
]
}
你可以定义多个配置来从同一项目运行不同的服务器,例如前端和 API。请参阅下面的示例。
自动验证更改
启用 autoVerify 时,Claude 在编辑文件后自动验证代码更改。它拍摄屏幕截图、检查错误并在完成响应之前确认更改有效。
自动验证默认开启。可通过在 .claude/launch.json 中添加 "autoVerify": false 来按项目禁用它,或在 Browser 窗格的 ⋮ 菜单中关闭 Auto-verify changes。
{
"version": "0.0.1",
"autoVerify": false,
"configurations": [
{
"name": "my-app",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "dev"],
"port": 3000
}
]
}
禁用时,预览工具仍然可用,你可以随时要求 Claude 验证。自动验证使其在每次编辑后自动进行。
配置字段
configurations 数组中的每个条目接受以下字段:
| 字段 | 类型 | 描述 |
|---|---|---|
name |
string | 此服务器的唯一标识符 |
runtimeExecutable |
string | 要运行的命令,例如 npm、yarn 或 node |
runtimeArgs |
string[] | 传递给 runtimeExecutable 的参数,例如 ["run", "dev"] |
port |
number | 你的服务器监听的端口。默认为 3000 |
cwd |
string | 相对于你的项目根目录的工作目录。默认为项目根目录。使用 ${workspaceFolder} 显式引用项目根目录 |
env |
object | 其他环境变量作为键值对,例如 { "NODE_ENV": "development" }。不要在这里放置秘密,因为此文件被提交到你的存储库。要将秘密传递给你的开发服务器,在本地环境编辑器中设置它们。 |
autoPort |
boolean | 如何处理端口冲突。请参阅端口冲突 |
program |
string | 用 node 运行的脚本。请参阅何时使用 program vs runtimeExecutable |
args |
string[] | 传递给 program 的参数。仅在设置 program 时使用 |
url |
string | preview 打开的地址,而不是 http://localhost:<port>。请参阅在特定 URL 打开 preview |
何时使用 `program` vs `runtimeExecutable`
使用 runtimeExecutable 和 runtimeArgs 通过包管理器启动开发服务器。例如,"runtimeExecutable": "npm" 和 "runtimeArgs": ["run", "dev"] 运行 npm run dev。
当你有一个想用 node 直接运行的独立脚本时,使用 program。例如,"program": "server.js" 运行 node server.js。使用 args 传递其他标志。
在特定 URL 打开 preview
默认情况下,preview 打开 http://localhost:<port>。当你的服务器需要不同的地址时,设置 url。常见情况是需要本地 HTTPS 的服务器、使用 *.localhost 子域的应用以及通过重定向登录你的应用。
{
"version": "0.0.1",
"configurations": [
{
"name": "my-app",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "dev"],
"port": 8443,
"url": "https://localhost:8443"
}
]
}
Localhost 地址直接打开,完全像默认端口地址一样。这包括 localhost、任何 *.localhost 子域、127.0.0.1 和 ::1。出于安全考虑,localhost url 必须仅是你的服务器的源 — 没有路径或查询,端口必须与条目的端口匹配。要显示特定页面,在 preview 打开后要求 Claude 导航到那里。带有路径、查询或不匹配端口的 localhost url 被报告为配置错误,该错误命名 url 并显示修复。
对于任何其他地址,Desktop 在 preview 首次打开它时要求你的许可,就像你在 preview 中浏览到新网站时一样。外部地址可能包括路径。选择始终允许以在将来跳过该网站的提示。限制 preview 中外部网站的组织策略仍然适用。
要预览你已经自己运行的服务器,设置 url 而不设置命令。Claude 将 preview 附加到你的运行服务器,而不是启动一个:
{
"version": "0.0.1",
"configurations": [
{
"name": "my-app",
"url": "https://app.localhost:3000"
}
]
}
url 必须是 http 或 https,且不能包含用户名或密码。
端口冲突
autoPort 字段控制当你的首选端口已在使用时会发生什么:
true:Claude 自动查找并使用空闲端口。适合大多数开发服务器。false:Claude 失败并出现错误。当你的服务器必须使用特定端口时使用此选项,例如 OAuth 回调或 CORS 允许列表。- 未设置(默认):您的服务器会获得下一个空闲端口,与
true相同,但下面这一种情况除外。在 Claude Desktop v2.37337.0 之前,Claude 会改为询问服务器是否需要该确切端口,然后将您的回答保存在launch.json中。
如果您的首选端口已被占用且未设置 autoPort,当以下条件全部成立时,您的服务器将保持停止状态:
- 您通过
npm、yarn、pnpm或bun脚本启动服务器。 - 您的首选端口在该脚本中是硬编码的,或者 Claude 无法检查该脚本。
- 您没有在
runtimeArgs中传递端口。
在这种情况下,请释放该端口、删除硬编码的值,或更改 port 以与脚本保持一致。改为设置 "autoPort": true 仅对读取 PORT 的脚本有效。
请让您的服务器从 PORT 环境变量读取其端口,该变量包含所分配的端口。当 Claude 将您的服务器移到其他端口时,它还会相应地重写 runtimeArgs 中的 --port 或 -p 值。
示例
这些配置显示了不同项目类型的常见设置:
此配置使用 Yarn 在端口 3000 上运行 Next.js 应用:
{
"version": "0.0.1",
"configurations": [
{
"name": "web",
"runtimeExecutable": "yarn",
"runtimeArgs": ["dev"],
"port": 3000
}
]
}
对于具有前端和 API 服务器的 monorepo,定义多个配置。前端使用 autoPort: true,因此如果 3000 被占用,它会选择空闲端口,而 API 服务器需要端口 8080:
{
"version": "0.0.1",
"configurations": [
{
"name": "frontend",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "dev"],
"cwd": "apps/web",
"port": 3000,
"autoPort": true
},
{
"name": "api",
"runtimeExecutable": "npm",
"runtimeArgs": ["run", "start"],
"cwd": "server",
"port": 8080,
"env": { "NODE_ENV": "development" },
"autoPort": false
}
]
}
要直接运行 Node.js 脚本而不是使用包管理器命令,使用 program 字段:
{
"version": "0.0.1",
"configurations": [
{
"name": "server",
"program": "server.js",
"args": ["--verbose"],
"port": 4000
}
]
}
环境配置
您在启动会话时选择的环境决定了 Claude 在何处执行以及您如何连接:
- Local:在您的计算机上运行,可直接访问您的文件
- Cloud:默认在 Anthropic 托管的基础设施上运行。即使您关闭应用,会话也会继续。
- SSH:在您通过 SSH 连接的远程计算机上运行,例如您自己的服务器、云虚拟机或开发容器。正在运行的任务可以在 Desktop 断开连接时继续运行,但使用 Claude 账户时,任务可能会在其登录过期时停止。
- WSL(Windows):在您计算机上的 WSL 2 发行版内运行,使用该发行版的 Linux 工具链和原生路径
本地会话
桌面应用并不总是继承您完整的 shell 环境。在 macOS 上,当您从 Dock 或 Finder 启动应用时,它会读取您的 shell profile 文件(例如 ~/.zshrc 或 ~/.bashrc),为 Claude Code 提供 PATH 和一组固定的 Claude Code 变量,但不包括您在其中导出的其他变量。在 Windows 上,应用会继承用户和系统环境变量,但不会读取 PowerShell profile 文件。
若要在任何平台上为本地会话和开发服务器设置环境变量,请打开输入框中的环境下拉菜单,将鼠标悬停在 Local 上,然后点击齿轮图标以打开本地环境编辑器。您在此处保存的变量会加密存储在您的计算机上,并应用于您启动的每个本地会话和预览服务器。您也可以将变量添加到 ~/.claude/settings.json 文件中的 env 键,但这些变量只会传递给 Claude 会话,不会传递给开发服务器。有关受支持变量的完整列表,请参阅环境变量。
扩展思考默认启用,这可以提升复杂推理任务的表现,但会消耗额外的 token。在 Anthropic API 上,在本地环境编辑器中将 MAX_THINKING_TOKENS 设置为 0 即可关闭思考;这对 Opus 5.5、Sonnet 5.5、Haiku 5.5 或 Fable 模型无效,这些模型始终使用扩展思考。在 Anthropic API 上关闭思考后,对于 Claude Code 已知不接受该组合的模型(例如 Opus 5),Claude Code 会发送 effort high,而不是更高的级别。
在支持自适应推理的模型上,Claude Code 会忽略正值 MAX_THINKING_TOKENS 中的具体数值,因为自适应推理会改为控制思考深度。在 Opus 4.6 和 Sonnet 4.6 上,将 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING 设置为 1 可使用固定的思考预算;Fable 模型、Sonnet 5 及更高版本、Haiku 5.5 以及 Opus 4.7 及更高版本始终使用自适应推理,没有固定预算模式。
托管设备上的本地会话
您的管理员可以通过 disableDesktopLocalSessions 托管设置关闭本地会话。关闭后,Local 仍会显示在环境下拉菜单中,但呈灰色且无法选择,并带有说明您的组织已将其关闭的工具提示;在 Windows 上,WSL 条目(其在托管设备上的可用性另行管控)也会以同样方式呈灰色。如果已配置 SSH 连接,新会话默认使用第一个 SSH 连接;如果您尝试继续现有的本地会话,Desktop 会显示一条消息,说明本设备上无法使用本地会话。请改为选择 SSH 或云端环境,或联系您的 IT 团队。
云端会话
即使您关闭应用,云端会话也会在后台继续运行。用量计入您的订阅套餐限额,不单独收取计算费用。
您可以创建具有不同网络访问级别和环境变量的自定义云端环境。若要管理这些环境,请打开输入框中的环境下拉菜单并选择 Cloud:
- 添加环境:选择 Add cloud environment
- 编辑或归档您自己的某个环境:将鼠标悬停在该环境上,然后点击齿轮图标
有关配置网络访问和环境变量的详细信息,请参阅配置云端环境。
SSH 会话
SSH 会话让您可以在远程计算机上运行 Claude Code,同时使用桌面应用作为界面。这对于处理位于云虚拟机、开发容器或具有特定硬件或依赖的服务器上的代码库非常有用。
如果您将 Desktop 与第三方提供商配合使用,SSH 会话需要单独设置。请参阅 3P 上 Claude Desktop 中的 SSH 远程会话。
若要添加 SSH 连接,请在开始会话之前打开输入框中的环境下拉菜单,然后选择 SSH > Add SSH connection… 并填写连接详细信息:
- Name:此连接的友好标签
- SSH host:
user@hostname或在~/.ssh/config中定义的主机 - SSH port:留空时默认为 22,或使用您 SSH 配置中的端口
- SSH key (optional):您的私钥路径,例如
~/.ssh/id_ed25519。留空则使用您的 SSH 配置或 SSH agent。 - Worktree folder:远程计算机上的一个文件夹(例如
~/worktrees),新会话会在其中创建 worktree。留空则使用远程计算机的默认位置。
添加后,该连接会显示在环境下拉菜单的 SSH 下。选择它即可在该计算机上启动会话。Claude 在远程计算机上运行,可以访问其文件和工具。
远程计算机可以运行 Linux、macOS 或 Windows。首次连接时,Desktop 会自动在远程计算机上安装 Claude Code。连接后,SSH 会话支持权限模式、连接器、插件和 MCP 服务器。
SSH 会话的远程计算机要求
Linux 或 macOS 远程计算机需要受支持的处理器、带 SFTP 的 SSH 服务器、未以 noexec 挂载的安装文件夹、可正常工作的 shell 以及网络访问。请在连接之前检查每项要求,或在登录后连接失败时进行检查:
- 系统:x86_64 或 arm64 处理器。该计算机还必须满足 Claude Code 的系统要求。在 Linux 上,Claude Code 需要 glibc 2.17 或更高版本,或 musl。若要查看该计算机使用的是哪一种,请在其上运行
ldd --version。在 Alpine Linux 等基于 musl 的发行版上,还需安装 Claude Code 所需的软件包。 - SFTP:SSH 服务器必须提供 SFTP 子系统,该子系统通过其
sshd_config中的Subsystem sftp行启用。若要检查,请在您计算机上的终端中使用sftp连接到相同的主机和端口。正常工作的服务器会显示sftp>提示符。 - 每个连接的会话数:macOS 和 Linux 上的 Desktop 会在一个 SSH 连接上打开多个会话。如果服务器的
sshd_config设置了MaxSessions 1,请将其调高,例如调到 OpenSSH 的默认值 10。 - 安装文件夹:Desktop 会在您主目录下的
~/.claude/remote/中安装一个辅助程序和 Claude Code。它从该位置运行这些程序,因此该文件夹不能位于以noexec挂载的文件系统上。请在每个连接用户的主目录中预留约 1 GB 的磁盘空间。有关该文件夹包含的内容,请参阅远程计算机上的文件和进程。 - Shell:远程计算机上为您的账户设置的 shell 必须能运行通过 SSH 发送的命令,Bash、Zsh 和
sh均可 - 网络:Claude Code 在远程计算机上运行,并从那里发出网络请求,因此该计算机需要具备 Claude Code 所需的网络访问。如果该计算机无法下载 Claude Code,Desktop 会在您的计算机上下载并上传它。Claude Code 的其他请求仍从远程计算机发出。在 Linux 远程计算机上,如果这些请求需要代理,请为 SSH 会话设置代理。
为 SSH 会话设置代理或 CA 证书
如果 Linux 远程计算机通过代理访问互联网或需要 CA 证书,请在该计算机上的 ~/.claude/settings.json 中的 env 下添加代理和 CA 变量。即使您已在该计算机上的 ~/.profile、~/.bash_profile、~/.zprofile 或 ~/.zshrc 中导出它们,也要添加。
SSH 会话不会从这些文件中获取它们,即使在该计算机终端中运行的 claude 可以获取。此时会话可能会挂起,或显示 The connection from … to the API failed 或 Authentication failed,且重新登录也无济于事。
添加变量
对于 CA 文件,请使用 NODE_EXTRA_CA_CERTS,因为 Claude Code 不信任 ~/.claude/settings.json 中 SSL_CERT_FILE 指定的 CA。此示例设置了代理和 CA 文件:
{
"env": {
"HTTPS_PROXY": "http://proxy.example.com:8080",
"NODE_EXTRA_CA_CERTS": "/etc/ssl/certs/example-ca.pem"
}
}
重新发送您的消息
请重新发送您的消息,因为您在该文件中添加或更改的变量会在几秒钟内生效。如果仍然失败,请启动新会话。
查找远程计算机上其他位置设置的代理或 CA 变量
请检查 Linux 远程计算机是否在其他位置设置了代理或 CA 变量,因为会话会使用该值,并忽略任何设置文件中的值:
列出远程计算机设置的变量
在您计算机上的终端中运行 ssh devbox env,并替换为您自己的主机。
在设置变量的位置更改它
如果列表中有该变量,请在设置它的文件中进行更改,例如远程计算机上的 ~/.zshenv、/etc/environment 或 ~/.bashrc。
让会话获取新值
重启远程计算机,或退出 Desktop 并结束辅助程序的进程,如移除辅助程序的前两个步骤所述。请在没有任务运行时执行此操作,因为任一方式都会中断 Claude 的工作。
在 macOS 和 Linux 上使用您的 SSH 配置
在 macOS 和 Linux 上,Desktop 通过在您的计算机上运行 OpenSSH 客户端进行连接,因此会使用您的 ~/.ssh/config。通过 OpenSSH 客户端连接需要 Claude Desktop v1.37937.0 或更高版本。在 SSH host 字段中输入该文件中的 Host 名称,即可使用其条目中的设置,例如 HostName、User、IdentityFile、CertificateFile、ProxyJump 和 ProxyCommand。
添加连接之前,请在您计算机上的终端中检查客户端和条目:
- 客户端版本:运行
ssh -V。客户端必须是 OpenSSH 7.6 或更高版本。 - 条目:使用
Host名称运行ssh,例如ssh devbox。如果失败,请先修复该条目。
您可以将 SSH port 和 SSH key (optional) 字段留空。如果填写其中之一,Desktop 会将其与条目一起使用:
- SSH port:此处的值会覆盖条目的
Port - SSH key (optional):除条目的
IdentityFile和您 SSH agent 中的密钥外,Desktop 还会提供您选择的密钥文件
访问跳板机后面的计算机
若要访问位于跳板机(也称为堡垒机)后面的计算机,请在条目中设置 ProxyJump 或 ProxyCommand。以下条目通过 bastion.example.com 访问 devbox.internal.example.com:
Host devbox
HostName devbox.internal.example.com
User alice
ProxyJump bastion.example.com
在 SSH host 字段中输入 devbox。
访问远程计算机上的容器
若要在未发布 SSH 端口的容器内运行会话,请使用 ProxyCommand 访问它,因为 Desktop 不会运行您所连接条目的 RemoteCommand。如果您的条目使用 RemoteCommand 进入容器,会话将在该条目登录的计算机上运行,而不是在容器中运行。
添加条目
将以下条目添加到 ~/.ssh/config 的末尾,如果您有 Host * 条目,则添加到第一个 Host * 条目的正上方。将 Docker 容器 devbox、其用户 dev 和计算机 build.example.com 替换为您自己的值。该条目的命令会为每个连接在容器内启动一个 SSH 服务器:
Host devbox-container
User dev
ProxyCommand ssh build.example.com docker exec -i devbox /usr/sbin/sshd -i
准备容器
- 安装 OpenSSH 服务器,并使用在您重新构建镜像或重新创建容器时保持不变的主机密钥
- 为
User中指定的账户提供登录方式,例如authorized_keys文件 - 检查容器是否满足远程计算机要求
检查允许列表
如果您的管理员限制了 SSH 主机,请在您计算机上的终端中运行 ssh -G devbox-container。请管理员在 sshHostAllowlist 中允许它输出的 hostname(此处为 devbox-container)。当他们允许该名称时,也就允许了您条目的 ProxyCommand 所连接的任何目标。
测试条目,然后连接
在您计算机上的终端中运行 ssh devbox-container。修复它报告的问题,然后再次运行,直到它无需询问您任何内容即可在容器中打开 shell:
- 如果
ssh要求输入密码、口令短语或验证码:改用无需提示即可工作的登录方式,例如由您的 SSH agent 持有的密钥 - 如果
ssh报告Cannot execute command-line and remote command.或Bad packet length:从build.example.com的条目中移除RemoteCommand和RequestTTY。之后,在您计算机上的终端中运行ssh build.example.com会在该计算机上打开 shell,而不是在容器中。 - 如果
ssh报告Connection closed by UNKNOWN port 65535:在同一终端中运行ssh build.example.com docker exec devbox /usr/sbin/sshd -t。 - 如果它输出
Missing privilege separation directory: /run/sshd,请在容器中创建该文件夹。 - 如果它输出
no hostkeys available且容器有主机密钥,请在此命令和条目中的exec后添加-u root。
然后在 SSH host 字段中输入 devbox-container。
在 `ProxyCommand` 中使用来自 shell 的变量
若要在 ProxyCommand 或 Match exec 命令中使用您自己的环境变量,请在 shell 启动文件(例如 ~/.zshrc)中导出它,然后退出并重新打开 Desktop。Desktop 启动时会读取您的登录 shell 导出的内容,并在您退出之前一直保留这些值。
这需要 Claude Desktop v2.37337.0 或更高版本,以及一个接受 -0 的 env 命令,您可以在计算机上的终端中运行 env -0 进行检查。
如果您的 shell 设置了临时 AWS 凭据,请为 AWS CLI 提供一个 profile,而不是导出 AWS_* 变量。
在 `ProxyCommand` 中使用 AWS 凭据
如果您在 shell 启动文件中设置了临时 AWS 凭据,运行 AWS CLI 的 ProxyCommand 可能在终端中能够连接,而在 Desktop 中失败。当您的 shell 导出 AWS_SESSION_TOKEN、AWS_SECURITY_TOKEN 或 AWS_CREDENTIAL_EXPIRATION 时,Desktop 中的 ssh 和您的 ProxyCommand 不会获得 shell 的 AWS 凭据、AWS_REGION 或 AWS_PROFILE。
如果 AWS CLI 没有其他区域或凭据来源,它会失败并显示 You must specify a region 或 Unable to locate credentials。若要从 Desktop 连接,请为 AWS CLI 提供一个它从 ~/.aws/config 读取的 profile:
添加包含区域和凭据来源的 profile
此示例添加一个名为 corp 的 profile,它从辅助程序获取凭据:
[profile corp]
region = us-east-1
credential_process = /full/path/to/your-credential-helper
region:指定您所连接计算机的 AWS 区域credential_process:指定一个程序的完整路径,该程序以 AWS 文档所述的 JSON 格式输出凭据。请选择无需您输入的程序,因为 AWS CLI 会在每次连接时运行它,包括您不在时的重新连接。- IAM Identity Center:添加该 profile 的 IAM Identity Center 设置来代替
credential_process。在连接之前,以及该登录失效时,在终端中运行aws sso login --profile corp。
在 ProxyCommand 中指定 profile
此示例将 --profile 添加到 AWS 为 Session Manager 记录的命令中:
Host i-*
ProxyCommand sh -c "aws ssm start-session --profile corp --target %h --document-name AWS-StartSSHSession --parameters 'portNumber=%p'"
重新连接
在终端中使用该主机运行 ssh,确认该条目在终端中仍能连接,然后从 Desktop 连接。
提高 SSH 连接超时时间
如果您的 SSH 配置没有为该主机设置 ConnectTimeout,Desktop 会给 ssh 30 秒的连接时间。通过跳板机或 ProxyCommand 连接时,该时间包括路由建立连接所需的时间。如果您的路由需要更长时间,请在条目中添加更高的值:
Host devbox
HostName devbox.internal.example.com
User alice
ProxyJump bastion.example.com
ConnectTimeout 120
ssh 会使用它为主机找到的第一个值,因此请将该条目放在任何设置了 ConnectTimeout 的 Host * 条目之上。若要确认,请在您计算机上的终端中运行 ssh -G devbox。其输出包含 connecttimeout 120。更改该值后,请退出并重新打开 Desktop。
如果远程计算机本身等待您在手机上批准,无论您设置的 ConnectTimeout 是多少,都请在 45 秒内批准。您无法提高此限制,因为 Desktop 会自行设置 ServerAliveInterval 和 ServerAliveCountMax,之后 ssh 会关闭远程计算机在这么长时间内未发送任何内容的登录。如果是跳板机或 ProxyCommand 在等待您,请在远程计算机的条目中提高 ConnectTimeout 以涵盖该时间。
修复仅由 Desktop 应用的 `Match host` 块
如果 Desktop 使用了终端中 ssh devbox 不使用的设置,请查找条目 HostName 行上方的 Match host 块。在终端中,ssh 会在 HostName 行之前读取该处的块,因此它将该块与 devbox 进行比较。Desktop 在命令行中向 ssh 提供 HostName 值,因此 ssh 会将该块与该值进行比较。
若要检查,请像 Desktop 那样,在您计算机上的终端中运行 ssh -G,并在命令行中提供条目的 HostName 和 User 值:
ssh -G -o HostName=devbox.internal.example.com -l alice devbox
将输出与 ssh -G devbox 的输出进行比较。如果该块的设置(例如 proxycommand)仅出现在第一个输出中,则该块仅在 Desktop 中生效。若要让 Desktop 也跳过它,请在其 Match 行中添加 !originalhost devbox:
Match host *.internal.example.com !originalhost devbox
若要确认,请再次运行第一个命令。该块的设置将不再出现在其输出中。
Desktop 保持关闭的转发设置
在与远程计算机的连接上,Desktop 会保持 ForwardAgent、ForwardX11、LocalForward、RemoteForward、DynamicForward 和 Tunnel 关闭,即使您的 SSH 配置启用了它们。在终端或 ! 命令中,您的转发设置只在某些情况下生效,因为 Desktop 可能会在那里启动一个遵循这些设置的单独 ssh。
- 若要访问远程计算机上的端口:自行转发
- 若要在远程计算机上使用您自己的密钥:在远程计算机本身上设置凭据,例如用于
git push
若要防止 Desktop 转发您的 SSH agent 或端口,请在您计算机上的终端中运行 ssh -G devbox。然后按照 Desktop 可能的运行方式再次运行它,使用它输出的 hostname 和 user 值,如 ssh -G -o HostName=devbox.internal.example.com -l alice devbox。第二个输出可能会显示第一个输出跳过的 Match 块中的设置。
在两个输出中查找值不是 no 的 forwardagent 行,以及以 localforward、remoteforward 或 dynamicforward 开头的行。如果找到,请从您的 SSH 配置中删除该设置。对于您的 ProxyCommand 使用 ssh 访问的主机,也执行同样的操作。
访问远程计算机上的端口
若要打开在远程计算机上运行的服务器(例如端口 3000 上的开发服务器),请自行转发端口。在您计算机上的终端中,使用 -L 和您连接的主机(例如 devbox)运行 ssh:
ssh -N -L 3000:localhost:3000 devbox
如果您在连接上填写了 SSH port 或 SSH key (optional),请添加带有相同值的 -p 或 -i。保持该命令运行,然后在您计算机上的浏览器中打开 http://localhost:3000 以访问远程计算机的端口 3000。如果 ssh 输出 open failed: administratively prohibited,请让该计算机的管理员允许 TCP 转发,这由 SSH 服务器 sshd_config 中的 AllowTcpForwarding 控制。
Windows 远程计算机
Windows 远程计算机需要 Claude Desktop v2.31226.0 或更高版本。
请使用 Microsoft 的 OpenSSH Server。该计算机可以是 x64 或 ARM64。SSH 服务器启动的 shell 可以是 cmd.exe、Windows PowerShell 5.1 或 Git Bash。
Windows 远程计算机的测试少于 Linux 远程计算机。在依赖它之前,请先在其上试运行您自己的工作。
在 Windows 远程计算机上,预计会有以下限制(包括但不限于):
- 终端:在文件夹为 Windows 路径(例如
C:/projects/app)的会话中,终端不会打开 - 沙箱:Claude Code 在那里以原生 Windows 方式运行,在此环境下它运行命令时不使用沙箱。请参阅沙箱在何处运行。
- 插件:如果插件包含 Windows 无法存储的文件或文件夹名称(例如含有
:的名称),Desktop 不会复制该插件。会话会列出 Desktop 遗漏的插件。 - MCP 服务器:在某些 Windows 远程计算机上,Claude 对来自
claude_desktop_config.json的 MCP 服务器的调用会经过 Desktop,因此 Desktop 断开连接时 Claude 无法调用其工具。在 Claude Desktop v2.37337.0 之前,这适用于所有 Windows 远程计算机。 - Worktree:worktree 位于
<project-root>/.claude/worktrees/。如果您选择其他文件夹,Desktop 会忽略它。 - 早期消息:如果 SSH 服务器的 shell 是
cmd.exe或 Windows PowerShell,您可能需要先连接才能看到会话的早期消息 - 分叉:如果 SSH 服务器的 shell 是
cmd.exe或 Windows PowerShell,您只能在会话的第一条消息处分叉会话 - 断开连接时运行:只有当 SSH 服务器允许程序在启动它的连接结束后继续存在时,任务才会在 Desktop 断开连接时继续运行。若要确认,请测试远程计算机。
- 残留进程:会话结束后,请检查计算机上是否有 Claude Code 启动的程序,因为它们可能会继续运行。Desktop 安装的后台辅助程序在那里不会自行停止。
在 Desktop 断开连接时保持任务运行
如果您的计算机进入睡眠、网络中断或您退出 Desktop,任务会继续进行,直到完成、需要您处理或达到某项限制。合上笔记本盖也算作睡眠。Desktop 或您计算机的重启(包括因更新而重启)算作退出。
Claude Code 作为进程在远程计算机上运行,由 Desktop 在那里安装的后台辅助程序管理,因此它无需您的 SSH 连接即可继续运行。本节所述行为需要 Claude Desktop v2.31226.0 或更高版本。
如果您使用 Claude 账户登录 Desktop,请不要指望任务能通宵运行。Desktop 仅在自身运行且保持连接时才会为任务续期该登录,因此在您断开连接后,任务的登录可能会过期,随后任务停止。断开连接时剩余的时间不定,可能只有几分钟。
到目前为止完成的工作会保留在远程计算机上,您回来后可以发送一条消息继续。
如果任务必须通宵运行:
- 保持您的计算机唤醒并在线,保持笔记本盖打开并让 Desktop 运行
- 对远程计算机以及途中的任何跳板机使用无需提示即可工作的登录方式,例如由您的 SSH agent 持有的密钥。这样,Desktop 可以在连接中断后自行重新连接。
对于必须在您的计算机睡眠或关机时运行的任务,请改为启动云端会话。
- 睡眠或网络中断后:如果进程仍在运行且 Desktop 可以无需提示登录,您会重新获得正在运行的任务。如果无法登录,请发送消息。
- 退出之后:任务会继续运行,但除非 Desktop 能重新接入其进程,否则当会话再次打开时您会失去该任务。退出之前,请查看 Desktop 何时可以重新接入。如果您失去了任务,请发送消息以继续。
当您回来而任务尚未完成时,请检查是否有 Desktop 无法重新连接的提示、身份验证错误或等待中的请求:
- Desktop 无法重新连接:会话会说明原因,也可能会有通知说明。Desktop 可能需要您登录。
- 身份验证错误:登录令牌或凭据可能已过期。使用 Claude 账户时,请发送消息以继续。使用第三方提供商时,请参阅 3P 上 Claude Desktop 中的 SSH 远程会话。
- 等待中的请求:回应该请求
- 以上都不是:发送消息以继续
准备长时间任务
- 先更新:在开始长时间任务之前更新 Desktop。在 macOS 和 Windows 上,Desktop 可能会自行重启以安装已下载的更新。当 Claude 正在处理 SSH 任务时,该重启会等待。在使用 Claude 账户的 macOS 上,默认情况下,更新等待 72 小时后,重启仍可能进行。
- 在 Windows 上,或在 v2.42304.0 之前使用第三方提供商时,不要退出:在这些情况下,退出后您会失去正在运行的任务,因此请在任务期间保持 Desktop 打开。在其他任何情况下,退出之前请查看您能找回什么。
- 减少请求:选择让任务更少等待您的权限模式、规则或 hook
- 检查跳板机:如果您的跳板机要求登录(例如向手机发送推送),请改用无需提示即可工作的登录方式。否则,Desktop 每次尝试重新连接时都可能发送另一条推送。
- 测试远程计算机:启动一个短任务,在任务仍在运行时退出 Desktop,并在任务应该完成很久之后再次打开会话。如果任务尚未完成且会话未显示身份验证错误,请检查远程计算机上可能结束任务的因素。
- 不要在 Desktop 的终端中运行命令:如果远程计算机会注销空闲终端,请从 Desktop 之外的 SSH 登录运行您自己的命令
Desktop 断开连接时的限制
您让其继续运行的任务可能会在其登录过期时、远程计算机结束它时,或辅助程序停止或被替换时结束:
- 登录令牌或凭据:使用 Claude 账户时,令牌过期后任务会因身份验证错误而停止。使用第三方提供商时,会过期的凭据(例如来自单点登录或凭据辅助程序的凭据)同样如此。请参阅 3P 上 Claude Desktop 中的 SSH 远程会话。使用 Claude 账户时,请保持 Desktop 运行并连接,以便它能续期登录。
- 远程计算机:如果远程计算机重启,或在您的 SSH 连接关闭时结束您的进程,正在运行的任务就会结束。在 Desktop 断开连接期间,不会有任何东西重新启动它。systemd-logind 的
KillUserProcesses为yes且适用于您用户的 Linux 计算机会以这种方式结束您的进程。若要在这类计算机上保持任务运行,请让管理员豁免您的用户,例如使用KillExcludeUsers。 - 空闲终端:某些 Linux 远程计算机会注销在设定时间内无人输入的终端(systemd-logind 的
StopIdleSessionSec)。在 macOS 或 Linux 上的 Desktop 中,会话的终端和!命令默认共享 Desktop 的 SSH 连接。因此,该注销会在 Desktop 连接期间结束连接,正在运行的任务也可能随之结束。关闭终端窗格并不能防止这种情况,因此请不要在该终端中运行命令。 - Desktop 更新:如果更新带来了新的辅助程序,Desktop 会在之后的某次连接时替换远程计算机上的辅助程序,这可能会结束仍在运行的任务
- 长时间离开:在 Linux 或 macOS 远程计算机上,如果 Desktop 30 天内未连接,辅助程序会停止,并结束在其下运行的所有 Claude Code 进程。请在此之前连接。
在 Desktop 断开连接期间,文件编辑和某些工具可能会失败。如果任务需要它们,请保持 Desktop 连接:
- Worktree:在使用 worktree 的会话中,Desktop 会在 Claude 进行每次文件编辑之前对其进行检查。在 Desktop 断开连接期间,每次编辑会等待约 30 秒,然后失败。Shell 命令仍会运行。在 Linux 或 macOS 远程计算机上,编辑可以继续工作。如果您不确定,请在不使用 worktree 的情况下启动会话。
- 文件夹限制:如果您的组织限制了会话可以使用的文件夹,无论是否使用 worktree,Desktop 都会检查每次文件读取、搜索和编辑。在 Desktop 断开连接期间,每项操作最多等待 10 分钟,然后失败。
- 连接器:连接器和 Desktop 提供的其他工具通过 Desktop 运行,因此在其断开连接期间,每次调用都会在约 30 秒后失败
- 工作流:Desktop 会在每个新工作流启动前对其进行检查,因此在 Desktop 断开连接期间,新工作流最多等待 10 分钟,然后失败
- MCP 服务器:Claude Code 在远程计算机上启动的 MCP 服务器不通过 Desktop 运行,因此 Claude 仍可调用其工具。仅当 Desktop 未使用其内置 SSH 客户端时,来自
claude_desktop_config.json的服务器才属于这一类。否则,以及在某些 Windows 远程计算机上,Desktop 断开连接期间 Claude 无法调用其工具。
worktree 中的编辑何时可以继续工作
在 Linux 或 macOS 远程计算机上,该检查不经过 Desktop,因此在 Desktop 断开连接期间,worktree 内的编辑可以继续工作。在 Claude Desktop v2.37337.0 之前,这仅适用于 Linux 远程计算机。
在某些情况下编辑仍会失败,包括以下情况:
- 内置 SSH 客户端:Desktop 使用了它,例如在 Microsoft Store 安装版本中、在没有 Microsoft OpenSSH 9.4 或更高版本的 Windows 计算机上,或在使用第三方提供商的 Windows 上默认使用
- 仓库位置:仓库是您的主目录、其上层文件夹或
~/.claude - macOS 路径:在 macOS 远程计算机上,仓库位于
/Volumes下,或者仓库或 worktree 路径中的某个文件夹名称包含~或非 ASCII 字符 - 文件夹限制:您的组织限制了会话可以使用的文件夹
- 企业启动器:在 Claude Desktop v2.37337.0 之前,您使用 Claude 账户登录,且您的组织通过企业启动器在远程计算机上启动 Claude Code
不使用 worktree 的会话没有此类检查,除非您的组织限制了会话可以使用的文件夹。
处理您不在时到达的请求
如果 Claude 在 Desktop 断开连接期间需要您的批准或向您提问,Claude 会在远程计算机上等待。该等待本身没有时间限制。当 Desktop 重新接入进程时,它会向您显示该请求。如果 Desktop 改为启动新进程,您将失去该请求。
如果您回来时发现一个等待您的请求不见了,原因之一是 Desktop 自行重启了,例如为了安装更新。只有当 Desktop 能重新接入进程时,请求才能在重启后保留,因此在让任务保持运行之前,请查看 Desktop 何时可以重新接入。
如果您失去了请求,请发送消息以继续。
若要减少任务停下来等待您的频率,并在您不在时收到任务的消息,请在离开前设置以下任一项:
- 自动模式:如果您可以使用自动模式,请选择自动模式。在多次被阻止后,系统会再次询问您。
- 允许规则:在远程计算机上的用户设置文件
~/.claude/settings.json中,为任务所需的命令添加允许规则。如果您的组织仅接受来自托管设置的权限规则,请让管理员将其添加到能传递到远程计算机的托管设置中。有关项目.claude/settings.json中的允许规则,请参阅项目允许规则和工作区信任。 - 自动应答的 hook:在远程计算机上的
~/.claude/settings.json中配置PermissionRequesthook,以代替您允许或拒绝请求 - 提醒您的 hook:在同一文件中使用
permission_prompt匹配器配置Notificationhook,以便在有请求等待时向自己发送消息 - 在 Claude 完成时通知您的 hook:在同一文件中配置
Stophook,以便在 Claude 完成响应时向自己发送消息。当 API 错误结束该轮次时,它不会运行。对于这种情况,请配置StopFailurehook。
如果您的组织仅运行托管 hook,请让管理员将该 hook 添加到能传递到远程计算机的托管设置中。
Claude Code 在任何权限模式(包括 Bypass permissions)下都不会自动批准少数操作。根据权限模式的不同,Claude Code 会拒绝此类操作或询问您,任务随后会等待您的回答。
在睡眠或网络中断后重新连接
如果您回来时 Desktop 尚未重新连接,请在会话中发送消息。Desktop 仅在能够无需提示登录的情况下才会自行重新连接,例如使用由您的 SSH agent 持有的密钥。
- 记住的密码:您让 Desktop 记住的密码也可以无需提示登录,但若长时间离开,最好使用由您的 SSH agent 持有的密钥。如果使用该密码的登录中断或挂起,Desktop 可能会停止重新连接并等待您。
- 任何其他提示:如果远程计算机提示输入其他内容(例如一次性验证码),您可能会在计算机上收到通知。点击该通知或在会话中发送消息,Desktop 就会显示该提示。
如果跳板机要求登录、中断时间较长、输出缺失或进程已不存在
- 跳板机,您不在时推送停止:当无人响应跳板机的登录(例如向手机发送的推送)时,macOS 或 Linux 上的 Desktop 可能会出现这种情况。此时,在无人使用您的计算机期间,Desktop 会停止重新连接。当您解锁或使用计算机时,您可能会收到另一条推送,因为 Desktop 可能会再次尝试。在三次无人响应的尝试后,它会等到您重试或发送消息。
- 跳板机,推送持续不断:在 Desktop 无法判断无人响应的情况下(例如 Windows 上的 Desktop),只要有可重新接入的进程,无论该进程是否仍在运行,它都会持续尝试。每次尝试您都可能收到另一条推送。若要结束尝试,请退出 Desktop,但这可能会让您失去正在运行的任务。
- 长时间中断:Desktop 会放慢到大约每五分钟尝试一次。若要更快重新连接,请在会话中重试或发送消息,Desktop 会在连接后投递该消息。
- 输出缺失:在 Desktop 断开连接期间,辅助程序会在 16 MiB 缓冲区中保留每个会话最近的 Claude Code 输出,并丢弃较早的输出。Desktop 重新连接后,会话可能会显示
Loading recent output from <host>…。如果 Desktop 无法加载全部输出,您会看到一行Some output produced while you were disconnected may be missing here.。该行并不表示任务已停止。 - 进程已不存在:进程在 Desktop 断开连接期间结束了,例如远程机器重启时。Desktop 随后可以根据对话保存的历史记录启动一个新进程,并让 Claude 继续该任务。如果任务仍处于停止状态,请发送消息。使用第三方提供商时,请更新到 Claude Desktop v2.42304.0 或更高版本,因为较早的版本从不会自行继续任务。
退出 Desktop 后重新打开会话
退出 Desktop 后,任务会在远程机器上继续运行,但除非 Desktop 能重新接入其进程,否则会话再次打开时任务会停止。在 Desktop 关闭期间,任务会一直运行,直到完成、需要您介入或达到某项限制。
- Windows 上的 Desktop:您无法找回正在运行的任务,因为 Desktop 在退出后从不重新接入。请仅在您预计任务已完成时再次启动 Desktop,因为会话可能会在 Desktop 启动时打开。
- 第三方提供商,来自较早版本的任务:如果您在 v2.42304.0 之前的 Desktop 版本中启动了任务,在 macOS 或 Linux 上也无法找回它。请仅在您预计任务已完成时再次启动 Desktop。
- 其他任何任务,在 macOS 或 Linux 上的 Desktop 中:启动 Desktop 并打开会话,如果 Desktop 重新接入,任务就会继续。它并不总能重新接入,例如在某些 Desktop 更新之后,因此请在长时间任务之前更新。
当 Desktop 无法重新接入时,您也会失去任何正在等待您的批准或问题。如果任务没有自行继续,请发送消息,Claude 会根据对话保存的历史记录继续。
有关第三方部署,请参阅 3P 上 Claude Desktop 中的 SSH 远程会话。
当对话的 Claude Code 进程仍在运行时,请勿在远程计算机上为该对话运行 claude --resume。Claude Code 不会阻止您,此时两个进程会写入同一个对话。如果您不确定,请添加 --fork-session,它会在对话的副本中继续,但两个进程仍会处理相同的文件。
选择 SSH 会话 worktree 的位置
除非您的组织限制了会话可以使用的文件夹,新的 SSH 会话会在以下各项中第一个已设置的位置创建其 worktree:
- SSH 连接上的 Worktree folder
- 远程计算机上
~/.claude/settings.json中的worktree.location <project-root>/.claude/worktrees/,即默认位置
每个项目都会在您设置的文件夹中拥有自己的子文件夹,因此如果设置为 ~/worktrees,worktree 的路径为 ~/worktrees/<project>-<id>/<worktree-name>。如果您设置的文件夹位于项目内部,Desktop 会对该项目忽略它并使用默认位置。在 Windows 远程计算机上,Desktop 始终使用默认位置。
若要为您之前添加的连接或您的组织管理的连接设置 Worktree folder,请在环境下拉菜单中将鼠标悬停在该连接上,然后点击齿轮图标。
该字段需要 Claude Desktop v1.44121.0 或更高版本。如果您的组织限制了会话可以使用的文件夹,Desktop 会隐藏该字段并将 worktree 保留在项目内。
远程计算机上的文件和进程
Desktop 会在连接到 Linux 或 macOS 远程计算机的每个用户的主目录下的 ~/.claude/remote/ 中安装一个辅助程序和 Claude Code。辅助程序不监听任何网络端口,但 Claude Code 及其启动的程序(例如 MCP 服务器和开发服务器)可能会监听。
| 文件夹 | 内容 |
|---|---|
~/.claude/remote/srv/ |
辅助程序,每个版本一个文件夹 |
~/.claude/remote/ccd-cli/ |
Claude Code,每个版本一个文件 |
~/.claude/remote/run/ |
辅助程序的运行时文件(例如其套接字和日志),每台连接的计算机一个文件夹 |
~/.claude/remote/plugins/ |
Desktop 从用户计算机复制的插件 |
~/.claude/uploads/ |
用户附加到消息中的文件,每个会话一个文件夹 |
若要列出某个用户的进程,请以该用户身份在远程计算机上运行 pgrep -fl "$HOME/.claude/remote/",或用该用户的主目录替换 $HOME 后运行:
- 辅助程序:每台连接的计算机对应一个或多个
server进程 - Claude Code:辅助程序为该用户的会话启动的进程,每个进程都来自以其版本命名的文件,例如
2.1.295-…
Desktop 通过用户的 SSH 连接,经由 ~/.claude/remote/run/ 下辅助程序文件夹中的 Unix 套接字 rpc.sock 访问辅助程序。除 root 外,该计算机上的其他用户无法连接到该套接字,因为其模式为 600,且其所在文件夹的模式为 700。
有关辅助程序何时会自行停止,请参阅 Desktop 断开连接时的限制。
若要为某个用户移除辅助程序和 Claude Code:
退出 Desktop
在该用户用于连接的每台计算机上退出 Desktop。Desktop 下次连接时会重新安装这两个程序,并且它可能会自行重新连接。
结束进程
以该用户身份登录远程计算机,对 pgrep 列出的每个 Claude Code 进程的 ID 运行 kill。待这些进程从列表中消失后,再对每个 server 进程的 ID 运行 kill。如果您先结束 server 进程,Claude Code 正在运行的命令可能会继续运行。
然后列出该用户的剩余进程(例如使用 ps -u "$(id -un)" -f),并结束您识别出由 Claude Code 启动的任何进程。它留在后台的程序可能会在它结束后继续运行,且不在 pgrep 列表中。
删除文件夹
删除 ~/.claude/remote/。若要移除 Claude Code 自己在 ~/.claude/ 和 ~/.claude.json 中的文件,请参阅移除配置文件。
结束单个会话的进程
若要结束单个会话的 Claude Code 进程,请在 Desktop 连接到远程计算机时,在 Desktop 中归档该会话。该进程在其任务完成后以及您退出 Desktop 后会继续运行。
在归档带有 worktree 的会话之前,请参阅使用会话并行工作。
查看进程以哪个用户身份运行
辅助程序和 Claude Code 以 Desktop 通过 SSH 登录所用的用户身份运行。安装和启动它们不需要 sudo。若要检查用户,请在远程计算机上使用 pgrep 列出的进程 ID 运行 ps -o user= -p。
Claude Code 启动的程序(例如 shell 命令和 MCP 服务器)也以该用户身份启动。请像审查在那里运行命令的人员一样,审查该用户在远程计算机上的权限,包括其 sudo 规则。
查看谁连接了远程计算机
若要了解谁连接了远程计算机,请读取该计算机上 SSH 服务器的日志,其中来自 Desktop 的登录与来自终端的登录看起来相同。在 macOS 或 Linux 上的 Desktop 中,每次 Desktop 连接都会产生一条记录,而不是每个会话一条。
您不会在 Claude Code 的指标和事件中找到 Desktop 的 SSH 连接。要从中了解某个 SSH 会话在哪台远程机器上运行,请参阅将遥测归因于 Desktop SSH 会话。有关 Desktop 自身的连接记录,请参阅获取 Desktop 针对 SSH 问题的日志。
在登录前关闭的连接
如果 SSH 服务器的日志显示有在任何登录之前就关闭的连接,它们可能是 Desktop 对 SSH 端口的测试。Desktop 会测试机器是否响应,例如在与其连接失败之后。它会打开到该端口的连接并立即关闭,不发送任何内容。预计会有一次或连续多次测试,例如约两分钟内八次。
如果没有任何机制因此类连接而封禁或拒绝地址,您无需对 Desktop 的测试采取任何措施。如果 Desktop 连接所用的地址被拒绝或封禁,请检查 SSH 服务器本身是否拒绝该地址以及 fail2ban 是否统计 Desktop 的测试。
在 SSH 服务器日志中识别测试
将您日志中的行与 Linux 上的 OpenSSH 服务器在默认 LogLevel 下为测试写入的行进行比较,请参阅与您服务器版本对应的行。如果服务器的问候消息在 Desktop 关闭连接之前到达,您看到的可能是最后一列中的行:
| OpenSSH 版本 | 测试产生的行 | 问候消息先到达时的行 |
|---|---|---|
| 6.6 至 7.9 | 一行包含 Did not receive identification string from 203.0.113.7 的内容 |
相同的行 |
| 8.0 至 8.2 | error: kex_exchange_identification: Connection closed by remote host |
error: kex_exchange_identification: read: Connection reset by peer |
| 8.3 至 9.4 | error: kex_exchange_identification: Connection closed by remote host,然后是 Connection closed by 203.0.113.7 port 51234 |
error: kex_exchange_identification: read: Connection reset by peer,然后是 Connection reset by 203.0.113.7 port 51234 |
| 9.5 至 10.2 | Connection closed by 203.0.113.7 port 51234 |
error: kex_exchange_identification: read: Connection reset by peer,然后是 Connection reset by 203.0.113.7 port 51234 |
| 10.3 至 10.5 | Connection closed by 203.0.113.7 port 51234 [preauth] |
error: kex_exchange_identification: read: Connection reset by peer [preauth],然后是 Connection reset by 203.0.113.7 port 51234 [preauth] |
其他打开端口后又关闭的程序也可能留下相同的行。当某行包含地址时,请检查它是否是装有 Desktop 的计算机连接所用的地址。
8.0 至 8.2 的行不包含地址。要获取地址,请在 sshd_config 中设置 LogLevel VERBOSE,并以 root 身份运行 sshd -T | grep -i loglevel。如果它输出 loglevel VERBOSE,请重新加载 SSH 服务器。然后在测试的行之前查找包含 Connection from 203.0.113.7 port 51234 的行。
检查 SSH 服务器本身是否拒绝该地址
如果来自许多装有 Desktop 的计算机共用的某个地址的连接被拒绝,请在 SSH 服务器的日志中查找以如下内容结尾的行:
drop connection #0 from [203.0.113.7]:51234 on [192.0.2.10]:22 penalty: connections without attempting authentication
在默认 LogLevel 下,OpenSSH 9.8 及更高版本在因连接未尝试登录即关闭(正如 Desktop 的测试那样)而拒绝某个地址时,可能会写入这样的行。在默认设置下,仅凭几次测试不会出现这样的行。
要防止拒绝,请在 sshd_config 中将 PerSourcePenaltyExemptList 设置为人们连接所用的地址,例如 PerSourcePenaltyExemptList 203.0.113.7。之后服务器不会对这些地址施加任何惩罚,包括针对登录失败的惩罚。要检查该文件,请以 root 身份运行 sshd -T | grep -i persourcepenalt。如果它输出了您的列表,请重新加载 SSH 服务器。
检查 fail2ban 是否统计 Desktop 的测试
如果 fail2ban 0.10.5 或更高版本封禁了 Desktop 连接所用的地址,请在 jail.conf、jail.local 或 jail.d/ 下找到您 jail 的模式:
- 在方括号中指定模式的
filter行,例如filter = sshd[mode=aggressive]:使用该模式。 - 仅有带
[mode=%(mode)s]的默认filter行:使用mode行中的值,如果没有该行则为normal。
如果模式为 normal,fail2ban 不会统计 Desktop 测试产生的行,因此请查找封禁的其他原因。
对于其他模式,请将您自己日志中的行复制到远程机器上的一个文件中。完整复制每一行(从日期到行尾),如果某次测试留下两行,则两行都要复制。在那里使用该文件和您 jail 的模式(例如 aggressive)运行 fail2ban-regex:
fail2ban-regex -o ip lines.log "sshd[mode=aggressive]"
对于 fail2ban 统计的每次失败,该命令都会在单独一行输出地址,例如 203.0.113.7。在这种情况下,请防止封禁。如果它没有输出任何内容,则 fail2ban 在该模式下不会统计这些行,因此请查找封禁的其他原因。
防止 fail2ban 封禁
要防止 fail2ban 因 Desktop 的测试而封禁地址,请更改 jail 的两项设置之一,每项都有代价:
mode:在您的 jail 设置它的任何位置(mode行中或诸如filter = sshd[mode=aggressive]的行的方括号中)将其设置为normal。您会放弃只有其他模式才会进行的所有统计,例如对连接后未尝试登录即离开的客户端的统计。ignoreip:将其设置为人们连接所用的地址,例如ignoreip = 203.0.113.7。之后 fail2ban 不会统计来自这些地址的任何内容,包括登录失败。
使用在远程计算机上设置的 MCP 服务器
若要在 SSH 会话中使用来自 ~/.claude.json 或项目 .mcp.json 的 MCP 服务器,请在远程计算机上的这些文件中进行设置。Claude Code 会在那里启动其 stdio 服务器,因此请在远程计算机上安装这些服务器运行的命令。有关来自 claude_desktop_config.json 的服务器,请参阅 Desktop 断开连接时的限制。
通过链接打开 SSH 会话
claude://code/new 链接会打开 Desktop 的新会话页面,并且可以指定 SSH 连接。将此类链接放在运维手册、仪表板或 wiki 页面中,即可打开已为正确的计算机和文件夹设置好的 Desktop。对于会去除此类链接的平台,请参阅链接显示为纯文本而不是可点击链接。
SSH 链接需要 Claude Desktop v2.110.0 或更高版本。
以下链接指定了 build.example.com 上的用户 dev、端口 2222 和文件夹 /srv/payments,并填入了一条提示词:
claude://code/new?ssh_host=dev%40build.example.com&ssh_port=2222&ssh_folder=/srv/payments&q=Investigate%20the%20failed%20deploy
SSH 链接接受以下参数,只有 ssh_host 是必需的:
| 参数 | 值 |
|---|---|
ssh_host |
host 或 user@host,写法与 SSH host 字段中相同。该值不能以 - 开头,且主机部分只能包含字母、数字、.、_、: 和 - |
ssh_port |
1 到 65535 之间的端口号 |
ssh_folder |
远程计算机上的文件夹。以 / 或 ~/ 开头,或使用 ~ |
q |
用于输入框的 URL 编码文本 |
来自 ~/.ssh/config 的别名只有对拥有该条目的人才能作为 ssh_host 使用。若要匹配用户已有的连接,请为链接提供与该连接相同的用户、主机和端口。
打开链接时,Desktop 会在选择连接之前要求您确认:
- 您已有的连接:如果主机、用户和端口与您的某个连接匹配,Desktop 会询问是否使用它,并向您显示该连接的名称和主机,如果链接指定了文件夹,还会显示文件夹。
- 新连接:否则,Desktop 会打开添加 SSH 连接的对话框。当您添加连接时,Desktop 会在保存任何内容之前询问是否连接,并向您显示链接中的主机,如果链接指定了端口和文件夹,还会显示它们。
在您确认之前,Desktop 不会保存链接中的主机、端口或文件夹,也不会使用它们选择或打开连接。如果已选择了某个 SSH 连接,新会话页面仍可能像没有链接时一样自行连接到该连接,即使链接指定的是同一主机。链接不能携带密钥文件、密码或命令。
任何人都可以编写链接,因此请检查它填入了什么:
- 确认之前:检查主机和文件夹。
- 发送之前:检查提示词和所选环境。
Desktop 会在链接打开时填入提示词,替换您尚未发送的任何文本,并且从不替您发送。它将提示词视为纯文本,因此开头的 / 或 ! 以及 @ 文件提及不会作为命令或提及生效。如果您取消,提示词会保留在输入框中,且您之前选择的环境不会改变。
链接不会绕过 sshHostAllowlist。Desktop 会在连接时检查允许列表。
如果链接打开了 Desktop 但没有出现有关连接的对话框,请查找以下原因之一:
- 您已退出登录:登录后再次打开链接。
- 另一个对话框处于打开状态:关闭它,然后再次打开链接。
- 链接无效:Desktop 会显示一条消息说明需要修复的内容,并且不会填入提示词。
- Desktop 版本早于 v2.110.0:较早的版本会忽略 SSH 参数,仅带着提示词打开新会话页面。
- SSH 会话已关闭:如果您的管理员将允许列表设置为空数组,Desktop 会拒绝 SSH 链接。
为您的团队预配置 SSH 连接
管理员可以通过在托管设置中设置 sshConfigs,向团队成员分发 SSH 连接。以这种方式定义的连接会自动出现在每个用户的环境下拉菜单中,并显示为托管连接。用户可以选择它们,并为其设置自己的 Worktree folder,但无法在应用中编辑其他任何内容或删除它们。
以下示例预配置了一个连接:
{
"sshConfigs": [
{
"id": "shared-dev-vm",
"name": "Shared Dev VM",
"sshHost": "user@dev.example.com",
"sshPort": 22,
"sshIdentityFile": "~/.ssh/id_ed25519"
}
]
}
每个条目都需要 id、name 和 sshHost。sshPort 和 sshIdentityFile 字段是可选的。用户也可以将 sshConfigs 添加到自己的 ~/.claude/settings.json 中。
如果您在 sshHost 中省略 user@,Desktop 会以每位开发者的 ~/.ssh/config 为该主机设置的 User 身份连接,否则以其在自己计算机上的用户名连接。
限制用户可以连接的 SSH 主机
管理员可以通过在托管设置中设置 sshHostAllowlist,将 Desktop 的 SSH 会话限制为一组已批准的主机。设置后,用户只能连接到解析后的主机名与其中某个模式匹配的主机。将其设置为空数组可禁用 SSH 会话。sshHostAllowlist 参考条目说明了空数组如何与其他托管来源中的列表组合。
以下示例允许连接到 devboxes.example.com 下的任何主机以及一个指定的堡垒主机:
{
"sshHostAllowlist": ["*.devboxes.example.com", "bastion.example.com"]
}
如果您的组织提供服务器托管设置,请在其中设置 sshHostAllowlist。默认情况下,Desktop 仅从提供策略键的最高优先级托管来源读取该键。如果该来源未设置该键,Desktop 会忽略较低优先级的 MDM 策略或托管设置文件中的列表,并将该键视为未设置。Desktop 不会显示任何警告。
同时,请在每个用户计算机上的最高优先级 MDM 策略或托管设置文件中保留相同的列表。Desktop 在启动时获取服务器托管设置,且不保留缓存副本,因此在获取成功之前,适用的是该计算机上的列表。
模式不区分大小写。* 匹配任何主机,*.example.com 匹配 example.com 及其任何子域。其他任何内容均为精确匹配。检查针对的是通过 ssh -G 进行 ~/.ssh/config 解析后的主机名,因此只要解析后的 HostName 匹配,就允许使用 Host 别名和 ProxyCommand/ProxyJump 条目。
sshHostAllowlist 仅从托管设置中读取;用户或项目设置中的值会被忽略。只有 Claude Desktop 应用遵循此设置;Claude Code CLI 和 IDE 扩展不会读取它,并且它不会限制通过 Bash 工具运行的 ssh 命令。它管控的是 Desktop 应用连接到哪些主机,而不是网络出站流量,因此如果您需要硬性边界,请将其与您组织的网络或零信任控制措施结合使用。
关闭本地会话并分发 SSH 连接
若要关闭本地会话并将 SSH 会话限制为您选择的主机,请同时部署 disableDesktopLocalSessions、sshConfigs 和 sshHostAllowlist。
此方案适用于使用 Claude 账户登录的用户。使用第三方提供商时,SSH 会话默认关闭,而设置 sshHostAllowlist 可以开启它们。在部署这些键之前,请阅读 3P 上 Claude Desktop 中的 SSH 远程会话。
以下示例关闭本地会话、添加一个连接,并将 SSH 会话限制为该连接的主机:
{
"disableDesktopLocalSessions": true,
"sshConfigs": [
{
"id": "shared-dev-vm",
"name": "Shared Dev VM",
"sshHost": "dev.example.com"
}
],
"sshHostAllowlist": ["dev.example.com"]
}
这些键适用于桌面应用。它们不会改变运行 Claude Code 的其他方式,例如 CLI、Cowork 和云端会话:
- CLI:这些键都不会阻止开发者在自己的计算机上运行 Claude Code CLI
- Cowork:这些键都不适用于 Cowork 会话或 Cowork 定时任务
- 云端会话:这些键都不会改变云端会话是否可用。若要关闭它们,请使用管理控制台控制项下的 Cloud sessions 设置。
调整示例时,请检查主机名、Desktop 版本和文件权限:
- 主机名:确保
sshHostAllowlist中的某个模式与每个sshConfigs条目的主机名(不含user@)匹配,否则开发者无法连接到该条目。有关 Desktop 如何匹配主机名,请参阅限制用户可以连接的 SSH 主机。 - 版本:
disableDesktopLocalSessions需要 Claude Desktop v1.37937.0 或更高版本 - 文件权限:确保计算机上每位开发者的账户都能读取托管设置文件。Desktop 不会应用账户无法读取的文件中的键,Claude Code 也会在没有这些键的情况下启动。
将这三个键放在一个托管来源中,即您提供的最高优先级来源。如果您提供服务器托管设置,还要在每台计算机上的最高优先级 MDM 策略或托管设置文件中保留这三个键的副本。Desktop 在启动时获取服务器托管设置,在获取成功之前,计算机上的副本适用。
若要确认设置已生效,请检查开发者的计算机:
检查环境下拉菜单
退出并重新打开 Desktop,然后打开输入框中的环境下拉菜单。Local 呈灰色,且 Shared Dev VM 出现在 SSH 下。如果 Local 仍然可用,请检查 Desktop 版本、文件是否为有效的 JSON,以及计算机读取的是哪个托管来源。
添加不在允许列表中的主机
使用不在允许列表中的主机名(例如 other.example.com)添加 SSH 连接。Desktop 会保存该连接但拒绝连接,并说明您组织的设置不允许该连接。
企业配置
Team 或 Enterprise 计划上的组织可以通过管理员控制台控制、托管设置文件和设备管理策略来管理桌面应用行为。
管理员控制台控制
这些设置通过管理员设置控制台配置:
- Desktop:控制您的组织中的用户是否可以在桌面应用中访问 Claude Code
- Cloud sessions:为您的组织启用或禁用云端会话
- Remote Control:为您的组织启用或禁用 Remote Control
在启用了 HIPAA 的 Enterprise 组织中,Desktop 开关默认关闭,Owner 可以将其打开。应用 HIPAA 配置会将其关闭(即使之前已打开),因此 Owner 之后必须重新将其打开。Cloud sessions 和 Remote Control 也默认关闭,并且一旦组织应用了 HIPAA 配置,Owner 就无法将它们打开。
Cowork 下的 OpenTelemetry 表单位于管理员控制台的数据和隐私设置中的监控下,仅适用于 Cowork 会话。在此机器上的 Cowork 会话中,桌面应用将该收集器作为 OTEL_* 环境变量传递给 Claude Code,因此该表单生效,尽管该会话中的 Claude Code 从不获取管理员控制台设置。
要从 Code 选项卡会话导出遥测,请在 Claude Code 托管设置的 env 块中设置 CLAUDE_CODE_ENABLE_TELEMETRY 和 OTEL_* 变量,如监控的管理员配置中所示。本地、云端和 SSH 会话各自从不同来源读取托管设置。有关云端会话可以到达的主机,请参阅网络访问。有关 Code 选项卡会话报告的 service.name,请参阅服务信息。
要了解 SSH 会话在哪台远程机器上运行,请参阅将遥测归因于 Desktop SSH 会话。
托管设置
托管设置覆盖项目和用户设置,并应用于 Desktop 中的 Claude Code 会话。您可以在您的组织的托管设置文件中设置这些键,或通过管理员控制台远程推送它们。
| 键 | 描述 |
|---|---|
permissions.disableBypassPermissionsMode |
设置为 "disable" 以防止用户启用绕过权限模式。 |
disableAutoMode |
设置为 "disable" 以从模式选择器中删除 Auto 模式。也在 permissions 下接受。 |
autoMode |
自定义自动模式分类器在您的组织中信任和阻止的内容。请参阅配置自动模式。 |
browserExternalPageTools |
设置为 "disabled" 以防止 Claude 使用工具在浏览器窗格中读取或作用于外部页面。用户仍然可以自己导航到外部网站,本地开发服务器预览不受影响。 |
disableMobileSimulatorTools |
设置为 true 以阻止 Claude 在 iOS Simulator 窗格中控制和捕获设备的工具。该窗格仍可用于用户自己的点击;仅删除 Claude 的访问权限。该值必须是 JSON 布尔值 true;字符串 "true" 被忽略。 |
disableBrowserExternalNavigation |
设置为 true 以完全关闭浏览器窗格中的外部浏览。用户和 Claude 都无法导航到外部网站,localhost 开发服务器预览不受影响。该值必须是 JSON 布尔值 true;字符串 "true" 被忽略。 |
sshConfigs |
预配置SSH 连接,在环境下拉菜单中显示。用户无法删除托管连接,也无法编辑除其自己的 Worktree folder 之外的任何内容。 |
sshHostAllowlist |
限制 SSH 会话连接到已解析主机名与这些模式之一匹配的主机。仅从托管设置中读取。 |
disableDesktopLocalSessions |
设置为 true 以关闭在设备上运行的 Code 会话,仅保留到其他主机的 SSH 会话和云端会话可用。该值必须是 JSON 布尔值 true。仅从托管设置中读取。需要 Claude Desktop v1.37937.0 或更高版本。 |
disableSshSavedPasswords |
设置为 true 以阻止 Desktop 提供记住 SSH 密码的选项,并阻止其使用或显示之前保存的密码。启用此设置不会删除这些密码。仅从托管设置中读取。需要 Claude Desktop v1.49585.0 或更高版本。 |
managedMcpServers |
将 MCP 服务器配置推送到所有用户。仅在第三方 (3P) Desktop 部署中可用。在每个条目中,设置 "http"、"sse" 或 "stdio" 的传输、连接详细信息,以及可选的 toolPolicy 映射,该映射限制该服务器中用户可以调用的工具。通过托管设置文件、MDM 或 Claude apps gateway 策略的 desktop 块提供它,因为 3P 部署不接收管理员控制台设置。要通过网关提供它,您需要网关服务器上的 Claude Code v2.1.232 或更高版本。这是桌面应用自己的键;Claude Code 读取自己的同名托管设置,具有不同的条目形状。 |
哪些托管设置到达 Desktop 会话取决于该会话运行的位置。模型限制(如 availableModels)在 Desktop 的 Claude Code 会话中的执行方式与在终端 CLI 中相同;请参阅使用入口覆盖范围。
- 此机器上的本地会话:部署到磁盘的托管设置文件适用。通过管理员控制台远程推送的托管设置也在会话使用符合条件的登录向 Anthropic 的 API 进行身份验证时到达这些会话,遵循与终端 CLI 相同的设置优先级。
- 云端会话:接收服务器管理的设置;设备部署的文件无法到达它们,因为它们在 Anthropic 管理的虚拟机上运行。路由到自托管环境的会话也读取运行程序镜像中的托管设置文件。Claude Code 如何组合托管源说明该文件何时适用。
- SSH 会话:会话从远程主机读取托管设置文件。Desktop 本身在本地机器上读取
sshConfigs、sshHostAllowlist、disableSshSavedPasswords和disableDesktopLocalSessions。如果您提供多个托管源,它默认只从其中一个读取。 - Cowork 会话:在此机器上的 Cowork 会话中,Claude Code 永远不会获取管理员控制台设置,即使用户使用 Team 或 Enterprise 帐户登录,并读取部署到机器的策略,除非您的 Claude Desktop 配置设置了
requireCoworkFullVmSandbox。远程 Cowork 会话两者都不接收。请参阅策略应用的位置和时间了解哪些设备文件到达 Cowork,以及MCP 权限规则了解Bash和WebFetch规则如何应用于 Cowork 的工具。
在本地和 SSH 会话中,桌面应用直接将每个用户连接的 claude.ai 连接器传递给 Claude Code。无论您使用哪个设置源或文件位置,都没有 MCP 设置或 managed-mcp.json 到达这些连接器。要在这些会话中阻止连接器的工具,请使用您的组织的连接器工具控制。连接器如何到达 Claude Code显示在每种会话中哪些设置管理连接器。
permissions.disableBypassPermissionsMode 和 disableAutoMode 也在用户和项目设置中工作,但将它们放在托管设置中可防止用户覆盖它们。
有关仅托管源可以设置的权限、插件和交付键,请参阅仅托管设置可以设置的键。
设备管理策略
IT 团队可以通过 macOS 上的 MDM、Windows 上的组策略或 Linux 上的策略文件管理桌面应用。可用的策略包括启用或禁用 Claude Code 功能、在 macOS 和 Windows 上控制自动更新以及设置自定义部署 URL。
- macOS:通过使用 Jamf 或 Kandji 等工具的
com.anthropic.claudefordesktop偏好域配置 - Windows:通过
SOFTWARE\Policies\Claude处的注册表配置 - Linux:通过位于
/etc/claude-desktop/managed-settings.json的 root 所有的文件配置,该文件以 JSON 对象形式保存策略键。如果除 root 之外的任何人可以写入该文件或其所在文件夹,Desktop 将拒绝使用该文件。它与 Claude Code 的托管设置文件是不同的文件。
网络访问要求
Desktop 从 Anthropic CDN 主机加载其应用程序代码和用户内容。
anthropic.com
*.anthropic.com
claude.ai
*.claude.ai
claude.com
*.claude.com
claude.app
*.claude.app
*.claudeusercontent.com
*.claudemcpcontent.com
流量在端口 443 上使用 HTTPS,除非您为 OTLP、LLM 网关或 MCP 服务器配置自定义端口。
有关代理服务器、自定义证书颁发机构、mTLS 和独立 CLI 需要的域,请参阅网络配置。
要减少防火墙通配符的数量,请改为允许这些 Anthropic 主机。某些子域是动态生成的,必须保持为通配符。
anthropic.com
api.anthropic.com
a-api.anthropic.com
a-cdn.anthropic.com
s-cdn.anthropic.com
assets-proxy.anthropic.com
claude.ai
a.claude.ai
assets.claude.ai
downloads.claude.ai
*.livepreview.claude.ai
claude.com
platform.claude.com
*.livepreview.claude.app
*.claudeusercontent.com
*.claudemcpcontent.com
如果您的组织为 Claude 启用了IP 允许列表,请通过与 claude.ai 和 api.anthropic.com 相同的代理出口路由 bridge.claudeusercontent.com。如果您无法以这种方式路由它,请将您的代理用于该主机的出口地址添加到您的组织的 IP 允许列表,但仅当该地址专用于您的组织时:共享代理出口范围也允许代理供应商的其他客户。
Anthropic 根据连接到达的地址检查与该主机的连接是否符合您的组织的 IP 允许列表。如果您的代理通过不在该允许列表上的地址为其发送流量,Chrome 中的 Claude 和通过网桥连接的其他功能将停止工作,而应用的其余部分继续工作。
从 Google Fonts 加载字体的 Artifact 也会请求 fonts.googleapis.com 和 fonts.gstatic.com。两个主机都是可选的。如果您阻止它们,Artifact 将以备用字体呈现。使用快速拒绝而不是静默丢弃来阻止,以便字体请求立即失败,而不是延迟页面的首次呈现。
Artifact 还可以从 cdnjs.cloudflare.com、cdn.jsdelivr.net、cdn.tailwindcss.com、code.jquery.com 和 unpkg.com 加载 JavaScript 库(如 React 或图表包),而不能从其他任何外部主机加载。如果您阻止这些主机,Artifact 中依赖库的部分将无法工作,与被阻止的字体不同,被阻止的库没有备用方案。这里也使用快速拒绝,以便被阻止的库请求立即失败,而不是挂起直到超时。
身份验证和 SSO
Team 和 Enterprise 组织可以要求所有用户使用 SSO。有关计划级别的详细信息,请参阅身份验证,有关 SAML 配置,请参阅设置 SSO;OIDC 设置在 Claude Enterprise Administrator Guide 中介绍。
数据处理
Claude Code 在本地会话中本地处理您的代码,或在云端会话中在 Anthropic 管理的基础设施上处理,除非您的组织将它们路由到自托管环境。云端会话(包括在自托管环境中)将对话和代码上下文发送到 Anthropic 的 API 进行处理;本地和 SSH 会话将它们发送到您的部署配置的任何模型提供商,默认为 Anthropic 的 API。有关数据保留、隐私和合规性的详细信息,请参阅数据处理。
部署
Desktop 可以通过企业部署工具分发:
- macOS:通过 MDM(如 Jamf 或 Kandji)使用
.dmg安装程序分发 - Windows:通过 MSIX 包部署。有关企业部署选项(包括静默安装),请参阅为 Windows 部署 Claude Desktop
有关需要在防火墙中加入允许列表的域,请参阅上面的网络访问要求。有关代理设置、自定义证书颁发机构和 LLM 网关,请参阅网络配置。
有关完整的企业配置参考,请参阅企业配置指南。
来自 CLI?
如果您已经使用 Claude Code CLI,Desktop 运行相同的底层引擎,具有图形界面。您可以在同一机器上同时运行两者,甚至在同一项目上。每个维护单独的会话列表,您可以将 CLI 会话带入 Desktop。它们通过 CLAUDE.md 文件共享配置和项目记忆。
要将 CLI 会话移动到 Desktop,在终端中运行 /desktop。Claude 保存您的会话并在桌面应用中打开它,然后退出 CLI。当您使用 Claude 订阅登录时,此命令在 macOS 和 x64 Windows 上可用。它不适用于 API 密钥身份验证或 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry。
从您的 shell,claude --desktop 直接打开 Desktop,无需启动终端会话。它需要 Claude Code v2.1.285 或更高版本,并具有与 /desktop 相同的平台和登录要求。没有其他参数时,它在当前目录中打开 Desktop。要在 Desktop 中打开现有的 CLI 会话,添加 --continue 以获取此目录中最近的对话,或使用 --resume 和 /status 显示的会话 ID:
claude --desktop --resume <session-id>
Claude Code 打印 Opening session <session-id> in Claude Desktop,会话在应用中打开,命令退出。会话名称不能代替 ID。Claude Code 不会移动在另一个终端中打开或仍在后台运行的会话。如果未安装 Claude Desktop,命令会打印下载链接并退出。
您也可以从 Desktop 内部使用 /resume 选择 CLI 会话。此命令在本地会话中可用,不在 SSH、WSL 或云端会话中可用。
要在 Desktop 中继续终端会话:
- 在终端中关闭会话。
- 在 Desktop 输入框中,输入
/resume。Desktop 列出您从 CLI 在此计算机上启动的会话。按标题、文件夹或分支搜索,并预览每个会话的停止位置。 - 选择会话。它在应用中继续,具有完整的对话和上下文。
Desktop 继续相同的会话而不是副本,所以之后在终端中 claude --resume 仍然可以找到它。
何时使用 Desktop vs CLI:当您想要在一个窗口中管理并行会话、并排排列窗格或可视化审查更改时,使用 Desktop。当您需要脚本、自动化或更喜欢终端工作流时,使用 CLI。
CLI 标志等效项
此表显示了常见 CLI 标志的桌面应用等效项。未列出的标志没有桌面等效项,因为它们是为脚本或自动化设计的。
| CLI | Desktop 等效项 |
|---|---|
--model sonnet |
发送按钮旁的模型下拉菜单 |
--resume, --continue |
点击侧边栏中的会话,或在输入框中输入 /resume 来选择您从 CLI 启动的会话 |
--permission-mode |
发送按钮旁的模式选择器 |
--dangerously-skip-permissions |
绕过权限模式。在 Pro 和 Max 套餐上,在设置 → Claude Code → "允许绕过权限模式"中启用它;在 Team 和 Enterprise 套餐上,由组织策略控制 |
--add-dir |
在云端会话中使用 + 按钮添加多个存储库 |
--allowedTools, --disallowedTools |
无每个会话的等效项。设置文件中的权限规则仍然适用。 |
--verbose |
Verbose 视图模式 |
--print, --output-format |
不可用。Desktop 仅是交互式的。 |
ANTHROPIC_MODEL 环境变量 |
发送按钮旁的模型下拉菜单 |
MAX_THINKING_TOKENS 环境变量 |
在本地环境编辑器中设置。请参阅环境配置。 |
共享配置
Desktop 和 CLI 读取相同的配置文件,因此您的设置会沿用:
- 项目中的 CLAUDE.md 和
CLAUDE.local.md文件由两者共同使用 - 在
~/.claude.json或.mcp.json中配置的 MCP 服务器 在两者中均可使用 - 在设置中定义的 hook 和 skill 适用于两者
~/.claude.json和~/.claude/settings.json中的 设置 是共享的。权限规则、允许的工具和settings.json中的其他设置适用于 Desktop 会话。- 模型:相同的模型在两者中都可用。在 Desktop 中,从发送按钮旁的下拉菜单中选择模型。您可以在会话期间从相同的下拉菜单更改模型。
来自 Claude Desktop 聊天应用的 MCP 服务器
Desktop 应用会将 claude_desktop_config.json 中的 MCP 服务器加载到本地 Code 选项卡会话中,与来自 ~/.claude.json 和 .mcp.json 的服务器一起使用。在 claude_desktop_config.json 中定义的服务器在 Desktop 聊天使用入口和本地 Code 选项卡会话中都可用。
如果您在 claude_desktop_config.json 和 ~/.claude.json 或 .mcp.json 中定义相同的服务器名称,本地会话中的 Code 选项卡只连接一次并使用 claude_desktop_config.json 中的定义。
该应用还将来自 ~/.claude.json 的 stdio 服务器重新传递到本地会话中的嵌入式 CLI。当 ~/.claude.json 的顶层(用户作用域)和 .mcp.json 定义相同的 stdio 服务器名称时,Code 选项卡使用 ~/.claude.json 中的定义,这与 CLI 的作用域层次结构不同。
独立 CLI 不读取 claude_desktop_config.json。在 macOS 和 WSL 上,运行 claude mcp add-from-claude-desktop 将这些服务器复制到 ~/.claude.json。请参阅从 Claude Desktop 导入 MCP 服务器了解导入流程和作用域选项。
功能比较
此表比较了 CLI 和 Desktop 之间的核心功能。有关 CLI 标志的完整列表,请参阅 CLI 参考。
| 功能 | CLI | Desktop |
|---|---|---|
| 权限模式 | 所有模式,包括 dontAsk |
Manual、Accept edits、Plan 和 Auto。启用后,绕过权限会出现在模式选择器中:在 Pro 和 Max 套餐上通过设置开关启用,在 Team 和 Enterprise 套餐上通过组织策略启用 |
| 第三方提供商 | Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry | 默认使用 Anthropic 的 API。对于网关路由,请参阅将桌面应用连接到网关。要在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或自托管 LLM 网关上运行 Code 选项卡,请参阅 Claude Desktop on 3P。 |
| MCP 服务器 | 在设置文件中配置 | 本地和 SSH 会话的连接器 UI,或设置文件 |
| 插件 | /plugin 命令 |
插件管理器 UI |
| @mention 文件 | 基于文本 | 带自动完成;仅本地和 SSH 会话 |
| 文件附件 | 不可用 | 图像、PDF |
| 会话隔离 | --worktree 标志 |
启动会话时的 worktree 选项 |
| 多个会话 | 单独的终端 | 侧边栏选项卡 |
| 定期任务 | Cron 作业、CI 管道 | 定时任务 |
| 计算机使用 | 在 macOS 上通过 /mcp 启用 |
在 macOS 和 Windows 上的应用和屏幕控制 |
| iOS 模拟器 | 通过计算机使用驱动模拟器 | iOS Simulator 窗格自动打开 |
| Dispatch 集成 | 不可用 | 侧边栏中的 Dispatch 会话 |
| 脚本和自动化 | --print、Agent SDK |
不可用 |
Desktop 中不可用的内容
以下功能在 Desktop 中不可用,除非另有说明:
- 第三方提供商:Desktop 默认连接到 Anthropic 的 API。要通过网关路由 Desktop,或在 Amazon Bedrock、Google Cloud 的 Agent Platform、Microsoft Foundry 或自托管 LLM 网关上运行 Code 选项卡,请按照第三方提供商行中的链接操作。
- Linux (beta):Linux 桌面应用中尚不提供计算机使用。请参阅 Claude Desktop on Linux。
- 内联代码建议:Desktop 不提供自动完成风格的代码补全。它通过对话式提示词和显式代码更改工作,并可以在 Claude 回复后建议您的下一个提示词。
- Agent team:协调的团队(由 Claude 作为团队负责人从共享任务列表中为队友分配任务)在 CLI 中可用,不在 Desktop 中。对于一个会话内的多 Agent 工作,请使用动态工作流,它可在 Desktop 中运行;Claude 也可以直接向您的其他会话发送消息并管理它们。
- Terminal-dialog 命令:在终端中打开交互式面板的内置命令,其行为在 Code 选项卡中有所不同。直接编辑设置文件来管理权限规则和配置,或从独立 CLI 运行命令。
- 没有参数形式的命令,例如
/permissions,会回复isn't available in this environment。 /config打开设置 → Claude Code。命令后的文本会被忽略,所以/config theme=dark不会设置主题。
- 没有参数形式的命令,例如
故障排除
下面的部分涵盖特定于桌面应用的问题。对于出现在聊天中的运行时 API 错误,如 API Error: 500、529 Overloaded、429 或 Prompt is too long,请参阅错误参考。这些错误及其修复在 CLI、Desktop 和 Web 中是相同的。
检查你的版本
要查看你运行的桌面应用版本:
- macOS:点击菜单栏中的 Claude,然后点击 About Claude
- Windows:点击 Help,然后点击 About Claude
点击版本号将其复制到你的剪贴板。
Code 选项卡中的 Claude Code 版本
要查看会话运行的 Claude Code 版本,请在 Code 选项卡的本地会话中输入 /status,然后查看 Claude Code 行,其中会显示版本号,例如 2.1.286。
要为本地会话获取更新的版本,请在 macOS 上打开 Claude → Check for Updates,或在 Windows 上打开 Help → Check for Updates,然后启动新会话。
在本地会话中,Code 选项卡运行其自己的 Claude Code 副本,该副本有自己的版本号。桌面应用会下载并更新该副本,因此它可能与终端中的 claude 命令版本不同,并且更新其中一个不会更新另一个。
Code 选项卡中的 403 或身份验证错误
如果在使用 Code 选项卡时看到 Error 403: Forbidden 或其他身份验证失败:
- 从应用菜单中注销并重新登录。这是最常见的修复。
- 验证你有活跃的付费订阅:Pro、Max、Team 或 Enterprise。
- 如果 CLI 工作但 Desktop 不工作,完全退出桌面应用,而不仅仅是关闭窗口,然后重新打开并登录。
- 检查你的互联网连接和代理设置。
启动时屏幕空白或卡住
如果应用打开但显示空白或无响应的屏幕:
- 重启应用。
- 检查待处理的更新。在 macOS 和 Windows 上,应用在启动时自动更新;在 Linux 上,通过 apt 更新,如 Claude Desktop on Linux 中所述。
- 在托管网络上,确认你的防火墙允许网络访问要求中的 CDN 主机。
- 在 Windows 上,在 Windows 日志 → 应用程序 下的事件查看器中检查崩溃日志。
"Failed to load session"
如果你看到 Failed to load session,选定的文件夹可能不再存在,Git 存储库可能需要未安装的 Git LFS,或文件权限可能阻止访问。尝试选择不同的文件夹或重启应用。
会话找不到已安装的工具
如果 Claude 找不到 npm、node 或其他 CLI 命令等工具,验证工具在你的常规终端中工作,检查你的 shell 配置文件是否正确设置 PATH,并重启桌面应用以重新加载环境变量。
Git 和 Git LFS 错误
在其自己的 worktree 中运行的会话需要 Git。如果你看到"Git is required",安装 Git,或在 Windows 上安装 Git for Windows,然后重试。在 Windows 上,1.49585.0 之前的 Claude Desktop 版本在启动任何本地会话之前要求 Git;如果你看到该提示且不使用 worktrees,请更新应用。
如果你看到"Git LFS is required by this repository but is not installed",从 git-lfs.com 安装 Git LFS,运行 git lfs install,并重启应用。
MCP servers 在 Windows 上不工作
如果 MCP server 切换不响应或服务器在 Windows 上连接失败,检查服务器在你的设置中是否正确配置,重启应用,验证服务器进程在任务管理器中运行,并查看服务器日志以获取连接错误。
登录后 SSH 连接失败
在下表中找到卡片的标题或错误消息末尾的代码,然后按照最后一列的说明操作。要查看消息,请在失败卡片上选择 View details。
| 卡片上的标题 | 代码 | 处理方法 |
|---|---|---|
<host>'s SSH server has SFTP turned off |
[SFTP_UNAVAILABLE] |
在服务器的 sshd_config 中启用 SFTP,如远程机器要求中所述 |
SFTP doesn't start on <host> |
[SFTP_NOT_STARTED] |
在您计算机的终端中使用 sftp 连接到同一主机,查看是什么阻止了它启动,然后检查 Desktop 消息中提到的设置和文件 |
<host> allows too few SSH sessions per connection |
[SESSION_LIMIT] |
提高服务器 sshd_config 中的 MaxSessions,例如设为 OpenSSH 的默认值 10 |
<host> is out of disk space |
[ENOSPC] 或 [EDQUOT] |
在远程机器上的主目录或 /tmp 中释放空间或配额 |
This computer is out of disk space |
[ENOSPC] 或 [EDQUOT],出现在以 Couldn't prepare the deploy locally 开头的消息中 |
释放您计算机上的空间 |
Claude Code won't start on <host> |
[CLI_UNRESPONSIVE] |
等待一分钟,然后重试。如果仍然失败,请在远程机器上运行消息中提到的命令,查看 Claude Code 在那里是否有响应。 |
对于任何其他消息,请查看远程机器要求。
获取 SSH 问题的 Desktop 日志
ssh.log 是 Desktop 对其 SSH 连接的记录,它包含在您从 Help 菜单保存的 Desktop 日志 zip 文件中。要保存该文件,请打开 Help > Troubleshooting 并选择适用于您系统的项目:
- macOS:Show Logs in Finder
- Windows:Show Logs in File Explorer
- Linux:Show Logs in File Manager
在发送这些文件之前,请先检查其内容,因为其中可能包含来自您环境的名称和其他详细信息。<host> 和 <user> 代表 Desktop 已替换的名称。Desktop 不会替换所有名称,SSH 主机名或用户名仍可能按原样出现。如果您将 zip 文件发送给他人,请告诉对方哪个主机在何时失败,因为日志中可能不会提及该主机。
该 zip 文件不包含 Desktop 在远程机器上安装的辅助程序的日志。要同时获取该日志,请从建立连接的用户的主目录中 ~/.claude/remote/run/ 下的辅助程序文件夹中复制 remote-server.log。在发送之前,也请检查该文件的内容。
应用无法退出
- macOS:按 Cmd+Q。如果应用不响应,使用 Cmd+Option+Esc 强制退出,选择 Claude,然后点击强制退出。
- Windows:使用 Ctrl+Shift+Esc 的任务管理器来结束 Claude 进程。
Windows 特定问题
- 安装后 PATH 未更新:打开新的终端窗口。PATH 更新仅适用于新的终端会话。
- 并发安装错误:如果你看到关于另一个安装正在进行的错误,但实际上没有,尝试以管理员身份运行安装程序。
在 CLI 中打开时"Branch doesn't exist yet"
云端会话可以创建在您的本地机器上不存在的分支。点击会话中的分支名称并选择 Copy branch name,然后在本地获取它:
git fetch origin <branch-name>
git checkout <branch-name>
仍然卡住?
- 在桌面应用中打开 Help → Get Support,或直接访问 Claude 支持中心
- 对于在独立
claudeCLI 中也能重现的问题,在 GitHub Issues 上搜索或提交错误
提交问题时,包括你的桌面应用版本、你的操作系统、确切的错误消息和相关日志。在 macOS 上,检查 Console.app。在 Windows 上,检查事件查看器 → Windows 日志 → 应用程序。在将日志摘录发布到公开问题之前,请查看它们;它们可能包含来自你的环境的文件路径和其他详细信息。