GitHub 给 AI 黑话编了本词典,九个词里只有三个在讲模型

Decoding the new AI lingo: Loops, harnesses, squads, hill climbing... oh my!2026年9月2日 约 14 分钟

2026 年 9 月 2 日,GitHub 开发者推广高级总监 Cassidy Williams 在 GitHub Blog 发布了一份 AI 术语解读,把 loop engineering、Ralph loop、squad、fleet、harness、hill climbing、forward deployed engineer 等九个新词逐个讲了一遍,并配了一集同名 GitHub Podcast。九个词里只有三个在讲模型本身,另外五个描述模型外面那一层——流程、分工、工具权限、验证和改进方式,剩下一个 forward deployed engineer 是岗位名。

GitHubCopilotAI Agent开发工具术语科普

一分钟速览

  • GitHub 把 loop、harness 等九个新词写成术语解读,并配了一集同名播客。
  • 九个词里五个描述模型之外的流程、分工与验证,系统比模型更能决定结果。
  • 可用硬数据只有 GitHub 自评:完成率持平、token 更低,SWE-bench 一项却落后。

GitHub 把九个新词写成了一份词典,其中只有三个在讲模型

2026 年 9 月 2 日,GitHub 开发者推广高级总监 Cassidy Williams 在 GitHub Blog 发布了一份 AI 术语解读,把最近冒出来的一批新词逐个讲了一遍:loop engineering、Ralph loop、squad、fleet、harness、harness engineering、hill climbing、forward deployed engineer,以及 closed models、open weights、open source models。配套的是同名的 GitHub Podcast 一集,讨论者为 Marlene Mhangami、GPS 和 Cassidy Williams。

九个词排在一起,很像一份要背的单词表。换一个角度,按“它在描述谁”重新分一次,会看到一件更简单的事:只有最后三个词在讲模型本身,另外五个描述的是模型外面那一层——流程怎么排、多个 agent怎么分工、工具和权限怎么配、输出怎么验证、系统怎么一轮轮改;剩下一个 forward deployed engineer 是个岗位名。那一层在这批词里有一个名字,就是 harness。它是最关键、也最容易被当成又一个新词划过去的那个。

Cassidy Williams 给出的收尾建议指向同一处:别追新词,去问自己的流程能不能稳定重复、任务怎么验证、人该在什么时候插手、模型能信到什么程度。

原稿素材GitHub Podcast 里讨论这批 AI 术语的一集,参与者为 Marlene Mhangami、GPS 与 Cassidy Williams,讨论范围就是文章里列出的九个词。

九个新词分别管哪一层

第 1 节数据表格
术语管的是哪一层它回答的问题
loop engineering流程怎么把一次性提示变成可重复运行的系统
Ralph loop流程给它一份规格让它一直做到完成,代价是每轮更贵
squad 与 fleet协作多个 agent 怎么分工、怎么并行
harness 与 harness engineering系统模型之外的工具、权限、上下文、编排怎么设计
hill climbing改进怎么用评测和反馈一轮轮把系统调好
forward deployed engineer角色谁把工具和 agent 接进客户的既有系统
closed/open weights/open source共享方式你能拿到多少、改到什么程度

先从最小的一件事看起:把每天早上的手动提示,换成一条会自己跑的流程。

把每天早上的手动提示,换成一条会自己跑的流程

loop engineering 指的是围绕 agent 设计可重复的系统,而不是一次一个任务地手动提示它。GitHub 给的例子很日常:不要每天早上去跟 agent 说一遍“看看新 issue、总结一下、提个修改建议”,而是建一条按计划运行的循环——自己去取新的 issue,交给 agent 处理,验证它的输出,把卡住的任务升级处理。对这个循环,文章用了一个自嘲的说法:一条被美化的 AI 原生 cron job,也就是按时间表自动执行的定时任务。

同样是循环,做法可以差很远。Ralph loop 是其中一种实现:给 agent 一个详细任务,常常直接来自产品需求文档或规格说明,然后让它一直做到任务结束。好处是大任务能被拆成一轮轮“计划—执行—检查”;代价写在明处——每多迭代一轮,就多消耗 token、多占用上下文、多花算力。这是一个定性判断,文中没有给出任何量化对比。

