feat: add Volcengine Ark China direct API - #909
Merged
Conversation
57 tasks
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
volcengine-ark.doubao-seed-2-0-pro-260215snapshot model through Desktop, CLI, storage, headless, runtime thinking controls, and a deterministic two-stage tool-call loop.Why
Issue #860 Phase 3 requires the China Ark direct API to be a first-class provider without conflating it with Ark Coding Plan, Ark Agent Plan, or BytePlus ModelArk. Volcengine's versioned Node SDK establishes the China endpoint,
ARK_API_KEYnamespace, explicitthinkingrequest object,reasoning_contentresponse field, exact model ID, and tool-call replay contract. The current models.dev snapshot has no Volcengine/Ark provider, and no auditable Ark/modelscontract was found, so this slice deliberately uses a versioned official fallback snapshot instead of guessing discovery.Refs #860.
Scope
This PR implements only Volcengine Ark direct API access in China at
https://ark.cn-beijing.volces.com/api/v3. Ark Coding Plan, Ark Agent Plan, BytePlus global access, other providers, and Phase 7 are explicit non-goals.The provider has one registry owner and uses
modelDiscovery: { kind: 'fallback' }. It does not add a second adapter, discovery path, brand mask, notice checker, or credential store.Verification
npm run typecheck— passed for every workspace after rebuilding the rebased Core dependency artifact.npm test— passed for every workspace, including the final Desktop result of 2,419 passed and 0 failed. Conflict-sensitive coverage includes Core registry/catalog/auth, Storage exact persistence, Runtime thinking and two-stage tool-call replay, Headless env/Harbor isolation, CLI exact target resolution, Desktop brand governance, and the pre-existing Ollama local/Cloud alias contracts from fix: preserve Ollama Cloud aliases without auth #907.npm --workspace @maka/desktop run build:rendererandnode scripts/check-third-party-notices.mjs— passed; the packaged renderer contains the byte-identical notice.npm run check:stale— passed after rebuilding the renderer artifact.git diff --check origin/main...HEAD— passed.@lobehub/icons-static-svg@1.91.0at immutable Lobe Icons commite4302041fbb3039608d25f9f618bd462783b875e, pathpackages/static-svg/icons/volcengine.svg, MIT license, SHA-256f29d0bdc284b33d8664ef221add7fbf06a5b370ef92767fa33f6020c914d3d33.0eb4e812; the re-review also ran Runtime (1,474 passed, 7 skipped, 0 failed) and CLI (318 passed, 0 failed), confirming feat: add AskUserQuestion runtime and TUI #908 AskUserQuestion behavior remains intact.Two validation-order signals were resolved without product changes: the first post-rebase typecheck read a stale Core dist that predated
stepfun-ai, and the first stale check correctly detected that the renderer had not yet been rebuilt. Rebuilding the respective artifacts made both original commands pass. Neither run produced an Ark assertion failure.Local Desktop E2E was deferred to CI under the Issue #860 delivery contract; CI E2E remains a merge gate. Static screenshots are not applicable because this adds no new layout or interaction: the existing catalog/detail UI and
ProviderAssetMaskare exercised by deterministic E2E and computed-style contracts. A live Ark smoke was not run because no safe user credential was available; no secret or raw provider response was recorded.Impact
Users can configure Volcengine Ark China with the official endpoint and
ARK_API_KEY, select the exact supported snapshot model, control thinking, and complete tool-use turns across Desktop and non-Desktop hosts. Existing provider IDs, the StepFun Global provider, Ollama no-auth aliases, and plan products remain unchanged. No migration is required.Reviewer notes
Authoritative evidence:
a35803083bda10d8f55cea99c5556d35c66cc944: https://github.com/volcengine/volcengine-nodejs-sdk/tree/a35803083bda10d8f55cea99c5556d35c66cc944/service/arkruntimea0e822a0cd5d02e8ed5330a7f7a6d13279f8308b: https://github.com/volcengine/OpenViking/tree/a0e822a0cd5d02e8ed5330a7f7a6d13279f8308bReview focus: the default runtime request must send
thinking: { type: 'enabled' }; assistant replay must preservereasoning_contentandtool_calls; the tool result must retaintool_call_id; the second request must keep the exact model ID. Rollback is a sequence of five independently revertible commits.Ready for review
Verificationexplains why it is not applicable