AI未开源软件工具

VS Code 1.146 给旧 Agent 运行时定了死期:2027 年 2 月关停,同时把「一堆会话」做成了收件箱

2026年11月13日3 次阅读
VS Code 1.146 给旧 Agent 运行时定了死期:2027 年 2 月关停,同时把「一堆会话」做成了收件箱

3分钟看懂

一句话:微软在 11 月 11 日发布的 VS Code 1.146 里,正式给旧的 Local harness(本地 Agent 运行时)判了死刑——现在还能用,但功能冻结,2027 年 2 月彻底移除;同一版还把「同时跑着的一堆 Agent 会话」改成了一个收件箱式的待办列表。

为什么值得单独写一篇:这不是版本号 +1。过去一年大家比的是「哪个模型写代码强」,但真正决定 Agent 能不能干完活的是外面那层壳——它负责收集上下文、把工具交给模型、跑 Agent 循环、把改动落盘。VS Code 这次动的就是这层壳,而且给了一个明确的截止日期。对个人开发者,这是一次「要不要现在动」的选择;对团队和公司,这是一次必须排期的迁移。

需要说明:本文基于微软官方 release notes 与迁移文档,加上多家媒体转述整理;其中「旧运行时关掉窗口就中断」这类机制描述来自媒体转述,官方文档只写了结论。

先搞清楚「harness」是什么

harness 可以理解成 Agent 的「底盘」:模型是发动机,harness 负责给它加油、挂挡、看路。

同一个模型,换一套 harness,做同一件事的结果可能完全不同。因为它决定了:给模型看哪些文件、允许它调用哪些工具、每次改完要不要问你、会话结束之后上下文还在不在。

VS Code 里现在有两条路:

  • Local harness:老路。跑在每个窗口自己的扩展宿主进程里,一个窗口一套运行时,窗口关掉,Agent 就停。
  • Copilot harness:新路。跑在独立的 Agent Host 进程上,代码在 Copilot SDK 之上,和 Copilot CLI、Copilot 应用共用同一套底座。会话在后台继续跑,编辑器窗口和 Agents 窗口都能接回去。

Copilot harness 从 1.143(10 月)起就已经是新会话的默认选项。1.146 做的是把老路正式下线。

这次到底改了什么

三件事,按重要性排:

第一,时间表定了。Local harness 标记为 deprecated,未来三个月仍可使用,但功能冻结——新特性只保证在 Copilot harness 上工作。2027 年 2 月移除。企业侧那个用来把 Local 钉成默认的托管设置 vscode.temporaryDefaultToLocalHarness(1.142 引入)会跟着一起消失。换句话说,这不是一个可以无限期留着的开关,而是一次排好期的运行时退役。

第二,企业有了硬开关。托管设置里把 temporaryAllowLocalHarness 设成 false,会同时禁掉 Local、Claude、Codex 三种 harness——注意是三个一起禁,不是只禁 Local。另外从 1.143 起,托管环境里只要 permissions.deny 非空、或 sandbox.enabled: true,也会自动路由到 Copilot harness。

第三,官方明确写了回退的代价。迁移文档有一句警告值得逐字读:Local harness 无法执行 Copilot 运行时专属的权限与沙箱控制,所以「配置不变、退回 Local」不等于「保护不变」。管理员必须自己确认并接受这个缺口,才能允许回退。

对已经在用 Copilot 的人来说,可能什么都不用做——新会话默认就是 Copilot harness。真正要动的是三类人:把 Local 设成过默认的、依赖 Local 专属扩展工具的、以及在企业策略里配了旧沙箱规则的。

另一半:把并行会话当收件箱管

这一版真正有意思的地方,是它承认了「一个人同时开五个 Agent」已经成为常态,然后给了对应的界面。

Inbox mode(实验,设置项 sessions.list.inboxEnabled,默认关):打开后,Agents 窗口的会话列表按「需要你处理 / Working / Ready to merge / On hold / Done」分组,需要你拍板的排在最上面。可以 Dismiss from Inbox、Put on Hold、Snooze。注意一个容易踩的细节:Dismiss 不等于归档,要归档得点 Mark Session as Done。

会话列表行内操作(实验,sessions.list.inlineActions):不用点开会话,直接在列表某一行上让它去修失败的检查、或者回应 review 评论,请求在后台发给那一行的会话(或它的子会话)。官方特地写了两句免责:这个开关不会打开 Agent Merge,也不改变任何动作权限。

Chat windows(预览,sessions.chatWindows.enabled,Stable 默认关、Insiders 默认开):把一个 chat 拖出来单独开窗,窗口里可以同时放它自己的编辑器、终端,还可以塞进同一个或多个会话的多个 chat。关掉 VS Code 再开,窗口和里面的编辑器会恢复。

Model comparison 也补了几处:可以选择只对比纯聊天回复(不绑工作区)、可以把 Copilot Fusion 及其档位加进对比、还有一个实验开关让 Agent 自己发起对比并读结果(默认关)。

