Badakonpro
dsh-llm-volcengine
为 DeepSeek Harness (DSH) 接入火山方舟 Agent Plan 与 Coding Plan 的插件,思考强度(low/medium/high/xhigh/max)兼容性已实测验证
- Stars
- 1
- Language
- JavaScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-llm-volcengine
Volcengine Ark Agent Plan and Coding Plan providers for DeepSeek Harness (DSH), with verified thinking-effort compatibility.
A DSH profile bundle that registers two LLM provider routes through a self-contained pi-ai-backed LlmAdapter, so model catalogs and compatibility switches reach pi-ai without depending on the dsh-llm-pi-ai settings compat schema. Thinking levels low / medium / high / xhigh / max are exposed where the endpoint honors them.
Why
A hand-declared Volcengine Ark route in settings.yaml runs into several gotchas that this bundle resolves once and for all:
| Gotcha | What breaks | This bundle |
|---|---|---|
Agent Plan must be reached over openai-responses at /api/plan/v3 | The Anthropic-style /api/plan path does not expose a thinking-effort control | Uses the community-verified Responses path; reasoning.effort maps natively |
Coding Plan gateway rejects the OpenAI developer role (HTTP 400) | Every request with a system prompt fails once reasoning is enabled | compat.supportsDeveloperRole: false on every Coding Plan model |
Coding Plan gateway rejects store and needs max_tokens (not max_completion_tokens) | Mis-shaped requests are 400'd | compat.supportsStore: false, maxTokensField: "max_tokens" |
Per-model maxTokens differs (DeepSeek 384000, GLM 128000, Kimi 32000, …) | A single cap breaks some models or underuses others | Each model carries its verified cap |
The gateway's OutofContextError wording is not in pi-ai's overflow detection | Long conversations crash instead of auto-compacting | (downstream — see release notes) |
Install
From the root of a DSH profile (e.g. ~/.dsh/profiles/web):
dsh plugin --profile web add dsh-llm-volcengine
Then restart DSH (or reload the profile) so the new bundle layer is composed. The two providers appear in the model selectors as:
volcengine-plan/<model>volcengine-coding/<model>
Credentials
The bundle resolves an API key by trying each candidate credential reference (left to right) through the DSH credential service, then Ambient environment:
| Route | Tried order (default) |
|---|---|
volcengine-plan | ARK_AGENT_PLAN_API_KEY, VOLCENGINE_ARK_PLAN_API_KEY, ARK_CODE_API_KEY |
volcengine-coding | ARK_CODING_PLAN_API_KEY, VOLCENGINE_CODING_API_KEY, HUOSHAN_API_KEY |
Store a key through the web Models page (it writes the DSH credential store) or export the env var. If you already have ARK_CODE_API_KEY / HUOSHAN_API_KEY configured, the bundles pick them up as fallbacks.
Override the first tried reference per route through the bundle config in cordis.patch.yml:
- id: llm-volcengine
name: dsh-llm-volcengine
config:
agentPlanApiKeyEnv: ARK_AGENT_PLAN_API_KEY
codingPlanApiKeyEnv: ARK_CODING_PLAN_API_KEY
defaultReasoning: high
defaultReasoning is one of off | minimal | low | medium | high | xhigh | max (default: high).
Provider routes
volcengine-plan — Volcengine Ark Agent Plan
- Endpoint:
https://ark.cn-beijing.volces.com/api/plan/v3 - Protocol:
openai-responsesfor most models;openai-completionsfor Kimi K2.6 / K2.7 Code (mixed-api provider) reasoning.effortmaps to the selected thinking level
| Model ID | Context | Max tokens | Input | Thinking tiers |
|---|---|---|---|---|
deepseek-v4-pro | 1.0M | 384000 | text | low·medium·high·xhigh·max |
deepseek-v4-flash | 1.0M | 384000 | text | low·medium·high·xhigh·max |
glm-5.2 | 1.0M | 128000 | text | low·medium·high·xhigh·max |
glm-5.3 | 1.0M | 128000 | text | low·medium·high·xhigh·max |
kimi-k3 | 1.0M | 128000 | text, image | low·high·max |
minimax-m2.7 | 200k | 128000 | text | low·medium·high·xhigh·max |
minimax-m3 | 512k | 128000 | text, image | low·medium·high·xhigh·max |
doubao-seed-2.0-mini | 256k | 128000 | text, image | low·medium·high·xhigh·max |
doubao-seed-2.0-lite | 256k | 128000 | text, image | low·medium·high·xhigh·max |
doubao-seed-2.0-code | 256k | 128000 | text, image | low·medium·high·xhigh·max |
doubao-seed-2.0-pro | 256k | 128000 | text, image | low·medium·high·xhigh·max |
kimi-k2.6 | 256k | 32000 | text, image | off·high |
kimi-k2.7-code | 256k | 32000 | text, image | high |
volcengine-coding — Volcengine Ark Coding Plan
- Endpoint:
https://ark.cn-beijing.volces.com/api/coding/v3 - Protocol:
openai-completionswithsupportsDeveloperRole: false,supportsStore: false,supportsStrictMode: false,maxTokensField: "max_tokens" - DeepSeek/GLM accept
reasoning_effort; Kimi uses theqwenenable_thinkingtoggle; MiniMax/Doubao-seed-code expose no thinking control (reasoning is auto-captured)
| Model ID | Context | Max tokens | Input | Thinking tiers |
|---|---|---|---|---|
deepseek-v4-pro | 1.0M | 384000 | text | low·medium·high·xhigh·max |
deepseek-v4-flash | 1.0M | 384000 | text | low·medium·high·xhigh·max |
glm-5.2 | 1.0M | 128000 | text | low·medium·high·xhigh·max |
glm-5.3 | 1.0M | 128000 | text | low·medium·high·xhigh·max |
kimi-k2.6 | 256k | 32000 | text, image | off·high |
kimi-k2.7-code | 256k | 32000 | text, image | high |
minimax-m2.7 | 200k | 128000 | text | — |
minimax-m3 | 512k | 128000 | text, image | — |
doubao-seed-code | 256k | 32000 | text, image | — |
doubao-seed-2.0-code | 256k | 65536 | text, image | low·medium·high·xhigh·max |
doubao-seed-2.0-pro | 256k | 128000 | text, image | low·medium·high·xhigh·max |
doubao-seed-2.0-lite | 256k | 128000 | text, image | low·medium·high·xhigh·max |
How it works
The bundle inserts a single plugin row (id: llm-volcengine). On apply it:
- Builds two pi-ai
Providerobjects directly withcreateProvider, passing the fullcompatblock on eachModel. Because the models are constructed in code (not throughdsh-llm-pi-aisettings resolution), the compat fields the Coding Plan gateway requires reach pi-ai regardless of the installeddsh-llm-pi-aicompat schema. - Wraps them in the exported
PiAiAdapterfrom@deepseek-ai/dsh-llm-pi-ai, which already implements the harnessLlmAdaptercontract (stream/resolveModel/listModels) and thinking-level clamping against each model'sthinkingLevelMap. - Registers the adapter for both routes with
ctx.llm.registerAdapter, so the providers join the model selectors and request routing like any built-in route.
Agent Plan models share a mixed-api provider (one createProvider with an api map) so Kimi K2.6/K2.7 Code dispatch to openai-completions while the rest use openai-responses.
Acknowledgements
Model catalogs, max output tokens, and compatibility switches are sourced from the community-verified Volcengine Ark provider extensions for pi:
pi-provider-volcengine-agent-plan— the Agent Plan Responses path, tier gating, and Kimi routing decisions.pi-provider-volcengine-codingplan— the Coding Plan compat switches and model caps.pi-provider-volcengine-ark— per-model thinking formats for the coding endpoint.
This bundle adapts those compat findings to the DeepSeek Harness LLM seam.
License
MIT