很多开发者第一次使用终端里的 AI Agent,关注的是模型能不能改代码、跑测试和创建拉取请求。但真正影响使用感受的,往往是另一层基础设施:工具调用是否顺畅,长会话能不能恢复,权限是否容易收紧,插件和 MCP 服务器是否便于管理。
8 月 28 日,GitHub 在 Copilot CLI 周更新中公布了一组很有代表性的变化:Copilot CLI 现在运行在原生 Rust 运行时上,终端界面仍由 TypeScript 构建;同时加入了被中断会话的恢复能力,增加了执行和权限模式设置,并通过 /plugin、/mcp 和 /skills 改进扩展能力管理。它看起来像一次版本更新,背后却说明终端 Agent 正从一次性命令工具,逐步变成需要自己维护状态、权限和扩展生态的运行时系统。
这次更新到底改了什么
GitHub 公布的周更新覆盖了多个客户端。本文只聚焦 Copilot CLI,因为它对本地开发环境的影响最直接。
原生 Rust 运行时,终端界面仍是 TypeScript
公告明确提到,Copilot CLI 的运行时改为原生 Rust,而终端界面继续使用 TypeScript。GitHub 将它描述为一次显著的性能提升,但目前公告没有给出基准测试、硬件环境或具体提升比例。因此,不能把它简单理解成模型推理速度变快了。
更准确的理解是:模型服务、网络请求和工具本身仍然是耗时来源,Rust 运行时主要可能改善 CLI 自己负责的那一段工作,例如进程调度、工具调用编排、事件处理和长时间运行时的资源开销。对于只问一个问题就退出的命令,体感差异未必明显;对于频繁读文件、运行测试、接收命令输出和反复修改代码的 Agent,会话运行时的稳定性和响应速度更值得关注。
公告没有公开足够细节来判断 Rust 与 TypeScript 之间的具体进程边界,也没有说明所有性能收益分别来自哪里。工程上应把“运行时切换”和“性能提升”作为官方发布结论,把更细的架构推断留在待验证范围内。
被中断的会话可以继续
Copilot CLI 新增了恢复没有正常退出、或在中途被打断的会话的能力。这个变化对 Agent 很重要,因为一次代码任务可能包含读取仓库、分析依赖、修改多个文件、运行测试和处理失败结果,持续时间远长于一次普通的命令执行。
会话恢复也意味着 CLI 不再只是把对话显示在终端里,而是需要保存某种可恢复状态。这个状态至少要与当前目录、分支、未提交改动、工具调用结果和用户授权联系起来。
恢复会话时,不能默认工作区仍然和中断前完全一致。用户可能已经切换分支、修改文件、更新依赖,或者撤销了上一次授权。安全的恢复流程应该先重新检查仓库状态和权限,再继续执行待处理动作。恢复的是上下文,不应该绕过当前环境的再次确认。
执行模式和权限模式变得可配置
本周更新还提到,CLI 可以为新会话设置首选执行模式和权限模式,相关配置项包括 defaultMode 和 defaultPermissionMode。这说明 Agent 的“怎么工作”和“能做什么”开始被明确拆开:前者偏向交互流程,后者偏向工具授权。
这两个概念不应混在一起。计划模式可以要求 Agent 先理解任务、提出步骤,再开始修改代码;权限模式则应该约束它是否能读写文件、运行 shell 命令或访问外部服务。一个 Agent 可以先做详细计划,但这不代表它因此获得了执行计划所需的全部权限。
为什么运行时是终端 Agent 的关键组成部分
传统 CLI 通常是一个相对短暂的进程:读取参数、执行动作、返回结果。Agent CLI 则更像一个小型操作系统,需要协调模型、终端、文件系统、子进程、网络服务和用户输入。
可以把一次任务抽象成下面的循环:
1 | 读取目标和仓库状态 |
这个循环里的任何一个环节出问题,模型能力都很难转化成稳定的开发体验。终端界面只是最外层,真正需要长期维护的是调度、状态、错误处理、权限和恢复逻辑。
因此,Copilot CLI 从 TypeScript 终端界面之外引入原生 Rust 运行时,至少释放了一个清晰信号:Agent 产品的竞争点不只在模型,也在承载模型行动的本地运行时。这个运行时是否低延迟、是否能稳定处理大量工具输出、是否能在中断后恢复,都会直接影响开发者愿不愿意把更长的任务交给它。
从一次性对话到可恢复工作流
会话恢复最值得借鉴的地方,不是“断了还能接着聊”,而是它迫使 Agent 把任务状态从聊天记录里分离出来。
一个可恢复的任务,最好至少区分下面几类信息:
| 状态 | 例子 | 恢复时的处理 |
|---|---|---|
| 目标 | 要修复的 Bug、验收条件 | 重新展示,确认没有过期 |
| 工作区 | 当前分支、文件摘要、未提交改动 | 重新读取,不直接相信旧快照 |
| 工具结果 | 测试输出、编译错误、API 响应 | 标记时间,必要时重新执行 |
| 待执行动作 | 尚未运行的命令或文件修改 | 重新经过权限检查 |
| 用户决定 | 拒绝过的命令、指定的约束 | 不能被恢复逻辑静默覆盖 |
如果只保存了对话文本,恢复时很容易出现“模型以为已经改过,实际文件已经变了”的错觉。如果只保存待执行命令,又可能在环境变化后执行一条已经不再安全的动作。
对开发者来说,一个简单而有效的习惯是:让每个长任务都有可观察的检查点。完成一次文件修改后记录 diff,测试结束后记录退出状态,切换阶段前重新读取 Git 状态。这样即使工具层提供了会话恢复,恢复过程也有足够证据判断从哪里继续。
权限模式不能只追求省事
GitHub 文档明确提醒,Copilot CLI 可以代表用户修改文件和运行 shell 命令,应当认真检查它提出的命令。文档还说明,--allow-all-tools 这类自动批准选项会让 Copilot 获得与当前用户相同的文件和命令访问能力,不再逐项询问。
这也是终端 Agent 最容易被低估的风险。模型生成一条命令很快,命令造成的影响却可能跨越当前仓库、用户目录、网络服务和凭据。权限模式的设计应该围绕任务所需的最小能力,而不是围绕“少弹几个确认框”。
一个适合日常开发的权限层次可以是:
- 先允许读取代码、配置和测试输出;
- 再允许写入当前仓库中的指定路径;
- 对安装依赖、网络访问和数据库操作单独确认;
- 对删除文件、推送远端、创建或合并拉取请求保留人工确认;
- 任务完成后撤销临时授权,不把一次性的宽权限带到下一次会话。
这不是说所有操作都必须人工批准。低风险、可回滚的本地动作可以在明确范围内自动执行。关键在于权限要有作用域、生命周期和审计记录,不能把“当前用户能执行”直接等价成“Agent 永远可以执行”。
/plugin、/mcp 和 /skills 代表什么
本周更新还增加了管理插件、MCP 服务器和 Skills 的新体验,CLI 中可以通过 /plugin、/mcp 和 /skills 进入对应管理入口。它们解决的是扩展能力越来越多之后的组织问题。
GitHub 文档对这些能力的分工也比较清楚:MCP 服务器为 Agent 提供数据源和工具,Custom Agents 适合不同任务的专门配置,Hooks 可以在 Agent 执行的关键节点运行校验、日志或安全扫描,Skills 则通过指令、脚本和资源增强专门任务能力。
这套扩展体系的价值,是把“一个越来越长的系统提示词”拆成可以发现、组合和维护的模块。比如,团队可以把测试规则放在项目级指令中,把数据库查询放在受控 MCP 服务器里,把发布前检查做成 Hook,再用 Skill 描述一套排障流程。
模块化也会带来新的供应链问题。第三方插件、MCP 服务器和脚本都可能读取数据或执行命令,安装之前应确认来源、代码范围、网络权限和所需凭据。扩展能力越方便,越需要在仓库和组织层面维护允许清单,而不是让每个开发者临时接受所有请求。
一套更稳妥的终端 Agent 工作方式
结合 Copilot CLI 的交互模式、计划模式、权限控制和会话恢复能力,可以把日常使用收敛成一条较稳妥的流程:
1 | 先让 Agent 解释目标和计划 |
GitHub 文档也提供了类似的使用边界:交互式会话可以在默认的问答执行模式和计划模式之间切换;程序化调用可以使用 -p 或 --prompt,但如果要让 CLI 修改或执行文件,仍应明确指定相应的批准选项。对于自动化任务,最好把计划、执行和验收拆成不同阶段,避免一条 Prompt 同时包含“理解代码、改文件、安装依赖、推送仓库”四类权限。
如果会话中断,恢复前至少检查三件事:当前目录是否正确、Git 工作区是否发生变化、待执行动作是否仍然需要。检查通过后再继续,比单纯依赖上下文记忆更可靠。
对开发团队的实际启示
Copilot CLI 这次更新的重点,不是终端里多了几个命令,而是 Agent 产品开始补齐运行时的基础设施。模型负责提出下一步行动,运行时负责让行动可执行、可暂停、可恢复,权限层负责限制行动范围,扩展系统负责把团队经验装进工具链。
这会改变团队评估 AI 编程工具的方式。除了看代码生成质量,还应该观察:
- 工具调用延迟和大量输出时的稳定性;
- 中断后能否准确恢复,而不是重复或跳过关键步骤;
- 文件、Shell、网络和 MCP 权限能否分别控制;
- 插件、Skills 和自定义 Agent 是否可审计、可回滚;
- 任务完成后能否留下 diff、测试结果和命令记录。
这些指标不如模型排行榜醒目,却更接近实际生产成本。一个单轮回答很聪明的模型,如果运行时频繁丢状态、权限边界含糊,仍然很难承担长周期工程任务。
结语
GitHub 8 月 28 日公布的 Copilot CLI 更新,把原生 Rust 运行时、会话恢复、权限模式和扩展管理放在了同一组变化中。它们共同指向一个趋势:终端 Agent 正从会回答问题的命令行入口,变成一套需要处理状态、工具和安全的本地运行时。
对开发者而言,最值得吸收的不是立刻打开所有自动批准选项,而是重新设计人与 Agent 的协作边界。计划先于执行,权限小于能力,恢复先检查环境,扩展先确认来源。只有把这些基础设施做好,模型能力的提升才不会被一次错误命令或一次失真的恢复过程抵消。