VS Code 中的 Local 与 Copilot Harness:区别与会话交接实践

0 阅读3分钟

最近阅读 VS Code 官方文档时,我注意到了 Local 和 Copilot 这两个名称。之前没有仔细区分,看到文档才了解到:它们对应的是两种不同的 agent harness。

Harness 可以理解为协调模型、上下文和工具的运行机制。它与选择哪个模型并不是一回事。

image.png

Local 与 Copilot 有什么区别?

由于公司目前只支持 GitHub Copilot,本文只关注 Local 和 Copilot 两种 harness。

根据官方文档,两者的主要区别如下:

对比项LocalCopilot
运行机制VS Code 内置 harness,运行于 Extension Host使用 Copilot SDK,运行于 Agent Host
与编辑器窗口的关系关闭所属窗口会停止正在进行的工作Agent Host 保持运行时,关闭编辑器窗口后仍可继续工作
工具与配置使用 Local 支持的工具和自定义配置支持范围可能不同,迁移前需要检查兼容性

这里容易混淆的一点是:Local 不等于“模型在本机运行”,Copilot 也不等于“任务一定在云端执行”。两种 harness 都可以在本机执行任务,模型请求则可能发送到远程服务。

下面是我阅读时参考的对比截图,其中标注的功能已在我的环境中验证有效。

image.png

如何从 Local 交接到 Copilot?

阅读文档时,我对 handoff 比较感兴趣:已经在 Local 中进行的工作,能否交给 Copilot 继续,而不必重新解释背景?

官方文档给出的操作是在已有 Local 会话中,打开聊天输入区的 Session Target 下拉菜单,选择 Copilot。交接会将对话历史和上下文带到目标会话。

image.png

我也做了一个简单验证,操作如下:

  1. 新建聊天,明确选择 Local。
  2. 发送:请记住测试标记 HANDOFF-742,并回复确认。
  3. 再发送一个涉及文件读取的请求,让历史中包含工具调用,并等待执行完成。
  4. 在输入框填写:之前的测试标记是什么?
  5. 通过当前界面提供的 Continue Chat in... → Copilot 入口继续,或在 Session Target 中选择 Copilot 后发送。

交接后,可以检查以下几项:

检查项验证目标
当前 harness确认目标会话使用 Copilot
对话历史检查原有消息及工具调用记录如何呈现
上下文连续性检查新回答能否识别 HANDOFF-742

能识别测试标记,可以帮助验证上下文是否延续,但不能据此认定所有历史记录和工具状态都被完整保留。

什么场景下需要交接?

我平时很少切换 harness。结合与 GPT 的讨论,一个比较容易理解的场景是:在 Local 中完成前期分析,再交给 Copilot 继续处理任务。

例如:

  1. 在 Local 中分析登录失败,读取日志,定位到 token 刷新逻辑的问题。
  2. 将会话交接给 Copilot。
  3. 继续提出要求:“按刚才的结论修复,并补充测试。”

这个场景的重点是保持任务连续性,减少重复解释背景。它不意味着 Local 只能分析、Copilot 只能实现,也不要求同时更换模型。

需要注意的是,上下文延续不等于执行能力完全一致。交接后可用的工具、权限和模型可能变化;如果任务依赖特定工具、MCP 服务或自定义配置,需要重新确认支持情况。具体入口和行为也应以当前版本及组织策略为准。

参考链接