Visual Studio Weekly:Copilot 记忆、AI 驱动的测试和自定义代理
抱歉,我需要您提供要翻译的完整文本(除代码块和 URL 之外的内容),才能为您进行简体中文翻译。请把文章的其余部分粘贴过来,我会保持原有的格式和 markdown 语法进行翻译。
概览
Visual Studio 2026 版本 18.3 本周(2 月 10 日)发布,这次发布让我真的相信微软在倾听开发者的声音。它带来了能够在会话之间记住你的编码规范的 Copilot 记忆、.NET 的 AI 驱动单元测试生成正式版(GA),以及用于构建自定义 Copilot 代理的框架,这些更新并不是在更新日志里填充空洞——而是交付了改变工作方式的功能。
次要的故事是生产力提升:语法行压缩让你获得 25 % 的垂直屏幕空间,使用 Alt + 滚轮 的快速滚动,以及中键滚动,都是提升使用 IDE 时的生活质量的改进,随着你在 IDE 中度过的时间累积,这些改进的效果会越来越明显。让我们来拆解一下哪些才是关键。
Copilot 记忆:教会 AI 您的编码标准
这里是大多数 AI 编码助手的一个问题:它们会忘记。你纠正它们一次,十分钟后它们又会违反团队的约定。Visual Studio 18.3 引入了 Copilot memories 来解决这个问题。
当你与 Copilot 交互并指定偏好时——例如,“始终使用 Dapper 而不是 Entity Framework 进行数据访问”,“遵循我们团队的 async/await 约定”,或“使用 FluentAssertions 进行测试断言”——Visual Studio 会检测到这种模式并提示你保存它。你可以在两个层级存储这些偏好:
| 范围 | 位置 | 描述 |
|---|---|---|
| 用户级 | %USERPROFILE%/copilot-instructions.md | 跨所有项目随你移动的个人偏好 |
| 仓库级 | .github/copilot-instructions.md | 项目中所有成员共享的团队约定 |
这是一种嵌入 IDE 的上下文工程。每一次交互都在教会 Copilot 你的团队如何编码,而这些学习会持久保存。随着时间推移,你正在构建机构知识,甚至新成员也能受益。如果你读过我关于 上下文工程是 AI 开发关键 的文章,你会知道我认为这是正确的方向。工具终于跟上了技术的步伐。
我欣赏的一个细节是:你可以使用新的 /generateInstructions 斜杠命令,从现有代码库引导生成 copilot-instructions.md 文件。没有空白页综合症——Copilot 会分析你的项目,并根据检测到的模式生成起始文件。
GitHub Copilot Testing for .NET 正式发布
GitHub Copilot Testing for .NET 已在 Visual Studio 2026 v18.3 中 shipped to general availability。这不仅仅是“生成一些 xUnit 测试”——它是一个专为此目的构建的代理工作流,能够生成测试、构建、运行、检测失败,并在你得到稳定基线之前尝试修复。
你可以在 Copilot Chat 中使用 @Test 调用该代理,提示现在是自由形式的。示例命令:
@Test generate unit tests for my core business logic@Test my current git changes, targeting 80% coverage@Test fix my failing tests
该代理能够理解作用域:单个方法、一个类、一个文件、一个项目、整个解决方案,或仅你的 Git 差异。它识别你的测试框架(xUnit、NUnit、MSTest)并与 Test Explorer 集成。完成后,你会得到结构化的摘要:
- 已创建或修改的文件
- 前后覆盖率数字
- 通过/失败信号
- 指向生成测试的直接链接
与单纯让 Copilot 编写测试不同的是 迭代的构建‑运行‑修复循环。代理不会在代码生成后停止;它会编译、执行、捕获失败并重试,直至测试稳定。这更接近人类开发者进行测试驱动开发的方式。
团队已经在探索更复杂测试场景的规划阶段——在 Copilot 生成任何内容之前,让你审查并确认假设。很聪明。我宁愿先验证计划,也不想去重构那些偏离目标的生成测试。
自定义代理:自带工作流
本周还推出了 Visual Studio 中的自定义代理。IDE 现在内置了四个预设代理——Debugger、Profiler、Test 和 Modernize——每个都针对特定工作流进行调优,并与 Visual Studio 的原生工具链深度集成。更重要的是 自定义代理框架。
你可以在仓库的 .github/agents/ 目录下以 .agent.md 文件的形式定义自己的代理。这些代理可以使用与内置代理相同的基础设施:工作区感知、代码理解、工具访问以及你偏好的模型。关键在于对 Model Context Protocol(MCP)的支持——你可以将代理连接到外部知识源,如内部文档、设计系统、API 或数据库。
团队正在构建的示例模式
- 代码审查代理:根据实际的约定检查 PR,通过 MCP 连接到你的 ADR 仓库或风格指南。
- 设计系统强制执行代理:与 Figma 或组件库关联,在 UI 出现漂移之前捕获问题。
- 规划代理:收集需求并在编写代码前生成任务计划。
GitHub 的 awesome‑copilot 仓库 正在收集社区的代理配置。这感觉像是 Copilot 的 SDK 时刻——从单一的助理转向一个平台,你可以为自己的工作流组合专门的代理。
如果你熟悉我的写作,你会注意到一个反复出现的主题:赋能开发者,让 AI 尊重并放大我们已有的流程,而不是取代它们。
选择合适的 AI SDK
如果您阅读了我关于 choosing the right AI SDK 的文章,您会在此看到那种可组合性的哲学。
NuGet MCP 服务器:AI 驱动的依赖管理
在 18.3 版本中隐藏了一个本不该被埋没的功能:NuGet MCP server。它是一个内置的 MCP 服务器,使 Copilot 能够通过自然语言提示修复包漏洞并更新依赖项。
你只需在 Copilot Chat 工具菜单中启用一次,然后就可以像下面这样进行提示:
Fix my package vulnerabilitiesUpdate all my packages to the latest compatible versionsUpdate the package Newtonsoft.Json to version 13.0.3
Copilot 会分析你的项目目标框架,检查已知漏洞,并建议不会破坏兼容性的更新。这正是我所说的工具正在成熟的含义。我们已经超越了“强化自动完成”的阶段。这些是更高层次的工作流——安全卫生、依赖管理、测试覆盖率——Copilot 能够端到端地处理。
Productivity Wins: Screen Real Estate and Navigation
一些在工作日累计起来的小功能:
- Syntactic line compression – 没有字母数字字符的行会压缩 25 %,为您提供更多垂直空间且不影响可读性。可在
Tools → Options → Text Editor → Advanced中启用。 - Fast scrolling – 按住 Alt 并滚动,可更快地浏览大文件。可在设置中调节灵敏度。简单而高效。
- Middle‑click scroll – 按下滚轮并移动鼠标即可导航。默认在 18.3 版中关闭;可在
Tools → Options → Text Editor → Advanced中启用。 - Slimmer left margin – Quick Actions 灯泡现在直接在代码行内显示,而不是在边距中,从而释放水平空间。
- Compact spacing in Solution Explorer – 如果您更喜欢更紧凑的视图,可恢复早期 2026 构建中引入的额外间距。
这些功能单独来看并非颠覆性改变,但组合起来每周可节省数小时的滚动和点击时间。
这对 Visual Studio 方向的意义
18.3 更新是更大转变的一部分。Microsoft 正在将 AI 集成视为 基础设施,而非单纯功能。记忆(Memories)、自定义代理(custom agents)、MCP 服务器——这些都是其他能力构建之上的基础原语。February roadmap for AI in Visual Studio 清晰地阐明了这一点:重点在于可靠性、代理稳定性以及面向企业场景的 MCP 治理。
这是正确的做法。行业曾经历过一段炒作阶段,所有工具都把 LLM “装上” 并称之为 AI。真正的赢家是那些构建出连贯平台的公司,在这些平台中,AI 能力可以组合、持久化上下文,并与现有工作流集成。Visual Studio 正处于第二阶段。
如果你对启用 Copilot 功能或升级到 2026 仍持观望态度,这次发布已经给出了答案。工具链正逐步达到 可衡量 的生产力提升,而非仅仅是轶事。如果你正在构建 .NET 应用,仅测试代理本身就值得升级。
关键要点
Visual Studio 2026 18.3 推出了可持续多个会话的功能:
- 记忆功能可持续保存编码规范
- 代理会反复运行测试直至通过
- 用于构建自定义专用助手的框架
再加上行压缩、快速滚动等生活质量改进,你将拥有一个尊重时间的版本。
AI 功能正从新奇走向必需。如果你仍在没有这些功能的情况下编码,就会比实际需要的付出更多努力。升级到 18.3,启用 Copilot 记忆功能,在下一个特性上尝试测试代理,看看有多少阻力会消失。