OpenCode 踩坑记:GitHub Copilot 按次计费?我的账单为何暴涨 3 倍!

OpenCode 踩坑记:GitHub Copilot 按次计费?我的账单为何暴涨 3 倍!
从发现问题到深度分析,一篇文章搞懂 OpenCode + GitHub Copilot 的正确打开方式

🌟 前言:一个意外的"惊喜"

进入2026年,朋友圈和技术群里都在讨论一个新的AI开发工具 —— OpenCode,号称是 AI 编程助手的"终极形态",支持 GitHub Copilot、Claude、GPT-4 等多种模型,还能自动执行多步任务。

作为一个爱折腾的程序员,我立马下载试用。我有 GitHub Copilot 企业订阅,而且OpenCode还支持,用起来应该不花钱吧?

结果一周后,我收到了公司 IT 部门的"温馨提醒" 📧:

“您的 Copilot 使用量是团队平均水平的 3 倍,请注意合理使用…”

什么情况??我明明只是让 AI 帮我重构了几个文件而已!

于是,我开始了一场"破案之旅" 🕵️‍♂️…


🔍 第一步:发现问题

我用 OpenCode 做了什么?

很简单,就是一些日常开发任务:

我:帮我重构 src/index.ts,优化类型定义 OpenCode:好的,我来帮你... → 读取文件 → 分析代码 → 修改文件 → 运行类型检查 → 修复错误 → 完成! 

看起来很正常对吧?但问题就出在这个"自动化"过程中。

VS Code vs OpenCode 中使用 Github Copilot:看似相同,实则不同

Github Copilot 和其他模型提供商不太一样,它是按次数计费,企业账号每月可使用300次 Cluade Sonnect 4/4.5 模型。

我以前用 VS Code 的 GitHub Copilot Chat,也是类似的对话:

我:帮我重构这个文件 VS Code Copilot:好的...(需要读取文件) → 弹出权限确认:[Allow] [Deny] 我:点击 Allow VS Code Copilot:发现 3 个问题...(需要修改文件) → 弹出权限确认:[Allow] [Deny] 我:点击 Allow VS Code Copilot:已完成! 

耗费1次对话额度完全可以完成任务,额度消耗 0.3%

使用 OpenCode 情况完全变了。完全是后台执行,看上去体验起飞,但回头核查账单你会发现:额度消耗那是 1%2% 得跳!

查看各大技术论坛和Github上Issue里也有很多讨论 OpenCode “烧token”的情况,让很多人望而却步。


💡 第二步:深入分析计费原理

GitHub Copilot 的计费规则

经过一番研究,我终于搞明白了 GitHub Copilot 的计费逻辑:

按"发送次数"计费,不按 Token 计费!

这意味着:

  • 你点击 1 次"发送" = 计费 1 次
  • 点击"Allow"执行工具 = 不计费(不算新的发送)

VS Code 的技术实现:单次 Streaming 连接

VS Code 使用的是 SSE (Server-Sent Events) 流式连接

用户点击发送(标记为用户发起) ↓ 建立 HTTP 连接(streaming) ↓ AI:"我需要读取文件..." [发送 tool-call 事件,连接保持打开] ↓ 用户点击 Allow → 执行工具 [结果注入到同一个流中,无需新请求] ↓ AI:"发现 3 个错误..." [继续在同一个流中生成] ↓ AI:"需要修改文件..." [再次发送 tool-call 事件] ↓ 用户点击 Allow → 执行工具 [结果继续注入到流中] ↓ AI:"已完成!" ↓ 关闭连接 总计:1 次 HTTP 请求 = 计费 1 次 ✅ 

VS Code 的优势

  • 整个对话过程只建立 1 次连接
  • 工具执行结果通过流式传输注入,无需发起新请求
  • 用户手动确认 Allow,系统识别为"人工批准的工具调用"
  • GitHub Copilot 将整个过程视为 1 次用户发起的对话

OpenCode 的技术实现:循环模式(Loop)

OpenCode 采用的是 Agentic Loop 架构

用户点击发送(第 1 次请求:用户发起) ↓ ═══ 循环 Step 1: 第 1 次 HTTP 请求 ═══ AI:"我需要读取文件..." finish = "tool-calls" 连接关闭 ↓ 权限检查 → 自动执行工具 → 获得结果 ↓ ═══ 循环 Step 2: 第 2 次 HTTP 请求 ═══ ❌ 计费! AI:"发现 3 个错误..." (AI 自动发起,但未标记) finish = "tool-calls" 连接关闭 ↓ 权限检查 → 自动执行工具 → 获得结果 ↓ ═══ 循环 Step 3: 第 3 次 HTTP 请求 ═══ ❌ 计费! AI:"已完成!" (AI 自动发起,但未标记) finish = "stop" 退出循环 总计:3 次独立的 HTTP 请求 = 计费 3 次 ❌ 

