1. 从"项目"到"工作区":这次改版到底动了什么
Claude的Projects功能这次改版,最直观的感受就是它不再是一个"文件夹式"的对话归档工具了。早期版本的Projects本质上就是给对话分了个组,你可以在里面放一些参考文档,然后基于这些文档和Claude聊天。用起来像什么?像你在一个网盘文件夹里塞了几份PDF,然后每次打开都要重新跟助手解释一遍背景。
改版之后,Projects的定位明显往"持久化工作区"的方向走了。它开始有了更明确的项目边界、更稳定的上下文记忆,以及和外部工具链打通的迹象。我之所以说"跟上了我的脚步",是因为我日常的工作流本身就是围绕多个并行项目展开的——每个项目有自己的代码库、文档集、待办清单和阶段性目标。以前我得手动在每次对话里重复这些信息,现在Projects的结构终于能承载这种工作方式了。
这里有个关键变化值得单独拎出来说:项目级别的上下文隔离。以前你在一个对话里聊的内容,很容易和另一个项目的上下文混在一起,尤其是当你同时推进好几件事的时候。改版后的Projects在这一点上做了更清晰的切分,每个项目有自己的知识边界,切换项目时不会把上一个项目的记忆带过来。这个改动看起来小,但对于同时维护三四个项目的人来说,体验提升是质变级别的。
还有一个容易被忽略的点:Projects现在更像是一个"容器",而不是一个"对话列表"。容器意味着它可以装东西——文档、指令、偏好设置、甚至外部工具的接入配置。这个思路的转变,直接决定了后面我要讲的worktree管理和goal追踪为什么能跑通。
2. worktree思维:为什么我把每个项目当成独立工作树
2.1 从Git worktree借来的灵感
如果你写过代码,应该知道Git有个功能叫worktree——它允许你在同一个仓库下检出多个工作树,每个工作树对应一个分支,互不干扰。我在配置Claude Projects的时候,脑子里想的就是这个模型。
传统做法是:一个项目一个对话,所有信息混在一起。但实际工作中,一个项目往往有多个并行线程——比如主线的功能开发、支线的bug修复、还有文档更新。如果全塞在一个对话里,上下文会迅速膨胀,Claude的注意力也会被稀释。
我的做法是:每个Projects对应一个独立的工作树。主项目放核心目标和主文档,子任务用独立的Projects承载,通过明确的命名规则来区分。比如"项目A-主线"、"项目A-文档"、"项目A-调研"。这样每个工作树里的上下文都是干净的,Claude在这个空间里只需要关注当前任务相关的信息。
2.2 命名规则和边界划分的实操细节
命名这件事看起来简单,但实际用下来,我发现它直接决定了你后面找东西的效率。我的命名规则是这样的:
- 项目代号在前,用短横线连接
- 任务类型在中,用简短英文或拼音
- 如果是临时性的,加日期后缀
举个例子:proj-alpha-dev、proj-alpha-docs、proj-alpha-research-0412。这样在项目列表里一眼就能看出归属关系,不用点进去猜。
边界划分的原则是:如果一个任务需要独立的上下文记忆,就给它独立的Projects。判断标准很简单——你在这个任务里跟Claude聊的内容,会不会污染另一个任务的上下文?如果会,就分开。
注意:不要为了省事把所有东西塞进一个Projects。上下文污染带来的效率损失,远大于多建几个项目的管理成本。
2.3 工作树之间的信息同步怎么做
独立工作树有个天然问题:信息孤岛。主线项目里确定的技术方案,文档项目里可能不知道。我的解法是维护一个"母项目",只放全局性的东西——项目愿景、核心约束、关键决策记录。子项目在需要的时候,把母项目里的关键信息复制过去,而不是让子项目去引用母项目。
为什么用复制而不是引用?因为Claude的上下文是扁平的,它不会自动去另一个Projects里找信息。你告诉它"参考母项目",它也没法真的跳过去读。所以实际操作中,关键信息要在每个需要它的工作树里各放一份。这听起来有点冗余,但保证了每个工作树的上下文是自包含的,不会因为跨项目引用而出现信息缺失。
3. goal追踪:让每个项目有明确的"完成定义"
3.1 为什么goal比todo更重要
很多人用Projects的时候,习惯在里面列todo清单。todo的问题是它是过程导向的——"做A、做B、做C",但做完之后呢?没有明确的终点。
我改用goal导向的方式。每个Projects在开头就写清楚:这个项目的完成定义是什么。比如不是"写三篇文档",而是"新用户能在不求助的情况下独立完成安装和首次配置"。这个goal一旦确定,后面所有的对话都围绕它展开,Claude也会更清楚什么信息是相关的、什么是不相关的。
goal的写法有个技巧:用可验证的结果来描述,而不是用动作来描述。"完成调研"是动作,"产出一份包含三个候选方案对比的决策文档"是结果。后者能让Claude更准确地判断你的需求。
3.2 阶段性goal的拆解方法
大goal往往需要拆成阶段性goal。我的拆法是按"可交付物"来切,而不是按时间切。比如一个为期一个月的项目,我不会写"第一周做什么、第二周做什么",而是写"阶段一交付什么、阶段二交付什么"。因为时间是弹性的,但交付物是刚性的。
每个阶段性goal在Projects里单独开一段,标注清楚前置条件和验收标准。前置条件告诉Claude"在满足什么之前不要往下走",验收标准告诉它"做到什么程度算完成"。这两个信息能极大减少来回确认的次数。
3.3 goal漂移的检测和修正
项目推进过程中,goal很容易漂移。一开始想解决A问题,聊着聊着变成解决B问题了。这种漂移如果不及时发现,最后交付的东西可能完全不是最初想要的。
我的做法是:每隔一段时间,把当前Projects里的对话摘要和最初的goal对照一遍。如果发现偏离,要么修正goal(承认需求变了),要么拉回正轨(明确当前讨论是支线)。这个动作我一般每周做一次,花不了几分钟,但能避免大量返工。
提示:在Projects的描述区固定放一份"原始goal",不要修改它。这样任何时候你都能看到最初的意图是什么,作为对照基准。
4. agent协作:Projects作为多智能体编排的载体
4.1 单agent模式的局限
早期我用Claude的时候,是单agent模式——一个对话窗口,一个助手,所有事情都找它。这种模式在任务简单的时候没问题,但任务一复杂,就会出现"什么都懂一点、什么都不精"的情况。你让它同时管代码、管文档、管调研,它的回答质量会下降。
Projects改版后,我开始尝试多agent协作的思路。具体来说,不同的Projects可以配置不同的"角色指令",让Claude在不同项目里扮演不同的专家角色。代码项目里它是资深工程师,文档项目里它是技术写作者,调研项目里它是分析师。角色不同,它调用的知识框架和表达方式也不同。
4.2 角色指令的写法
角色指令不是简单写一句"你是一个工程师"就完事了。有效的角色指令包含三个部分:
- 专业背景:它在什么领域有经验,擅长什么
- 工作方式:它应该怎么思考、怎么输出
- 边界约束:它不应该做什么
举个例子,我在代码项目里的角色指令是这样的:有十年后端开发经验,熟悉分布式系统和数据库设计;回答时先给结论再给理由,代码示例要能直接运行;不要主动建议重构无关代码,不要引入未讨论的新依赖。
这三段写下来,Claude在这个项目里的表现会明显更聚焦。它不会突然跟你聊前端框架,也不会在你只想知道一个函数怎么写的时候给你讲半小时架构。
4.3 跨agent的信息传递
多个Projects之间需要传递信息的时候,我不用"引用"的方式,而是用"摘要传递"。具体操作是:在源项目里让Claude生成一段结构化摘要,然后手动粘贴到目标项目的对话里。
为什么不用自动同步?因为自动同步会把大量无关上下文带过去,反而污染目标项目的干净环境。手动摘要虽然多一步操作,但你能控制传递什么、不传递什么。这个控制权很重要。
摘要的格式我一般固定为:背景一句话、关键决策两三条、待确认问题一两条。简洁、信息密度高,目标项目的Claude能快速理解来龙去脉。
5. 和外部工具链的衔接:从Projects到实际产出
5.1 代码项目的衔接方式
Projects本身是个对话空间,但最终产出要落到实际工具里。代码项目里,我的流程是:在Projects里讨论方案和伪代码,确认后手动搬到编辑器里实现,实现过程中遇到问题再回到Projects里讨论。
这里有个细节:不要把大段代码直接粘贴进Projects。上下文窗口是有限的,大段代码会挤占其他信息的空间。我的做法是只粘贴关键片段——出问题的那个函数、需要讨论的那个接口定义。完整的代码库留在编辑器里,Projects里只放"需要讨论的部分"。
5.2 文档项目的衔接方式
文档项目里,我让Claude在Projects里先出大纲和关键段落,确认结构没问题后,再搬到实际的文档工具里填充细节。Projects里的版本是"骨架版",实际文档是"血肉版"。这样分工的好处是,结构性的讨论在Projects里完成(这里适合来回迭代),细节性的写作在实际工具里完成(这里适合专注输出)。
5.3 调研项目的衔接方式
调研项目里,Projects主要用来做信息整理和观点碰撞。我会把找到的资料摘要贴进去,让Claude帮我归类、找矛盾点、提问题。最终的调研报告不在Projects里写,而是在专门的文档工具里写。Projects在这里的角色是"思考伙伴",不是"产出工具"。
这个定位很重要。如果你指望Projects直接产出最终交付物,你会失望——它的强项是对话和推理,不是格式化的最终输出。把它的定位放对,用起来才顺手。
6. 实测下来的几个坑和应对
6.1 上下文膨胀的速度比想象中快
Projects虽然有上下文管理,但如果你什么都往里塞,膨胀速度还是很快。我的应对是:定期清理。每个项目每周做一次"上下文审计",把已经解决的讨论、过时的信息删掉或归档。保持项目里的信息都是"当前有效"的。
清理的时候有个原则:只保留决策和结论,删掉推导过程。推导过程在当时的对话里已经完成了,它的价值已经体现在结论里。保留结论就够了,过程可以删。
6.2 角色指令的冲突
如果你在多个Projects里用了相似但不完全相同的角色指令,切换的时候会有认知冲突。比如项目A里Claude被设定为"简洁直接",项目B里被设定为"详细解释",你在两个项目间切换时会觉得它"性格不稳定"。
我的解法是:全局保持一致的沟通风格,只在专业领域上做区分。也就是说,不管在哪个项目里,Claude都是简洁直接的风格,区别只在于它是用工程师的视角还是分析师的视角。这样切换项目时不会有违和感。
6.3 goal和实际进展的脱节
前面说了goal追踪的重要性,但实际操作中,goal很容易变成"写了就不管"的东西。我的应对是:把goal检查嵌入到日常流程里。每次打开一个Projects,第一件事不是继续上次的对话,而是看一眼goal,问自己"当前进展和goal的关系是什么"。
这个动作只需要十几秒,但能让你始终保持方向感。没有这个动作,很容易陷入"聊得很热闹但离目标越来越远"的状态。
6.4 多项目并行时的注意力分配
同时推进多个Projects的时候,注意力分配是个问题。我的做法是:每天只深度推进一到两个项目,其他项目只做"维护性查看"——看看有没有新信息、需不需要回复。深度推进的项目轮换着来,保证每个项目每周都能得到一次深度投入。
这个节奏比"每天每个项目都碰一下"效率高得多。因为深度工作需要连续的时间块,频繁切换会破坏这种连续性。
7. 我目前的工作流全貌
把上面这些串起来,我现在的日常是这样的:
早上打开Claude,先看母项目的goal和当前阶段,确认今天要推进的方向。然后进入对应的子项目,做深度工作。深度工作结束后,把关键结论摘要出来,更新到母项目的决策记录里。下午如果有精力,处理其他项目的维护性事务。每周做一次全局的goal检查和上下文清理。
这套流程跑下来,最大的感受是:Projects不再是一个"聊天记录存放处",而是一个真正的工作台。每个项目有自己的目标、自己的上下文、自己的角色设定,切换项目就像切换工作模式一样自然。
改版后的Projects在worktree管理、goal追踪、agent协作这几个维度上,确实跟上了我实际工作的节奏。当然它还不完美——比如跨项目的自动信息同步还没有,上下文清理还需要手动做——但方向是对的。对于一个每天都在用的人来说,方向对就够了,剩下的细节可以自己补。