所以“把提示写进循环”和 loop engineering 不是一回事。一份设计良好的循环会加上 skills、observability、validation、routing、checkpoints 这些原语,拆开看就是:让循环知道自己有哪些能力可用、跑到哪一步了、输出算不算合格、出错时交给谁、在哪个位置可以停下来等人工确认。这些东西不产生模型能力,它们决定模型的能力在什么时候被信任。

一条会自己跑起来的循环长什么样

第 1 / 5 步 · 触发

定时启动

不是等人来问,而是按计划自己开始。

第 2 / 5 步 · 取料

抓取新 issue

循环自己去取要处理的对象。

第 3 / 5 步 · 执行

交给 agent 处理

把任务传给 agent,由它产出总结或修改建议。

第 4 / 5 步 · 校验

验证输出

这一步决定循环能不能被信任,也是它与无限重试的分界线。

第 5 / 5 步 · 兜底

卡住的升级给人

验证不过或卡住的任务交回人工,而不是继续空转。

步骤来自 GitHub 博文给出的 issue 处理示例,是说明用的流程,不是某套产品的实际实现。

多个 agent 不是把同一个 agent 复制几份

squad 和 fleet 描述的不是流程,而是“有几个 agent、各自负责什么”。squad 是一组角色不同的 agent,常常照着真实团队的分工搭:一个负责规划,一个负责审查这份规划,一个负责实现,一个负责测试,一个负责代码审查。fleet 说的是并行——同一时间有一批 agent 在干活。

这两个词可以叠在一起用:一个 squad 可以放进 fleet 里并行跑,也可以按顺序走。核心思路是并行化加专业化,不让一个 agent 从头包到尾,而是让不同 agent 接手流程的不同部分,各自用特定的 skills 去调优。

需要提醒的是,这一层的描述全部停留在设计意图上。GitHub 没有给出并行度、成本或效率的任何数据,也没有真实团队的使用记录,“多个 agent 分工更快”目前没有被证明。还有一个没展开的问题是:agent 并行之后,冲突、合并和责任归属要由谁处理。

squad 和 fleet 不是同一种东西

第 3 节数据表格
对比维度squadfleet
组成一组角色不同的 agent,常对应真实团队分工同时处理任务的并行 agent 集合
解决的问题专业化:不同环节交给不同 agent并行化:同一时间处理更多任务
两者关系可以在 fleet 中并行,也可以顺序工作是并行尺度,本身不规定角色

流程排好了、分工也有了,还缺一件东西:模型本身被摆在什么位置。这正是这批新词里最关键的一个。

harness:模型之外的一切,才决定模型的能力往哪使

GitHub 对 harness 的定义是:模型之外、让模型在你的工作流里真正有用的一切,包括工具、权限、记忆、上下文和编排。这个词本义是马具;马会跑,但方向、力道和安全性由马具决定。模型会生成内容,但它什么时候被允许做什么、看得到哪些信息、输出交给谁,由 harness 决定。围绕这套东西做设计和改进,就是 harness engineering。

GitHub 举的软件 harness 例子是自己的 GitHub Copilot:它把模型接到代码库、编辑器、pull request、终端这些地方,让模型能在真实工作流里干活。这个例子要打个折扣看——发布方就是 GitHub,Copilot 也是 GitHub 的产品,自己举例说明自己的定义,属于发布方自证。同一发布方的工程文章把 Copilot agentic harness 描述为 Copilot SDK(软件开发工具包)的单一共享组件,驱动 Copilot CLI(命令行工具)、Copilot app 和代码审查;这同样只是自证,不能算独立核验。

但即便只是自证,里面有一个值得记住的结构事实:同一套 harness 支持 20 多个前沿模型,横跨 GPT、Claude、Gemini 和 MAI 家族,还可以用自带 key 接入开源与本地模型。模型是可替换的,外壳是留下来的那一套。这种“模型与外壳分开设计”的做法,正是外围系统这个说法在工程上站得住脚的原因。

边界也要说清楚:“20+ 前沿模型”是发布方自报的数字,具体清单和统计时间都没有给出;能被一套外壳支持,不等于在每个模型上都表现一样。

类比harness 与模型的关系马具与马