关键问题:每次循环都会关闭连接并发起新请求,导致 GitHub Copilot 将它们视为独立的用户请求!

现在明白了吧? 同样的任务:

  • VS Code:1 次计费(流式连接,始终是用户发起)
  • OpenCode(修复前):3 次计费(每次循环 = 1 次新请求)

怪不得我的用量是别人的 3 倍!


🎯 第三步:发现官方修复

正当我准备放弃 OpenCode 的时候,我在 GitHub 上发现了一个好消息!

官方在 v1.1.31 修复了 Subagent 计费问题

提交信息

mark subagent sessions as agent initiated to ensure they dont count against quota (got the ok from copilot team) 

发布时间:2026年1月21日(就在昨天!)

什么是 Subagent?

OpenCode 有一个强大的功能:子任务代理 (Subagent)

当你让 AI 完成复杂任务时,它可以自动创建子任务:

你:帮我重构整个项目 主任务(你发起): ├─ 分析项目结构 ├─ 创建子任务 1:重构模块 A (@general) ← Subagent ├─ 创建子任务 2:重构模块 B (@general) ← Subagent └─ 创建子任务 3:更新文档 (@general) ← Subagent 

修复原理:添加 x-initiator: agent 标记

官方的修复非常巧妙,采用了 GitHub Copilot 认可的标准机制:

// 检查是否是 subagent session(有父任务)if(session.parentID){// 添加特殊 header,标记为 AI 自动发起 headers["x-initiator"]="agent"}

这与 VS Code 的机制一致

  • VS Code:在 API 层面使用 requestInitiator 参数标识请求来源
  • OpenCode:在 HTTP 请求中添加 x-initiator: agent header
  • 两者都是 GitHub Copilot 官方支持的标记方式

修复效果

  • ✅ 主任务(用户发起):正常计费
  • ✅ 主任务的循环(修复前):每次循环都计费 ❌
  • ✅ 主任务的循环(修复后):仍然计费(因为没有 parentID)
  • ✅ 子任务(有 parentID):全部不计费
  • ✅ 子任务中的所有 LLM 调用:不计费
注意
修复主要针对 Subagent 功能,主任务的循环仍会计费!
看到这里,聪明的你可能想到了什么…我觉得还是打住吧,OpenCode 都没改,你觉得是为什么呢?有大神知道我在说什么的且尝试过的,还请告诉我结果🤞。

成本对比

修复前

主任务: 1 次计费 ├─ 子任务 1: 5 次 LLM 调用 → 计费 5 次 ❌ ├─ 子任务 2: 3 次 LLM 调用 → 计费 3 次 ❌ └─ 子任务 3: 2 次 LLM 调用 → 计费 2 次 ❌ 总计: 11 次计费 

修复后

主任务: 1 次计费 ├─ 子任务 1: 5 次 LLM 调用 → 不计费 ✅ ├─ 子任务 2: 3 次 LLM 调用 → 不计费 ✅ └─ 子任务 3: 2 次 LLM 调用 → 不计费 ✅ 总计: 1 次计费(节省 90%!) 

🛠️ 第四步:解决方案

立即升级到 v1.1.31+

# 检查当前版本 opencode --version # 升级到最新版本npm update opencode-ai@latest # 或 brew upgrade opencode 

充分利用 Subagent 功能

升级后,可以放心使用 @general 等 subagent:

# 推荐:让 AI 自动拆分子任务 opencode run "重构整个项目,使用 @general 分析最佳实践"# 效果:# - 主任务分析需求(计费 1 次)# - 创建多个 subagent 子任务(不计费)# - 所有子任务的工作(不计费)

关键原则:尽量让 AI 自己创建子任务,而不是在主任务中做所有事情。

方法 1:使用 @ 语法手动委托
# ❌ 避免:在主任务中执行多步骤操作 你:帮我重构 src 目录下的所有文件 # ✅ 推荐:让 AI 创建 subagent 处理 你:帮我重构 src 目录,使用 @general 分析并逐个文件处理 

内置 Subagent

  • @general:通用多步骤任务(推荐用于复杂重构)
  • @explore:代码探索和分析(只读,不会修改代码)
方法 2:让 AI 自动判断并委托
# 添加提示词,引导 AI 使用 subagent 你:帮我重构这个项目。如果任务复杂,请使用 @general 创建子任务 

OpenCode 会自动识别

  • 如果任务需要多个步骤
  • AI 会自动调用 task 工具创建 subagent
