跳到正文
marvelousu · LLM游戏功能与开发实践· 来源· Tom·· 2 小时前AI 评分57

用月费10美元的OpenCode Go和Command Code替代Claude Code子代理的实操记录

月10ドルのコーディングエージェントで Claude Code のサブエージェントを置き換える

正文 · AI 翻译

我将原本交给 Claude Code / Codex 子代理执行的实现和调查工作,转移到了月费10美元的 OpenCode Go 和 Command Code 上。这里总结调用方式,以及大约3周内的委托次数和达到使用上限的天数。

\n TL;DR

  • 在日常开发中,将明确的实现或范围确定的调查工作交由月费10美元的 OpenCode Go 处理,而 Claude Code / Codex 则用于策略判断和成果确认。
  • 调用使用的是 OpenCode 的 API。只需更改模型指定,即可额外添加同样月费10美元的 Command Code。
  • 在大约3周内委托了约2,100次,OpenCode Go 在第18天达到了月度上限,Command Code 在第4天达到了每周上限。
  • 我没有感觉到质量上的问题。由于采用了容易触达上限的使用方式,我认为如果是普通用法,这两个计划搭配起来正合适。

前言

我平时制作游戏和开发工具。与 Claude Code / Codex 商讨规范和设计,并将部分实现和研究工作委托给子代理(sub-agent)已有一段时间。

从10月下旬开始,我将这些实现和研究工作交由 OpenCode 处理。我订阅了 OpenCode Go 的每月10美元套餐,使用的是 DeepSeek V4.1 Flash。由于使用量增加,出现了达到利用上限的日子,因此在11月我又追加了同样每月10美元的 Command Code。

本文将介绍其使用方法以及约3周的使用记录。我也尝试了同价位的 Qoder,因此也会提及相关情况。

使用的服务

OpenCode 是一个进行代码研究、编辑和命令执行的编码代理。可以选择模型提供商,其中一个月度套餐选项是 OpenCode Go。

Command Code 也是编码代理的服务。OpenCode 提供了 Command Code 作为连接选项,可以从 OpenCode 调用其月费计划的模型。

Qoder 是一款可在 IDE 或 CLI 中使用的代理,Qoder Lite 的月费为 10 美元。

这些都是为了将实现和验证工作委托给子代理而签订的合同,模型使用的是 DeepSeek 的 Flash。首先使用 OpenCode Go,当达到 Go 的上限时切换到 Command Code。Qoder 无法通过 API 调用,只能通过 CLI 启动。由于操作不便,因此将其优先级排在最后。

Qoder 曾提供每天免费使用 DeepSeek-Flash 的活动,因此我在 10 月底开始使用。该活动已经结束。

項目 OpenCode Go Command Code GOAT Qoder Lite
月額 10美元 10美元加支付手续费 10美元
额度计算方式 按模型划分的金额基准 按模型划分的金额基准 每月1,000 Credits
DeepSeek V4.1 Flash 的月度额度 价值100美元 价值100美元 从 Credits 中扣除

Go 可以在5小时内使用月度配额的20%,一周内最多使用50%。由于将令牌消耗换算为费用来计算配额,因此每月10美元最高可使用相当于100美元的额度,每周最高可使用相当于50美元的额度。

Command Code 也采用相同的计算方式,DeepSeek V4.1 Flash 每月10美元最高可使用相当于100美元的额度。价格页面上仅列出了月度配额,但实际使用时还存在周度上限。

作为子代理调用

我们将负责独立对话中推进实施或调查的任务替换为了 OpenCode。

Claude Code 的子代理通过独立的对话和工具进行工作并向父级返回结果。而在此方案中,则由父级向 OpenCode 的 HTTP API 发送请求。接收请求的 OpenCode 会读取代码、编辑代码并执行测试。

自分が Claude Code や Codex に依頼し、そこから API で OpenCode サーバーへ作業を渡す構成。サーバーは作業場所を読み書きし、OpenCode Go か Command Code のモデルを使う
调用子代理。在实施和验证过程中使用 OpenCode Go 或 Command Code 的使用配额。