模型可以换、外壳留下来,那就冒出一个具体问题:同一个模型换一套外壳,成绩会差多少?

同一模型换一套外壳,GitHub 自评的答案是“持平”,但有一项差了 7%

GitHub 自己的评测给了一个分裂的答案:大部分指标看不出差距,个别地方差得出来。报告称,在固定同一模型和同一批任务的前提下,GitHub Copilot harness 的任务完成率与其他模型厂商自带 harness 相当,差异落在模型随机性造成的运行间波动范围内;并且在多数配置下,它的 token 消耗更低。但在 SWE-bench Verified这一项上,Copilot CLI 对 GPT 5.4 和 GPT 5.5 分别低了 7% 和 4%。两个方向相反的结论同时成立。

先看条件。被测的是四个模型:Claude Sonnet 4.6、Claude Opus 4.7、GPT-5.4、GPT-5.5。对照的是这些模型厂商自带的外壳——Sonnet 4.6 和 Opus 4.7 对 Claude Code,GPT-5.4 和 GPT-5.5 对 Codex CLI。

运行条件被尽量拉平:context window(上下文窗口)大小、prompt token 上限、reasoning effort(推理投入,取中等档 medium)都做了归一化,并关掉 tool search 和 MCP servers 这类额外接入,只保留各 harness 自带的内置工具。所有运行都是两小时超时、非交互式、单轮完成、禁用 web 工具,其余工具全部允许。判定指标是 pass@1,也就是一次通过率。样本是 TerminalBench 2.0 的 89 个任务,每个模型–配置至少跑五次独立运行;基础设施相关的失败会重跑,模型自己犯的错误保留在结果里。

再看不该跨过的那条线。这是 GitHub 自己设计、自己运行、自己报告的测试,没有第三方复核。归一化设置低于公开榜单提交常用的配置,这些数字不能和公开排行榜直接比。对实例少于 100 个的 benchmark,它报告的是五次运行里最好的一次,这个口径本身就偏乐观。可读正文只给了“持平”和“多数配置更低”这类定性说法,具体的完成率、token 数和美元成本没有出现;7% 和 4% 来自官方图表的说明文字,分母和置信区间未知。

即使把折扣打满,这份评测还是说明了一件有用的事:harness 的差别真实存在,而且方向不固定——它可以省下 token,也可以在某一类任务上落后。所以“哪个模型最强”这个问法至少缺两个限定:配的是哪套系统,跑的是哪类任务。

同一模型、同一批任务,换一套 harness 会差多少

GitHub Copilot 的 agentic harness 与模型厂商自带 harness 相比,在任务完成率与 token 效率上表现如何?

实验设置
固定同一模型与同一批 benchmark 任务,把 context window 大小、prompt token 上限、reasoning effort(中等)与设置归一化(无 tool search、无 MCP servers),保留各 harness 的默认内置工具;所有运行两小时超时、非交互式单轮、禁用 web 工具、允许全部工具。Claude Code 与 Codex 使用直连的 Anthropic/OpenAI 端点;TerminalBench 2.0 分析中 Claude Code 与 Copilot CLI 启用 tool search,Copilot CLI 使用 github-mcp-server。
样本与轮次
TerminalBench 2.0 共 89 个任务,每个模型–配置至少 5 次独立运行,Copilot 分两批评测;实例少于 100 的 benchmark 做 5 次独立运行并报告最好一次;基础设施相关失败重跑,模型自身错误保留在结果中。
模型
Claude Sonnet 4.6、Claude Opus 4.7、GPT-5.4、GPT-5.5
判定指标
pass@1 的任务完成率、每任务 token 消耗与每任务美元成本;1σ 椭圆表示运行间波动
对照或基线
同模型的模型厂商自带 harness:Claude Code(Sonnet 4.6、Opus 4.7)与 Codex CLI(GPT-5.4、GPT-5.5)

结果:发布方称 Copilot harness 的任务完成率与模型厂商 harness 持平(差异落在运行间方差内),并在多数配置下 token 消耗更低;图表说明文字显示 SWE-bench Verified 上 Copilot CLI 对 GPT 5.4、GPT 5.5 分别差 7% 与 4%。