顺手补齐的几处安全与治理

  • 权限提示变细了。以前拉一个 URL 的默认选项是「本次会话内允许」,等于这一整个会话里模型能访问任意网址;现在默认按具体域名、具体命令、具体目录授权。
  • 沙箱里可以掩码环境变量(chat.agent.sandbox.credentials.envVars)。沙箱内的工具只拿到占位符,真值只在发往 injectHosts 里列出的 HTTPS 目标时才注入;发往别处的请求仍然只带占位符。
  • Agent Host 支持虚拟仓库:不用 clone 到本地,也能用同一套 Copilot 工作流。
  • 企业代理:Copilot 会话现在跟随 VS Code 的代理配置,包括 PAC 自动配置和 Kerberos 认证,本地、WSL、Dev Container 都适用。
  • MCP 支持 SEP-2640「Skills over MCP」(预览):MCP server 可以自带 skills,第一次接入时会问你要不要放进模型上下文,之后能在 Agent Customizations 的 Skills 标签里看到。
  • 另有一个实用的小口子:在终端里的 Copilot CLI 敲 /code,可以把当前会话搬进 VS Code 继续,历史、模型、推理档位、模式和权限都带过去。实验特性,需要 Copilot CLI 1.0.107 以上并开启实验开关;CLI 进程专属的权限(比如 --allow-tool)不会跟过去,交接前 CLI 会列出来。

怎么用

如果你只是普通使用,按下面三步走一遍就够:

第一步,确认自己在用哪个 harness。开一个新会话,看 harness 选择器里显示的是 Copilot 还是 Local。选不同模型不会切换 harness,把会话开到另一个窗口也不会。

第二步,如果要迁移,别手动搬文件。打开命令面板跑 Chat: Open Customizations,进 Migrations 标签,让 VS Code 自己检测。它支持把常用 prompt 转成 skills,也支持 Migrate with Agent(用 Agent 帮你改,会消耗 Copilot credits)。原始文件和迁移后的文件不会互相同步,验证通过前留着备份,别留两份同时生效。

第三步,验证。跑一次真实任务,看实际改动和测试结果,而不是只看 Agent 的总结;再看一眼自定义项是否加载、依赖的工具是否都在;然后执行 Developer: Policy Diagnostics 核对策略实际值和来源,在会话里跑 /sandbox policy 看执行主机、沙箱状态、文件系统与网络限制。

适用场景:谁该这周就动

  • 团队里有人把 temporaryDefaultToLocalHarness 设成过 true 的——这个设置会随 Local harness 一起消失,等于到期自动失效。
  • 依赖「关掉窗口 Agent 还在跑」的:只有 Copilot harness 有这能力,早迁早受益。
  • 企业环境里配了托管权限或沙箱策略的:1.143 起这些配置已经在往 Copilot harness 上路由,越晚迁,行为差异越难排查。
  • 同时开多个 Agent 会话、靠人肉切换盯进度的人:Inbox mode 值得现在就试,虽然还是实验特性。

不适用场景:谁可以先放一放

  • 只用内联补全、不开 Agent 会话的:这次改动基本碰不到你。
  • 所在企业的某条工作流还卡在 Local 专属扩展工具上:别硬迁,先按迁移文档的临时回退流程走,但要清楚回退期间拿不到 Copilot 运行时的权限与沙箱保护。
  • 想靠这一版解决成本问题的:这一版没有价格变化,Copilot 订阅/席位照旧。
  • 组织还没定「什么算 Ready to merge」的:先把流程说清楚再用 Inbox mode,否则只是把混乱搬到一个更好看的界面上。

避坑

  1. 别把「还能用」当「可以拖」。功能冻结意味着新能力和修复只往 Copilot harness 走,拖到 2027 年 2 月就是硬切。
  2. temporaryAllowLocalHarness: false 是三个一起禁(Local / Claude / Codex)。只想禁 Local 的话,这个开关不是你要的。
  3. 迁移后别留两份生效的配置。prompt、skills、hooks、MCP 都可能出现「旧的还活着、新的也加载了」,出问题极难定位。hooks 没有自动转换,必须手工核对事件、输入输出和失败行为。
  4. MCP 里的 ${input:...} / ${command:...} 有认证与密钥限制,别为了跑通就把占位符换成明文密钥写进共享配置。
  5. Inbox 的 Dismiss 不是归档。整理完发现会话「不见了」,先去确认它是不是还在 Done 之外的某个分组里。

成本和时间

  • 软件本身:VS Code 免费,1.146.0 已可在 Stable 频道更新(Help > Check for Updates)。
  • 迁移工作量:个人开发者通常是一次性半小时级别的配置核对;团队要加上策略验证,官方建议先做小范围试点,覆盖 Remote SSH、WSL、Dev Container 这些执行环境,再推全量。
  • 硬截止:2027 年 2 月。留出的窗口就是现在到那时。
  • 可能的额外开销:用 Migrate with Agent 会消耗 Copilot credits。

行动建议

第一步,今天就开一个新会话,确认 harness 显示的是 Copilot;不是的话,这次迁移你就是当事人。

第二步,这周内跑一次 Chat: Open Customizations > Migrations,把检测出来的项列成清单——尤其是 hooks 和 MCP,这两块没有自动转换。

第三步,如果你们是企业环境,把 temporaryAllowLocalHarness、temporaryDefaultToLocalHarness、permissions.deny、sandbox.enabled 四个键的现状抄下来,和 1.146 的行为对照一遍,再决定是「要求全员迁移」还是「先鼓励」。

参考来源

评论

0 条已公开
登录或注册后可以参与评论。

正在加载评论...