Linear 发布 Loops:用大白话写一条指令,让普通人也能玩转 Loop Engineering
Business 和 Enterprise 套餐可用,按运行次数扣钱,一次 0.07 到 0.2 美元。
- loop engineering 今年 6 月在开发者圈火起来,但用它的基本是开发者:产品团队那些要人盯着的重复活,工程师逐条读 bug 报告、项目经理通知范围变动、市场跟着改发布排期,还得人干。
- Linear 7 月 20 日上线 Loops:用大白话描述一件事,选定时或者事件触发,Linear Agent 就在整个工作区里反复跑这件事。
- 每次跑,它重新读一遍指令再决定这次该做什么,能调 Linear 里的 issue(工单条目)、项目、文档,也能调接进来的代码库、挂上的外部工具,还有这个 loop 之前几次运行的结果。
- 权限是一排单独的开关:网页搜索、看代码库、开编码会话写代码、往外部同步的线程里发言,逐个开。开了网页搜索,工作区内容就可能被送到外部服务;从 Slack 消息、邮件这类 Linear 之外建出来的 issue,默认不会触发 loop。
- 按次计费:不开编码会话的一次运行 0.07 到 0.2 美元,一旦它决定动手改代码,一次编码会话修个小 bug 要 3 到 5 美元。Business 和 Enterprise 套餐可用,现送每席位 20 美元促销额度、8 月 20 日到期。
Linear 上线了 Loops
Linear 在 7 月 20 日上线了 Loops,让 Linear Agent(Linear 自家那个能在你工作区里动手干活的 AI)按定时或者事件反复跑一件事。
以前只有写代码的人在搭这种自动循环
今年 6 月起,写代码的人里流行起一种做法:搭一套会自己跑的循环,让循环去催 AI 干活,人不再一句句对着 AI 提要求。这套做法有个名字,叫 loop engineering。Addy Osmani 在 6 月那篇长文里把一个循环拆成了五样东西,再加一份记忆。
这六样东西全长在编程工具里,用它们的人也基本是开发者。Loops 换了对象,接的是产品团队每天在干的那些重复运营活。
- 到点扫一遍昨天的构建失败、新 issue 和最近提交
- 发现值得做的,派一个 Agent 去改,另一个去审
- 连接器替它开代码改动申请、更新工单、往频道里发消息
- 工程师得逐条读进来的 bug 报告,再去查是怎么回事
- 项目经理得在范围变动发生的时候,通知受影响的团队
- 市场得跟着目标日期的变化,改发布排期
右边这三件事的流程本身都是清楚的,卡的地方在于:得有人盯着进来的变化,做一次判断,然后动手。那 Loops 要怎么把这类活接过去?先看它长什么样。
一个 loop 是由哪几样东西拼起来的
建一个 loop 只要两步:用大白话把这件事描述清楚,然后选它是到点跑还是被事件叫醒。展开看,一个 loop 身上挂着四样东西。
Prepare the agenda for the next Product team standup. Review the last 2 weeks of product activity and surface the key things the team should talk about live. Focus on: - decisions to make - open questions - risky assumptions
一个 loop 可以配给某个团队、一组团队,或者整个工作区。有访问权的人都能查看它的指令、看它是怎么配的、翻它每一次运行发生了什么。改动先存成草稿,点了 Publish 才一次性生效;发布过的每个版本都留着,随时能恢复到之前任意一版。有一个例外:被移除的工具恢复不回来,得重新走一遍授权。
它跑一次到底做了什么
每次触发,Linear Agent 重新读一遍这个 loop 的指令,自己决定这一次该做什么。它能拉的上下文包括 Linear 里的 issue、项目和文档,接进来的代码库,挂上的 MCP 工具,还有这个 loop 之前几次跑的结果。所以它能处理例外、能在信息不全的时候先去问、能在几条路里挑一条。
官方文档里有个现成的例子,看得比较全:一个叫 RideShare 的工作区,一个叫 Bug investigation 的 loop。先看它的指令。
把这条 issue 的描述、标签、评论、附件、关联 issue、相关的客户请求,以及整个工作区里最近的相关 issue 都看一遍。
先判断信息够不够继续分派。最少要有这几样:期望的行为、实际的行为、复现步骤、设备和系统信息。
如果缺了实质性的信息,就留一条简短评论,向用户要缺的那部分。
如果信息够了,评估这几项:严重程度(critical、high、medium、low 四挡,附一句理由)、回归风险(likely、possible、unclear)、重复风险(likely、possible、none found)、最可能归哪个团队、最可能的负责人。
When an issue enters Triage, run only if it either has the Bug label or uses the bug report template. Review the issue description, labels, comments, attachments, linked issues, related customer requests, and recent relevant issues across the workspace. First, determine whether there is enough information to continue triage. The minimum needed is: - expected behavior - actual behavior - reproduction steps - device and OS information If materially important information is missing, leave a short comment asking the user for the missing information. If enough information is present, assess: - severity as critical, high, medium, or low, with a short justification - regression risk as likely, possible, or unclear - duplicate risk as likely, possible, or none found - the most likely team - the most likely owner
这条指令值得多看两眼,因为它示范了写 loop 指令的三个手法。第一个是前置门:开头那句「只在带 Bug 标签或者用了 bug 模板的情况下才跑」,把不该它管的 issue 直接挡在外面。第二个是把输出锁成有限选项:严重程度只能选 critical、high、medium、low,回归风险只能选 likely、possible、unclear,不给它自由发挥的余地,结果才能被后面的流程直接拿去用。第三个是信息不够时不许硬猜:先列清最少需要哪四样,缺了就去评论区问人,而不是凭想象填一个严重程度。
再看它跑一次的结果。7 月 9 日晚上 11 点 04 分那次,它干了 3 分钟。在 RIDE-10663 这条 issue(飞行模式重连之后加载不出行程历史)上发了一条分派总结,把它关联到 RIDE-10639,按评估结果改了团队、负责人、优先级和工作量预估。这两条 issue 的标题一字不差,属于疑似重复。然后它多走了一步:拿现有的那个修复去验报告里说的 iPhone 17 加 iOS 27 重连路径,结论是修复看着没问题、不用改代码,合并之前还差一次构建加一次真机上的飞行模式复现。
这张图里还有个容易被漏看的细节:这个 loop 是被事件叫醒的,所以跑得相当频繁。光是 7 月 9 日那一天,图上能看见的运行就有 16 次,从下午 5 点 49 一直排到晚上 11 点 12。每一次都单独留一条记录,事后想知道它当时读了什么、动了什么,逐条翻得到。这个频率后面还会再提一次,因为 Loops 是按运行次数收钱的。
你能给它开多大的口子
这是一个没人盯着的 Agent,跑在公司的工作区里。所以权限这排开关决定了两件事:它能摸到多少东西,以及它能不能把里面的内容送出去。建 loop 的时候逐项开,用不上的就别开。
它能读写哪些团队的数据。工作区级的 loop、以及公开团队里的 loop,默认能访问所有公开团队;私有团队里的 loop 只能访问那个团队。能访问所有公开团队的 loop,同时也能访问 Initiative、Customer 这类工作区级的对象。
开了之后它能查任意网站,用来做的事比如盯竞品发了什么、翻你们接入的服务的文档。
开这项等于允许工作区内容被送到外部服务。会碰敏感数据的 loop 别开。
Linear 自己的代码库理解能力。开了之后 loop 能翻工作区里已经接入的代码仓库,查 bug 根因、回答代码相关的问题都要靠它。
开了之后它能直接起一个写代码的会话,改完开出一个草稿状态的 pull request 等人看。把实现工作真交出去的 loop 才需要这项。
开了之后它能在跟外部应用双向同步的 issue 或者评论线程里写东西。
这些线程有可能被工作区外面的人看到。比如你在一个公开仓库上开了 GitHub 同步,它就能往那个仓库的 GitHub Issues 里发评论。
issue 可以从 Linear 之外建出来,比如一条 Slack 消息、一封发到指定地址的邮件。出于安全考虑,这类 issue 默认不会触发 loop。要让它触发,得在每个 loop 上单独打开指定的外部来源;允许哪些外部来源,由工作区所有者在安全设置里定。
关着的时候,一次运行只能写它被触发的那一条 issue。开了之后,它能写团队访问范围内的任意 issue。
工具是另一条口子,但它的边界比权限开关窄。给 loop 挂一个工具,等于授权这个 loop 到那个服务里去动手;能动到哪一步,取的是两个范围的交集:那个集成本身被配置成能干什么,以及这个 loop 的数据范围有多大。另外每个工具还得工作区先批准才能用,工作区管理员在安全设置里定一份允许清单。
团队现在拿它干什么
上一节那个 bug 排查 loop 就是第一个场景,这里不再重复。除它之外,发布页和官方文档一共给了这几种,其中带标记的四条在文档页面上是现成的,点一下「Build this loop」就能照着建一个。
新的功能需求建好之后,loop 判断要不要分别做 iOS、Android 和 Web 的改动,需要的话建出对应平台的 issue,分给对应的团队。
每天结束的时候,loop 拿在跑的项目和 Initiative(比项目更大一级的规划单元)去核一份中心发布计划。发现时间或者范围变了,它改文档,并留一条说明为什么改。
一条带 incident 标签的 issue 被标成完成之后,做一次根因分析,把该跟进的事建成新的 issue。
一条 issue 关闭之后,读关掉它的那个 PR(代码改动申请),生成一段给客服用的对客户说明。
每周一下午,回顾一下上周有过第一次更新的项目,或者在 @Weekly sync document 里被提到刚启动的项目。往 #product-marketing 频道发一条 Slack 消息,让他们知道接下来有什么。
当 Mobile 团队里建了一条 issue,如果有必要,分别为 iOS 和 Android 团队建出单独的 issue。
When an issue enters this team's triage queue, investigate its likely root cause with Code Intelligence. If you think you can fix it, start a coding session. Every Monday afternoon, review projects that had their first update in the last week or were mentioned as newly kicked off in @Weekly sync document. Send a Slack message to the #product-marketing channel so they're aware of what's coming. When an issue is created in team Mobile, create separate issues for the iOS and Android teams, if relevant.
跑一次 Loops 要花多少钱
Loops 在 Business 和 Enterprise 套餐上可用。从 7 月 20 日起,跑一次要扣工作区的 AI credits。这池钱不是套餐里包的,得管理员另外充;也不是所有 AI 功能都在用它,只有编码会话和 Loops 走这池,其余 AI 功能算在套餐里。它按实际用量扣,不按人头收。
把这个价目表和上一节那个数字放在一起看,才知道一个事件触发的 loop 实际会花多少钱。那个 bug 排查 loop 光 7 月 9 日一天就被叫醒 16 次,按不开编码会话算是一天 1 块 1 到 3 块 2 美元;可它的指令里明写着「路子清楚就直接起编码会话去修」,只要有一次真动手,那一次就是 3 到 5 美元。这也解释了那条指令为什么开头就写「只对带 Bug 标签或者用了 bug 模板的 issue 跑」:前置过滤既是为了结果准,也是为了别乱花钱。
还有几件跟钱有关的事:用 AI credits 是自愿的,工作区一直不充值,就用不了 Loops 和编码会话,也永远不会被扣钱;额度归零或者促销额度过期之后 loop 会暂停,除非管理员开了自动补额或者另外买了额度,只有开了自动补额工作区才会被自动扣款;充值走 Stripe,跟 Linear 订阅账单分开开票;花在哪个功能、哪个人身上,在设置的账单页能看到实时明细。
建一个 loop 有两条路
第一条路是先在聊天里试出来,满意了再把它定成 loop:按 ⌘/Ctrl + J 打开 Linear Agent 聊天,把你想要的结果先调对,不满意就继续提要求,直到产出的东西格式和内容都合适,然后让 Linear 把这段变成一个 loop,缺的字段它会提示你补。文档给了一段现成的开场白,场景是每周四要开项目 check-in 会的负责人:
Check the project Slack channel, open questions in the last update, and any issue threads that seem relevant. Add a new section in the Meetings project document with those details, using a format like [...]
第二条路是直接在界面上建:侧边栏工作区那一组里点 Loops,建的是工作区级的;点团队名进去再选 Loops 标签页,建的是这个团队的。之后依次选触发器、写指令、可选挂工具、过一遍范围和权限。
谁能建和管 loop 也是可控的:工作区所有者在安全设置里管工作区级的 loop,团队所有者在团队的访问与权限里管本团队的。
以后 Linear 打算再加更多触发方式和上下文来源,以及给工作区和团队管理员的治理控制。
自动循环从程序员私下搭的脚本,变成了团队工作区里人人能建、能查的功能
Linear 上线 Loops:写一段大白话,它就一直替你盯着 bug 队列,一页带图讲完。
↓ 一页读完 · 有一张会动的图
Linear 是团队用来记 bug、排任务、跟项目的工具。里面每一条待办叫 issue(工单条目)。今年 6 月起,写代码的人流行搭一种会自己跑的循环,让循环去催 AI 干活,人不用一句句提要求,这套做法叫 loop engineering。问题是,这套东西一直只长在程序员的编程工具里。
✘ 产品团队还得人肉盯:工程师逐条读进来的 bug 报告再去查是怎么回事,项目经理在范围变动时挨个通知受影响的团队,市场跟着目标日期的变化改发布排期
右边这三件事的流程本身都是清楚的。卡的地方在于:得有个人盯着进来的变化,做一次判断,然后动手。
Linear 在 7 月 20 日上线了 Loops。你把一件想让它反复做的事用大白话写清楚,再选它是到点跑、还是被某条 issue 的变动叫醒,它就在整个工作区里一直跑下去。原来要人守着的那次判断,现在写成了一段话。
- 人守着 Triage(新问题进来先排队等分派的地方)
- 人读描述、翻附件、想想是不是重复的
- 人定严重程度、改团队和负责人
同一套写法还能干别的:新需求进来自动派生 iOS、Android、Web 三边的子任务;每天下班核对项目和发布计划文档,变了就改并留一句为什么改;一次事故关掉之后做根因分析、把该跟进的建成新任务。问题也随之而来,这么一段话,它每次被叫醒时是怎么变成动作的?
一个 loop 身上挂四样东西:触发器(到点,或者 issue 符合条件时)、一段大白话指令、可选的外部工具、一排权限开关。它不是照着脚本走固定步骤,每次被叫醒,它重新读一遍你写的那段话,再看当下的材料,自己决定这一次该做什么。下面这张图跟着官方文档里那条真实 bug 走一圈,它来自 Linear 文档展示的一个叫 RideShare 的工作区。
Loops 不按人头收,按被叫醒的次数扣钱。花销大小主要看一件事:你有没有让它动手改代码。还是文档里那条排查 loop,7 月 9 日那天它被叫醒 16 次,两种开法的日成本差出一个量级。
门槛:要有 Business 或 Enterprise 工作区;这池钱套餐不包,得管理员主动充,手动一次最少 10 美元,余额归零 loop 就暂停。以上价格与额度均出自 Linear 官方计费文档,第三方无从核对。
一条条读到几点?
就是得有人盯着
- × 逐条读 bug 报告
- × 范围一变
挨个通知团队 - × 日期一改
跟着改发布排期
它就在整个工作区里一直跑。
不画流程图?
bug,先看信息够
不够,缺了就留言
问,够了就定级、
找负责人。」
都干一模一样的?
再看这条 bug 的材料,
自己定这次干什么。
它会先去问人
发总结、认出重复、
改优先级和负责人
动手改代码,
一次就这个价
只对带 Bug 标签的跑