边界:由 GitHub 自行运行并报告,无第三方复核;归一化设置低于公开 benchmark 提交常用配置,不可与公开榜单直接比较;小 benchmark 报告最好一次运行而非平均;两小时超时限制;具体完成率、token 与成本数值未在可读正文给出,7% 与 4% 来自图表说明文字,分母未知。

如果外壳的影响真有这么大,改进它就不该是小修小补。GitHub 记录了一次极端的手术。

把 Copilot runtime 重写成 80 万行以上 Rust,一个人几个月

这次手术的对象是 Copilot 的 agent runtime,也就是支撑 Copilot CLI、Copilot app 和 SDK 的那套运行时。它原本是 TypeScript 跑在 Node.js/V8 上,重写之后变成超过 80 万行生产 Rust。整个移植横跨 128 个 pull request,增量合入主干、分批发布,而不是攒到最后一次性切换。策略上选的是“就地”原子替换:逐个组件从 TypeScript 换成 Rust,主分支始终保持可发布。

数字要连口径一起记。2026 年 5 月初的初始移植计划估算 runtime 约 13 万行 TypeScript;作者后来估计,实际有约 43 万行生产 TypeScript 经过移植。移植期间 runtime 收进约 30 万行生产 TypeScript、移除约 43 万行,同期约 120 万行生产 Rust 进入、约 36.5 万行离开。后面这两个数字包含移植之外的常规新增代码,不能直接算作移植产出,也不该和 80 万行这个存量口径相减。

最常被引用的一句是:这个项目在 agent 出现之前需要一整支开发团队花一到两年。如今它主要由单个开发者在几个月内完成,团队其余成员同期继续扩展 runtime 功能。这句话是作者的估计,没有基线项目,也没有受控对照;“一到两年”和“几个月”都是区间,不能当成通用的效率倍数。作者本人也明确否认这个案例能推广成“其他大型 TypeScript 项目都该改写为 Rust”。移植也还没彻底结束,CLI 尚未完全迁移到 SDK 的公开接口上。

这段经历的价值不在 Rust 本身,而在于它给出了 harness engineering 的实际量级:不是拧几个参数,而是可以重新安排一整套运行时、交付节奏和验证方式。它同时也暴露了这类工程的典型风险——代码在移植途中继续增长,原计划估算的 13 万行,最后变成 43 万行经过移植。范围膨胀是常态,不是意外。

这次重写的三个数字

关键数字
  1. 800,000+

    重写后的生产 Rust 代码

  2. 128

    增量合入主干的 pull request

  3. 约 100

    旧架构下每个 SDK 消费者、每种语言的最小工作集开销量级

Copilot runtime 从 TypeScript 重写成 80 万行以上生产 Rust

Copilot agent runtime(支撑 Copilot CLI、Copilot app、SDK 等产品)原为 TypeScript on Node.js/V8 实现,TUI 与 runtime 交织,SDK 通过 JSON-RPC 调用 headless CLI 子进程,每个 SDK 消费者、每种语言至少要额外承载约 100 MB 量级的语言运行时工作集。

  1. 规划

    2026 年 5 月初的初始移植计划估算 runtime 约 13 万行 TypeScript。

  2. 策略选择

    放弃一次性重写,选择就地、逐组件原子替换,主分支始终可发布。

  3. 执行

    大部分代码由 AI agent 编写,共 128 个 pull request 增量合入主干并分批发布。

  4. 范围膨胀

    移植期间仍有新 TypeScript 代码持续进入,作者最终估计约 43 万行生产 TypeScript 经过移植。

  5. 完成重写

    runtime 被重写为超过 80 万行生产 Rust,并以纯原生二进制暴露 C ABI。

结果:作者称 runtime 性能提升数个数量级;该项目此前需要整支团队一到两年,现主要由单个开发者在几个月内完成,团队其余成员同期继续扩展 runtime 能力。

不能据此证明:不能证明其他大型 TypeScript 项目都应改写为 Rust(作者本人明确否认这一点),也不能证明其他团队能复现同等速度;移植工作仍在进行,CLI 尚未完全迁移到 SDK 公开表面;“一到两年”与“几个月”均为估计区间,无基线项目对照。

基于证据重建事件顺序,非逐字对话

靠反馈一轮轮往上调,可能只走到邻近的小山头

