VS Code 1.109 更新解读(三):智能体优化与安全

6 阅读3分钟

💡 更多技术分享,欢迎访问我的博客:叁木の小屋

系列索引总览 | (一)| (二) | (三) | (四) | (五)


本篇概要

智能体需要更聪明地工作,同时也要安全可靠。本篇涵盖性能优化和安全增强:

  • Copilot Memory 跨会话记忆
  • 非 GitHub 工作区远程索引
  • 终端沙盒隔离
  • 自动审批安全命令

一、智能体优化

1.1 Copilot Memory(预览)

设置github.copilot.chat.copilotMemory.enabled

让智能体记住重要信息,避免重复提供上下文。

┌────────────────────────────────────────────────────────┐
│                   Copilot Memory                        │
├────────────────────────────────────────────────────────┤
│  会话 1        │  会话 2        │  会话 3        │       │
│  "偏好用 Tailwind" ────────→  自动应用偏好  ────────→  记住偏好 │
└────────────────────────────────────────────────────────┘

使用方式

  1. 启用设置:"github.copilot.chat.copilotMemory.enabled": true
  2. 智能体自动识别需要存储的信息
  3. 智能体自动检索相关记忆
  4. 在 GitHub Copilot 设置中管理记忆

1.2 非 GitHub 工作区外部索引(预览)

设置github.copilot.chat.advanced.workspace.codeSearchExternalIngest.enabled

本地项目也能享受快速的语义搜索:

第一次请求          后续请求
    │                  │
    ▼                  ▼
┌─────────┐      ┌─────────┐
│ 构建索引 │      │ 使用缓存 │
│ (几分钟) │      │ (快速)   │
└─────────┘      └─────────┘

特性

特性说明
首次构建使用 #codebase 时触发,需几分钟
缓存使用后续请求速度显著提升
自动更新修改和保存文件时索引自动更新
GitHub 托管已有远程索引,无需构建

1.3 读取工作区外文件

智能体现在可以在获得许可后访问工作区外的文件:

智能体请求读取外部文件
         │
         ▼
    ┌─────────┐
    │ 用户确认 │
    └─────────┘
         │
    ┌────┴────┐
    │         │
    ▼         ▼
 允许本次   允许整个会话

1.4 性能改进

改进项效果
大型聊天对话打开和滚动更流畅
对话持久化更可靠
并行依赖任务显著改善构建时间
之前:任务 A → 任务 B → 任务 C → 任务 D(顺序)
现在:任务 A ┐
      任务 B ├── 并行执行
      任务 C ┤
      任务 D ┘

二、智能体安全与信任

2.1 终端沙盒(实验性)

设置

  • chat.tools.terminal.sandbox.enabled
  • chat.tools.terminal.sandbox.linuxFileSystem
  • chat.tools.terminal.sandbox.macFileSystem
  • chat.tools.terminal.sandbox.network

⚠️ 注意:仅支持 macOS 和 Linux,Windows 上暂无效果

安全隔离

┌─────────────────────────────────────────────────────────┐
│                    终端沙盒环境                          │
├─────────────────────────────────────────────────────────┤
│  ✅ 允许:工作区文件夹读写                               │
│  ✅ 允许:受信任域网络访问                               │
│  ❌ 阻止:工作区外文件访问                               │
│  ❌ 阻止:未受信任域网络访问                             │
│  ✅ 跳过:标准确认对话框(已在受控环境)                 │
└─────────────────────────────────────────────────────────┘

启用方式

{
  "chat.tools.terminal.sandbox.enabled": true,
  "chat.tools.terminal.sandbox.network": ["api.example.com", "*.github.com"]
}

2.2 终端工具生命周期改进

新工具/属性说明
timeout必填属性,0 表示无超时
awaitTerminal等待后台终端完成
killTerminal终止后台终端
手动后台推送可手动将终端调用推送到后台

问题解决

之前:智能体使用 echo "successful"sleep n 等待命令
现在:使用 awaitTerminal 工具正确等待

2.3 终端自动审批

设置chat.tools.terminal.enableAutoApproveORG

以下命令默认自动审批:

命令说明
Set-Location目录切换
dir列出目录
odOut-Directory
xxd十六进制显示(仅标志+单文件)
docker所有安全子命令
npm, yarn, pnpm所有安全子命令

快速配置参考

启用 Copilot Memory

{
  "github.copilot.chat.copilotMemory.enabled": true
}

启用外部索引

{
  "github.copilot.chat.advanced.workspace.codeSearchExternalIngest.enabled": true
}

配置终端沙盒

{
  "chat.tools.terminal.sandbox.enabled": true,
  "chat.tools.terminal.sandbox.linuxFileSystem": "workspace",
  "chat.tools.terminal.sandbox.macFileSystem": "workspace",
  "chat.tools.terminal.sandbox.network": ["github.com", "*.api.github.com"]
}

启用终端自动审批

{
  "chat.tools.terminal.enableAutoApproveORG": ["npm", "yarn", "pnpm", "docker", "git"]
}

安全最佳实践

1. 沙盒配置建议

对于敏感项目,建议启用沙盒并严格限制网络访问:

{
  "chat.tools.terminal.sandbox.enabled": true,
  "chat.tools.terminal.sandbox.network": []
}

2. 外部文件访问

工作区外文件访问需要用户确认,可选择:

  • 允许本次:仅当前操作
  • 允许整个会话:避免重复提示

3. 自动审批范围

仅对可信赖的命令启用自动审批,避免意外执行危险操作。


下一篇预告

(四)终端编辑器与工作台 将深入探讨:

  • Kitty 键盘协议支持
  • 括号匹配颜色定制
  • 集成浏览器功能
  • 工作台生产力增强