方法 3:通过配置强制使用 Subagent
// opencode.json { "command": { "refactor": { "template": "重构 {input},使用最佳实践", "subtask": true, // 强制作为子任务执行 "agent": "general" } } } 

使用方式

opencode /refactor src/utils/ # 自动创建 subagent,不计费 ✅
方法 4:创建自定义 Subagent

支持两种配置格式

格式 1:JSON 配置 (推荐用于简单配置)

// opencode.json { "agent": { "reviewer": { "mode": "subagent", "model": "anthropic/claude-sonnet-4-20250514", "description": "专门用于代码审查的子代理", "prompt": "你是一个专业的代码审查专家...", "steps": 50 // 子代理内部最多 50 步(不计费) } } } 

格式 2:Markdown 配置 (推荐用于复杂 prompt)

<!-- .opencode/agent/reviewer.md --> --- mode: subagent model: anthropic/claude-sonnet-4-20250514 description: 专门用于代码审查的子代理 steps: 50 --- 你是一个专业的代码审查专家。审查代码时: 1. 检查潜在的 bug 2. 提出性能优化建议 3. 评估代码可读性 

使用方式

你:使用 @reviewer 审查这个文件 # 自动作为 subagent 执行,不计费 ✅

📌 关键字段说明:steps vs maxSteps

重要:OpenCode 配置中:

  • steps:正确字段(OpenCode v1.1+ 推荐)
  • maxSteps:已弃用字段(仅为向后兼容保留)
// ✅ 正确写法 { "agent": { "build": { "steps": 10 // 限制最多 10 个循环步骤 } } } // ⚠️ 旧写法(仍可用,但不推荐) { "agent": { "build": { "maxSteps": 10 // 会自动转换为 steps } } } 

注意:如果同时配置了 stepsmaxSteps,OpenCode 会优先使用 steps 值。


调整主任务配置(辅助策略)

如果确实需要在主任务中操作,可以通过配置减少循环次数:

// opencode.json { "agent": { "build": { "steps": 10 // 限制最多 10 轮循环 } }, "permission": { "read": "allow", // 读取文件自动允许 "glob": "allow", // 搜索文件自动允许 "edit": "ask", // 修改文件需确认(重要!) "bash": "ask", // 执行命令需确认 "task": "allow" // 自动允许创建 subagent(推荐!) } } 

关键配置说明

  • maxSteps: 防止无限循环
  • edit: "ask": 可以在关键步骤拒绝,提前结束循环
  • task: "allow": 非常重要,允许 AI 自动创建 subagent

💪 总结与建议

关键要点

  1. 理解架构差异是关键
    • VS Code:流式连接,1 次对话 = 1 次计费
    • OpenCode:循环架构,每次循环 = 1 次计费
    • Subagent 是 OpenCode 的成本优化利器
  2. v1.1.31 带来的变化
    • Subagent 功能完全免费(有 parentID 的 session),充分利用时成本节省高达 90%
    • 主任务的循环仍然计费(这是架构特性)
  3. Provider选择建议
    • GitHub Copilot(按次):适合复杂长任务,会消耗大量token的任务。
    • 其他按 Token 计费的:适合短任务,token消耗可控的任务。

写在最后

OpenCode 是一个强大的工具,但要用好它,理解计费原理至关重要。

通过这次"踩坑"经历,我学到了:

  • 自动化是把双刃剑:省力但可能费钱
  • 官方的更新很重要:v1.1.31 的修复太及时了
  • 合理配置是关键:权限 + 步数限制 + subagent

现在,我的 Copilot 用量恢复正常了,开发效率却提升了不止一倍!

希望这篇文章能帮到同样遇到问题的你 🤝


📊 附:计费说明

1. GitHub Copilot 计费规则

场景计费方式说明
用户点击"发送"✅ 计费 1 次触发主任务
点击 Allow/Deny❌ 不计费不算新请求
主任务循环 (OpenCode)✅ 每次循环计费N 次循环 = N 次计费
Subagent (v1.1.31+)✅ 不计费官方修复
Subagent 中的循环❌ 不计费所有操作都不计费

2. 其他提供商(按 Token 计费)

对于 OpenAI、Anthropic 等按 Token 计费的提供商:

示例:Tool Calls 占 88.9% 的请求

假设总共 10,000 tokens:

类型占比Tokens成本 (GPT-4)
User3.3%330$0.01
Assistant7.5%750$0.05
Tool Calls88.9%8,890$0.27
Other0.3%30$0.00
总计100%10,000$0.33

结论:工具调用越多,成本越高!

3. 成本对比总结

同样的任务(含 3 个子任务)

工具计费模式修复前成本修复后成本节省
VS Code Copilot按次1 次1 次-
OpenCode (主任务)按次5-10 次5-10 次0%
OpenCode (Subagent)按次15-30 次1 次90%
OpenAI GPT-4按 Token$1.50$1.500%
Anthropic Claude按 Token$0.80$0.800%