hill climbing(爬山法)在这批词里指的是用反馈持续改进 agent 和 harness:用 evals(评测集)衡量 agent 的输出对不对,再回头调整 harness,看结果有没有变好;如果这个 agent 负责审查 pull request,那就去看它找到了几个真 bug、建议有没有用,再据此调整它手里的工具。

这个词有两层边界。第一层是信息量:GitHub 只说了“用反馈接着调”,没有给出任何评测指标、提升幅度或实验设置,所以“这样调能调多好”在这里没有答案。第二层是词义:hill climbing 在优化理论里是一个有严格定义、也容易卡在局部最优的算法名称,这里是工程口语,两者不能直接画等号。混在一起看,容易把“持续调优”想得比实际更可靠——靠反馈往上走,也可能只是走到邻近的小山头。

类比hill climbing 的改进方式在浓雾里爬山,只能看见脚下一小段路,靠每一步的反馈决定往哪挪

系统之外,这份清单里还混进了唯一一个讲人的词。

forward deployed engineer 不是新岗位,是新招牌

forward deployed engineer 这个职位在 AI 之前就存在,只是 AI 的包装让它听起来像新词。它指的是面向客户的软件工程师、销售工程师或解决方案工程师,通常带 AI 焦点。

这类人的工作不是训练模型,而是把技术方案搬进客户自己的环境:先弄清客户现有的系统,再把工具、工作流和 agent 接进去,让它真的跑起来。带 AI 焦点之后,接进去的对象换成了 AI 工具和 agent,工作方式没有变。

把它放回这份清单,九个词的构成就清楚了:三个讲模型,五个讲模型之外那套系统,剩下一个讲的是人。GitHub 没有给出这个岗位的任何量化信息,也没有说这类岗位眼下有多少需求。

人和系统说完了,最后一道边界在模型本身:交到你手里时,你能拿到哪一层。

同样叫开放,能拿到的东西差三层

最后一道边界是模型本身的共享方式,它决定你能改到多深。closed models 通过 API 或托管产品访问,开发者能调用,但拿不到权重、训练数据和训练过程;open weight models 把模型权重公开,可以下载,常在本地或自有基础设施上运行,但数据集和训练方法可能并不完全可得;open source models 更进一步,模型、代码、数据和训练过程都可用于检查、复用和修改。GitHub 的结论是:越开放,越能运行、定制、审计和信任它。

这套三档划分有一处没交代:它和 OSI 等组织的开源定义是否一致,GitHub 没有对照,也没有列出任何具体模型或许可证。所以它更适合当成一个“我能拿到哪一层”的提问框架,而不是一份合规判据。

三种模型共享方式,你分别能拿到什么

第 9 节数据表格
共享方式closed modelsopen weight modelsopen source models
模型权重不可得可得(可下载)可得
训练数据不可得可能不完全可得可得
训练过程不可得可能不完全可得可得
本地或自有基础设施运行只能通过 API 或托管产品访问可得可得
检查、复用与修改不可得可下载运行,能否修改未说明可得

回到最开始:这些词到底该不该背。

该背的不是词,是判断它落在哪一层

这些词会留下多少,没人知道。GitHub 自己也承认,有些会留下来,有些会被更好的说法替换,还有些仍在被定义的过程中。所以真正可复用的不是定义,而是三件事:流程能不能稳定重复——这正是 loop engineering 要解决的问题;输出由谁验证——validation 和 evals;模型能信到什么程度、系统能改到多深——取决于你给它配了哪套外壳,以及模型以哪种方式共享。定义会换,这三件事不会。

其中“外壳值不值得设计”这一条,恰好有可查的硬数据可以回答,而答案有点别扭:同一个模型换一套 harness,任务完成率大体持平、token 消耗可能更低,也可能在 SWE-bench Verified 上落后 7%。也就是说,外壳值得认真设计,但不存在一套默认最优的外壳——包括 GitHub 自己那一套。

这个判断会改变的条件很具体:如果出现第三方用同样口径复现的评测,或者公开数据补上被略去的绝对值,“哪套外壳更好”才谈得上结论。

在那之前,遇到一个新词,可以先问它落在哪一层:流程、分工、人,还是模型外面那套系统。这个方法比记住九个定义更耐用——定义会换,层不会。