Skip to content
FunCoding

Search

Search docs, agents, posts, Skills and MCP servers

Projects 与手机应用

用 Projects 让 Claude 在一段持续对话里协调一系列并行的云端会话(创建、使用、上下文、设置、用量、限制与排障);以及在手机上用 Claude 应用启动、监控和引导 Claude Code 任务。

Projects

Projects 在 Pro 和 Max 套餐上处于公开测试,逐步推出,先面向用过云端会话、且在 claude.ai 聊天或 Cowork 里没有现有 project 的账号;暂不适用于 Team 或 Enterprise 套餐。如果在 claude.ai/code 的侧边栏或桌面应用的 Code 标签页里没有看到 Projects,说明推出还没到你的账号,可以加入候补名单。下文的限额数字、版本要求以官方为准。

Project 是一段持续的对话,Claude 在其中为你协调一系列相关的工作。你告诉它要做什么,它为每个任务开一个线程(thread)。每个线程通常是一个云端会话:Claude Code 运行在云端而不是你的机器上。当任务需要只有你电脑才有的东西时,你可以让 Claude 通过 Remote Control 在你的电脑上运行那个线程。线程并行运行,你可以用手机查看和引导它们;云端线程在你合上笔记本后继续运行,而你电脑上的线程只在那台电脑醒着时才运行。

没有 project 时,同时运行几个会话意味着你自己协调:自己决定每个会话做什么,每次开头重复同样的背景,并回头检查哪个完成了或需要回答。有了 project:

  • 把工作送到一个地方:任何时候出现 bug 报告、堆栈跟踪或任务清单,就粘贴进对话。Claude 为每项工作开一个线程,或交给已经在那个区域工作的线程,并就地回答快速问题。
  • 一次设置上下文:每个新线程都以 project 的指令开始,所以你只说一次的规则(如目标分支)会到达所有线程。
  • 走开,回来时工作已完成:一小时后或第二天早上回来时,Overview 面板显示哪些线程完成了、哪些拉取请求可以评审、哪个线程在等你的回答。

什么时候用 project

当工作有一个比单个会话更长久、并持续产生任务的目标时,project 值得创建。这些类型的工作很适合:

  • 跨许多仓库的一个目标:「把每个服务升级到新的 lint 配置」。Claude 可以每个仓库跑一个线程、各带自己的拉取请求,Overview 面板显示哪些可以评审了。
  • 你持续投喂的一个区域:某个服务的 bug、堆栈跟踪和评审请求,在它们到达你时粘贴进对话。你在一次修复后让 Claude 记住的陷阱,会进入 project 记忆供下一次使用。
  • 比一个会话更大的构建或迁移:「构建 docs/spec.md 描述的东西」或「把应用从已弃用的 ORM 迁走」。工作拆成各自负责一部分的线程,你早期要求 Claude 记住的决定会到达之后的云端线程,构建期间发现的规格变更和 bug 都进入同一段对话。
  • 不是代码的工作:你反复回来提新问题的一个合同文件夹或支持工单导出,例如「找出这些工单里最常见的十个集成错误」。上传文档而不是添加仓库,线程把每份写作成果作为文件交付到 project 的 Library 标签页。

在任何一种里,你都可以发送一批任务,告诉 Claude 不用请你确认就开始,走开,回来时在 Waiting on you 下找到需要你的线程,或让 Claude 把部分工作安排成例程。

**其他方式更合适的情形:**即使只有一部分任务需要你的机器,project 仍然适合:云端线程处理 GitHub 仓库和你上传到项目的文件、文件夹和 Google Drive 文件夹;对偶尔需要本地数据库或你电脑上某个工具的任务,你可以让 Claude 在你的电脑上运行该任务的线程。下列情形其他东西更合适:

  • 一个能放进单个会话的任务:「修复不稳定的登录测试」,自己启动一个云端会话。
  • 每个任务都需要你的机器的工作:本地数据库、设备模拟器或 VPN 后的 API。用本地会话,或用智能体视图同时运行多个;如果工作只需要本地文件,把它们上传到 project。
  • 按计划重复、周围没有对话的一个任务:「每周一发布依赖报告」,单独创建一个例程。
  • 多人给 Claude 工作并在 Slack 频道里一起引导它:见 Claude Tag。

project 与你其他 Claude Code 会话使用相同的套餐限额,而且用得更快;「用量与成本」讲什么会消耗你的套餐以及如何降低。

project 如何组织

project 是与 Claude 的一段协调对话,加上它启动来做工作的线程。它的组成部分:

  • project 对话:一个长期运行的会话,Claude 在其中担任协调者。它接收你发送的内容、决定什么变成线程,并跟踪它启动的每个线程。它看到线程回报的内容,而不是它们的每一步。
  • 线程:执行者。每个是一个独立的会话,有自己的上下文窗口,做一件工作,完成时向对话回报。云端线程在自己的分支上工作,工作需要时开一个拉取请求。
  • 每个云端线程一开始就有的东西:project 的仓库和文件,加上它的指令和记忆;project 每个仓库里的 CLAUDE.md 和 skills,以及在只有一个仓库的 project 里,该仓库的权限规则和 hooks;你 claude.ai 账号上的连接器;以及设定其网络访问、环境变量、API 凭据和已安装工具的云环境。
  • Overview 面板:你一次看到所有线程以及哪些需要你的地方。它的其他标签页是:Library(你添加的文件和线程产出的文件)、Pull requests(线程开的那些)和 Routines(project 里的定时工作)。

云端线程不会从你自己机器上的 Claude Code 设置获得任何东西;如何把它们否则会缺少的东西给到线程,见「把 skills、插件、连接器和工具带进线程」。

创建 project

你在 claude.ai/code、桌面应用的 Code 标签页,或 iOS 和 Android 的 Claude 移动应用里创建和使用 project。在浏览器和桌面应用里有两种方式开始一个 project:

  • 从头开始,当你知道想让 Claude 运行的工作流时:打开 New project 对话框并命名。
  • 从已经在做这项工作的云端会话:在该会话的菜单里选 Continue as project,Claude 根据会话在做的事提出 project 的设置。

不论哪种,先检查前提条件。

检查前提条件

