β¨ feat(deepseek): add V4 Flash/Pro cards + reasoning_effort slider#14114
Conversation
Adds `deepseek-v4-flash` and `deepseek-v4-pro` to both the self-hosted (CNY) and LobeHub-hosted (USD) DeepSeek model banks, with 1M context, 384K max output, and `thinking` extendParam for mode toggling. Marks the V3.2 aliases `deepseek-chat` and `deepseek-reasoner` as legacy and disables them by default β per official docs they are now compatibility aliases for v4-flash's non-thinking/thinking modes and are billed at v4-flash rates, so their pricing is updated accordingly. Also flips `checkModel` + LobeHub `planCardModels` to v4-flash and teaches the deepseek model-parser to infer abilities from `v4` keyword. Ref: https://api-docs.deepseek.com/quick_start/pricing
β¦thinking mode DeepSeek V4 defaults to thinking=enabled. Per official docs, follow-up turns with tool calls MUST pass back `reasoning_content` on assistant messages or the API returns HTTP 400. Extends the existing `deepseek-reasoner` fallback to cover `deepseek-v4-*` models unless the caller explicitly disables thinking. Ref: https://api-docs.deepseek.com/guides/thinking_mode#tool-calls
Adds a new `deepseekV4ReasoningEffort` extend param (values `high` / `max`, default `high`) wired through the full stack: type union + zod schema, agent chatConfig field, resolver mapping to `reasoning_effort`, a 2-level slider component, ControlsForm + ExtendParamsSelect registration, i18n hint, and enabled on both deepseek-v4-flash and deepseek-v4-pro cards. Only `high` and `max` are meaningfully distinct per official docs β `low/medium` are silently mapped to `high`, `xhigh` to `max` β so the slider exposes just the two effective levels instead of mimicking the 4-level OpenAI effort scale. Ref: https://api-docs.deepseek.com/guides/thinking_mode#thinking-mode-toggle-and-effort-control
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
π‘ Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f25f8e6b65
βΉοΈ About Codex in GitHub
Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with π.
When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".
| description: | ||
| 'Compatibility alias for DeepSeek V4 Flash non-thinking mode. Slated for deprecation β use deepseek-v4-flash instead.', | ||
| displayName: 'DeepSeek V3.2 (Legacy alias)', | ||
| enabled: false, |
There was a problem hiding this comment.
Keep legacy DeepSeek aliases enabled
Setting these compatibility aliases to enabled: false makes them disappear from enabledAiModels, which is what capability selectors use (src/store/aiInfra/slices/aiModel/selectors.ts:44-50). As a result, existing agents still pinned to deepseek-chat/deepseek-reasoner are treated as lacking function-call support, and the Tools action is disabled (src/features/ChatInput/ActionBar/Tools/index.tsx:26-33), breaking tool-call workflows despite the stated backward-compatibility goal.
Useful? React with πΒ / π.
There was a problem hiding this comment.
Good catch, taken. Kept enabled: true on both aliases and retained only the legacy: true marker + displayName suffix so tool-call capability continues to resolve for existing agents via enabledAiModels. Fixed in afe7eed.
β¦xisting agents The previous commit disabled `deepseek-chat` and `deepseek-reasoner` via `enabled: false`, which filters them out of `enabledAiModels` and breaks capability selectors. Agents still pinned to these IDs were treated as lacking function-call support, disabling the Tools action in ChatInput. Keep `legacy: true` so future UI surfaces can surface deprecation without breaking backward compatibility. Ref: #14114 (comment)
Codecov Reportβ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## canary #14114 +/- ##
=========================================
Coverage 67.33% 67.33%
=========================================
Files 2155 2156 +1
Lines 184805 184836 +31
Branches 22647 18308 -4339
=========================================
+ Hits 124431 124463 +32
+ Misses 60249 60248 -1
Partials 125 125
Flags with carried forward coverage won't be shown. Click here to find out more.
π New features to boost your workflow:
|
β¦h reality The `deepseek-chat` and `deepseek-reasoner` aliases hit v4-flash on the backend, but our model bank still advertised V3.2-era capacity (64Kβ128K context, 8Kβ64K output), artificially capping what the UI allowed users on these IDs to send and receive. - Bump `contextWindowTokens` to 1,000,000 and `maxOutput` to 384,000 to match the actual endpoint capability. - Rename displayName from "DeepSeek V3.2 (Legacy alias)" to "DeepSeek V4 Flash Non-thinking (legacy alias)" / "DeepSeek V4 Flash Thinking (legacy alias)" so the model picker names the real backing model. No `settings.extendParams` added β aliases pin a fixed thinking mode upstream, so exposing thinking / effort sliders would be misleading.
Rename legacy alias displayName to retain the original "DeepSeek V3.2" prefix users recognize, followed by a routing hint: "DeepSeek V3.2 (routes to V4 Flash)" "DeepSeek V3.2 Thinking (routes to V4 Flash)" This way existing agents still show the name they were created with, while the suffix makes the actual backing model explicit.
95bb8f4 to
c456c92
Compare
# π LobeHub v2.1.53 (20260427) **Release Date:** April 27, 2026 **Since v2.1.52:** 194 merged PRs Β· 17 contributors > Introduce Heterogeneous Agent β Claude Code and Codex run as first-class desktop runtimes, paired with a new Agent Signal package, sharper desktop UX, and a wave of flagship model additions. --- ## β¨ Highlights - **Introduce Heterogeneous Agent** β Claude Code and Codex run as first-class desktop agents: subagent rendering, partial-message streaming, multi-turn resume, terminal error surfacing, rich tool inspectors, and runtime polish. (#14162, #13754, #14067, #14001, #13970, #13942) - **Screen capture & Quick Chat tray** β New desktop screen capture overlay (macOS permission-gated) with Quick Chat tray and upload pipeline improvements; chat input auto-focuses on overlay mount. (#13818, #14097, #14105) - **Desktop topic & tab UX** β Dedicated topic popup window with cross-window sync, Cmd+W/Cmd+T tab shortcuts, TabBar polish, recent working directories expanded to 20, and human approval notifications. (#13957, #13983, #13972, #14036, #14092) - **Git workflow built-in** β One-click pull/push from the branch chip, ahead/behind badge, and submodule/worktree repo detection. (#14041, #13980, #13978) - **Agent Signal package** β New `@lobechat/agent-signal` runtime for dynamic memory feedback signals, with OTel metrics and self-iteration in Lab. (#14157, #14170, #14159, #14169, #14187) - **New models** β Claude Opus 4.7 with `xhigh` effort tier, GPT-5.5, DeepSeek V4 Flash/Pro with reasoning slider, Kimi K2.6, MiMo-V2.5/Pro, gpt-image-2, Qwen3.6 Flash/Plus, and Pixverse-c1. (#13903, #14147, #14114, #14004, #14089, #14039, #13923) - **New providers** β OpenCode Zen, OpenCode Go, and Azure OpenAI Router runtime. (#13943, #14064, #13823) - **Mobile settings overhaul** β Full settings menu and responsive profile layout for mobile. (#14019) --- ## ποΈ Heterogeneous Agent - Claude Code runtime, working-directory awareness, and sidebar polish. (#13970) - CC subagent rendering with persistent streamed text; parallel-tool orphan fix. (#14001, #13968, #14024) - Per-step usage persisted to each step assistant message. (#13964) - Per-phase workflow expand defaults; full-expand toggle with three-level expansion. (#14171, #13906) - Hetero-mode actions bar; tool inspector polish. (#13963, #14034, #14030) - Codex desktop integration with rich tool rendering and devtools preview. (#14067, #14100) - Codex terminal error surfacing and CLI output tracing. (#14166) - Tighten `isCanUseVision` default and add aggregator fallback. (#14172) - Persist `ccSessionId` in topic metadata for CC multi-turn resume. (#13902) - CC account card, topic filter, and integration polish. (#13955, #13942, #13950) - Token-level deltas streamed via `--include-partial-messages`. (#13929) --- ## π§ Agent Signal & Self-Iteration - New `@lobechat/agent-signal` package with dynamic feedback signals. (#14157) - AgentSignalRuntime wired through agent-tracing and observability-otel metrics. (#14170, #14159) - Self-iteration feature flag added to Lab; front-side flag check. (#14169, #14186) - Signal policy for receiving memory feedback dynamically. (#14187) --- ## π¬ Conversation - Queue follow-up sends during running CC turns. (#14179) - Persist per-topic chat scroll position; pin user message + fold long messages. (#14191, #14056) - Inline resend when editing last user message. (#14080) - Disable first-block markdown streaming to prevent flicker. (#14193, #13904) - Prevent Markdown stream replay when vlist remounts streaming items. (#14086) - Stop repinning after manual scroll; unify scroll-to-user + spacer hooks. (#14099, #14132) --- ## π± Platforms & Integrations ### Desktop / Electron - Screen capture overlay, Quick Chat tray, and upload pipeline improvements. (#13818) - macOS permission gate for screen capture; auto-focus chat panel input. (#14097, #14105) - Dedicated topic popup window with cross-window sync. (#13957) - TabBar polish: `+` button for new topic, dark theme blend, close icon by default. (#13972, #14203, #13973) - Recent working directories expanded from 5 to 20; submodule/worktree repo detection. (#14036, #13978) - Cmd+W / Cmd+T tab shortcuts and global shortcut consolidation. (#13983, #13880) - Linux icon configuration; human approval desktop notifications. (#14042, #14092) ### Git Workflow - One-click pull/push from branch chip; ahead/behind badge with refactored GitCtr. (#14041, #13980) ### Mobile - Full settings menu and responsive profile layout. (#14019) - Agent route added to mobile router; mobile agent topic route registered. (#14103, #14158) - Session list skeleton row layout corrected. (#14040) ### Bot / Messaging - DM strategy support; bot emoji and markdown render optimization. (#14201, #14091, #14140) - Slack webhook fix; bot platform setup guide reference. (#14052, #14121) --- ## π€ Models & Providers ### New models - **Claude Opus 4.7** with `xhigh` effort tier; strip temperature/top_p. (#13903, #13909) - **GPT-5.5**. (#14147) - **DeepSeek V4** Flash/Pro cards with reasoning slider; cache-hit and Pro discount pricing. (#14114, #14209, #14196, #14131) - **Kimi K2.6** model with LobeHub-hosted card. (#14004, #14006) - **MiMo-V2.5 / V2.5-Pro**. (#14089) - **gpt-image-2**, **Qwen3.6 Flash/Plus**, **Pixverse-c1**. (#14039, #13923) ### New providers - **OpenCode Zen** and **OpenCode Go** with env-var support. (#13943, #14064) - **Azure OpenAI Router** runtime support. (#13823) - Model alias mapping for image and video runtimes. (#13896) - Seedance video models migrated to Dreamina. (#14144) ### Runtime reliability - Sanitize invalid tool_call arguments to unbreak strict providers. (#14033) - Tolerate null `function.name` in streaming tool_call deltas. (#14139) - Preserve Gemini 3 `thoughtSignature` in `call_tools_batch` normalization. (#14032) - Downgrade `image_url` parts when target model lacks vision. (#14029) - Preserve Cloudflare provider error context. (#14136) - Use `safety_identifier` for OpenAI Responses API. (#14148) - Unwrap underlying PG error in `formatErrorEventData`. (#14038) --- ## π₯οΈ User Experience - **Onboarding** β Preset agent naming suggestions, structured hunk ops for `updateDocument`, persona analytics snapshot, footer promotion pipeline, wrap-up button. (#13931, #13989, #13930, #13853, #13934) - **Document workflow** β Agent documents promoted as primary workspace panel; history management and compare workflow; web-crawl docs associated with agent documents. (#13924, #13725, #13893) - **cmdk** β Agent identity surfaced on topic search results; topic/message search scoped to current agent. (#14204, #13960) - **Floating chat panel** and workspace improvements. (#13887) - **Topic completion status** with dropdown action and filter. (#14005) --- ## π§ Tooling - Redis-backed feature flag provider for runtime config. (#14098) - Vite upgraded to 8.0.0 with Rolldown strict execution order. (#12720, #14058) - `@lobechat/model-bank` automated npm release with provenance. (#14015, #14017, #14018) - Skill activation fallback when `activateTools` cannot find identifier. (#14010) - Cron tool: timezone and existing jobs injected into system prompt; clarified `lobe-gtd` and `lobe-cron` descriptions. (#14012, #14013) --- ## π Security & Reliability - **Security:** uuid bumped to v14 (advisory). (#14083) - **Security:** validate avatar URL and scope old-avatar deletion to owner. (#13982) - **Security:** clear OIDC sessions on better-auth signout; return 401 (not 500) for expired OIDC JWT. (#13916, #14014) - **Reliability:** scope pending-approval check to current assistant turn. (#14182) - **Reliability:** sanitize heterogeneous-agent attachment cache filenames. (#13937) - **Reliability:** reduce subagent task status error noise. (#14026) --- ## π₯ Contributors Huge thanks to **17 contributors** who shipped **194 merged PRs** this week. @hardy Β· @shaun0927 Β· @hezhijie0327 Β· @sxjeru Β· @arvinxx Β· @Innei Β· @tjx666 Β· @lijian Β· @neko Β· @rdmclin2 Β· @AmAzing129 Β· @sudongyuer Β· @CanisMinor Β· @rivertwilight Plus @lobehubbot and renovate[bot] for maintenance. --- **Full Changelog**: v2.1.52...v2.1.53
π» Change Type
π Related Issue
N/A β model rollout follow-up for DeepSeek V4.
π Description of Change
Adds support for DeepSeek V4 (Flash + Pro) across the model bank, runtime, and UI.
Model cards (
packages/model-bank)deepseek-v4-flashanddeepseek-v4-proentries in both self-hosted (CNY) and LobeHub-hosted (USD) banks.thinkingextendParam.deepseek-chatanddeepseek-reasonerare now compatibility aliases for v4-flash's non-thinking / thinking modes and are slated for deprecation. Markedlegacy: true, disabled by default, and repriced to match v4-flash's actual endpoint rates.planCardModelsandcheckModelnow point todeepseek-v4-flash.modelParsekeyword list recognizesv4for automatic ability inference.Runtime (
packages/model-runtime)reasoning_contentfallback fromdeepseek-reasoneronly to cover alldeepseek-v4-*models unlessthinking.type === 'disabled'. Per official docs, follow-up turns with tool calls in thinking mode return HTTP 400 without this payback β this patch prevents the regression for V4.Reasoning effort UI
deepseekV4ReasoningEffortextend param (2 levels:high/max, defaulthigh) wired throughExtendParamsType+ zod schema + agentchatConfig+ resolver mapping toreasoning_effort.DeepseekV4ReasoningEffortSliderregistered in ControlsForm and ExtendParamsSelect with i18n hint.high/maxare meaningfully distinct per official docs (low/mediumβhigh,xhighβmax), so the slider exposes just the two effective levels.Reference: https://api-docs.deepseek.com/quick_start/pricing Β· https://api-docs.deepseek.com/guides/thinking_mode
π§ͺ How to Test
DeepSeek V4 FlashorDeepSeek V4 Profrom the model list.Thinking(OFF/Auto/ON) andReasoning Effort(high/max) sliders.reasoning_contentis not forced and the API accepts it.πΈ Screenshots / Videos
N/A β attach before/after of the Model Config panel when reviewing.
π Additional Information
Breaking changes for downstream users
deepseek-chat/deepseek-reasonercontinue to work. The model IDs stay resolvable; they are hidden from the default model picker viaenabled: false+legacy: true.Runtime behavior
shouldForceAssistantReasoningContentnow also triggers fordeepseek-v4-*unless the caller explicitly disables thinking. API silently ignoresreasoning_contentoutside thinking mode, so this is a conservative expansion.