Copilot 的 Premium Requests 才是成本核心:一次请求把活做满(附:Copilot CLI 压榨 Opus 4.6 的实用模板)
很多人讨论 Copilot 的“成本”时会下意识盯 token,但在 GitHub Copilot 体系里,更关键的指标其实是 Premium Requests。
以 Pro 为例:每月 300 次 Premium Requests;并且不同模型会有倍率(例如 Claude Opus 4.6 ≈ 3x,一次对话可能按 3 次 Premium Requests 计算)。这会直接改变最优策略:不是省 token,而是省请求次数。
另外一个现实:GitHub Copilot 对高校学生通常有免费 Pro(没找到入口的话可以看 https://education.github.com/learner/learn ,右上角有 Enable 之类的入口)。
1)实验结论:哪些行为会消耗 Premium Requests
我做了一轮很朴素的对照实验,可以粗暴分两类:
会消耗 ✅
- 新的 user prompt(你发一条新需求/新问题)
- 同一个 session 里的追问/后续提问(继续对话推进任务)
不会消耗 ❌
- Tool call / MCP 调用(让 agent 去跑工具、读文件、执行命令、查询信息等)
一句话:Premium Requests 主要花在“触发 LLM 继续生成的回合”上,而不是一次回复里调用多少工具。
2)因此最划算的用法:让“一次请求”做尽可能多的事
既然追问也算一次请求,那最划算的工作流就很明确:
- 第一条 prompt 把信息一次性给足(目标/范围/约束/验收/偏好)
- 让 agent 在同一次请求里尽可能多做事(尤其是用工具把验证/执行也做完)
- 交付时一次性给出:方案 + 实施 + 自检 + 风险点 + 下一步建议
本质就是:减少对话轮次,把每次 Premium Request 的产出最大化。
3)“压榨 Copilot CLI”的关键:用 ask_user 把对话变成可控的“交互回合”
Copilot CLI 自带 ask_user 工具。它的效果不是“更聪明”,而是把对话从一次性问答,变成你可以随时插一句话、继续推进的交互模式(会弹一个选项框,你可以选 A/B/C/D 或者直接输入自定义文本)。
实操上,你可以通过“高优先级 instruction”强行让它每次输出后都调用 ask_user,从而把节奏牢牢握在你手里:
- 你不需要重新组织一大段 prompt 才能让它继续
- 你只要在 ask_user 的输入框里给一句“继续/改这里/补测试/再查一遍”就行
4)Copilot CLI 的 instruction 文件位置(全局/项目级)
如果你希望“强制 ask_user”这种行为全局生效/项目生效,Copilot CLI 支持放 instruction 文件:
- 全局:
$HOME/.copilot/copilot-instructions.md - 单项目:
<你的项目目录>/.github/copilot-instructions.md
(这点非常关键:很多人写了但路径不对,等于没生效。)
5)强制 ask_user 的“硬协议模板”(两档:极限版 / 省请求版)
下面给你两档模板,你选一种塞进 instruction 文件即可。
A)极限“不断对话”版(压榨交互体验)
适合:你希望它永远别自己结束、你随时插话控制方向。
This is a non-optional protocol.
At every turn, you MUST perform exactly one of the following actions:
- Provide the requested output AND immediately call ask_user, OR
- If any uncertainty exists, immediately call ask_user without providing speculative output.
The conversation must never terminate voluntarily. The assistant must never produce a terminal response. ask_user is mandatory at the end of every turn.
B)更省 Premium Requests 的“收口版”(我更推荐)
适合:你要的不是聊天,而是把任务一次性做完,然后只收一次反馈。
Before ending a task, maximize work done within the current Premium Request:
- Make necessary assumptions explicitly.
- Use tool calls / MCP to gather info and validate.
- Deliver plan + implementation + verification + risks in one response.
Before ending, call ask_user once and request consolidated feedback in a single message (all changes at once).
你之前提到“copilot-instructions.md 不一定遵循、每次发问题之前给它加一句更可靠”,这点我同意。
最稳的打法就是把下面这句当作你每次提问的固定后缀(即使 instruction 偶尔失效,这句也在本次 prompt 内强制生效):
Before ending a task or conversation, always call the ask_user tool to ask the user if they have any further comments or feedback.
6)一个很关键的提醒:ask_user 不等于“白嫖请求”
ask_user 本身是工具,但它会引导用户继续输入;而“用户继续输入”在很多情况下仍会触发新的 LLM 回合,因此不要把它当成无限续命外挂。
正确理解:
- ask_user 的价值是“把交互做得更轻更顺”,让你用一句话控制它继续干活
- 真正决定 Premium Requests 的,依然是“触发 LLM 继续生成的次数”和“模型倍率”
7)Bonus:用 /mcp add 把 ask_user 扩展成更强的问答/交互工具
除了 Copilot 自带的 ask_user,还可以通过 /mcp add 引入更丰富的开源工具(例如一些“问题模板/问卷式收集需求”的 ask_user 扩展)。
思路是一样的:工具越强,你越能在一次请求里把任务链路跑完,减少来回轮次。
8)常见坑:模型列表“找不到 A 家模型”/地区网络问题
Copilot CLI 的模型选择界面里,有时会出现“某些模型不可用/找不到”的情况。
实践上常见的解决方式是:用 export proxy / 代理把网络环境处理好(尤其是大陆网络场景)。