创建 project 之前,检查你的套餐、你的 GitHub 设置和工作需要触及什么:

  • 套餐:你在 Pro 或 Max 上,且侧边栏里显示 Projects。
  • GitHub(如果 project 要处理代码):你的代码在 github.com 上,而不是 GitHub Enterprise Server、GitLab 或 Bitbucket;你连接的 GitHub 账号对它有推送权限;并且 Claude GitHub App 已安装在它上面。如果你用 /web-setup 连接了 GitHub,该令牌让你其他的云端会话能访问仓库,但对 project 的云端线程来说不够,它们需要 Claude GitHub App。
  • 网络、凭据和工具:对云端线程,这些来自 project 的云环境。默认环境已经能访问常见的包注册表,所以只有当工作需要其他域名、密钥或没有预装的工具时才需要检查;如果工作需要 MCP 服务器,检查它在你的 claude.ai 连接器里显示为已连接。

从头开始一个新 project

从头开始意味着打开 New project 对话框,给工作流命名,并可选地给它一个目标以及它处理的仓库和文件。只有名称是必需的,所以你可以先创建 project,随着工作成形再填其余部分。

  1. 打开 Projects:在 claude.ai/code 或桌面应用的 Code 标签页里,选左侧边栏的 Projects,再选 New project;在浏览器里你也可以直接去 claude.ai/code/projects/browse。
  2. 填写 New project 对话框:把 project 的范围限定在你会不断往里加东西的一个工作流,例如让某个 API 保持在延迟目标之内所需的一切。然后填写对话框的字段:
    • Name:project 在 Projects 列表里的显示方式。
    • Goal(可选):你想完成什么的一行描述,如「Hold p95 API latency under 200 ms」;对话里的 Claude 朝它努力。没有目标时,Claude 根据你发来的任务工作,你可以之后在 Project settings > General 里添加目标。
    • Context(可选):这个 project 处理的 GitHub 仓库,加上线程应读取的任何文件、文件夹或 Google Drive 文件夹,每个点击 Add。添加大多数任务需要的仓库,而不是工作可能涉及的每一个;之后可以在 Project settings > Environment 里添加更多。关于线程应该如何工作的常设规则放进 project 指令,在 project 存在之后设置。
  3. 创建 project:点击 Create project。project 的对话打开,底部有消息框,你在其中向 Claude 描述工作。在你的第一个 project 上,除非你先发消息,Claude 在 project 创建后立刻自己行动一轮,这一轮会使用你的套餐。其中 Claude 可能:如果 project 有它能读取的仓库,启动一个只探索仓库而不改动任何东西、并提出后续步骤的线程;根据你最近的云端会话发布 Setup recommendations:要添加的仓库、要创建的例程和它可以启动的线程。每个被推荐的仓库和例程默认都是开启的,关掉你不想要的,再点 Update setup 添加其余的,或忽略推荐并自己描述工作。

project 现在列在侧边栏的 Projects 下,它的对话已打开。

从已有的云端会话开始

如果你已经有一个在做属于某个 project 的工作的云端会话,在侧边栏打开该会话的菜单,选 Continue as project 或 Move to project:

  • Continue as project:创建一个以该会话命名的新 project 并打开它。Claude 读取会话,并在对话里发布 Setup recommendations 供你确认。原会话保留在你的会话列表里,如果它正在进行一轮,会继续运行,所以如果你不想两者同时工作,要自己停止它。如果你改用可能出现在云端会话消息框上方的 Set up project 横幅,结果相同,只是会话正在运行的这一轮会在 project 打开后停止。
  • Move to project:把会话的工作带进已有的 project。它在该 project 的对话里发一条消息,请 Claude 读取该会话并从中断处继续,新工作在 project 自己的线程里继续。原会话保留在会话列表里,不变。

本地会话没有这些选项。要在 project 里继续它的工作,在 project 对话里描述这项工作,或推送它的分支、把那个仓库加到 project 并在任务里指名该分支。

设置 GitHub 访问

大部分 GitHub 设置只做一次,而不是每个 project 一次。你把 GitHub 账号连接到 Claude 一次,Claude GitHub App 每个仓库安装一次(如果给它所有仓库,则整个 GitHub 组织一次)。当你添加 Claude GitHub App 还没覆盖的仓库,或强制 SSO 的 GitHub 组织里的仓库时,才需要回到这些步骤。

  1. 连接你的 GitHub 账号:如果你以前没用过 claude.ai/code,首次访问会引导你连接 GitHub;否则用云端会话页的 GitHub 认证选项之一。
  2. 在 project 的仓库上安装 Claude GitHub App:安装 Claude GitHub App,并授予它 project 将使用的仓库。对由 GitHub 组织拥有的仓库,只有组织所有者能完成安装;如果你不是,GitHub 会向所有者发送安装请求,在他们批准之前 project 无法使用该仓库。
  3. 为强制 SSO 的组织授权:如果某个 GitHub 组织强制 SAML SSO,重新连接 GitHub 并为该组织授权 Claude 应用。在你这么做之前,该组织的私有仓库不会出现在 New project 对话框或 Project settings > Environment 里。

当其中某一步未完成时,New project 对话框和 project 页面会点名缺失的步骤并链接到完成它的地方;在那里完成该步骤,然后如果对话框提供的话点击 Check again。如果之后仓库仍然没有出现在列表里,在 GitHub 上打开 Claude GitHub App 的安装页(个人账号是 github.com/settings/installations),确认该仓库列在 Repository access 下。线程或 project 在访问仍然不对时报告的错误消息,见「仓库访问错误」。

在 project 里工作

通过 project 对话给 Claude 工作:一次一个任务或一次几个,以及随时出现的更新和零散想法。Claude 路由每条消息,线程做工作并回报。

你的第一批工作

在向新 project 发送一批工作之前,先设置好它,使第一批线程以你想要的方式返回:

  1. 写 project 指令:每个线程开始时依据的简报,如以哪个分支为目标、线程如何检查自己的工作,以及什么需要你的批准。
  2. 发送一小块真实的工作,或者如果 Claude 提供了建议的线程,启动其中之一;线程完成时打开它,看它如何回报以及在它的分支上做了什么。如果它假设错了什么或触及不到需要的东西,见「线程在猜测或停滞而不是询问」了解在哪里修复。
  3. 检查 Thread model 和 Thread effort(在 Project settings > General):新 project 让每个线程在 Opus 上以 high effort 运行,这最快消耗你的套餐;替代方案见「选择模型并让 Claude 管理上下文」。
  4. 让 Claude 先提出线程再启动、一次只运行几个,等几个线程以你想要的方式返回之后,再取消这些限制。