📚 参考资料


关于作者:一个热爱折腾的开发者,专注于 AI 工具在实际开发中的应用。如果你也在使用 OpenCode,欢迎留言交流!

声明:本文基于 OpenCode v1.1.31 版本编写,未来版本可能有所变化。文中提到的成本估算仅供参考,实际费用以官方为准。


觉得有用?点个「关注」吧! 👍
让更多人避开这个坑!

Read more

前端营销(AIGC II)

前端营销(AIGC II)

营销并非传统意义上的“前端创意投放”,而是深度内嵌于供应链、流量、用户、商品、场域的中台化运营体系。京东上下游链路极长,从采销、仓储、履约到流量分发、转化成交、用户复购,营销的核心价值是整合——找准人、选好货、用对场。前端在这里不再只是“做页面”,而是承接中台能力、串联全链路、支撑多品类快节奏运营的关键枢纽。 本文从业务理解与技术实现两大维度,系统拆解京东营销前端的真实角色、能力边界与工程实践。 一、业务理解:先懂营销,再写代码 京东营销前端的起点,是对齐业务本质:营销偏中台、本质是运营。前端必须把业务逻辑吃透,才能用技术支撑“整合”核心目标。 1.1 京东营销的核心定位:整合型运营中台 * 核心价值:人-货-场全域整合 * 人:搜推用户、PLUS会员、校园人群、CPS渠道人群、品牌定向人群 * 货:

By Ne0inhk

llama.cpp docker 镜像pull国内加速地址

目前llama cpp官方提供的llama.cpp提供的docker 镜像下载命令:docker pull ghcr.io/ggml-org/llama.cpp:server-cuda-b6222 服务器下载速度非常的慢。 比较好的方法是把ghcr.io替换为国内镜像源地址ghcr.nju.edu.cn进行下载: // 官方命令: docker pull ghcr.io/ggml-org/llama.cpp:server-cuda //国内源地址命令 docker pull ghcr.nju.edu.cn/ggml-org/llama.cpp:server-cuda 速度快了几十倍,非常节约时间 推荐给大家!

By Ne0inhk
AIGC已经不是未来,而是现在:2025年最值得关注的6大趋势!

AIGC已经不是未来,而是现在:2025年最值得关注的6大趋势!

过去一年,AIGC(AI 生成内容)从“概念”彻底走向“落地”。无论你是程序员、产品经理、内容创作者,甚至是业余爱好者,AIGC 已经渗透到每一个内容生产链条中,以一种“你还没准备好,它已经来了”的节奏迅速发展。 本文将带你系统了解:2025 年最热门的 AIGC 内容形态、前沿产品、典型用例,以及未来趋势。 🎥 1. 文生视频已落地:Sora 等产品引爆创意革命         当 OpenAI 推出 Sora 时,整个 AI 圈都沸腾了。         只需一句提示词,比如: "一个穿太空服的熊猫在月球上弹钢琴"         Sora 就能输出秒级电影级视频片段。光影、动作、镜头感,全部一应俱全。 🔧 技术关键词:

By Ne0inhk
解锁AIGC新时代:通义万相2.1与蓝耘智算平台的完美结合引领AI内容生成革命

解锁AIGC新时代:通义万相2.1与蓝耘智算平台的完美结合引领AI内容生成革命

前言 通义万相2.1作为一个开源的视频生成AI模型,在发布当天便荣登了VBench排行榜的榜首,超越了Sora和Runway等业内巨头,展现出惊人的潜力。模型不仅能够生成1080P分辨率的视频,而且没有时长限制,能够模拟自然动作,甚至还可以还原物理规律,这在AIGC领域中简直堪称革命性突破。通过蓝耘智算平台,我们能够轻松部署这个模型,创建属于自己的AI视频生成工具。今天,我将为大家深入探讨通义万相2.1的强大功能,并分享如何利用蓝耘智算平台快速入门。 蓝耘智算平台 1. 平台概述 蓝耘智算平台是一个为高性能计算需求设计的云计算平台,提供强大的计算能力与灵活服务。平台基于领先的基础设施和大规模GPU算力,采用现代化的Kubernetes架构,专为大规模GPU加速工作负载而设计,满足用户多样化的需求。 2. 核心优势 * 硬件层: 蓝耘智算平台支持多型号GPU,包括NVIDIA A100、V100、H100等高性能显卡,能够通过高速网络实现多机多卡并行计算,突破单机算力瓶颈。 * 软件层: 集成Kubernetes与Docker技术,便于任务迁移与隔离;支持PyTo

By Ne0inhk