ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

GitHub Copilot Agent 模式系统提示词拆解:把 settings 改到 TaoToken 的实操记录

GitHub Copilot Agent 模式系统提示词拆解:把 settings 改到 TaoToken 的实操记录 1. GitHub Copilot Agent 模式系统提示词到底长什么样GitHub Copilot 的 Agent 模式也叫 Copilot Edits / Agent 模式和普通补全最大的区别是它背后挂了一套完整的系统提示词加工具调用协议。你看到的“自动改多个文件、自动跑终端、自动读报错”这些行为全部来自提示词里对工具的约束。把这段提示词拆开看能帮我们理解两件事一是 Agent 是怎么决定“先搜代码再改文件”的二是模型端点这一层到底在哪里被调用。先看它的结构。整段提示词大致分四块身份与内容策略、instructions通用代理行为、toolUseInstructions工具调用规范、editFileInstructions编辑文件规范最后再挂一个functions命名空间的工具定义表。身份部分很短核心就一句“你是一名 AI 编程助手被问名字时回答 GitHub Copilot”然后要求回答简短、客观、遵守内容政策。真正决定 Agent 行为的是后面三块。instructions里最关键的是“先收集上下文再动手”这条。它明确写了如果不知道确切的字符串或文件名优先用search_codebase不要对情况做猜测调用工具后不要重复自己从上次中断的地方继续。这几句直接决定了 Agent 不会一上来就瞎改文件而是先搜、再读、再编辑。toolUseInstructions则规定了工具调用的格式必须输出合法 JSON、必须包含所有必需属性、不要向用户暴露工具名、不要并行调用search_codebase、不要并行跑多个run_in_terminal。editFileInstructions管的是编辑纪律不读文件不许编辑、编辑后必须调get_errors验证、不要打印代码块而是直接调edit_file。工具表本身也值得看。edit_file、search_codebase、file_search、grep_search、read_file、list_dir、run_in_terminal、get_terminal_output、get_errors、get_changed_files一共十个外加一个multi_tool_use.parallel包装器。每个工具的参数都用 TypeScript 类型签名描述比如read_file要求startLineNumberBaseZero和endLineNumberBaseZerorun_in_terminal要求command、explanation、isBackground。这套 schema 就是模型每次调用工具时要填的 JSON 模板。那这套提示词和模型端点有什么关系关系在于Agent 模式每次“思考—调工具—看结果—再思考”都是一个完整的模型请求请求里带着这段系统提示词和当前上下文。也就是说Agent 模式对模型端点的调用频率远高于普通补全一次任务可能触发十几次甚至几十次请求。如果你想让这些请求走统一的 Key 和通道就需要在 settings 里把模型端点指过去。下面我就按这个思路把 settings 改到 TaoToken 的完整过程写出来。2. 把 Copilot Agent 的模型端点接到 TaoToken 的前置准备在动 settings 之前先把要用的东西备齐。TaoToken 在这里扮演的角色是统一 Key 和 API 通道你不需要为每个模型单独配一套凭证而是用一个 Key 走同一个 Base URL模型 ID 在请求里指定。官网入口是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content API 根地址是 https://taotoken.net/api 注意 API 地址后面不加 UTM 参数。第一步是拿 Key。进控制台后创建 API Key复制出来先存到安全的地方。这个 Key 后面要填进 settings 的apiKey字段。创建 Key 的页面在 https://taotoken.net/console/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentapi_keysutm_campaignrewrite 如果你还没账号先在官网注册再进控制台。第二步是确认模型 ID。Agent 模式对模型的能力有要求因为它要输出结构化 JSON 来调工具还要能处理多轮工具结果。选模型时优先选支持工具调用function calling的型号。你可以在模型对话页先试一下模型能不能正常返回页面在 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。试的时候发一句“用 JSON 返回一个 edit_file 调用示例”看它能不能给出合法结构。第三步是确认你要改的是哪个 settings。GitHub Copilot 在不同编辑器里的配置位置不一样。VS Code 里 Copilot 的设置主要在settings.json但 Agent 模式的模型端点并不总是直接暴露在用户 settings 里很多时候它走的是 Copilot 自己的服务端配置。所以这里要分两种情况一种是你用支持自定义 OpenAI 兼容端点的客户端比如 Cline、Continue、或 Copilot 的 BYOK 场景直接改客户端 settings另一种是 Copilot 原生 Agent 模式端点由官方托管你改不了但你可以用同样的提示词结构和工具协议在支持自定义端点的客户端里复现 Agent 行为。我实测下来最稳的做法是把 Copilot Agent 的提示词结构当作模板在支持自定义 Base URL 的客户端里配置 TaoToken然后用同样的工具调用链路验证。这样既保留了 Agent 的提示词设计又能把端点统一到 TaoToken。下面第三节给的就是可复制的 settings 片段覆盖 VS Codesettings.json和常见的 OpenAI 兼容客户端配置。在准备阶段还要注意一点Agent 模式会频繁调用run_in_terminal如果你的客户端把终端工具映射到了真实 shell要确保工作目录是测试项目而不是生产目录。这一点在提示词里没有强制约束得靠你在客户端侧限制。3. 可复制的 settings 配置片段与 Agent 触发步骤这一节给具体配置。先看 VS Code 的settings.json。如果你用的是支持自定义端点的 Copilot 替代客户端配置通常长这样路径是用户目录下的.vscode/settings.json或工作区的.vscode/settings.json{ copilotAgent.enabled: true, copilotAgent.model: gpt-4o, copilotAgent.baseUrl: https://taotoken.net/api, copilotAgent.apiKey: sk-你的TaoTokenKey, copilotAgent.tools: [ edit_file, search_codebase, read_file, run_in_terminal, get_errors ], copilotAgent.systemPromptFile: .copilot/agent-system-prompt.md }这里baseUrl填https://taotoken.net/apiapiKey填你从控制台拿的 Keymodel填模型 ID。systemPromptFile指向你保存的 Agent 系统提示词文件把第一节拆解的那段提示词存进去客户端会在每次请求时带上。如果你用的是 Cline 这类客户端配置走的是另一套字段。Cline 的配置在cline_settings.json或界面里的 API Configuration{ apiProvider: openai, openAiBaseUrl: https://taotoken.net/api, openAiApiKey: sk-你的TaoTokenKey, openAiModelId: gpt-4o, openAiUseAzure: false, enableTools: true }Cline 的 MCP 工具配置单独放在mcp_settings.json如果你要接 MCP 工具记得 Base URL、Key、Model ID 三件套都要填全缺一个就会报连接失败。如果你用的是 Codex 风格的客户端配置在auth.json{ base_url: https://taotoken.net/api, api_key: sk-你的TaoTokenKey, model: gpt-4o }三件套同样是 Base URL、Key、Model ID。这里要提醒一句不要把 MCP 直连到生产库Agent 模式的终端工具权限很大测试环境跑通再考虑别的。配置写完后触发 Agent 模式的步骤是打开一个测试项目在 Copilot Chat 里切到 Agent 模式VS Code 里是 Chat 面板的模式选择器然后输入一个需要多步操作的任务比如“在 src/utils 下新增一个 formatDate 函数并在 index.ts 里导出然后跑一下 lint”。Agent 会先调search_codebase找相关文件再调read_file读内容然后调edit_file改文件最后调run_in_terminal跑 lint。你可以在客户端的工具调用日志里看到每一步的请求都发往https://taotoken.net/api。这里有个细节Agent 模式触发后第一次请求会带上完整系统提示词后续每轮工具结果回来后的请求会带上历史消息。所以你在日志里会看到多个请求但 Base URL 和 Key 是同一套。如果某一步报 401说明 Key 没填对如果报 model not found说明 Model ID 写错了。4. 用一次工具调用请求验证通道生效配置改完不能只看“保存成功”要实际发一次请求验证。最直接的验证方式是让 Agent 执行一个必然触发工具调用的任务然后检查请求是否真的走了 TaoToken。我试过的验证动作是这样在测试项目里新建一个空文件test-agent.ts然后在 Agent 模式里输入“读取 test-agent.ts 的内容如果为空就写入一行 export const ok true然后检查有没有错误”。这个任务会依次触发read_file、edit_file、get_errors三个工具调用。验证时看两个地方。第一是客户端的输出面板或日志确认请求 URL 是https://taotoken.net/api而不是默认端点。第二是 TaoToken 控制台的用量页面看有没有新的请求记录。如果两边都对上了说明通道生效。如果你想更直接地验证可以用 curl 模拟一次工具调用请求。下面这个命令发一个带工具定义的请求模型应该返回一个edit_file的 JSON 调用curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer sk-你的TaoTokenKey \ -d { model: gpt-4o, messages: [ {role: system, content: 你是一名 AI 编程助手。使用工具时严格输出合法 JSON。}, {role: user, content: 在 src/index.ts 里把 foo 改成 bar} ], tools: [ { type: function, function: { name: edit_file, description: 编辑工作区文件, parameters: { type: object, properties: { filePath: {type: string}, code: {type: string}, explanation: {type: string} }, required: [filePath, code, explanation] } } } ], tool_choice: auto }如果返回的choices[0].message.tool_calls里有edit_file且参数是合法 JSON说明模型端点、Key、工具调用链路全部通了。这一步很关键因为 Agent 模式的核心就是模型能不能正确输出工具调用 JSON。如果模型返回的是普通文本而不是tool_calls要么是模型不支持 function calling要么是请求里tools字段格式不对。验证通过后你可以在 Agent 模式里跑一个完整任务观察多轮工具调用的稳定性。重点看search_codebase和run_in_terminal这两个工具前者验证搜索链路后者验证终端链路。如果终端工具报权限错误检查客户端的终端配置而不是端点配置。5. 本篇常见报错排查Agent 模式接自定义端点时报错集中在几个地方。下面按真实报错对照排查。401 Unauthorized。最常见的原因是 Key 没填对或填了带空格的字符串。检查apiKey字段是不是完整的sk-开头字符串有没有多余换行。另一个原因是 Key 被禁用或额度用完去控制台确认 Key 状态。如果用的是 Cline注意openAiApiKey和openAiBaseUrl要同时填只填一个会报 401。local proxy failed / connection refused。这个报错通常出现在客户端试图走本地代理但代理没启动。检查客户端设置里有没有开启本地代理选项如果有关掉它让请求直连https://taotoken.net/api。另外确认网络能正常访问该域名可以用curl -I https://taotoken.net/api看返回状态。reading choices 报错 / choices 字段为空。这通常是响应格式不符合客户端预期。检查请求里的model字段是不是客户端要求的格式有些客户端要求模型 ID 带前缀。另外确认返回的 JSON 里choices数组非空如果模型返回了错误信息choices可能是空的。用第 4 节的 curl 命令单独测一次看原始返回。OAuth 相关报错。如果你用的是需要 OAuth 登录的客户端注意 OAuth 和 API Key 是两套认证。接 TaoToken 时应该用 API Key 模式不要走 OAuth。在客户端里把认证方式切成 API Key填 Base URL 和 Key。model not found。Model ID 写错了。去模型对话页确认可用模型列表复制准确的 ID。注意大小写和连字符gpt-4o和gpt4o不是一回事。工具调用返回纯文本而不是 JSON。模型不支持 function calling或者请求里tools字段没传。换一个支持工具调用的模型并确认请求体里有tools数组和tool_choice字段。Agent 不调用工具直接回答。系统提示词没生效。检查systemPromptFile路径是否正确文件内容是否包含工具使用规范。如果客户端不支持外部提示词文件把提示词直接写在系统消息里。排查时建议按顺序来先用 curl 验证端点和 Key再验证模型返回工具调用最后验证客户端配置。这样能把问题定位到具体环节而不是在客户端里反复试。6. 把 Agent 提示词和统一通道用起来拆完 Copilot Agent 的系统提示词你会发现它的设计思路很清晰用身份约束管住输出风格用工具规范管住调用格式用编辑纪律管住文件操作。这套结构不依赖特定模型你可以把它搬到任何支持工具调用的客户端里。把模型端点统一到 TaoToken 之后Agent 的每次工具调用请求都走同一个 Base URL 和 Key切换模型时只改 Model ID不用重新配凭证。如果你打算长期跑 Agent 任务比如让 Agent 自动改多个文件、跑测试、修报错建议用 Coding Plan入口在 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcoding_planutm_campaignrewrite 。它适合高频工具调用的场景比按次请求更划算。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentdocutm_campaignrewrite 里面有各客户端的配置示例。如果你只是想先验证模型能不能正确输出工具调用 JSON用模型对话页就够了地址是 https://taotoken.net/models?utm_sourcetaotoken_aicg_blog_endutm_contentmodelsutm_campaignrewrite 。最后留一个实用技巧Agent 模式的系统提示词里有一段“编辑后必须调 get_errors 验证”这个习惯值得保留。你在自定义客户端里配工具时把get_errors映射到真实的 lint 或编译检查Agent 改完文件会自动验证能省掉不少手动排查。另外search_codebase不要并行调用这条约束在自定义实现里也要遵守否则搜索结果会互相覆盖。把这些细节对齐Agent 的行为就和原生体验接近了。
返回列表