发送工作并阅读结果

Claude 决定你在对话里发的每条消息去哪里:

  • 快速问题通常在对话里得到回答。
  • 新工作交给新线程或已经在该区域工作的线程,Claude 会告诉你是哪个。每个新线程以卡片的形式出现在你的消息下面:一个带线程标题和状态的方框,点击它打开线程。
  • 一条消息里的几个不相关的任务变成独立的线程。

如果 Claude 的路由不是你想要的,直接说;「调整 Claude 如何运行 project」列出了你可以告诉它的事,如把后续问题复用到现有线程,或就地回答而不是启动线程。线程的完整结果留在线程里,你打开对话里它的卡片阅读;线程产出的文件也在 Overview 的 Library 标签页。有时 Claude 在 Suggested threads 列表里提出线程而不是启动它们:点击建议上的箭头启动那个线程;列出多个时,列表下方的按钮启动全部。

评审线程的拉取请求

当云端线程改动代码时,除非你另有说明,它会这样做:

  • 分支:在从仓库默认分支开始的新分支上工作。
  • 拉取请求:在你要求时开一个,也可以为 bug 修复或其他具体改动自己开一个。
  • 开了之后:用 auto-fix 监视拉取请求,不论你其他云端会话是否开着 auto-fix。CI 失败时它推送修复、处理评审评论,并在检查通过且拉取请求准备好给你时在线程里回复。

当线程推送了分支或开了拉取请求,对话里它的卡片可以显示下一步的按钮:Resolve conflicts、Fix CI、Address comments 和 Merge it 把该指令作为你发的消息发给线程,所以你可以自己提示线程,而不是等它对拉取请求作出反应;Review PR 在 GitHub 上打开拉取请求;Create PR 在空闲线程已推送分支但还没开拉取请求时出现,点击它直接从那个分支创建拉取请求,而不是给线程发指令去开。要改变线程何时开拉取请求(例如只在你要求时)或它们从哪个分支开始,在任务里或 project 指令里说明。

在 Overview 里看什么需要你

对话旁的 Overview 面板跟踪 project 的线程。你第一次打开新 project 时它就已打开;project 标题栏里的 Overview 按钮关闭并重新打开它,并在有线程等你时显示一个点。在桌面应用里,当 Claude 在对话里发布内容、线程出错或线程需要你的输入时,你还会收到桌面通知,所以不必一直开着 project 才知道。要在线程每完成一轮时也收到一条,或为某个 project 关闭通知,在 project 的侧边栏菜单里选 Notifications;这些通知只限桌面,在浏览器里查看 Overview 按钮上的点。

面板的 Threads 标签页按状态给线程分组:

分组里面有什么
Ready for review拉取请求已打开、等待评审的线程
Waiting on you需要你回复或批准、或失败了的线程
Working仍在运行的线程
Landing拉取请求已批准或已排队合并的线程
Idle已完成且不在等任何东西的线程
Resolved被标记为完成的线程:由你从线程菜单标记、在你做了最后一步(如合并它的拉取请求)后由 Claude 标记,或一周无活动后自动标记;你可以从同一个菜单重新打开

面板的其他标签页是:Library(你添加的文件和文件夹以及线程产出的文件)、Pull requests(线程开过之后)和 Routines(Claude 从这个 project 设置的例程)。

需要控制时打开线程

点击对话里线程的卡片或它在 Overview 里的行,在 Overview 面板里打开它的转录。从那里你可以:一步一步阅读 Claude 做了什么;在线程自己的消息框里写东西来引导任务(那里的消息直接去该线程,而 project 对话里的后续消息只有在 Claude 把它匹配到该线程时才到达它);回答线程正在等待的权限提示;用 Stop(线程工作时它取代发送按钮)或按 Esc 中断线程。

选择模型并让 Claude 管理上下文

在 Project settings > General 里设置模型和 effort。新 project 在所有地方运行 Opus,线程用 high effort,对话用 low effort:

  • Thread model 和 Thread effort 适用于线程。要为某个任务使用不同的模型,在任务里提出;对已经运行的线程,用该线程的模型选择器。
  • Coordinator model 和 Coordinator effort 适用于 project 对话里的 Claude。

你不需要在 project 里管理上下文窗口:线程自动压缩,对话从最近的消息、最近的线程和 project 记忆工作,而不是它的全部历史,所以只要 project 运行它就能一直继续。把任何绝不能丢掉的东西放进 project 记忆。如果某个线程的上下文用尽,它会显示 Claude ran out of context on this turn。

调整 Claude 如何运行 project

在对话里告诉 Claude 一次运行多少个线程、何时发布更新、何时开拉取请求。如果 Claude 的协调方式不是你想要的,直接说。例如你可以说:

  • 「Propose threads and wait for my go-ahead before starting them」或「Start these now without asking me to confirm」
  • 「Run at most two threads at a time」或「Reuse an existing thread for follow-ups in the same area」
  • 「Post shorter updates」或「Only post when something finishes or is blocked」
  • 「Give me a status update on every thread」
  • 「Do this task with a smaller model」
  • 「Don't open a pull request until I've seen the plan」
  • 「Tell me what's wrong in these repositories and don't fix anything yet」:当你想在任何发现变成线程之前先过一遍它们时
  • 「Answer that here instead of starting a thread」:当 Claude 为你本意是快速提问的东西启动了线程时

Claude 会自己把这样的偏好保存到 project 记忆,并在之后的云端线程里遵守。它们是 Claude 遵循的指令而不是强制的设置,所以你这样给出的线程数量限制不是硬上限;想让它被准确措辞并从一开始就适用于每个线程时,把它加到 project 指令里。

解除等待批准的线程

线程在其模型支持时以 auto 模式运行,所以大多数工具调用无需询问你就运行。当线程需要你的批准时,提示在该线程里面,线程等你在那里回答;在 project 对话里告诉 Claude 继续是到不了它的。每次批准覆盖那个提示,或如果你选择更宽的选项,覆盖该线程的剩余部分。要让每个线程无需询问就能运行某些命令,或阻止某些命令,把权限规则加到仓库的 .claude/settings.json:云端线程只在有一个仓库的 project 里应用它们(见「线程从你的仓库获取什么」);在有多个仓库的 project 里,没有任何仓库的权限规则能到达云端线程,所以你依赖 auto 模式和你在每个线程里给出的批准。

