异步 Agent:把任务扔进后台之后

今年明显感受到一个变化:越来越多的任务开始用「扔进后台跑」的方式处理,而不是坐在终端前盯着模型一步步走。Cognition 的 Walden Yan 在一次访谈里提到,Devin 自己仓库里 AI 贡献的 commit 占比从一月的 16% 涨到三月的 80%,工程团队人数只增加了 10%。这个数字我觉得代表了行业正在发生的变化方向。

但背景 Agent 真的能用,是最近几个月的事。更早之前,模型能力还撑不住「给任务、等结果」这种交互方式,中间需要人不断扶着走。Opus 4.5 之后,一些任务开始可以真正放手——写好 spec 扔进去,几小时后拿 PR。这对工作方式影响挺大的,但随之带来的工程问题也不少。

任务描述是最大的坑

背景 Agent 和同步 Agent 最大的操作差异,在于你没机会在中途纠偏。同步模式下,Agent 走偏了,你看到了可以立刻打断重来;异步模式下,你发出任务去做别的事,回来发现它跑了两小时、方向整个错了。

所以任务描述的质量决定了异步 Agent 能不能用。我现在发一个异步任务之前,会强制给自己写三件事:

目标:要解决什么问题(不是「要做什么」,是「解决什么」)
约束:不能动什么、不能假设什么
验收标准:怎么判断任务完成了

这三件事写不清楚就不发,因为 Agent 填充模糊空间的方式通常不是你想要的。最常见的问题是「目标」写成了「行动」——「重构 user.go 里的数据库查询」和「降低 user.go 里数据库查询的延迟 P99」,同样的起点,Agent 的行为路径可以差很远。

约束那栏经常被忽略。我有一次让 Agent 「优化这个模块的性能」,没写约束,它把数据库查询从 ORM 改成了手写 SQL,顺手删掉了几个它觉得「冗余」的封装层。技术上没错,但打破了团队的编码规范,review 打回来重来。后来约束那栏开始写:「不改变代码结构,只在现有框架内优化;不删除任何现有函数,只能修改实现」。

验收标准最容易写成「代码跑通就行」,但这往往不够。现在我会加「运行 just test 全绿」「新增函数必须有测试覆盖」「不引入新的外部依赖」这类可以机器验证的标准,让 Agent 自己在提交前跑一遍检查。

进度跟踪是个没有标准答案的问题

任务扔进后台之后,你怎么知道它在干什么、有没有卡住?

目前我试过几种方式,各有缺陷。

定期回来看输出:最简单,但 Agent 的输出是流式的,你回来看到的是一堆工具调用记录,读起来费劲,很难判断进展是否正常。

让 Agent 写进度日志:在任务描述里要求 Agent 每完成一个阶段就向 progress.md 写一行记录。好处是可以 tail -f,坏处是 Agent 有时候忘写,有时候写了很多废话,真正有用的进展信息反而不清楚。

关键检查点 + 等待确认:把任务拆成几个阶段,每个阶段结束要求 Agent 等待人工 approve 再继续。这是最可控的,但破坏了「不用盯着它跑」的初衷,变成了另一种形式的同步。

我现在用的是折中方案:非关键任务(内容生成、测试补充)纯异步,不看进度,看结果;关键任务(涉及数据库变更、影响线上服务的重构)强制设检查点,至少在「开始写代码之前」和「准备提交之前」各要求一次人工确认。

多人协作:Slack session 的问题

这是一个大家不太讲但实际很痛的问题。

团队用 Agent 的常见模式是:有人在自己的 Slack 里启动一个 Claude session,发任务,等结果。但这个 session 绑定在发起人的身份和对话历史里,其他人如果想接手这个任务——看看进展、追加需求、让 Agent 继续——基本上做不到,只能靠复制粘贴上下文重开一个新 session。

这是一个真实存在的协作摩擦。背景 Agent 的价值有很大一部分在于「不是一个人的专属工具」——PM 可以发起需求,工程师可以接手执行,另一个工程师可以做 review——但如果每次任务都绑定在发起人的私人 session 里,这个价值就打了折。

短期解法是把任务上下文外化:任务描述写在任务管理系统里(Jira/Linear),Agent 的产出存到仓库里,关键决策写到 task_notes.md 里,session 本身只是执行容器,不存储关键信息。这样换人接手时,新人拿到的材料是完整的。

长期来看这可能是工具层要解决的问题。但现在工具还没到那一步,只能靠工作习惯来补。

背景 Agent 改变了什么

跑了几个月异步任务之后,工作节奏确实变了,但变化的方向不是「省了很多时间」,而是「深度和等待的比例变了」。

以前一天里大部分时间是持续的、中等深度的工作——写代码、调 bug、看文档。现在变成了几个短的深度爆发(写 spec、验收 PR、做判断)加上大段的「后台等待」时间。如果等待时间用来做另一件深度工作,整体产出是提升的;如果等待时间消耗在切换和碎片处理上,感觉很忙但实际上不比以前高效。

这个变化对工作安排的要求提高了。以前「坐下来打开编辑器就能干活」,现在需要想清楚「这段时间用来做什么、哪些任务可以并行放进后台」。它不会自动让你更高效,但如果你有意识地设计自己的任务流,它的杠杆效应是真实的。

Cognition 那篇访谈里还有一句话我印象深刻:背景 Agent 落地的关键不再只是模型能力,而是围绕模型的整套工程系统。这句话在我自己折腾了半年之后,觉得比刚看到时更对。