将规格、变更范围及完成判定交由父代理处理。向子代理下达指令时,会限定其任务范围,例如为现有功能添加命令、执行已确定规格的修改,或调查指定文件与处理逻辑等。

文件的读取、编辑以及测试所涉及的模型调用,均使用 OpenCode 侧的使用配额。父代理的使用配额也用于创建委托和确认成果物。

OpenCode 在后台运行服务器,可通过带认证的 HTTP API 进行操作。具体流程是:创建对话、发送委托、等待直至结束并获取结果。流程如下所示。

# 会話を作る。作業場所とモデルをここで決める
curl -s -u "$OC_USER:$OC_PASS" -H 'Content-Type: application/json' \
  -X POST "$OC_URL/api/session" -d '{
    "title": "add-event-report",
    "agent": "api-worker",
    "model": {"providerID": "opencode-go", "id": "deepseek-v4.1-flash", "variant": "high"},
    "location": {"directory": "/path/to/worktree"}
  }'

# 依頼を送る
curl -s -u "$OC_USER:$OC_PASS" -H 'Content-Type: application/json' \
  -X POST "$OC_URL/api/session/<会話ID>/prompt" \
  -d '{"text": "<指示>", "delivery": "queue"}'

# 終わるまで待つ。1回の待機は60秒以内にして繰り返す
curl -s -u "$OC_USER:$OC_PASS" \
  -X POST "$OC_URL/api/experimental/session/<会話ID>/wait"

# 結果を取得する
curl -s -u "$OC_USER:$OC_PASS" \
  "$OC_URL/api/session/<会話ID>/message?limit=10&order=desc"

api-worker 是我为子代理自定义的配置。对话 ID 和委托接收 ID 会在返回时保存到文件中。即使通信中途断开,也不会重复发送同一委托,且可以从保存的 ID 处确认状态。

即使等待超时,作业仍在继续,因此需再次等待同一对话。完成判定依据包括:结束状态为成功、响应中记录的模型与指定一致,并结合实际差异与测试结果。若权限请求被拒绝,则不会赋予成功的结束状态,因此将其作为独立于完成的情况处理。

发送给子代理的指示由父代理的 Claude Code 或 Codex 编写。在汇总委托步骤的技能中,明确规定必须写明允许变更的范围及确认方法。

eventlog に、service と status ごとの件数・処理時間を集計する
report コマンドを追加してください。

変更は eventlog/ の中だけにしてください。
既存の count / stats コマンドの出力は維持してください。
tests/ とプロジェクト設定は変更しないでください。
Python 標準ライブラリだけを使ってください。

公開テストを実行し、変更した内容と確認結果を報告してください。

在项目的AGENTS.md中,我们确保通用的工作流程和所需技能也能从子代理端进行参考。报告的末尾统一采用以下格式。

RESULT=ok | VERIFY=公開テストを実行して成功 | NEXT=none

除了ok之外,还有fail和partial,并区分完全无法执行或部分完成的情况。父代理根据这些报告确认差异和必要的验证。父代理的对话中不插入中间日志,仅返回简短的报告。

追加修改将在同一对话中继续请求。如果同时运行多个子代理,则分别划分工作目录和对话,并确保变更的文件不重叠。

\n 添加 Command Code

由于达到 Go 使用上限的日子增多,我在11月4日订阅了 Command Code 的 GOAT 计划。

在 OpenCode 中注册 Command Code 的 API 密钥后,即可从同一服务器选择 Command Code 的模型。调用方仅需更改创建对话时的模型指定。

"model": {"providerID": "commandcode", "id": "deepseek/deepseek-v4.1-flash", "variant": "high"}

发送请求、等待、获取结果以及中断,均使用与 Go 相同的 API。无需增加服务器。模型 ID 取自服务器返回的模型列表。