在你自己的电脑上运行线程

当任务需要只有你电脑才有的东西(如本地数据库、设备模拟器或 VPN 后的 API)时,让 Claude 在你的电脑上而不是云端为该任务运行线程。当你在 project 对话里提出时,线程是你机器上某个文件夹里的 Claude Code 会话,通过 Remote Control 连接,project 的其他线程继续在云端运行。与云端线程相比,你电脑上的线程:

  • 使用那台机器上的文件、工具、MCP 服务器和 Claude Code 设置(包括它的 hooks 和权限规则),而不是 project 的云环境;
  • 以 project 的指令开始,但不加载它的记忆文件;
  • 只在那台电脑醒着且开着 Remote Control 时运行。
  1. 连接文件夹:在有任务所需文件夹的电脑上,用两种方式之一通过 Remote Control 让它可用(两者都需要那台电脑上是 Claude Code v2.1.280 或更高):在 Claude 桌面应用里,打开 Settings > Claude Code,打开 Use this computer from your phone and claude.ai,并把文件夹加进该开关下的列表,应用打开期间线程可以在这台电脑上运行;在终端里,在该文件夹里运行 claude remote-control 并让它保持运行,在 git 仓库里加 --spawn worktree,让那里的每个线程拥有自己的 worktree 而不是文件夹本身。
  2. 用 Work locally 请求任务:在 project 对话里,从消息框旁的 + 菜单选 Work locally,它给你的消息打上 Local 标签,然后写下你想做什么;在消息里说明任务应该在你的电脑上运行也行。
  3. 在卡片上允许:Claude 以一张 Allow Claude to work in a folder on your device 卡片回应。如果你连接了几个文件夹,挑选文件夹。两个线程同时在一个文件夹里工作可能互相覆盖对方的改动,所以如果文件夹是 git 仓库,你可以在文件夹的选项里打开 Worktree,给这个线程自己的 worktree;然后点击 Allow once。

线程以 auto 模式运行,所以 Claude 在该文件夹里运行命令和编辑文件时不会每次都问你。如果那台电脑的 Claude Code 里 auto 模式不可用或被关闭,线程在没有它的情况下运行,它引发的任何权限提示都等你在线程里回答,如「解除等待批准的线程」所述。线程运行期间,它标题里的笔记本图标显示你的电脑是否已连接;点击它可以看到线程正在使用哪个文件夹,或关闭连接。该电脑睡眠期间线程暂停,如果桌面应用或 claude remote-control 退出则线程停止;重新启动见「与你的文件夹失去联系」。在桌面应用里,在 Settings > Claude Code 下打开 Keep this computer awake for Remote Control,防止电脑自己睡眠。当你的账号开着 Require trusted devices 时,project 无法在你的电脑上运行线程。

给 project 常设上下文

project 记忆、project 指令,以及 project 的仓库、文件和环境,跨线程携带上下文。你只设置每一项一次。

上下文携带什么如何设置
project 记忆Claude 保存的关于 project 的笔记,如需求、决定和陷阱,以文件形式存储;每个云端线程启动时读取索引文件 MEMORY.md,需要时再打开其他文件在 project 对话或任何云端线程里让 Claude 记住一项需求、决定或陷阱,或忘掉某项;在 Project settings > Memory 里读取、编辑和删除这些文件
project 指令发给每个新线程和 project 对话里 Claude 的文本,最多 16,000 个字符;写什么见「写 project 指令」Project settings > Memory > Project instructions,或让 Claude 更改指令
仓库、文件和环境每个云端线程克隆的仓库、它能在 /mnt/project-files 下读取的文件夹和文件,以及它运行所在的云环境仓库和环境在 Project settings > Environment,或在对话里让 Claude 把仓库加到 project;文件和文件夹从 Overview 里 Library 标签页的 Add 添加

Project settings > Memory 把这些文件列在 Auto memory 下,因为 Claude 在 project 里工作时自己写它们。它们与 Claude Code 在你机器上保存的自动记忆是分开的,即使两者都使用 MEMORY.md 索引。project 记忆也与 project 仓库里的 CLAUDE.md 文件分开:每个云端线程启动时仍从它的克隆里读取那些 CLAUDE.md 文件,所以把关于某个仓库的指令放进它的 CLAUDE.md,把关于 project 的笔记放进 project 记忆。

写 project 指令

project 指令是每个新线程开始时依据的简报。点击 project 标题栏里的齿轮图标打开 Project settings,再进入 Memory > Project instructions。一份有用的简报涵盖:project 是做什么的;工作在哪里进行(哪些仓库、从哪个分支开始、如何命名拉取请求);线程在宣布完成之前如何检查自己的工作;它需要的东西缺失时该怎么做;以及什么需要先得到你的批准。例如:

This project holds p95 latency for the payments API under 200 ms: profiling, query and caching fixes, and the dependency upgrades that come with them, in the payments-api repository.

- Branch from main and open one draft pull request per thread.
- Before you call work done, run `make test` and `make lint` and paste the summary lines in your final message.
- If you can't reach something you need, such as a repository, a secret, an API, or a connector, say exactly what's missing in your first message and stop. Don't substitute, mock, or guess.
- Don't merge, force-push, or change CI configuration without asking me in the thread.

关于某个仓库的规则(如它的构建命令)属于该仓库的 CLAUDE.md,当该仓库是 project 的一部分时,每个云端线程都会读取它。工作开始之后,当你纠正某个线程时,也要让 Claude 记住这个纠正:它进入 project 记忆,之后的云端线程一开始就带着它。

决定添加哪些仓库

你添加到 project 的仓库连同其中的一切(代码、CLAUDE.md 和 skills)出现在每个云端线程里。你没添加的仓库仍然触手可及:云端线程可以在任务需要时把它加给自己。大多数 project 两种都用:

  • 把它加到 project:在 New project 对话框里、Project settings > Environment 里,或在对话里让 Claude 把它加到 project。从那时起,每个云端线程都克隆它,并在启动时加载它的 CLAUDE.md 和 skills,不论任务是否涉及它。从一个仓库变成多个,也会改变线程从每个仓库的 .claude/settings.json 获取什么(见「线程从你的仓库获取什么」)。
  • 不加,让线程需要时自己添加:任务需要 project 没有的仓库的云端线程可以把它加给自己,线程里有一条说明指出它只被加到了这个线程。克隆发生在任务中途,所以该仓库的 CLAUDE.md 和 skills 在线程启动时并不在;下一个线程在没有它的情况下启动。这样添加的仓库需要与 project 仓库相同的前提条件:安装了 Claude GitHub App 并有你的 GitHub 账号的推送权限。

