Skip to content

feat: add Volcengine Coding Plan provider - #3968

Open
alwinlin23 wants to merge 1 commit into
anomalyco:devfrom
alwinlin23:volcengine-coding-plan
Open

feat: add Volcengine Coding Plan provider#3968
alwinlin23 wants to merge 1 commit into
anomalyco:devfrom
alwinlin23:volcengine-coding-plan

Conversation

@alwinlin23

@alwinlin23 alwinlin23 commented Aug 3, 2026

Copy link
Copy Markdown

Summary

Add the Volcengine Ark Coding Plan (火山方舟 Coding Plan) provider requested in anomalyco/opencode#40203, alongside the existing kimi-for-coding, alibaba-coding-plan-cn, zhipuai-coding-plan, minimax-cn-coding-plan, and tencent-coding-plan entries.

  • Provider ID: volcengine-coding-plan
  • OpenAI-compatible endpoint: https://ark.cn-beijing.volces.com/api/coding/v3 (subscription usage must go through /api/coding/*; the pay-as-you-go /api/v3 endpoint bills separately)
  • Auth: ARK_API_KEY (Ark API key from https://console.volcengine.com/ark)

Models (current plan lineup)

Model Definition
ark-code-latest Auto-routing alias for the plan's latest coding model (inline)
doubao-seed-2.0-lite ByteDance first-party Doubao Seed coding model (inline)
doubao-seed-2.1-turbo ByteDance first-party Doubao Seed coding model (inline)
deepseek-v4-pro base_model = "deepseek/deepseek-v4-pro"
deepseek-v4-flash base_model = "deepseek/deepseek-v4-flash"
glm-5.2 base_model = "zhipuai/glm-5.2"
kimi-k2.6 base_model = "moonshotai/kimi-k2.6"
kimi-k2.7-code base_model = "moonshotai/kimi-k2.7-code"
minimax-m3 base_model = "minimax/MiniMax-M3"
minimax-m2.7 base_model = "minimax/MiniMax-M2.7"

All models are priced 0 (subscription plan), matching the other coding-plan providers. Deep-thinking models declare a toggle (thinking.type = enabled|disabled) with reasoning_content interleaved output, per the Ark deep-thinking docs. Third-party models inherit limits/modalities from their lab entries; only host-specific fields (cost, reasoning_options, interleaved) are overridden.

Sources

Test plan

  • bun validate passes
  • bun test — no new failures (the 5 failing SDK snapshot tests also fail on clean dev; they need a generated artifact)
  • Maintainer verification of the two inline Doubao Seed model limits/dates against the console/docs if needed

@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Action items

  • [high] [possible mistake] models/deepseek/deepseek-v3.2.toml:7 - Check: Lab metadata must be provider-agnostic facts about the model the lab built. Why: This new shared base sets reasoning = false, but established deepseek-v3.2 catalog entries (e.g. OpenRouter, Novita, Kilo, Bedrock, Alibaba/SiliconFlow) treat the model as reasoning-capable with a thinking toggle. Encoding non-reasoning on the lab entry will poison future base_model consumers. Action: Verify against DeepSeek’s V3.2 docs and set lab reasoning to match the model (likely true). If the Coding Plan host truly has no thinking control, override reasoning = false on providers/volcengine-coding-plan/models/deepseek-v3.2.toml (or add the host’s real reasoning_options if thinking.type applies).
  • [medium] [violation] models/deepseek/deepseek-v3.2.toml:12 - Check: New lab entries used for base_model must be complete, including usable [limit] defaults. Why: [limit] only sets context and omits output. Provider models require limit.output after merge; sibling DeepSeek lab files ship both. A cost-only host of this base would fail validation. Action: Add a canonical lab limit.output (and keep the Volcengine provider override only if the plan’s max output differs).
  • [medium] [violation] providers/volcengine-coding-plan/models/deepseek-v3.2.toml:12 - Check: After base_model, provider files must be override-only—no restated identical base values. Why: context = 128_000 duplicates the lab value; only output is a real delta. Action: Drop the identical context key and keep provider-only fields (cost, and output if it differs from the completed lab default).

@alwinlin23
alwinlin23 force-pushed the volcengine-coding-plan branch from f52a14d to 908cb7a Compare August 3, 2026 02:50
@github-actions

github-actions Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Action items

  • [high] [violation] providers/volcengine-coding-plan/models/minimax-m2.7.toml:6 - Check: Reasoning options must match this host’s real controls, using lab + same-surface peers as baseline (AGENTS.md → Reasoning options). Why: First-party MiniMax, both MiniMax coding-plan providers, and other relays author reasoning_options = [] for MiniMax-M2.7 (always-on, no caller control). This PR invents { type = "toggle" }, which misrepresents API capability. Action: Change to reasoning_options = [] unless Ark Coding Plan docs/live API show a real on/off field for this model; if so, cite the exact wire path.
  • [high] [violation] providers/volcengine-coding-plan/models/kimi-k2.7-code.toml:6 - Check: Reasoning options baseline for Moonshot Kimi K2.7 Code. Why: Lab/first-party providers/moonshotai/models/kimi-k2.7-code.toml and kimi-for-coding use reasoning_options = [] (thinking always on). Authoring toggle claims a disable control those entries deny. Action: Use reasoning_options = [] unless Volcengine-specific docs prove thinking.type can turn reasoning off for kimi-k2.7-code; cite that evidence if keeping toggle.
  • [medium] [possible mistake] providers/volcengine-coding-plan/models/deepseek-v4-pro.toml:6 - Check: DeepSeek V4 baseline is toggle + effort high/max (lab providers/deepseek/). Why: Both DeepSeek V4 entries only declare toggle. Lab and several relays expose graded effort; dropping effort is only correct if Ark Coding Plan does not forward reasoning_effort (or equivalent). Action: Verify Ark Coding docs/API for DeepSeek V4 effort; if supported, add { type = "effort", values = ["high", "max"] } (and document the wire field). Apply the same fix to deepseek-v4-flash.toml.
  • [medium] [possible mistake] providers/volcengine-coding-plan/models/glm-5.2.toml:6 - Check: GLM-5.2 lab/peer reasoning controls. Why: Zhipu/Z.AI first-party and coding-plan peers use effort high/max (off via effort none/minimal mapping), not a bare toggle. This file only has toggle, which may under- or mis-describe Ark’s GLM surface. Action: Confirm whether Ark Coding Plan exposes reasoning_effort/output_config.effort for GLM-5.2, only thinking.type, or both; author the matching option set and cite the wire fields.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant