DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
P

dsh-plugin-log-bridge

Plugin Log Bridge

将 DeepSeek Harness 自身的运行时警告和错误记录到 stderr,以便启动后失败时能够说明原因。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:desanv01/dsh-plugin-log-bridge#05076b48611e6104efdc677a88b098dfe533c6be
README兼容性版本

兼容性与来源证明

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

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/20

版本

1.0.0stable
2026/10/20

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Experimental Inspector@deepseek-ai/dsh-experimental-inspector用于 Host 调试和 Client Runtime 检查的实验性跨 realm CDP hub

README

dsh-plugin-log-bridge

A DeepSeek Harness plugin that writes the harness's own runtime warnings and errors to stderr, so a boot that fails after startup can say why.

The harness keeps its log records in an in-memory ring and exports them nowhere. An error that happens after startup — a session that cannot activate, a preset that fails to mount — leaves no trace once the process is gone, so whatever supervises the process can only report that the boot failed, not why. Warnings are worse: the default exporter level filters them out of the ring entirely.

This plugin attaches an exporter that writes every error and warn to stderr, which any supervisor already captures, and records session-activation failures the same way.

Project status: 1.0.0. Verified against the DeepSeek Harness 0.1.x composition it was written for, where it was exercised in the desktop app that bundles it. Not yet verified inside the official DeepSeek Harness desktop app (0.2.0-rc.2) — that verification is pending. The plugin has no UI and requires no other package, so the surface it touches is small.

Why this exists

A harness that fails to start is the worst possible time to have no diagnostics. When it fails after the ready line — when a session cannot activate, or a plugin row throws — the process exits and takes its log ring with it. The only record is whatever the parent process chose to capture.

Node's own stderr survives the process, which makes it the one durable channel available without adding a logger dependency. This plugin uses nothing else: it imports nothing at module scope, so there is nothing for the loader to resolve and nothing that can fail to install.

What it does

  • Bridges error and warn records to stderr, one prefixed line per record, with stack traces indented under their first line.
  • Replays the buffered errors that were logged before the plugin loaded. Warnings from that window are already gone — the default level filtered them out of the ring before this plugin existed — and the README says so rather than pretending otherwise.
  • Records session-activation failures from api-session/error, which never reach the logger at all.
  • Rate-limits itself: 100 messages per 60-second window, then a single line saying how many were dropped. An error in a loop cannot flood the log.
  • Writes a ready line once per launch, so a log without it can be read as predating the bridge.
  • Cannot break the boot. Every attachment step is wrapped. A bridge that can take down the startup it exists to explain would be worse than no bridge.

How it works

apply(ctx) does three things, each in its own try:

  1. If ctx.logger.buffer is an array, it replays the buffered error records.
  2. It attaches an exporter with levels: { default: 2 } (Cordis levels: error 0, info 1, warn 2) to ctx.logger.
  3. It subscribes to api-session/error for session-activation failures.

Every write goes through one rate-limited writer. Each line carries the prefix [harness-log], and that prefix matters: a loader that inspects stderr to decide which plugin broke a boot can skip prefixed lines, so bridged runtime chatter can never change which plugin a recovery pass blames.

The module exports its formatting and rate-limiting helpers (formatMessage, bridgeLines, createLimitedWriter) as pure functions with an injectable clock, so they can be exercised without a harness.

Requirements

  • Node.js 22 or later (the harness ships its own; you do not need a separate install).
  • A DeepSeek Harness profile that can load a plugin bundle — 0.1.x or 0.2.x.
  • A parent process that captures the child's stderr. Running dsh in a terminal satisfies this.

Quick start

Install from npm

dsh plugin --profile web add dsh-plugin-log-bridge

Install into the desktop app

Point the app at this folder with --add-plugin <path>, or use the official app's plugin manager to install the npm package. Installing adds the bundle row; the exported lines then appear on stderr beside the harness's own output.

Build from source

There is nothing to build. The package is two source files and a patch:

git clone https://github.com/desanv01/dsh-plugin-log-bridge.git
cd dsh-plugin-log-bridge
dsh plugin --profile web add .

Smoke test

The pure helpers are testable with no harness at all:

node --input-type=module -e "import('./index.js').then(m => {
  console.log(m.formatMessage({ args: ['hello', new Error('boom')] }));
  console.log(m.bridgeLines('error', 'harness', 'line one\nline two').join('|'));
})"

Expect a formatted message and two prefixed lines, the second indented.

Configuration

There is none. The bridge has no Config schema and takes no options, by design — a diagnostic that needs configuring is not the one you want when something is broken at boot.

The constants that could reasonably be tuned live at the top of index.js and are deliberately not exposed:

ConstantValueMeaning
EXPORT_LEVEL2Admit up to warn (error 0, info 1, warn 2)
WINDOW_MS60_000Rate-limit window
WINDOW_LIMIT100Lines per window before dropping

Slots used

None. This is a host-only plugin; it contributes no UI and registers into no slot.

Where things live

PiecePath
Host halfindex.js
Bundle patchcordis.patch.yml — inserts the row desktop-log-bridge
Bridged lineson the harness's stderr, each prefixed [harness-log]
Ready lineon stdout, once per launch

Troubleshooting

SymptomCauseFix
No [harness-log] lines at allNothing has logged an error or warning yetForce one with a deliberately broken plugin, or check that the row is in the profile
No ready lineThe plugin did not loadCheck the profile's cordis.patch.yml for the desktop-log-bridge row, or that the bundle was added
Lines are truncatedThe supervisor buffers stderrRead the supervisor's log, not the terminal
A dropped N message(s) lineThe rate limit was hitExpected under a loop; the count is reported so it is not silent
Warnings from before load are missingThe default exporter level filtered them out of the ringNot recoverable — the ring never had them

Current status

Working, and small enough to audit in one sitting: 144 lines of host code, no dependencies, no UI.

Verified: formatting and rate-limiting as pure functions; the buffered-error replay; session-error bridging; and that a failing attachment path leaves the boot intact. Exercised in the desktop app that first bundled it.

Not yet verified: the plugin running inside the official DeepSeek Harness desktop app (0.2.0-rc.2). The host surface it uses — ctx.logger, ctx.on('api-session/error') — is part of the documented composition, not private API, so the port is expected to be uneventful. That expectation is not evidence.

Roadmap

  • Export error and warn to stderr with a stable prefix
  • Replay errors buffered before load
  • Record session-activation failures
  • Rate-limit with an explicit dropped-count line
  • Never break the boot it explains
  • Verify in the official desktop app (0.2.0-rc.2)
  • Publish to npm (the package is not on the registry yet)

Security

This plugin writes harness log output to stderr. That output can contain prompt text, file paths, tool arguments and error messages — anything the harness or a plugin chose to log as an error or a warning. It does not redact. Treat captured stderr with the same care as the session logs themselves, and do not paste it into a public issue without reading it first.

It makes no network calls, reads no credentials and writes no files.

Report a vulnerability through the process in SECURITY.md.

Contributing

See CONTRIBUTING.md. The plugin is small and the review bar is: does it stay out of the boot path, and does it stay honest about what it can and cannot see?

License and attribution

MIT — see LICENSE.

Extracted from desanv01/deepseek-harness-desktop-app, where it shipped as the bundled log bridge.