project 根本不需要仓库:它的云端线程仍然可以研究、写文档,并在自己的沙箱里写和运行代码,把文件交付到 Library 标签页,而且在任务需要时,任何云端线程仍然可以给自己添加仓库。一旦 project 有了仓库,Claude 只能添加来自 project 已使用的 GitHub 所有者的仓库,不论是它把仓库加到 project 还是线程把它加给自己;要引入来自不同所有者的仓库,自己在 Project settings > Environment 里把它加到 project。对跨许多仓库的 project(如一个功能涉及服务端、网页、移动和桌面代码),添加几乎每个任务都涉及的一两个仓库,并在 project 指令里点名其他的,让 Claude 知道其余代码在哪;云端线程随后从小处开始,只为需要它们的任务引入其他仓库。

添加文件和文件夹

在 New project 对话框的 Context 字段里添加你想让线程读取的文件和文件夹,或之后用 Overview 里 Library 标签页的 Add。你添加的内容有这些限制:

  • Library 标签页:一次最多选 100 个文件和 2 GB,单个文件最大 480 MB。
  • New project 对话框:超过 30 MB 的文件会被跳过,所以较大的文件在创建 project 之后从 Library 标签页添加。
  • 文件夹:从任一处添加文件夹时,project 收到其前 100 个文件(最多 200 MB)的副本,不含任何超过 30 MB 的文件、隐藏文件或 node_modules。一个 project 最多容纳合计 10 个文件夹和 Google Drive 文件夹,单个文件不计入该限制。
  • 上传之后的改动:上传的是副本,所以你之后在电脑上做的改动,在你再次上传该文件并在被问到已有名称时选 Replace 之前,不会到达 project。

线程从你的仓库获取什么

每个云端线程克隆 project 里的每个仓库,并从所有仓库加载 CLAUDE.md 和 skills。权限规则、hooks 和 env 只来自线程启动所在目录里的 .claude/settings.json:project 有一个仓库时,是仓库内部;有多个仓库时,是克隆之上的那一层,那里没有任何仓库的文件被读取。

每个仓库里的一个仓库多个仓库
CLAUDE.md线程启动时加载线程启动时从每个仓库加载
.claude/ 下的 skills、智能体和命令加载从每个仓库加载
.claude/settings.json 里启用的插件不加载;改在 Project settings > Plugins 里添加插件不加载;同样改在 Project settings > Plugins 里添加
.claude/settings.json 里定义的权限规则、hooks 和 env适用于线程,但没有任何云端会话遵守的 env 键除外不适用

在有多个仓库的 project 里,每个克隆都作为额外目录附加到线程,并开启 CLAUDE.md 加载,这就是为什么即使线程在它们之上启动,每个仓库的 CLAUDE.md 和 skills 也会在开始时加载。在这样的 project 里,把常设规则放进 project 指令,并通过云环境给线程环境变量。

为线程选择环境

每个新的云端线程都在 project 的云环境里启动。环境设定线程能访问哪些域名、有哪些环境变量、哪些 API 凭据被加到它们的请求上,以及设置脚本在 Claude 启动之前安装什么。在你于 Project settings > Environment 里选一个之前,云端线程使用默认的 Anthropic 托管环境。如果云端线程需要访问内部 API 或私有包注册表,或需要你的机器通常持有的令牌,改的是环境而不是 project:见云环境页的网络访问、添加 API 凭据和设置脚本。

把 skills、插件、连接器和工具带进线程

云端线程没有只装在你机器上的 skills、MCP 服务器、插件和工具;Claude 通过 Remote Control 在你机器上运行的线程使用那里装的东西。要让这些对云端线程可用:

  • Skills、子智能体和命令:把它们提交到你加进 project 的某个仓库,例如 .claude/skills/<skill-name>/SKILL.md 里的 skill。每个云端线程克隆 project 里的每个仓库,并从它们每个加载 .claude/skills/、.claude/agents/ 和 .claude/commands/,所以提交到一个仓库的 skill 在每个云端线程里都可用;云端线程也加载你为 claude.ai 账号启用的 skills。
  • 插件:在 Project settings > Plugins 里添加;它们加载进每个新的云端线程。仓库在其 .claude/settings.json 里声明的插件不会在云端线程里加载。
  • MCP 服务器:云端线程从你 claude.ai 账号上的连接器获得 MCP 工具,这些是你在 claude.ai/customize/connectors 或通过 Project settings > Environment 里的 Manage connectors 链接一次性连接的 MCP 服务器。每个云端线程都能使用所有这些,无需按 project 设置。project 对话本身没有连接器,所以把需要连接器的工作作为任务发给云端线程。在有一个仓库的 project 里,云端线程还会从该仓库的 .mcp.json 加载 MCP 服务器。
  • 命令行工具和包:把它们装进环境的设置脚本。

要在 claude.ai/code 上查看某个运行中的云端线程有哪些连接器,打开该线程并从它消息框旁的 + 菜单选 Connectors。在那里关掉一个连接器会把它从该线程移除,并把这个保存为你的账号默认值,所以新线程和 claude.ai 聊天在你重新打开它之前都不带它。云端线程在你给它发送下一条消息之后获取你添加或重新连接的连接器。

Project 设置参考

你在 claude.ai/code 或桌面应用里更改 project 设置,而不是在 settings.json 里。从 project 侧边栏菜单里的 Settings 或 project 标题栏里的齿轮图标打开 Project settings。设置在你更改时保存;你正在编辑的文本字段(如目标或指令)在你离开它之前显示 Save changes 和 Discard。Project settings 里对指令、仓库、插件和环境的更改到达新线程,而不是已在运行的线程。

设置分区控制什么
名称、图标和目标Generalproject 在侧边栏里的名称和图标,以及它的一行目标
Coordinator model 和 effortGeneralproject 对话里 Claude 的模型和 effort 级别
Thread model 和 effortGeneral线程的模型和 effort 级别
Project instructionsMemory每个新线程收到的常设规则
Project repositoriesEnvironment新的云端线程克隆的仓库
Cloud environmentEnvironment新的云端线程运行所在的云环境
ConnectorsEnvironment管理云端线程获得的 claude.ai 连接器的链接
PluginsPlugins加载进每个新云端线程的插件
UsageUsage按线程和按模型的 token 用量
MemoryMemoryproject 的记忆文件
Restart ClaudeGeneral在 Claude 在 project 对话里不再响应时重启 project 对话
Pause、Archive、DeleteGeneral停止、隐藏或移除 project

