Copilot Chat
内置命令
GitHub Copilot Chat 的内置命令主要分为三大类:@ (聊天参与者) ,用于召唤领域专家;# (聊天变量) ,用于精确定位上下文;以及 / (斜杠命令),用于快速执行特定开发任务。
聊天参与者 (@) - 召唤领域专家
用于在对话开头切换至特定领域的AI"专家",以获得更专业的回答。
| 命令 | 作用 |
|---|---|
@workspace |
专注于你当前整个工作区(项目) 的代码,用于跨文件查找、架构分析等。 |
@vscode |
VS Code专家,帮助你解答关于VS Code编辑器本身的功能、设置、快捷键和插件开发等一切问题。 |
@terminal |
终端专家,能读取你VS Code中集成终端的内容,并帮你解释错误、生成命令行指令。 |
@github |
连接你的 GitHub 仓库,用于协助处理Issues、Pull Requests等任务。 |
@azure |
专注于微软Azure云服务相关的问题,提供使用、部署和管理方面的帮助。 |
聊天变量 (#) - 精确定位上下文
用于在提问时精确地告诉Copilot需要关注的代码片段、文件或其他上下文信息。
| 命令 | 作用 |
|---|---|
#codebase / #workspace |
在你的整个代码库中进行语义搜索,找到相关的文件和符号。 |
#file |
引用一个特定的文件作为上下文,可以是当前打开的文件或指定路径。 |
#selection |
引用你在编辑器里选中的一段代码。 |
#block |
引用你光标所在的代码块。 |
#class |
引用光标所在的类定义。 |
#editor |
引用当前编辑器的全部内容。 |
#changes |
引用你当前工作区中 Git 的变更。 |
#problems |
引用 Problems 面板中的错误和警告。 |
#testFailure |
引用测试失败的相关信息。 |
#terminal |
终端日志、报错内容 |
#terminalSelection |
引用你在终端中选中的输出内容。 |
#terminalLastCommand |
引用终端中最后执行的命令和输出。 |
斜杠命令 (/) - 快速执行任务
用于直接执行特定任务,例如解释代码、修复Bug或生成测试。
| 命令 | 作用 |
|---|---|
/explain |
一步步解释你选中的代码或当前文件是如何工作的。 |
/fix |
为选中的代码提出修复建议。 |
/tests |
为选中的代码或函数生成单元测试。 |
/doc |
为选中的代码生成或添加文档注释。 |
/optimize |
分析选中的代码,并提供性能优化建议。 |
/generate |
根据你的描述,生成一段新的代码来实现特定功能。 |
/new |
在项目里创建一个新文件 或搭建一个新项目的脚手架(需结合 @workspace)。 |
/newNotebook |
在当前工作区创建一个新的Jupyter Notebook。 |
/edit |
用自然语言描述你想要进行的代码编辑。 |
/review |
对选中的代码进行审查。 |
/search |
用自然语言描述要搜索的内容,Copilot会帮你生成在VS Code中的搜索关键词。 |
/fixTestFailure |
自动定位并修复失败的测试用例。 |
/setupTests |
为你的整个项目自动配置和搭建测试环境。生成测试框架配置与初始化代码 |
/startDebugging |
协助生成launch.json等调试配置,帮助启动调试。 |
/clear |
清空当前的聊天记录,开启一个全新的对话会话。 |
/help |
显示Copilot Chat的基本使用说明和帮助信息。 |
/list |
列出Copilot当前可用的所有工具列表。 |
/simplify |
简化代码、提升可读性 |
/refactor |
重构结构(重命名,抽方法,调依赖) |
/init |
生成 .github/copilot-instructions.md |
/saveprompt |
保存当前提实词模板 |
/fleet |
并性子任务执行 |
/cwd |
显示或切换当前工作目录 |
/exit、/quit |
直接结束当前会话并断开 Copilot 连接,确保资源被正确释放 |
/session、/usage |
查看 Copilot 在本次会话中执行的操作,方便审计、排查问题和资源追踪 |
/add-dir |
允许 Copilot 访问指定目录,将 Copilot 限定在某个仓库或子目录 |
/list-dirs |
显示允许访问的目录列表 |
/model |
选择 AI 模型 |
/theme [show/set/list] [auto/dark/light] |
配置终端主题 |
/terminal-setup |
启用多行输入,在处理复杂指令或多步骤代码修改时尤为有用 |
/reset-allowed-tools |
重置工具权限,此命令可将已允许的工具列表快速回滚到初始状态,移除过期或存在风险的工具。 |
/share [file/gist] [path] |
导出并分享会话内容,文档记录非常重要,此命令可捕获整个会话历史,用于分享或归档 |
/mcp [show add edit delete disable enable] |
管理 MCP 配置 |
插件
Copilot Chat 插件是什么
GitHub Copilot Chat 插件是扩展 Copilot 智能体(Agent)能力的功能包,用来新增自定义斜杠命令、参与者、技能(Skill)、钩子(Hook)与 MCP 服务,可通过一条命令安装,本质是把 commands、subagents、MCP servers、hooks 组合成可分发的集合。
- 宿主:VS Code 里的
GitHub.copilot-chat扩展 - 核心用途:给 Agent 加自定义
/xxx命令、@xxx参与者、技能、钩子、外部工具集成 - 安装方式:
copilot plugins install <插件名/路径>
插件完整目录结构(2026‑05 官方规范)
my-copilot-plugin/
├── plugin.json # 必选:插件清单(名称、版本、命令、依赖等)
├── commands/ # 可选:自定义斜杠命令(/xxx)
│ ├── mycmd.command.md # 命令定义(触发词、描述、参数、执行逻辑)
│ └── utils.js # 命令调用的工具函数(可选)
├── subagents/ # 可选:自定义参与者(@xxx,子智能体)
│ └── myagent.agent.md # 子智能体定义(角色、能力、触发条件)
├── skills/ # 可选:技能集合(Agent 可执行的能力单元)
│ └── deploy/ # 技能名(如 deploy、test、lint)
│ ├── SKILL.md # 技能定义(目标、步骤、适用场景)
│ └── run.sh # 技能执行脚本(bash/js/python 均可)
├── hooks.json # 可选:钩子配置(生命周期拦截,如会话前/命令后)
├── mcp.json # 可选:MCP 服务器配置(接入外部工具/服务)
└── README.md # 可选:插件说明文档
关键文件说明(最小可用示例)
1. plugin.json(必选,清单)
json
{
"name": "my-copilot-plugin",
"displayName": "My Custom Commands",
"version": "1.0.0",
"description": "Adds /hello and @myagent to Copilot Chat",
"author": "Your Name",
"license": "MIT",
"commands": ["/hello"],
"subagents": ["@myagent"],
"skills": ["deploy"],
"hooks": ["onSessionStart"],
"mcpServers": ["my-mcp-server"]
}
2. commands/hello.command.md(自定义 /hello 命令)
markdown
## /hello
**描述**:回复 Hello + 自定义问候
**参数**:name(可选,字符串)
**示例**:
/hello
/hello name=Alice
执行逻辑:
如果有 name,返回 "Hello, {{name}}!";否则返回 "Hello from My Plugin!"
3. subagents/myagent.agent.md(自定义 @myagent 参与者)
markdown
## @myagent
**角色**:自定义助手
**能力**:回答问候、简单计算
**触发**:用户提到 "hi" 或 "calculate"
4. skills/deploy/SKILL.md(deploy 技能)
markdown
## 技能:deploy
**目标**:部署当前项目到测试环境
**步骤**:
1. 运行 npm run build
2. 上传到服务器
3. 通知团队
5. hooks.json(钩子:会话开始时打招呼)
json
{
"onSessionStart": {
"action": "sendMessage",
"message": "欢迎使用我的自定义插件!"
}
}
6. mcp.json(MCP 服务器:接入外部 API)
json
{
"servers": {
"my-mcp-server": {
"command": "node",
"args": ["./mcp-server.js"],
"env": {}
}
}
}
安装与使用
-
本地开发:
bashcd my-copilot-plugin copilot plugins install . -
使用:在 Copilot Chat 输入
/hello或@myagent hi
插件如何配置 LSP 支持(获得实时代码智能)
Copilot Chat 插件本身不直接实现 LSP,但可以通过 MCP(Model Context Protocol)服务 或 VS Code LSP 代理 把 LSP 能力注入给 Agent。
1. 插件目录增加 LSP 相关结构
my-lsp-plugin/
├── plugin.json
├── settings.json # 插件配置(含 LSP)
├── mcp.json # 把 LSP 包装成 MCP 服务
├── lsp/
│ └── my-lsp-server.js # 你的 LSP 客户端/代理
└── commands/
2. mcp.json(把 LSP 暴露给 Copilot Agent)
json
{
"servers": {
"my-lsp": {
"command": "node",
"args": ["./lsp/my-lsp-server.js"],
"env": {
"WORKSPACE_ROOT": "${workspaceFolder}"
}
}
}
}
Agent 会自动调用 my-lsp 服务获取:
- 诊断(错误/警告)
- 符号定义/引用
- 代码补全、悬停信息
3. lsp/my-lsp-server.js(LSP 代理示例)
用 vscode-languageserver 或直接调用 VS Code 内置 LSP:
js
const { createConnection } = require('vscode-languageserver');
const conn = createConnection();
conn.onInitialize(() => ({ capabilities: { textDocumentSync: 1 } }));
conn.onDocumentSymbol((params) => {
// 返回符号信息给 Agent
});
conn.listen();
4. 在 plugin.json 声明依赖
json
{
"name": "my-lsp-plugin",
"mcpServers": ["my-lsp"],
"engines": { "vscode": "^1.102.0" }
}
5. 启用 LSP 实时能力(settings.json)
json
{
"github.copilot.chat.mcp.enabled": true,
"github.copilot.chat.lsp.diagnostics": true,
"github.copilot.chat.lsp.symbols": true
}
插件的 settings.json 可以配置哪些内容(完整清单)
Copilot Chat 插件的 settings.json 是插件独立配置,不与 VS Code 全局设置混淆,可配置:
1. Agent 行为
json
{
"chat.agent.enabled": true,
"chat.agent.maxRequests": 25,
"chat.agent.autoFix": true
}
2. LSP / MCP 相关
json
{
"github.copilot.chat.mcp.enabled": true,
"github.copilot.chat.lsp.diagnostics": true,
"github.copilot.chat.lsp.symbols": true,
"github.copilot.chat.lsp.completion": true
}
3. 聊天界面与交互
json
{
"github.copilot.chat.welcomeMessage": "always",
"github.copilot.chat.localeOverride": "zh-CN",
"github.copilot.chat.scopeSelection": true
}
4. 编辑与代码生成
json
{
"github.copilot.editor.enableCodeActions": true,
"github.copilot.editor.enableAutoCompletions": true,
"chat.editing.alwaysSaveWithGeneratedChanges": false
}
5. 数据持久化(重点)
json
{
"myPlugin.dataDir": "${workspaceFolder}/.my-plugin-data",
"myPlugin.cacheDir": "~/.cache/my-copilot-plugin",
"myPlugin.historyRetentionDays": 90
}
6. 自定义命令/子智能体
json
{
"myPlugin.commands.greet.enabled": true,
"myPlugin.subagents.myagent.timeout": 30
}
插件如何配置数据持久化目录
插件可以通过 settings.json + 环境变量 + 占位符 灵活指定存储路径。
1. 支持的占位符(直接用)
${workspaceFolder}:当前工作区根目录${userHome}:用户主目录${extensionPath}:插件自身目录${tmpdir}:系统临时目录
2. 示例:settings.json 配置持久化目录
json
{
// 工作区内存储(推荐)
"myPlugin.storage.baseDir": "${workspaceFolder}/.copilot-my-plugin",
"myPlugin.storage.sessions": "${workspaceFolder}/.copilot-my-plugin/sessions",
"myPlugin.storage.cache": "${userHome}/.cache/copilot-my-plugin"
}
3. 代码中读取(插件 JS/TS)
js
const vscode = require('vscode');
const config = vscode.workspace.getConfiguration('myPlugin');
const baseDir = config.get('storage.baseDir');
// 直接读写该目录即可
4. 全局统一目录(跨工作区)
json
{
"myPlugin.storage.globalDir": "${userHome}/.copilot-plugins/my-plugin"
}
5. 官方默认持久化位置(你可以覆盖)
Copilot 核心数据默认在:
- Windows:
%APPDATA%\Code\User\workspaceStorage\{hash}\chatSessions - macOS:
~/Library/Application Support/Code/User/workspaceStorage/{hash}/chatSessions - Linux:
~/.config/Code/User/workspaceStorage/{hash}/chatSessions
插件可以完全自定义,不受此限制。
总结(最简记忆版)
- LSP 接入:插件 → mcp.json → LSP 代理服务 → Agent 自动调用。
- settings.json:可配 Agent、LSP、界面、编辑、持久化、自定义命令。
- 持久化目录 :用
${workspaceFolder}/${userHome}占位符,在 settings.json 定义,代码直接读取。
MCP
MCP:智能体会通过 MCP 协议向 MCP Server 发起工具调用,由MCP Server 调用外部工具或数据源并把结果带回当前会话。
Copilot Chat 里的 MCP Server 是什么?
MCP(Model Context Protocol) 是 Copilot Chat 等 AI Agent 通用的工具协议,用来把外部服务/工具暴露给 Agent。
- 你配置的 MCP Server,本质是一个可执行程序(Node/Python/Go 等)
- Copilot Chat 会通过标准 JSON-RPC 协议,向它发送工具调用请求
- 你的 Server 处理请求并返回结果,Agent 再用结果继续完成任务
两种配置方式对比
Copilot Chat 支持两种方式配置 MCP Server,我推荐插件方式(可复用、可分发):
| 方式 | 配置位置 | 适用场景 |
|---|---|---|
| 全局配置 | VS Code settings.json |
单台机器所有项目生效 |
| 插件方式(推荐) | 插件目录 mcp.json |
可分发、可按项目管理、版本可控 |
方式一:通过插件配置 MCP Server(推荐)
1. 插件目录结构
my-mcp-plugin/
├── plugin.json # 插件主清单
├── mcp.json # 声明你的 MCP Server
├── src/
│ └── mcp-server.js # 你的 MCP Server 代码
└── README.md
2. 编写 mcp.json(关键配置)
这是 Copilot Chat 识别 MCP Server 的核心文件:
json
{
"servers": {
"my-custom-server": {
"command": "node",
"args": ["./src/mcp-server.js"],
"env": {
"API_KEY": "your-secret-key-here",
"WORKSPACE_ROOT": "${workspaceFolder}"
}
}
}
}
command:启动 Server 的命令(node/python/可执行文件等)args:传给命令的参数(你的脚本路径)env:环境变量,可使用${workspaceFolder}等占位符
3. 编写 plugin.json 声明依赖
json
{
"name": "my-mcp-plugin",
"displayName": "My Custom MCP Tools",
"version": "1.0.0",
"description": "Adds custom tools via MCP to Copilot Chat",
"mcpServers": ["my-custom-server"]
}
这里的 "my-custom-server" 要和 mcp.json 里的 key 对应。
4. 写一个极简的 MCP Server 示例(Node.js)
src/mcp-server.js
javascript
const { Server } = require("@modelcontextprotocol/sdk/server/index.js");
const { StdioServerTransport } = require("@modelcontextprotocol/sdk/server/stdio.js");
// 1. 创建 Server 实例
const server = new Server(
{ name: "my-custom-server", version: "1.0.0" },
{ capabilities: { tools: {} } }
);
// 2. 注册一个工具,供 Copilot Chat 调用
server.tool(
"get-system-info",
"获取当前系统信息(OS、CPU 架构等)",
{},
async () => {
const os = require("os");
return {
content: [{
type: "text",
text: `OS: ${os.platform()}, Arch: ${os.arch()}, Hostname: ${os.hostname()}`
}]
};
}
);
// 3. 启动服务,通过 stdio 和 Copilot Chat 通信
const transport = new StdioServerTransport();
server.connect(transport);
console.error("MCP Server started"); // 日志输出到 stderr,避免干扰 stdio
5. 安装插件到 Copilot Chat
bash
# 在插件根目录执行
copilot plugins install .
Copilot Chat 会自动读取 mcp.json 并启动你的 Server。
方式二:直接在 VS Code settings.json 配置(全局生效)
如果你不想做插件,只想在当前机器/项目用,可以直接配置 VS Code 设置:
- 打开 VS Code 设置(
Ctrl+,) - 搜索
github.copilot.chat.mcp.servers - 点击「编辑 in settings.json」,添加:
json
{
"github.copilot.chat.mcp.servers": {
"my-global-server": {
"command": "node",
"args": ["/absolute/path/to/your/mcp-server.js"],
"env": {}
}
}
}
保存后,Copilot Chat 会自动加载并启动该 Server。
验证 MCP Server 是否生效
在 Copilot Chat 中直接问:
使用 get-system-info 工具,告诉我当前系统信息
或
/get-system-info ,告诉我当前系统信息
Agent 会自动调用你的 get-system-info 工具,返回结果。
常见问题排查
- Server 没启动
- 检查
command和args路径是否正确,使用绝对路径测试 - 确保脚本有可执行权限(Linux/macOS 下
chmod +x)
- 检查
- Agent 找不到工具
- 检查
plugin.json里的mcpServers声明是否正确 - 检查
mcp.json里的 Server 名称和tool名称是否拼写正确
- 检查
- 工具调用报错
- 查看 VS Code 输出面板 → 选择「GitHub Copilot Chat」,查看日志
- 确保 Server 日志输出到
stderr(Node.js 用console.error),避免干扰 stdio 通信
核心步骤
- 写一个实现了 MCP 协议的 Server(用官方 SDK)
- 在
mcp.json中声明如何启动它 - 用
plugin.json把它包装成 Copilot 插件 - 执行
copilot plugins install安装 - 在对话中让 Agent 调用你的工具