ui-status-label

39Stars3Forks5Issues0Watchers

在 dsh Web 聊天视图中自定义智能体运行时的"思考中"状态文案,无需重启即时生效。

Language
TypeScript
License
MIT
Branch
master
dshdsh-plugin

Install

$ dsh plugin --profile web add github:alingalingling/ui-status-label

Run the command above in your terminal to install this plugin via the dsh CLI. You can switch Profile in the top-right corner. New to dsh? Read the beginner tutorial

一句话定位

把 dsh Web 聊天视图里智能体运行时的"思考中"提示文案(官方硬编码的 Deep diving...)替换成你自己输入的文字,输入即生效,无需重启或保存。

核心能力

  • 在 General(通用)设置区新增一行文本输入,允许自定义聊天视图运行状态栏的文案
  • 通过浏览器 DOM 注入作为兜底路径,在官方未提供扩展点的版本上直接改写硬编码文字
  • 提供可选的 conversationStatus 服务,上游合入扩展点后聊天视图直接渲染配置文案,DOM 注入自动让位
  • 把设置值持久化到 $DSH_HOME/settings.yaml,跟随同一用户 home 跨 Web 端口生效
  • 支持中英文界面文案(settings.status.titlesettings.status.description 字典)

技术实现

  • 语言: TypeScript
  • 关键依赖: @deepseek-ai/dsh-settings(设置命名空间持久化)、@deepseek-ai/schemastery(节点端 schema 校验)、react(设置行组件)、@deepseek-ai/cordis(插件运行时)
  • 架构模式: 插件分两半边注入——node 半边(src/index.ts)通过 cordis.patch.yml 注册到 Web roster,向 settings 服务注册持久的 ui-status-label 命名空间;client 半边(src/client/index.ts)由 package.json#dsh.client 自动发现,注册设置行、提供 conversationStatus 服务、启动 DOM 注入器
  • 入口文件: src/index.ts(node 半边)+ src/client/index.ts(浏览器半边)

适用场景

想让 dsh Web 聊天视图里的"思考中"提示更有个性——比如改成"努力干活中""小鱼正在游泳"——而不用每次都盯着英文 Deep diving...。也适合需要把鲸鱼娘品牌文案嵌入状态栏的运营或本地化场景;对模型回复内容无任何影响。

前置依赖与兼容性

依赖最低版本说明
DSH>=0.0.1-rc.1 <0.2.0(peer 依赖声明)官方正式版含 0.1.0-rc.6 可直接生效;DSH 会自动注入 cordis 与 dsh-client-* 等 peer 依赖
Node未声明源码未指定 Node 最低版本
平台跨平台(macOS / Windows / Linux)仅依赖浏览器交互面,无原生模块
原生模块全部依赖均为 JS/TS 包

安装方式

dsh plugin --profile web add github:alingalingling/ui-status-label

配置项

本插件无需额外配置——所有用户可见的设置项都在 dsh Web 的 General 设置区内通过 UI 调整。

配置类型说明默认值
ui-status-label.statusLabelstring聊天视图智能体运行时显示的状态文案小难梁在0721(输入框最大长度 40 字符,清空输入框回退到默认值)

常见问题

Q: 安装后需要重启 dsh Web 吗?

A: 需要。当前运行中的 GUI 不会热加载新插件 bundle,装完重启 dsh web 进程、刷新页面才能在设置里看到「运行状态文案」入口。

Q: 默认文案是什么?

A: 默认文案是「小难梁在0721」。设置行清空后也会回到这个默认值——空白输入框永远不会渲染为空状态行。

Q: 输入框有长度限制吗?

A: 有上限 40 字符。这一限制来自设置行的 maxLength 属性,用来避免聊天视图布局被超长文案撑开。

Q: 修改后还需要点保存按钮吗?

A: 不需要。输入即生效——修改会立即同步到聊天视图的运行状态栏,无需手动保存。

Q: 这个插件会改变模型回复内容吗?

A: 不会。插件只替换浏览器渲染层显示的状态文案,不触及任何模型请求、推理或回复内容。

Q: 用 git 安装时被 pnpm 阻止 prepare 脚本怎么办?

A: 仓库已把预构建的 lib/(含类型声明)随源码一起提交,git 安装即使跳过 prepare 也能直接用产物;只有在你想从源码重新构建时,才需要把包加入 pnpm-workspace.yamlallowBuilds

Q: 已经内置了该插件的定制 dsh 构建能再装一次吗?

A: 不能。会重复注册 ui-status-label 设置命名空间;只有官方未内置的发布版可以正常安装。

Q: 怎么卸载?

A: 运行 dsh plugin --profile web remove dsh-ui-status-label,然后重启进程即可。

上手难度

入门 — 装完改一行文本就生效,没有任何编程或配置操作,零风险可逆。

已知问题与限制

  • DOM 注入路径是字符串级别匹配官方硬编码的 Deep diving...:如果上游未来把那段文字改成别的字符串,DOM 兜底会自动失效(届时 conversationStatus 服务路径会接管)
  • 必须在 dsh Web profile 下安装,headless 或 TUI profile 装它没有意义
  • 与「内置了本插件的定制 dsh 构建」(如本地构建的 deepseek-harness)会重复注册 settings 命名空间,这种场景不要重复安装
  • 输入文案只影响 UI 渲染层,无法基于不同会话/不同模型区分文案
ui-status-label — DeepSeek Harness Plugin | deepseek-plugin.org