暂停、归档或删除 project

这三个控件都在 Project settings > General 的底部:

  • Pause:一次性停止一切。每个运行中的线程和对话都被中断,不再启动新线程,例程不运行,project 在你恢复之前不接受消息。点击同一处或 project 消息框上方横幅里的 Resume;暂停的线程在那之后你向它发送消息时继续。
  • Archive:把 project 从侧边栏隐藏并归档它的线程,这会停止任何在运行或在监视拉取请求的线程;project 里的例程在归档期间不运行。要找回 project,从 Projects 页面打开它并点击 Unarchive;它的线程保持归档,直到你从会话列表里逐个取消归档。
  • Delete:永久移除 project 连同它的线程、记忆和文件,并关闭 project 的例程。这无法撤销。线程推送到 GitHub 的分支和拉取请求不受影响。

用量与成本

project 用量计入与你其他 Claude Code 会话相同的套餐限额,project 自己不能花超过这些限额。触及你套餐限额的线程会等待,并在限额重置时自行继续,所以你留着运行的工作会在你的下一个用量窗口开始使用,而无需你发消息。超出你套餐限额的工作,只有在你为账号打开了用量额度时才会发生;线程无法替你打开它们。

什么消耗你的套餐

project 比单个会话更快地使用你的限额,尤其在 Pro 套餐上,你应该预期在你运行 project 的日子更早触及限额。project 里消耗你套餐的部分:

  • 运行中的线程:每个都是完整的会话,可以同时运行多个。没有固定数量,Claude 按工作需要启动多少就多少,你要求的限制是偏好而不是上限;强制的限制是你所有 project 合计每天 200 个新线程。
  • 对话:Claude 在阅读线程回报的内容并决定下一步做什么时,自己也使用 token。
  • 监视拉取请求的线程:当它的拉取请求上 CI 失败或收到评审评论时,空闲线程会醒来并再次使用你的套餐;要阻止这一点,在线程里让它停止监视该拉取请求。

没有运行中的线程、没有被监视的拉取请求、没有新消息的 project 在闲置时不使用你的套餐,归档的 project 同样不使用。

查看并降低 project 的用量

在 Project settings 里打开 Usage,查看按线程和按模型的 token 用量,以及有多少给了 project 对话。要降低它:

  • 路由到闲置时间超过缓存寿命的线程(Pro 和 Max 在你套餐限额内是一小时)的后续消息,会在做任何事之前重新读取该线程的整个对话;对新工作,让 Claude 启动全新的线程可能比唤醒庞大的旧线程用得少。
  • 对不需要最大模型的工作,为线程、对话或两者选择更小的模型或更低的 effort 级别。
  • 让 Claude 在 project 对话里一次运行更少的线程,或自己回答小问题而不是启动线程。

project 与其他 Claude Code 功能的关系

有好几个 Claude Code 功能让不止一个会话同时工作,所以并行运行工作本身并不是 project 的用途。在 project 里,是 Claude 而不是你启动和跟踪会话,每个会话都从相同的指令开始。邻近功能与 project 的联系:

  • Claude Tag:Claude Tag 是你团队 Slack 频道里的 Claude,在 Team 和 Enterprise 套餐上。频道里的任何人都能给它工作,频道里的每个人都看到并引导它,它使用管理员为该频道设置的连接。project 只属于你一个人:只有你向它发送工作或看到它的线程,它使用你自己的 GitHub 访问权和连接器,并且在 Pro 和 Max 上。
  • 云端会话:除非你让 Claude 在你的机器上运行,每个线程都是云端会话。不论哪种,都是 Claude 而不是你启动和跟踪它。你自己启动的云端会话可以通过 Continue as project 或 Move to project 变成 project 或为其提供输入。
  • 例程:当你在 project 里要求定时工作时,Claude 创建一个作为该 project 里线程运行的例程,它出现在 project 的 Routines 标签页上;你在 project 之外创建的例程继续各自工作。
  • Remote Control:Remote Control 把 claude.ai 连接到运行在你机器上的 Claude Code 会话。当你让 project 里的 Claude 在你的电脑上运行线程时,project 用 Remote Control 来做这件事。
  • 本地会话和智能体视图:你自己在终端、IDE 或桌面应用本地环境里启动的会话不能加进 project。智能体视图是并排跟踪几个本地会话的界面,你仍然要自己启动每个并给它任务。
  • Worktrees:worktree 给每个本地会话自己的仓库工作副本,使你机器上的并行会话不会互相覆盖。云端线程不需要它们:每个把它的仓库克隆到自己的云沙箱里,并在自己的分支上工作。
  • 智能体团队:智能体团队是为单个任务启动队友会话的一个会话,在你的机器上或在云端会话里,随该任务结束。
  • 子智能体:子智能体在一个会话内部运行,在自己的上下文窗口里做旁支任务,并向该会话返回摘要。project 的线程是 Claude 启动的、向 project 对话回报的完整会话,线程自己的旁支任务仍然可以使用子智能体。
  • claude.ai 聊天和 Cowork 里的 Projects:较早的 Projects 体验,把对话和参考文件分组,没有线程或协调者;这些 project 在重新设计的体验到达它们之前继续照常工作。

「并行运行智能体」页并排比较了这些选项。

限制

  • Projects 在 claude.ai/code、桌面应用和 Claude 移动应用里可用,在终端 CLI、VS Code 扩展或 JetBrains 插件里不可用,也不能通过 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 使用。CLI 的 claude project 命令管理某个目录的本地 Claude Code 状态,与此无关。
  • project 线程是云端会话,或通过 Remote Control 在你自己机器上的会话,两种情况下 Anthropic 都是模型提供商。云端会话如何隔离以及保留什么,见安全页和数据使用页;你机器上的线程如何连接以及存储什么,见 Remote Control 页的连接与安全。
  • 你不能把自己在机器上启动的会话加进 project。project 只能通过 Remote Control 在你的机器上运行线程来触及你的机器。
  • 云端线程的沙箱在轮次之间暂停,并在线程继续时恢复。如果沙箱无法恢复,线程从全新的克隆继续,所以未提交的改动可能丢失。在长任务上,让 Claude 提交并推送进行中的工作。
  • project 属于一个用户。你不能把 project 或它的线程分享给其他用户,线程转录没有其他云端会话有的分享选项;beta 期间没有 project 的组织级控制。
  • 线程属于启动它的那个 project。你不能把线程移动或复制到另一个 project,也不能把它移出来独立存在;Move to project 只有相反的方向:它把云端会话的工作带进 project。你不能把两个 project 合并成一个。

