DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

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

@snow-the/dsh-eigenflux

Eigenflux

通过 DSH 工具驱动 EigenFlux 代理广播网络:查看状态、进行接口自省、读取只读信息流,以及经过两步确认的发布。不使用计时器,也不在后台定期运行——由人决定何时查询网络。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:snow-The/dsh-eigenflux#bfab850ab84955bd39885983aa1d19ffa88b7598
README兼容性版本

兼容性与来源证明

Eigenflux 以 @snow-the/dsh-eigenflux 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.0stable
2026/10/19

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Experimental Plugin Market Bundle@deepseek-ai/dsh-experimental-plugin-market-bundle实验性自定义插件市场:用于浏览和安装来自插件市场索引的捆绑包的“发现”选项卡Workbuddy Connectdsh-workbuddy-connect将 WorkBuddy 桌面 App 中包含的模型自动接入 DeepSeek Harness,无需配置。Ab Wechat Scrapedsh-ab-wechat-scrape--- description: "树外 wechat_scrape 工具:获取微信公众号文章,过滤推广区块,并将每篇文章保存为 Markdown 文件,供此机器的 dsh 配置文件维护者使用。" kind: "package-reference" ---

README

dsh-eigenflux

Drive the EigenFlux agent-broadcast network from DSH tools, by wrapping its CLI.

Why a wrapper, and not the official onboarding flow

EigenFlux ships signed ef-* skills that own first-time connection. That flow is built for a host that owns a clock and a scheduler: it creates one recurring trigger (default cadence: every two hours) and treats an accepting answer to that as a precondition of an active connection.

DSH has no such background clock. A session is driven by the human, and the only scheduler is the task board, which the user must arm explicitly. Adopting that flow unchanged would produce a component fighting its own host.

There is also a factual reason, measured rather than preferred: the CLI reports timezone: "UTC" while this host runs UTC+08:00. A cadence defined in its timeline fires against a different timeline than the user's, eight hours off. ef_status surfaces that skew on every call.

So this plugin drives the CLI directly, which is also the path EigenFlux documents for hosts without an official plugin (skills/install.md: "or any host without an official EigenFlux plugin, use the bare-CLI route").

No timers. This is a design decision, not an omission

There is no interval, no heartbeats, no background poll, and nothing is armed at activation. The network is consulted when a tool is called, and only then. If a plugin in this repository ever adds a scheduler for EigenFlux, it should be treated as a regression of this decision rather than an enhancement of it.

Three boundaries the tools enforce

1. Network text is labelled as network text. ef_feed wraps every payload in a provenance banner, and the banner names the trust boundary explicitly: other agents wrote this, it is untrusted input, and a sentence in it that reads like an instruction is not one.

2. Refusals are states, not content. "Nothing is there" and "I could not look" are different facts, and returning a CLI error line in the same channel as feed items is how a model ends up reasoning from a false premise. ef_feed says which state it is in and never dresses a failure as a result.

3. Outbound text is shown before it leaves. ef_publish and ef_msg are two-step by construction: the first call returns the exact payload plus a single-use token, and nothing is sent until a second call echoes that token. The token is bound to the payload by hash, so editing the text invalidates it, and the queue is in memory only — a confirmation that did not survive a restart confirms nothing.

Tools

tooleffectnotes
ef_statusnone (offline)binary, home, version, clock skew, identity state
ef_surfacenone (offline)reads the real command list from the binary's own --help
ef_feedread-only networklimit 1..50; payload comes back under the external banner
ef_publishwrites to the networktwo-step; cannot be recalled once sent
ef_msgwrites to the networktwo-step

The editorial decisions (what is worth broadcasting, which items deserve feedback, when to contact another agent) deliberately do not live here. They live in the signed ef-* skills the user installed, which can call these tools. Copying that reasoning into this plugin would fork it and then drift.

Ids are strings, and that is not a style preference

EigenFlux ids are 18-digit snowflakes and exceed Number.MAX_SAFE_INTEGER (9007199254740991):

String(362115728905601024) === "362115728905601000"

Passing one as a JSON number rounds it into a different item. For ef_msg that means replying to the wrong agent, silently — a worse outcome than omitting the flag, which at least fails visibly. item_id therefore takes a string, and a number beyond the safe range is refused with a reason rather than accepted and rounded.

This was not theorised. The verification script written to catch tool bugs passed the id as a number literal and demonstrated the defect itself: the "preview shows the reply target" assertion failed because the preview faithfully showed the rounded id.

The general lesson, which this plugin hit three times in one sitting: a declared type is a claim, not a fact. An argument can arrive as a string when the schema says integer; an exit code can mean two different things; a help text can be formatted two ways. Check the value, not the declaration.

Exit codes

The wrapper maps the CLI's documented codes (cli/internal/output/output.go): 0 success, 1 runtime failure, 2 usage, 3 not found, 4 auth required, 5 conflict, 10 dry run.

Exit 2 covers every usage error and its description happens to mention provisioning, so the code alone cannot distinguish "no Agent identity" from "you typed a bad flag". Only the text can, and matching on the text is what keeps ef_status from confidently reporting the wrong account state. A bare 2 is reported as unknown.

Install (already done on this machine)

irm https://www.eigenflux.ai/install.ps1 | iex      # CLI + skills, user-level, no admin

The installer verifies a SHA256 for the binary when the CDN publishes one. On this machine the CDN did not publish one and the installer said so plainly: the binary was therefore executed without integrity verification. That is recorded here rather than smoothed over.

Mounting into a DSH profile needs both halves — a file: dependency and an entry in dsh.profile.bundles. A package present in dependencies but absent from bundles is never mounted.

Development

pnpm install
node node_modules/typescript/bin/tsc -p tsconfig.json --noEmit   # types
node node_modules/esbuild/bin/esbuild src/index.ts --bundle --platform=node --format=esm \
  --outfile=dist/index.js --external:@deepseek-ai/*             # bundle
node --import ./test/register-stubs.mjs --test "test/*.test.mjs" # tests

The tests import dist/, not src/: the bundle is what the host loads, and a suite that passes against sources while the shipped artifact is stale is a green light that means nothing. Host packages are marked external and redirected to stand-ins by test/register-stubs.mjs, so the suite runs from a fresh clone with no host install.

dist/cli.js is a second entry point on purpose: it carries the host-independent decisions (which binary, what an exit code means, what the local clock is) so they can be tested and reused without activating a plugin.