DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Activity Line — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
A

dsh-activity-line

Activity Line

DeepSeek Harness 网页插件:编辑框下方显示实时活动状态,说明当前轮次实际在做什么(工具运行中 / 等待你的操作 / 正在重试 / 模型思考中)。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:NeoWangKing/dsh-activity-line#853000db17512ddfdee34abb0b4a6aaa7961862e
README兼容性版本

兼容性与来源证明

Activity Line 以 dsh-activity-line 发布,当前版本为 1.0.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/27

版本

1.0.0stable
2026/9/27

相关插件

正在加载相关插件…

最新版
1.0.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/27
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Ab Chartdsh-ab-chart带有绘制其调用的浏览器卡片的图表渲染工具,封装在一个可发布的插件包中Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义

README

dsh-activity-line

English · 中文

Source of truth: this plugin lives in NeoWangKing/neo-dsh. https://github.com/NeoWangKing/dsh-activity-line is a mirror published for discovery and for dsh plugin add github:…; issues and PRs belong on the monorepo. scripts/mirror-plugin.sh keeps the mirror in step.

A DeepSeek Harness web plugin: one line under the composer that says what the running turn is actually doing.

Install (into your own dsh)

# from npm
dsh plugin --profile web add dsh-activity-line

# from a local checkout
dsh plugin --profile web add link:/path/to/activity-line

# from git
dsh plugin --profile web add github:<user>/<repo>

The plugin is installed into the profile, not an agent preset, so a preset manager cannot overwrite it.

Restart the host afterwards — the host process caches the assembled plugin bundles, so reloading the page is not enough:

  • desktop app: the ⟳ button (or restart the app)
  • CLI: restart the dsh web process

Uninstall:

dsh plugin --profile web remove dsh-activity-line

Requirements: dsh ≥ 0.1.5 on the web profile (it needs the conversation.composer.dock slot and the useSession / useChat / useProjection session kit). The plugin has no runtime dependencies of its own and writes no configuration; all you get is the line.

Why it exists

The shipped turn status is the static label "Deep diving..." hardcoded in ChatView, with a clock that only appears after 15 seconds. So these look identical:

  • the model is thinking;
  • a bash command has been running for three minutes;
  • an approval is waiting for you;
  • a failed request is being retried.

Measured in real sessions on this machine: single steps of 193 s / 203 s were each one bash call; one 418.6 s step produced no output at all and was cancelled by hand; some sessions carry five llm/retry events. This line names the phase.

States (first match wins, top to bottom)

ShownMeaningSource
♻️ 请求重试中(第 N 次)a retry is in flight — the honest explanation for a long silenceuseProjection('llmRetry')
🛠 bash: pnpm run build 运行中 1m23sa tool is running (oldest call wins; 另有 N 个 when several run, and the clock is that tool's own)chat snapshot legacy.runningCalls
✍️ 输出中 42sthe assistant is streamingchat snapshot legacy.partial
🧠 等待模型响应 42sthe turn runs but nothing has arrived yetlegacy.turnTimings + a 1 s clock
(nothing)no turn is running—

The texts are Chinese today; the line registers a locale namespace, so the labels follow the app's language as the dictionary grows.

Data sources (subscriptions from the standard session kit, never DOM scraping)

The slot hands over point-in-time props, so every value has to be subscribed:

SourceWhat it gives
useSessionsession status snapshot: running, sessionId
useChatthe chat snapshot's legacy slice: runningCalls (name, raw arguments, logged time), partial, turnTimings; a build without useChat falls back to useConversation(c => c.views.get('chat'))
useProjection('llmRetry')the retry projection { [provider|policy]: { retry, retryId } }, cleared on every step/start and turn/end; without that projection it falls back to sessions.binding(id).session.projections.faceOf('llmRetry')

Placement: conversation.composer.dock — the band under the composer card, the same list slot the shipped "N turns M steps · tok/s" stats line occupies. This is a second entry (order: 5); nothing is replaced.

Tests

node test/activity.test.mjs

Covers phase priority (retry > tool > stream > wait), multi-tool selection and counting, the tool's own clock, the degraded case with no chat snapshot, duration formatting, argument previews (first line / collapsed whitespace / truncation / non-JSON / arrays), the projection face shapes, and both turn-anchor sources.

Files

FileRole
index.jshost half: a no-op placeholder (this is a client-only plugin)
client.jsclient half: reads the snapshots and the projection, renders the line
cordis.patch.ymlbundle patch: inserts this plugin's row
test/activity.test.mjsunit tests for the pure helpers above