排障

线程看起来卡住了

Claude 不会发布线程做的每一步,所以显示为运行中而 project 对话里没有新消息的线程,通常仍在工作。新的云端线程在 Claude 开始之前还要准备它的云环境,所以它的第一次更新需要一点时间。打开线程阅读它的转录;如果线程在等待权限提示,在那里回答它。

线程在猜测或停滞而不是询问

当几个线程返回时都假设错了什么、绕过了缺失的访问权,或以「blocked」停下,原因通常是 project 设置里同一个缺口,而不是每个任务的问题。在修复任何东西之前,先理清哪些线程是可靠的:

  1. 在对话里问 Claude:「对每个未结线程,列出你让它做什么、它假设了什么或触及不到什么,以及它在等什么。」Claude 读取每个线程并在对话里回答。
  2. 对从错误假设开始的线程,从 Overview 打开该线程并从它的菜单把它标记为已解决,或在它的消息框里告诉它改做什么;它的分支和任何拉取请求会留在 GitHub 上,直到你删除它们。
  3. 在 project 指令或环境里修复一次缺口,然后先发送一个线程,再把其余工作作为新线程重新发送。

Claude 没有响应

当 Claude 在运行但它的回复没有到达 project 时,project 对话显示「Claude hasn't responded」横幅。点击横幅上的 Restart Claude,或进入 Project settings > General 并点击 Restart Claude 行里的 Restart。Claude 重新连接到对话;它正在写的任何回复都会丢失,线程不受影响。

仓库访问错误

三条消息表示线程或 project 触及不到它的某个仓库。即使你其他云端会话克隆同一个仓库毫无问题,project 的云端线程也需要 GitHub 前提条件。

  • 「Couldn't start the session — Claude doesn't have GitHub access to this project's repository」:在线程启动前报告,原因是 Claude GitHub App 没有安装在该仓库上、被暂停,或没有关联到你连接的 GitHub 账号。
  • 「Unable to access your repository」:由线程在克隆失败时报告:GitHub 拒绝了克隆、仓库在 project 所用的名称下没找到,或要求线程开始的分支不存在。
  • 「Claude can't access」某个仓库:在你于 New project 对话框或 Project settings 里保存仓库时显示。消息后面跟着安装链接和重新连接链接:Claude GitHub App 不在该仓库上时用安装链接,在的话用重新连接链接,因为 GitHub App 可以安装在 GitHub 上而没有关联到你连接给 Claude 的账号;如果消息说 GitHub App 被暂停或不包含这个仓库,跟着它的链接去 GitHub 修复。

要修复其中任何一个,点击消息提供的按钮(如 Install GitHub App 或 Select repositories on GitHub),然后 Check again。当阻碍在 GitHub 组织那一侧(如所有者没批准应用,或 IP 允许列表排除了 Claude)时,消息显示 See how to fix 链接。如果没有按钮,按「设置 GitHub 访问」操作,然后再发一条消息重试。

线程触及用量限制

当线程或 project 对话触及你套餐的五小时或每周限额时,它自己不断重试,并在限额重置时继续。等待期间,线程显示 Service is busy 以及「Claude is still retrying and will continue automatically」。你不需要做任何事让工作继续;如果你不想让它使用你的下一个用量窗口,点击线程里的 Stop,或暂停 project 以搁置每个线程。由例程启动的线程不等待:它的这一轮以限额错误停止,你在限额重置后给它发消息。限额及其重置时间见错误页的用量限制错误。

需要额外的用量额度

线程或 project 对话发出了你的套餐只在有用量额度时才覆盖的请求,例如对你套餐不包含的模型或上下文大小的请求,而你的账号没有打开用量额度。谁能在每种套餐上打开或购买它们,见成本页的「给你的订阅添加用量额度」。额度可用之后,再发一条消息重试。

与你的文件夹失去联系

当你电脑上运行的线程里的 Claude Code 会话不再响应时会显示这条,通常是因为电脑睡眠,或桌面应用或 claude remote-control 退出了。唤醒电脑;如果桌面应用或 claude remote-control 不再在那里运行,重新启动它:重新打开应用并确认 Settings > Claude Code 下的 Use this computer from your phone and claude.ai 仍是打开的,或在同一个文件夹里再次运行 claude remote-control。

其他消息

这些消息自己点名原因。下表给出每条的下一步:

消息怎么办
「Unable to connect to repository」,带「Claude couldn't reach GitHub to fetch your repository」稍等片刻,再发一条消息重试
「Unable to connect to repository」,带「Claude couldn't access your repository or environment」你的 GitHub 账号需要对该仓库有推送权限,且环境必须仍然存在;在 Project settings > Environment 里检查两者,然后重试
「Couldn't show the setup proposal」你打开的应用比 Claude 发送的 Setup recommendations 更旧;刷新页面或重启桌面应用,或让 Claude 再次提出设置
「The project's environment was removed」在 Project settings > Environment 里选一个不同的环境;更改适用于新线程
「Setup script failed」点击错误上的 Edit setup script,在环境里修复脚本,然后再发一条消息;常见原因见网页快速开始里的 Setup script failed
「Claude ran out of context on this turn」线程填满了它的上下文窗口。如果消息说线程在全新的会话里继续,它会自己继续;否则让 project 对话里的 Claude 为剩余工作启动新线程
「Couldn't start in」后跟你的文件夹名你允许了线程在你的电脑上运行,但会话无法在那里启动。消息下方的一行给出原因时,修复它,然后让 Claude 再次运行该任务
「Claude is out of date on your device」你挑选来运行线程的电脑上的 Claude Code 版本低于 v2.1.280。在那里更新 Claude Code,或者如果是桌面应用连接文件夹则更新桌面应用,然后让 Claude 再次运行该任务
「Reached the turn limit」线程触及了由 CLAUDE_CODE_MAX_TURNS 设置的智能体轮次上限。再发一条消息继续,或在设置它的地方提高或移除该变量