切换并非自动进行。在确认从 Go 端收到超出上限的错误后,指定 Command Code 创建新的对话。

约3周的使用记录

针对主要使用的台式机一台,汇总了 OpenCode 保存的记录。统计期间为10月21日至11月7日,共计18天。

項目 OpenCode Go Command Code
使用期间 18日 4日
会話数 554 189
请求次数 1,025 1,102
输入令牌(不含缓存读取) 約8,180万 約6,660万
缓存读取 約44.5億 約66.5億
输出令牌 約1,070万 約940万
換算費用 约40美元 约43美元

换算费用是 OpenCode 根据 token 数量计算并显示的值。它与账单金额或各服务所计数的配额消耗量并不一致。

期间内的工具调用约为6.8万次。其中 shell 执行约3.2万次,文件编辑约1.6万次,读取约1.3万次。输入大多为缓存读取,数字也反映出在同一个对话中一边重新读取文件一边推进工作的状态。

在 Go 的使用中,中途曾追加5美元以启用 Extra Usage。在第18天的11月7日达到了月度上限。

Command Code 在开始使用的4天内的请求量为1,102次,超过了 Go 的18天用量。Go 达到上限期间的请求几乎全部由 Command Code 承接。在第4天的11月7日达到了周度上限。周度上限在一周内恢复,月度配额还剩约50%。

我认为较早达到上限也与使用方式密切相关。推理强度一直固定为 high。期间内,我还进行了实验,尽可能增加并行数来运行游戏模拟。如果是普通用法,应该不会这么快就触及上限,因此如果同时使用 Go 和 Command Code 两者,一个月左右的用量可能刚好合适。

11月7日之后,Go 和 Command Code 均返回上限错误,因此我们暂时将子代理恢复为普通模式。由于存在每周使用上限,今后我们计划不再按优先级顺序依次使用 Go 和 Command Code,而是构建一种将请求分散到这两者中的机制。我们也在考虑将 OpenCode 服务器部分替换为其他框架(harness)。

\n Qoder 的后续情况

我们在 Qoder 中设置了与 OpenCode 相同的通用指令和技能,并确认可以在为期2周、300 Credits 的 Pro 试用版中委托其进行实现工作。

在促销期间,DeepSeek-Flash 不消耗 Credits,因此我们原本打算仅在 Qoder 中使用该模型。然而,其中一个自制脚本覆盖了模型指定,将其改为消耗 Credits 的其他模型,从而耗尽了试用版的 300 Credits。此后,我们在调用侧拒绝了除 DeepSeek-Flash 以外的模型指定执行。这是由我方机制决定的,并非服务方禁止了其他模型。

在免费促销期间的 DeepSeek-Flash 排队时间较长,有时我们的超时限制会先于队列结束而触发。

目前我们已签约 Lite 版本,但 Credits 已耗尽,因此 11 月几乎无法使用。因此,我们还无法明确了解其与 Go 或 Command Code 相比的实际可用性。此外,由于其通过 API 调用不够灵活,我们计划在 11 月底决定是否继续使用。

结语

由于将 OpenCode 设置为通过 API 调用,只需更改模型指定即可添加 Command Code。无需重新构建请求和结果的处理逻辑,能够使用两个每月10美元的套餐,非常方便。

虽然也曾尝试从与 Grok Bot 的对话中启动相同的子代理并运行了一段时间,但并未感到有必要将请求入口统一为一个。即使是简单的调查,由于需要经过委托环节,耗时较长,因此目前不再采用从 Grok Bot 调用的运行方式。

对于委托实现的实施和调查结果的质量完全没有问题,但使用配额非常紧张。虽然这与我们倾向于触及上限的使用方式有很大关系,例如固定推理强度为 high、并行大量运行模拟等,但 Go 在18天内达到了月度上限,Command Code 在4天内达到了周度上限。如果是普通用法,可能一个每月10美元的套餐不够用,但有两个的话感觉刚刚好。

来源:marvelousu · LLM游戏功能与开发实践 · zenn.dev