@iroha1145/dsh-modern-ui

中文文档
0.1.5发布于 2026/11/01MITTypeScriptES Module构建来源已验证

Modern UI browser extension for the unmodified official DSH release

原始使用文档
文档目录7 节
  1. Install
  2. Model-visible behavior
  3. Switch back to the official UI
  4. Official Desktop
  5. Compatibility
  6. Known limitations
  7. License

DSH Modern UI

A modern Web interface for the official, unmodified DeepSeek Harness (DSH): redesigned chat flow, reasoning folds, tool cards, model selection, themes and eight interface languages.

Install

dsh plugin --profile web add @iroha1145/dsh-modern-ui

Then refresh the browser. dsh plugin forwards to pnpm, so pnpm must be on PATH. If you have never started the web profile, run dsh web once first.

Model-visible behavior

Modern UI does not change the model prompt by default. It renders openui-lang (OpenUI) and followups code fences a model already wrote. Turning on Settings → General → Answer visual components appends about 30 KB (roughly 7,000 tokens) of presentation guidance to the system prompt. Deliver results in stages, a separate switch on the same page, appends about 3 KB of guidance that has the model hand over each finished part of a multi-stage answer before it researches the next. The same switches live in the entry config:

presentation:
  prompt: false    # model-visible guidance
  progressive: false  # model-visible progressive result delivery guidance
  openui: true     # render openui-lang fences as OpenUI components
  followups: true  # render followups fences as suggestion chips
jev:               # optional TypeSafe Jev presentation advice tool
  enabled: true                    # offered only with the presentation prompt on and a key present
  credential: TYPESAFE_API_KEY     # environment-variable name the DSH credentials service resolves
  model: jev-latest
  endpoint: https://api.typesafe.ai/v1/systemone
  timeout: 4000                    # ms; past it the tool answers that no suggestion is available

Settings → General has a "Jev presentation advice" row under the presentation switch: it saves the key through the official credentials Remote (credentials/set) into the DSH credentials file under the jev.credential name, shows only whether a key is configured and from which layer, and offers the enabled switch once a key exists. It refuses a key with spaces, line breaks or non-ASCII characters, which no request header could carry. A Host without the credentials Remote shows no row.

With a usable key, the main agent of each main session gets a jev_presentation_advice tool; a key from the environment or a .env file that no request header could carry keeps the tool hidden and logs one warning without the key. It is registered in that agent's own tool scope and follows presentation.prompt, jev.enabled and the key as they change, so it appears and disappears without a restart; subagents join the preset composition rather than the parent's scope and never see it. Nothing calls Jev on its own. When the model calls the tool, the plugin sends the user messages admitted in the turn being processed (at most four, 6,000 characters each) and the model's content_summary, a description of the structure of the planned answer of at most 600 characters (a longer one is refused, not cut), to TypeSafe. Jev is asked once per turn: the same summary again repeats the reply, and a different summary after that gets no new judgement. The reply is an ordinary tool result: "plain text" reads as no additional suggestion and any other choice as a partial candidate the model may ignore, replace or combine; the Tool row shows the title "Ask Jev about presentation" and the outcome (for example "Possible: table") from the result metadata, while the confidence stays in that metadata and is shown neither to the model nor on the card. The tool description says calling it is not a prerequisite for components, and no prompt asks the model to call it. A missing key, an error, an invalid answer, a timeout or a cancelled turn returns "no suggestion available" and never fails a turn.

Switch back to the official UI

Deselect the whole @iroha1145/dsh-modern-ui bundle in Plugin Management and refresh, or remove the plugin:

dsh plugin --profile web remove @iroha1145/dsh-modern-ui

Deselecting only the inner modern-ui entry is not enough: the bundle disables seven official UI owners and returns them only when the bundle itself is off.

Official Desktop

The DeepSeek Harness Desktop app renders the same Web Client over its own embedded host and keeps plugins in the reserved desktop profile:

  1. Open Desktop once, then quit it completely so it initializes the profile.
  2. Install with Desktop's own dsh command (menu App → Manage dsh command… puts it on the terminal PATH; on Windows it is %LOCALAPPDATA%\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd). The npm dsh refuses --profile desktop.
    dsh plugin --profile desktop add @iroha1145/dsh-modern-ui
    
  3. Quit and reopen Desktop. Desktop has no page reload, so switching the bundle means restarting the app.

To switch back, run dsh plugin --profile desktop remove @iroha1145/dsh-modern-ui with the same command and restart Desktop. While Modern UI is selected, Desktop's first-run onboarding is recorded as skipped because its last step writes the official Chat settings this bundle replaces; adjust work details and usage display under Settings → General. Native bridges (dragging files out to the OS, multiple windows, Open In…, the native directory picker) are not verified yet; see the Desktop acceptance record.

Compatibility

Supported host versions are declared in dsh.compatibleHost and listed in the compatibility matrix.

Known limitations

  • Changing the bundle selection requires a browser refresh (an app restart in Desktop).
  • Git-hosted installs (dsh plugin add github:...) are not supported; use this npm package or the modern-ui.tgz attached to each GitHub Release.
  • Session-level web switches (/web on|off) are retired; web tools follow the official plugin configuration.

License

MIT. Portions derived from DeepSeek Harness and other projects keep their notices in THIRD_PARTY_NOTICES.md and licenses/.

版本与发布记录

@iroha1145/dsh-modern-ui 共发布 7 个版本,首次发布于 2026/10/30;过去 12 个月发布了 7 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.5latest2026/11/012 天前
0.1.42026/11/012 天前
0.1.32026/11/012 天前
0.1.22026/11/012 天前
0.1.12026/11/012 天前
0.1.02026/10/303 天前

关于 @iroha1145/dsh-modern-ui 的常见问题

@iroha1145/dsh-modern-ui 是什么?

现代UI浏览器扩展为未经修改的官方DSH发布

如何安装 @iroha1145/dsh-modern-ui?

在项目目录运行 npm install @iroha1145/dsh-modern-ui,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react(^18.3.0)、react-dom(^18.3.0)、@deepseek-ai/cordis(^4.0.5)、@deepseek-ai/dsh-llm(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-web(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-brand(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-scope(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-tools(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-session(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-timeout(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/schemastery(^3.18.5)、@deepseek-ai/dsh-app-boot(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-attachment(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-http-proxy(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-subprocess(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-credentials(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-util-values(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-atomic-write(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-mcp-resources(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-plugin-market(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-system-prompt(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-ui-chat(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-host-webserver(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-plugin-manager(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-ui-slots(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-ui-theme(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-connection(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-ui-settings(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-ui-subagent(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-launch-environment(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-session-persistence(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-ui-attachment(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-ui-conversation(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-experimental-translator(>=0.2.1-rc.2 <0.3.0-0)、@deepseek-ai/dsh-client-ui-model-selection(>=0.2.1-rc.2 <0.3.0-0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。它还提供命令行工具 modern-ui-data,可以用 npx modern-ui-data 直接运行。

@iroha1145/dsh-modern-ui 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@iroha1145/dsh-modern-ui 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@iroha1145/dsh-modern-ui 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=24.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@iroha1145/dsh-modern-ui 可以商用吗?

@iroha1145/dsh-modern-ui 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@iroha1145/dsh-modern-ui 还在维护吗?

最新版本 0.1.5 发布于 2026/11/01(2 天前);至今共发布 7 个版本,其中过去 12 个月发布了 7 个;首次发布于 2026/10/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。