相关资源

  • 在云端使用 Claude Code:每个云端线程背后的云端会话如何工作,包括 GitHub 访问选项和拉取请求上的 auto-fix。
  • 配置云环境:更改云端线程在网络上能触及什么,给它们环境变量和 API 凭据,并用设置脚本安装工具。
  • 用例程自动化工作:例程的计划、触发器和管理,包括 Claude 从 project 创建的那些。
  • 用智能体视图管理多个智能体:当工作需要只有你机器才能触及的工具或服务时,在你自己的机器上运行并跟踪多个会话。

手机上的 Claude Code

iOS 和 Android 上的 Claude 应用是 Claude Code 会话的客户端,而不是代码实际运行的地方。从手机上,你可以触及云端的云端会话和 projects、通过 Remote Control 触及运行在你自己机器上的会话,或通过 Dispatch 触及桌面应用。Claude Code 没有单独的手机应用:云端会话和 Remote Control 都在 Claude 应用的 Code 标签页里,Dispatch 则是你在应用里发消息的任务。

获取应用

  1. 下载 Claude 应用:安装 iOS 或 Android 的 Claude 应用(iPad 上装同一个 iOS 应用)。在 Claude Code 会话里运行 /mobile 会显示一个指向 claude.ai/mobile 的二维码,打开适合你手机的应用商店;/ios 和 /android 做同样的事。
  2. 登录:用你用于 Claude Code 的同一个 claude.ai 账号和组织登录。云端会话和 Remote Control 需要 claude.ai 账号,所以用 Anthropic Console API key 或 Amazon Bedrock 这样的第三方提供商是无法访问的。
  3. 打开 Code 标签页:点应用导航里的 Code 到达你的会话,或在手机上打开 claude.ai/code/new 在应用里开始一个新的 Code 会话。如果你没看到 Code 标签页,可能是你的套餐或组织不包含这些功能;见功能可用性页的按订阅套餐的可用性。

在手机上工作

从应用里你可以启动云端会话、打开 project、驱动运行在你电脑上的 Claude Code 会话,或给 Dispatch 发消息交代任务。应用对每一种都一样,区别在于工作发生在哪里:

功能你连接什么何时使用
云端会话云基础设施上的会话,默认由 Anthropic 托管你的仓库在 GitHub 上,且任务应在你收起手机后继续运行;设置见云端快速开始
ProjectsClaude 协调并行工作线程并回报的对话你有一系列相关工作而不是一个任务,想看哪些线程完成了或需要你
Remote Control运行在你电脑上的 Claude Code 会话工作需要你本地的文件系统、工具或 MCP 服务器
Dispatch你电脑上的桌面应用你想发一条任务消息,让 Dispatch 决定如何运行;需要 Pro 或 Max 套餐

如果你的电脑会关机,用云端会话或 project,它们在云端运行,在你合上笔记本后继续。Remote Control 和 Dispatch 驱动你自己的机器,所以它需要保持开机、Claude Code 或桌面应用保持运行;如果你的机器在 Remote Control 会话期间睡眠,机器重新上线时 Claude Code 会重新连接。更完整的比较见平台页的「离开终端时工作」。云端会话和 Remote Control 从 Code 标签页运行;Dispatch 是你在应用里发消息的任务,见桌面应用页的 Dispatch 会话。

启动并监控云端会话

云端会话在云基础设施上(默认由 Anthropic 托管)运行任务,所以会话在你收起手机后继续。在 Code 标签页里,选择仓库和分支,描述任务并提交。会话跨设备持久:你在笔记本上启动的任务可以在手机上评审,你在手机上启动的任务在你回到办公桌时已在等你。在应用里打开会话来检查进度、回答 Claude 的问题,或把它引向新方向;你也可以让 Claude 监视拉取请求,并在 CI 失败或评审评论到达时修复它们。连接 GitHub 和设置环境见云端快速开始,云端会话能做的一切见「在云端使用 Claude Code」。

用 Remote Control 继续本地会话

Remote Control 把 Claude 应用连接到运行在你机器上的 Claude Code 会话,所以代码执行和文件系统访问留在本地,而你从手机驱动会话。在你电脑上用 claude remote-control 启动会话,或在已打开的会话里运行 /remote-control;然后扫描终端可以显示的二维码,或打开 Claude 应用、点 Code 并从列表里选会话;每个选项见 Remote Control 页的「从另一台设备连接」。你在 Claude 应用里添加的附件也会到达本地会话:

  • 照片:Claude 把附加的照片直接作为你消息的一部分看到;Claude Code 还把每张照片保存在 ~/.claude/uploads/ 下,并告诉 Claude 保存的文件路径,所以 Claude 可以把图片复制到它创建的文件里。
  • 其他文件:Claude Code 把它们下载到你的机器上,并作为 @ 文件引用传给 Claude。

要求、调用模式和排障见 Remote Control 概览。

接收推送通知

Remote Control 活动时,Claude 可以向你的手机发送推送通知,通常是在长时间运行的任务完成,或它需要你做决定时。你也可以在提示词里要求发一条,如 notify me when the tests finish。两个 /config 开关和投递排障见 Remote Control 页的移动推送通知。Dispatch 在它派生的 Code 会话完成或需要你批准时发送自己的通知,见桌面应用页的 Dispatch 会话。

限制

移动客户端涵盖会话需要的大部分内容,有几个限制:

  • 仅本地命令:只在终端界面运行的命令(如 /plugin 和 /resume)不能从应用里使用;哪些命令能从移动端用以及它们的行为有何不同,见 Remote Control 的限制列表。
  • 权限模式:云端会话在模式下拉框里提供 Accept edits、Plan 和 Auto,Remote Control 会话提供 Manual、Accept edits 和 Plan;两种情况下你都不能从应用里选择 Bypass permissions,也不能为 Remote Control 会话选择 Auto。
  • Dispatch 套餐:Dispatch 需要 Pro 或 Max 套餐,在 Team 或 Enterprise 上不可用。

相关资源

  • 平台与集成:比较 Claude Code 运行的每个界面。
  • Channels:从手机通过 Telegram、Discord 或 iMessage 问 Claude 点什么,而工作在你的机器上运行。
  • Slack 中的 Claude Code:在你的 Slack 工作区里通过提及 @Claude 委派编码任务。