1. 从“监工模式”到“派活模式”:为什么你该换一种方式用 Claude
大多数人用 Claude 的方式,本质上跟盯工地没什么区别。打开对话框,敲一句“帮我写个函数”,等它吐出来,看一眼,不满意,再补一句“改一下这里”,再等,再看。整个过程你人必须坐在那里,眼睛盯着屏幕,手指随时准备敲下一句指令。这种模式我称之为“监工模式”——你是工头,Claude 是工人,你得全程在场盯着,它才干得了活。
问题在于,这种模式把你自己变成了瓶颈。你的注意力被切成了无数个碎片,每一条消息都要你亲自过目、亲自决策、亲自推进。一天下来,你可能跟 Claude 来回聊了几十轮,但真正有价值的产出并没有多少,因为大部分时间都花在了“等”和“看”上面。
“派活模式”的逻辑完全不同。它的核心思路是:把任务的定义权、执行权和验收权分开。你在睡前花十分钟把活派清楚,Claude 在你睡觉的时候自己干,第二天早上你起来验收结果。你不再是那个全程盯着的监工,而是一个只负责定义目标和验收成果的角色。
这个转变听起来简单,但实际操作中有很多细节决定了它能不能跑通。任务描述得够不够清楚?Claude 有没有足够的上下文自己判断?执行过程中遇到岔路口它能不能自己做决策?产出物放在哪里、怎么验收?这些问题不想清楚,“派活模式”就会变成“派了个烂活,第二天起来发现全得重做”。
这篇文章就是围绕这套“派活模式”展开的。我会从任务定义、上下文准备、执行机制、验收流程几个维度,把整套方法拆开讲透。适合那些已经在用 Claude 做实际工作、但感觉效率卡在某个瓶颈上的人。如果你还在“监工模式”里打转,这篇文章应该能帮你打开一个新思路。
2. 派活之前:把任务定义清楚比什么都重要
2.1 为什么“帮我写个XX”这种指令注定失败
“帮我写个爬虫”“帮我优化一下这段代码”“帮我写篇文章”——这些指令的共同问题是:它们只给了方向,没给边界。Claude 拿到这种指令,只能靠猜。猜你要什么格式、猜你用什么技术栈、猜你的验收标准是什么。猜对了是运气,猜错了是常态。
派活模式的前提是,你派出去的活必须是一个“自包含”的任务。什么叫自包含?就是 Claude 拿到这个任务描述之后,不需要再问你任何问题,就能独立完成。这意味着任务描述里必须包含:目标是什么、输入是什么、输出是什么格式、有什么约束条件、遇到什么情况该怎么处理。
我自己的习惯是用一个固定的模板来写任务描述,包含五个部分:背景、目标、输入、输出、约束。背景是让 Claude 理解这个任务在整体中的位置,目标是明确要达成什么,输入是告诉它有哪些材料可用,输出是定义交付物的格式和标准,约束是划定边界和例外处理规则。
2.2 任务描述模板:五个字段缺一不可
下面是我实际在用的任务描述模板,你可以直接抄:
【背景】 这个任务属于什么项目、什么阶段,之前做过什么相关工作。 【目标】 用一句话说清楚要达成什么结果,越具体越好。 【输入】 列出所有可用的材料:文件路径、数据来源、参考资料、已有的代码等。 【输出】 定义交付物的格式:文件类型、存放位置、命名规则、内容结构。 【约束】 - 技术栈限制 - 不能做什么 - 遇到不确定情况时的处理原则 - 验收标准这个模板看起来简单,但真正写起来你会发现,很多平时没想清楚的地方会被逼着想起来。比如“遇到不确定情况时的处理原则”这一条,很多人从来没想过。但恰恰是这一条,决定了 Claude 在遇到岔路口时是停下来等你,还是自己做个合理决策继续推进。
2.3 一个真实的任务描述示例
假设你要让 Claude 帮你把一个 Python 脚本改造成支持命令行参数的版本。监工模式的指令可能是:“帮我把这个脚本改成支持命令行参数的。”派活模式的指令应该是这样的:
【背景】 我有一个数据清洗脚本 clean_data.py,目前所有配置都硬编码在文件开头。 现在需要让它能在不同环境下复用,所以要把配置项改成命令行参数。 【目标】 把 clean_data.py 改造成支持 argparse 命令行参数的版本, 保持原有功能不变,新增参数校验和帮助信息。 【输入】 - 原脚本:./scripts/clean_data.py - 配置项列表:见脚本开头的 CONFIG 字典 - 参考风格:./scripts/other_tool.py(已使用 argparse) 【输出】 - 改造后的脚本:./scripts/clean_data.py(覆盖原文件) - 变更说明:./docs/clean_data_changelog.md 【约束】 - 使用标准库 argparse,不引入第三方依赖 - 所有原有配置项都必须变成可选参数,且有合理默认值 - 参数校验失败时给出清晰的错误提示 - 保持原有函数签名不变,只改入口部分 - 遇到不确定的配置项默认值,参考 other_tool.py 的风格处理你看,这个描述里没有任何模糊地带。Claude 拿到之后不需要问你任何问题,直接就能干活。而且因为约束里写了“遇到不确定的默认值参考 other_tool.py”,它遇到岔路口时也有决策依据,不会卡住。
2.4 任务拆分的粒度控制
派活模式还有一个关键决策:一个任务拆多大合适?拆得太细,你派活的成本比自己做还高;拆得太粗,Claude 执行到一半发现方向不对,返工成本巨大。
我的经验是,一个任务最好控制在“Claude 能在一次执行中完成,且你能在五分钟内验收”的粒度。如果验收需要你花半小时去检查,说明任务太大了,应该拆。如果任务描述写了不到三行就完了,可能太细了,可以合并。
具体来说,代码类任务一般控制在“一个函数或一个模块的改造”比较合适。文档类任务控制在“一个章节或一个完整主题”比较合适。分析类任务控制在“一个明确的问题,有明确的数据范围”比较合适。
3. 上下文工程:让 Claude 自己找到干活需要的所有材料
3.1 上下文不是越多越好,而是越准越好
很多人以为给 Claude 的上下文越多越好,恨不得把整个项目都塞进去。实际恰恰相反,上下文过多会导致两个问题:一是 Claude 的注意力被分散,抓不住重点;二是无关信息会干扰它的判断,让它做出错误的关联。
派活模式下的上下文准备,核心原则是“精准投喂”。你不需要给 Claude 整个代码库,只需要给它完成这个任务所必需的那几个文件。你不需要给它全部的历史对话,只需要给它理解当前任务背景的那几段说明。
我自己的做法是,在任务描述的“输入”字段里,只列出真正相关的文件路径,并且在路径后面用一句话说明这个文件的作用。比如:
【输入】 - ./scripts/clean_data.py:需要改造的主文件 - ./scripts/other_tool.py:参考风格,只看 argparse 部分 - ./config/defaults.yaml:默认值来源这样 Claude 就知道每个文件该看什么、不该看什么,不会浪费时间在无关内容上。
3.2 用文件系统做上下文,而不是用对话
派活模式的一个核心技巧是:把上下文从对话里搬到文件系统里。什么意思?就是不要指望 Claude 记住你之前跟它聊过什么,而是把需要它知道的信息写成文件,让它自己去读。
这样做的好处是:第一,文件是持久的,不会因为对话轮次多了就被遗忘;第二,文件是可复用的,下次派类似的活可以直接引用;第三,文件是可审查的,你能清楚知道 Claude 拿到了什么信息。
我通常会在项目根目录下建一个.claude-context/目录,里面放几类文件:project-overview.md说明项目整体情况,coding-standards.md说明代码规范,task-history.md记录之前派过的活和结果。派活的时候,在任务描述里引用这些文件,Claude 自己会去读。
3.3 给 Claude 留出“自己找答案”的空间
精准投喂不等于把所有答案都喂到嘴边。有时候,让 Claude 自己去代码库里找参考实现,比直接告诉它怎么做效果更好。因为它在找的过程中会理解更多的上下文,做出的决策也更符合项目实际情况。
比如你要让它写一个新的 API 接口,你可以只告诉它“参考 ./api/ 目录下其他接口的写法”,而不是把某个接口的代码贴给它。这样它会自己去翻几个文件,理解整体的模式,写出来的代码风格更一致。
当然,这个策略的前提是你的代码库本身有一致的模式。如果代码库本身就是一团乱麻,那还是直接告诉它怎么做比较靠谱。
3.4 上下文文件的更新维护
上下文文件不是写完就完了,需要随着项目推进不断更新。我的习惯是每次派完活、验收完之后,花两分钟更新一下task-history.md,记录这次做了什么、遇到了什么问题、下次要注意什么。这个文件积累下来,就是 Claude 的“项目记忆”,下次派活的时候它读一遍就能快速进入状态。
还有一个技巧是,把常见的坑和解决方案写成known-issues.md。比如“这个项目的测试环境需要先跑make setup”“这个模块的导入路径有特殊规则”之类的。Claude 读到这些,就能避免重复踩坑。
4. 执行机制:Claude 在你不看着的时候怎么干活
4.1 从交互式对话到批处理执行
监工模式下,Claude 的工作方式是交互式的:你说一句,它做一步,你再说什么,它再做一步。派活模式下,你需要把它切换到批处理模式:你给一个完整的任务描述,它从头到尾执行完,中间不打断。
这个切换的关键在于,任务描述里必须包含足够的决策规则,让 Claude 在遇到岔路口时能自己判断。前面提到的“约束”字段就是干这个用的。但光有约束还不够,你还需要在任务描述里明确告诉它:“这是一个批处理任务,请一次性完成,不要中途询问。”
我通常会在任务描述的最后加一句:
这是一个独立任务,请一次性完成所有步骤。 遇到不确定的情况,按照上述约束中的原则自行决策, 并在输出中记录你的决策理由。这句话看起来简单,但效果很明显。Claude 拿到之后就知道自己不该停下来问,而是应该自己做判断继续推进。
4.2 让 Claude 自己写执行计划
对于稍微复杂一点的任务,我会要求 Claude 先写一个执行计划,然后再按计划执行。这个计划不需要给我看,而是作为它自己的“工作底稿”,帮助它理清步骤。
具体做法是在任务描述里加一条:
执行前请先写一个简要的执行计划(不超过10行), 列出你打算分几步完成、每步做什么、预计产出什么。 然后按照计划执行,执行过程中如果发现计划需要调整, 直接调整并在最终输出中说明调整原因。这个技巧的好处是,Claude 在写计划的过程中会自己发现任务描述里的模糊地带,然后主动去补充或做决策。比直接开干的效果好很多。
4.3 中间产出的存放规则
派活模式下,Claude 会产生很多中间产出:草稿、临时文件、测试结果等。如果不规定存放规则,这些东西会散落在各处,验收的时候找都找不到。
我的做法是在任务描述里明确规定:
【输出】 - 最终交付物:./output/final_result.md - 中间产出:./output/drafts/ 目录下,按步骤编号命名 - 执行日志:./output/execution_log.md,记录每步做了什么、遇到什么问题这样验收的时候,我先看execution_log.md了解整体执行情况,再看final_result.md验收最终产出,需要追溯细节的时候再去drafts/里翻中间稿。
4.4 错误处理和重试策略
Claude 在执行过程中难免会遇到错误:文件找不到、格式不对、依赖缺失等。派活模式下,你不能指望它遇到错误就停下来问你,得提前告诉它怎么处理。
我通常会在约束里加这么几条:
- 遇到文件不存在时,先在项目内搜索同名文件,找不到则记录到执行日志并跳过 - 遇到格式错误时,尝试自动修复,修复失败则记录原始内容和错误信息 - 遇到依赖缺失时,记录缺失的依赖名称,继续执行不依赖该部分的其他步骤 - 任何情况下都不要中断整个任务,能完成多少完成多少这几条规则的核心思想是“降级执行”:遇到问题不中断,能绕过去就绕过去,绕不过去就跳过并记录。这样即使中间有几步失败了,整体任务还是能产出部分结果,比完全中断强。
5. 验收流程:第二天起来怎么高效检查产出
5.1 先看执行日志,再看最终产出
验收的第一步不是直接看最终产出,而是先看执行日志。执行日志里记录了 Claude 每一步做了什么、遇到什么问题、做了什么决策。看完日志,你就知道这次执行的整体情况:哪些步骤顺利完成了,哪些步骤遇到了问题,哪些决策是 Claude 自己做的。
我通常会用这样的顺序验收:
- 读
execution_log.md,了解整体执行情况 - 看日志里标记的问题和决策,判断是否合理
- 打开最终产出,对照任务描述里的验收标准逐条检查
- 如果有问题,去
drafts/里找对应的中间稿,定位问题出在哪一步
这个顺序的好处是,你先有了全局视角,再看细节的时候就知道该重点关注哪里,不会漫无目的地翻文件。
5.2 验收清单:对照任务描述逐条过
验收的时候不要凭感觉说“还行”或“不行”,而是对照任务描述里的每一条要求逐条检查。我通常会建一个简单的验收清单:
| 检查项 | 要求 | 实际结果 | 是否通过 |
|---|---|---|---|
| 输出格式 | Markdown,含三级标题 | 符合 | 是 |
| 参数覆盖 | 所有配置项都有对应参数 | 缺2个 | 否 |
| 默认值 | 参考 other_tool.py 风格 | 符合 | 是 |
| 错误处理 | 参数校验失败有提示 | 符合 | 是 |
这样过一遍,哪些通过了、哪些没通过、没通过的具体是什么问题,一目了然。没通过的地方,再决定是让 Claude 返工还是自己手动改。
5.3 返工任务的派发方式
如果验收发现有问题需要返工,不要直接说“这里不对,改一下”。返工任务同样要遵循派活模式的规范,把问题描述清楚、把期望结果说明白。
我通常会用这样的返工任务描述:
【背景】 上一个任务(任务ID:xxx)的产出中,以下部分未通过验收。 【问题】 1. 缺少 --output-format 参数,原配置项 OUTPUT_FORMAT 未映射 2. 缺少 --verbose 参数,原配置项 VERBOSE 未映射 【期望】 补充上述两个参数,默认值分别为 "json" 和 False, 参数说明参考 other_tool.py 中的写法。 【输入】 - 当前产出:./output/final_result.md - 原配置项列表:./scripts/clean_data.py 开头的 CONFIG 字典 【输出】 - 修正后的文件:./output/final_result.md(覆盖) - 变更说明追加到:./output/execution_log.md这样返工任务同样是一个自包含的任务,Claude 拿到之后能直接干活,不需要再来回问。
5.4 验收后的知识沉淀
每次验收完之后,花几分钟把这次的经验沉淀下来。哪些地方任务描述写得好、Claude 一次就做对了;哪些地方描述得模糊、导致返工;哪些坑是第一次遇到、下次要提前在约束里写明。
这些沉淀可以写到task-history.md里,也可以单独建一个lessons-learned.md。积累多了之后,你派活的质量会越来越高,返工率会越来越低。我自己的经验是,前二十个任务返工率大概在三成左右,积累到五十个任务之后,返工率能降到一成以下。
6. 进阶技巧:让派活模式跑得更顺的几个细节
6.1 用 Hooks 做自动化触发
如果你用的是支持 Hooks 的环境,可以在任务开始和结束时自动触发一些操作。比如任务开始时自动拉取最新的上下文文件,任务结束时自动发送通知。这样你连“派活”这个动作都可以半自动化:睡前把任务描述写好放到指定目录,Hooks 检测到新文件就自动启动执行。
这个技巧的关键是设计好触发条件和执行动作。触发条件可以是“指定目录下出现新文件”,执行动作可以是“读取文件内容作为任务描述,启动 Claude 执行”。具体配置方式取决于你用的工具链,但思路是通用的。
6.2 用 Schedule 做定时任务
有些任务是周期性的,比如每天早上生成前一天的数据报告、每周一生成上周的工作总结。这类任务可以用 Schedule 机制做成定时任务,完全不需要你手动派活。
配置定时任务的时候要注意两点:一是任务描述要写成模板,把变化的部分用占位符标出来;二是要有失败处理机制,比如连续失败三次就发通知提醒你手动检查。
6.3 用 Background 模式跑长任务
有些任务执行时间比较长,比如全量数据清洗、大规模代码重构。这类任务适合用 Background 模式跑,派出去之后你该干嘛干嘛,不用等着。
Background 模式的关键是做好进度记录。任务描述里要要求 Claude 定期更新执行日志,记录当前进度和预计剩余时间。这样你随时可以去看一眼进度,心里有数。
6.4 任务模板的积累和复用
派活的活干多了之后,你会发现很多任务是类似的:改代码、写文档、做分析、生成报告。这些任务可以抽象成模板,下次派类似的活直接套模板改几个字段就行。
我自己的模板库里有这么几类:代码改造模板、文档撰写模板、数据分析模板、报告生成模板、代码审查模板。每个模板都是前面说的五字段结构,只是具体内容根据任务类型做了预设。用模板派活,任务描述的质量有保证,写起来也快。
7. 我踩过的坑和总结出的几条硬规则
7.1 任务描述里绝对不能出现的几种表述
踩了无数次坑之后,我总结出任务描述里绝对不能出现的几种表述:
- “你看着办”——Claude 会按它自己的理解办,大概率跟你想的不一样
- “尽量做好”——什么叫好?没有标准,Claude 只能猜
- “参考之前的”——哪个之前?对话里的还是文件里的?Claude 会困惑
- “简单改一下”——简单是主观判断,Claude 可能觉得要大改
- “差不多就行”——差不多是差多少?没有验收标准
这些表述的共同问题是模糊。派活模式下,模糊就是返工的代名词。
7.2 验收时不要只看结果,要看决策过程
验收的时候,很多人只看最终产出对不对,不看 Claude 的决策过程。这其实漏掉了很多信息。Claude 在执行过程中做的每一个决策,都反映了它对任务的理解。如果某个决策明显跑偏了,说明任务描述里对应的部分有歧义,下次要改。
所以我验收的时候一定会看执行日志里的决策记录。哪怕最终产出是对的,如果决策过程有问题,我也会在任务描述里补充说明,避免下次再出现类似情况。
7.3 不要一次派太多活
派活模式容易让人产生一种错觉:既然可以批量派活,那就一次多派几个。实际上,同时派太多活会导致几个问题:一是上下文文件可能冲突,二是验收的时候你分不清哪个产出对应哪个任务,三是出了问题不好定位。
我的经验是,同一时间最多派三个任务,而且这三个任务最好是相互独立的。如果任务之间有依赖关系,那就串行派,等前一个验收完再派下一个。
7.4 定期回顾任务历史,优化任务模板
每隔一段时间,我会翻一遍task-history.md,看看哪些任务返工了、返工的原因是什么、有没有共性。翻多了之后会发现,大部分返工都集中在几个固定的问题上:输出格式没定义清楚、边界条件没说明、参考文件没指定。
找到这些共性问题之后,就去优化任务模板,把对应的字段写得更具体。比如输出格式字段,以前只写“Markdown 格式”,现在会写“Markdown 格式,含三级标题,代码块标注语言类型,表格用于对比分析”。模板优化一次,后面所有任务的返工率都会降。
7.5 给 Claude 留出“说不”的空间
最后一条规则可能有点反直觉:要给 Claude 留出说“这个任务我完成不了”的空间。派活模式下,如果你把任务描述写得过于死板,Claude 遇到确实无法完成的情况时,可能会硬着头皮瞎编一个结果出来,而不是如实报告。
所以我会在约束里加一条:
如果任务中某些部分确实无法完成(如缺少必要输入、依赖不存在等), 请在执行日志中明确说明无法完成的原因,并跳过该部分继续执行其他部分。 不要为了完成任务而编造不存在的内容。这条规则看起来是小事,但实际用起来能避免很多“看起来完成了实际上全是编的”的情况。验收的时候看到执行日志里明确说了“某部分无法完成”,你就知道那部分需要自己补,而不是被假象蒙蔽。
这套派活模式我用了大半年,最大的感受是:它把我和 Claude 的关系从“我盯着它干”变成了“我定义它干”。我的时间花在了定义任务和验收结果上,而不是花在等它回复和反复调整指令上。睡前花十分钟派活,第二天起来花十五分钟验收,中间的时间完全解放出来。这个投入产出比,比监工模式高太多了。