Skip to content

Releases: ZSeven-W/dsh-crew

DSH Crew 0.1.0-rc.14

DSH Crew 0.1.0-rc.14 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 08 Oct 11:16
b0ddd92

中文

加入显式 dsh_worker_probe 工具,用一次有超时限制的结构化空操作调用探测配置的 provider/model;返回路线可调用和工具调用验证结果。探测不创建 worker、不修改绑定,且一次成功不代表长期可用。

Hub worker 遇到未回答的问题时,停止运行并以 needs_input 交回问题,面板显示待输入状态。移除自动猜选 Recommended 的指示。主控取得必要的人类回答后可重新派发。权限继续由宿主控制。

验证:42 项测试通过、4 项既有 Python 环境测试跳过;客户端构建和独立复制 MCP/安装包验证通过。Windows/Linux 进程检查 CI 通过。真实模型接口、完整宿主问答和面板交互尚未验证。

修复 #10、#13;PR #18。版本继续发布到既有 latest 通道,next 不变。

English

Add the explicit dsh_worker_probe tool. One bounded structured no-op call checks a configured provider/model and reports route and tool-call verification. It starts no worker and changes no binding; success is an observation, not a lasting capability guarantee.

When a Hub worker has an unanswered question, stop its runtime and preserve the question as needs_input, visible in the jobs panel. Remove instructions to guess the Recommended answer. The orchestrator can redispatch after obtaining the required human answer. Permissions remain controlled by the host.

Validation: 42 tests passed with 4 existing Python environment skips; client build, copied MCP bundle and package-install smoke checks passed. Native Windows/Linux process-inspection CI passed. A real model endpoint, full host question flow and interactive panel behavior remain unverified.

Fixes #10 and #13; PR #18. Published through the existing latest policy; next is unchanged.

DSH Crew 0.1.0-rc.13

DSH Crew 0.1.0-rc.13 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 06 Oct 17:12
914624a

Windows dispatch sources and worker command lines now use PowerShell/CIM instead of POSIX ps. Quoted executable paths are handled without weakening worker identity checks. Verified single-process termination works; process-group termination on Windows returns unsupported-platform before sending any signal.

Validation: Node 24 Windows/Linux native process checks passed; an unrelated child survives refusal and only an owned worker fixture is stopped. Local tests and the clean packed MCP bundle passed, with all four version fields synchronized. Fixes #16 via #17.


Windows 的派发来源和工作进程命令行改用 PowerShell/CIM 查询。带空格、引号的可执行文件路径可以正确识别,停止前的身份验证继续生效。已验证单进程停止;Windows 进程组停止明确返回 unsupported-platform,不会发送信号。

验收:Node 24 Windows/Linux 原生进程检查通过;非工作进程被拒绝并保持存活,本轮自有测试进程成功停止。打包后的 MCP 在无 node_modules 目录运行通过,四个版本字段一致。通过 #17 修复 #16。

dsh-crew 0.1.0-rc.11

dsh-crew 0.1.0-rc.11 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 24 Sep 21:06

修复三个用户报告的问题

worker 调用 ask_user_question 会一直卡住(#13)

hub 派出的 worker 在 DSH 里是顶层会话,所以宿主允许它向人提问;问题随后挂在那个会话里等人回答——但没有人在看 worker 会话,于是 worker 一直阻塞,直到编排方放弃。现在 worker 的提问会立即得到一条错误,告诉模型:能自己定就选推荐项并在最终结果里注明假设,否则停下来把问题写进最终结果交给编排方。这与 DSH 对子代理的现有规则一致。普通 DSH 会话照常向你提问。由 @levicki 报告。

Windows 上 grok 因 TOML 解析失败无法启动(#12)

安装器把服务器路径原样放进 TOML 双引号字符串,Windows 路径里的 \U、\n 被当成转义序列。Grok 与 Codex 两处安装器现在都输出合法的 TOML 字符串。由 @normalwindow 报告。已用 rc.7 或更早版本在 Windows 上装过的用户,升级后请在设置页对 Grok / Codex 点一次「更新」以重写配置。

flash / pro 预设下拉框里的内置预设名没有翻译(#11)

内置预设名现在按当前语言显示(Standard / PTC / Minimal / Creator mode),切换语言后也会跟着变。由 @levicki 报告。

安装

npm i @zseven-w/dsh-crew@next

Three user-reported fixes

A worker calling ask_user_question hung forever (#13)

A hub worker is a top-level session in DSH, so the host let it ask the human; the question then waited in that session for an answer nobody would give, because nobody watches a worker session. The worker blocked until the orchestrator gave up. A worker's question is now answered at once with an error telling the model to take the recommended option and state it as an assumption, or stop and put the question in its final result for the orchestrator — the rule DSH already applies to its own sub-agents. Ordinary DSH sessions still ask you as before. Reported by @levicki.

grok failed to start on Windows with a TOML parse error (#12)

The installers put the server path raw into a TOML basic string, where \U and \n in a Windows path are escape sequences. Both the Grok and Codex installers now write a valid TOML string. Reported by @normalwindow. If you installed on Windows with rc.7 or earlier, click "Update" for Grok / Codex on the settings page after upgrading so the config is rewritten.

Built-in preset names untranslated in the flash / pro pickers (#11)

The built-in presets now show in the active locale (Standard / PTC / Minimal / Creator mode), and follow a language switch. Reported by @levicki.

Install

npm i @zseven-w/dsh-crew@next

dsh-crew 0.1.0-rc.9

dsh-crew 0.1.0-rc.9 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 14 Sep 03:02

环境变量改名:DSH_CREW_HUB → DSHPLUGIN_CREW_HUB

DSH 把整个 DSH_ 前缀保留给宿主启动配置:.env 里一旦出现 DSH_*,dsh-app-boot 会拒绝整个文件并在任何插件加载前中止宿主。所以按 DSH 的习惯把 DSH_CREW_HUB 写进 ~/.dsh/.env 的用户,等来的不是指向 hub,而是起不来的宿主。

旧名在整个 0.x 期间仍会被读取(首次命中时警告一次,只打变量名和优先级、不打值),在 1.0.0 的第一个 prerelease 移除。解析按"存在"判断而非真值:把新变量显式设为空串表示"我不要覆盖",不会悄悄退回旧值。

迁移必读:如果你把 DSH_CREW_HUB 写在 .env 里,必须替换/删掉那一行,不能只是加一行新的。.env 里只要还有 DSH_ 开头的变量,宿主照样中止——这一点插件侧无法补救。已经 export 在 shell 里的旧变量则继续有效。

这是全家族问题,由 cningan 在 dsh-openpencil#6 报告,涉及 7 个插件约 20 个变量。

修复:发布时不跑版本一致性守卫

0.1.0-rc.8 发到 registry 时,.claude-plugin/plugin.json、src/server.mjs 和 lib/server.mjs 都自报 0.1.0-rc.7——正是 release.yml 注释里记着的 rc.5 那次漂移,也正是 smoke:pack 的版本守卫存在的意义。守卫从来没跑过:prepublishOnly 挂的是 smoke:mcp(bundle 冒烟),而版本守卫在 smoke:pack 里。

prepublishOnly 现在同时跑 smoke:mcp 和 smoke:pack(smoke:pack 仍不挂 prepack,否则它内部的 npm pack 会递归)。rc.9 的四处版本号一致。

rc.8 仍在 registry 上,功能是正确的(带 DSHPLUGIN_CREW_HUB 改名),只是向宿主自报了错误的版本号。

安装

npm i @zseven-w/dsh-crew@next

Environment variable renamed: DSH_CREW_HUB → DSHPLUGIN_CREW_HUB

DSH reserves the entire DSH_ prefix for host bootstrap settings: one DSH_* name in a .env makes dsh-app-boot reject the whole file and abort the host before any plugin loads. A user who put DSH_CREW_HUB in ~/.dsh/.env the way DSH teaches got a host that would not start, not a hub override.

The legacy name is still read through all of 0.x (with a one-time warning that prints names and precedence, never the value) and is removed in the first 1.0.0 prerelease. Resolution is by presence, not truthiness: setting the new variable to an empty string means "no override" and does not silently resurrect the legacy value.

Migration: if you keep DSH_CREW_HUB in a .env file you must replace or remove that line — adding the new name beside it does not help. Any DSH_-prefixed variable in a loaded .env still aborts the host, and no plugin-side change can rescue that. Existing shell exports keep working.

This is a family-wide trap, reported by cningan as dsh-openpencil#6: ~20 variables across 7 plugins.

Fix: the version guard never ran on publish

0.1.0-rc.8 reached the registry reporting 0.1.0-rc.7 in .claude-plugin/plugin.json, src/server.mjs and lib/server.mjs — the same drift release.yml's comment records from rc.5, and exactly what smoke:pack's version guard exists to catch. The guard never ran: prepublishOnly was wired to smoke:mcp (the bundle smoke) while the version guard lives in smoke:pack.

prepublishOnly now runs both. (smoke:pack stays out of prepack, where its inner npm pack would recurse.) All four version sites report 0.1.0-rc.9.

rc.8 stays on the registry and is functionally correct — it carries the DSHPLUGIN_CREW_HUB rename — it just misreports its own version to the host.

Install

npm i @zseven-w/dsh-crew@next

dsh-crew 0.1.0-rc.10

dsh-crew 0.1.0-rc.10 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 14 Sep 10:15

新功能:worker 的每个 tier 可以绑定到 DSH 已配置的任意 LLM 路由

worker 的模型此前是两个写死的常量——provider deepseek-official 加上 deepseek-v4-flash / deepseek-v4-pro,并通过模型选择钩子强加到每次请求上。已经在 DSH 里配好了别的路由的用户(本地 Ollama 是最典型的场景)没有任何办法把 worker 发到那里去,尽管派发路径本来就把 {provider, model} 交给宿主、由宿主自己解析 provider id。

由 @levicki 提出(#10)。讨论中的两种形态,这里采用方案 2:provider 在 DSH 里配置一次,此处只是点名。方案 1(让本插件自己定义端点)会成为配置 provider 的第三个地方——在 DSH 自身的设置和本插件视觉路由的自定义 provider 列表之后——而这恰恰就是该请求想解决的问题。

怎么用

先在 DSH 里配好你的 provider(本地 Ollama 端点也一样),然后点名即可:

dsh_worker_config({ flash_provider: "<你的 provider id>", flash_model: "<模型 id>" })

不带参数调用 dsh_worker_config 会列出 available_providers(宿主实际拥有的路由)和 bindings(每个 tier 当前解析到哪里)。

  • provider 和 model 独立解析:只写 model 就沿用默认 provider(同端点换模型),只写 provider 就沿用该 tier 的 model id(网关服务同名模型)。
  • 空值不是配置:它会回落到默认,而不是派发到 ""。
  • 两条后端都生效(hub 与 standalone),job 视图现在带 provider 字段,多路由并存时能看出某个 worker 究竟跑在哪条上。
  • 绑定了 DSH 不认识的 provider 时,配置输出会给出指名道姓的警告。

两条必须说清的限制

出现在 available_providers 里,不代表那条路由能跑 worker。 它只说明有一个适配器注册了。实测:一条纯粹用于转发另一个 provider 的路由,派发时失败于 registration.adapter.prepareCall is not a function。

DSH 任何地方都不报告 tool-calling 支持(listProviders() 和模型发现都没有这个字段),而无法调用工具的 worker 只会返回文字、不碰任何文件。

因此绑定到自定义路由的 tier 属于未验证状态,直到你真的往它派发一次为止;配置输出里的 route_caveat 会这么告诉你。真正的能力探针是后续工作,不在本版内。

安装

npm i @zseven-w/dsh-crew@next

New: bind each worker tier to any LLM route DSH already has

A worker's model was two hardcoded constants — provider deepseek-official plus deepseek-v4-flash / deepseek-v4-pro — forced onto every request through the model-selection hook. A user who had already configured another route in DSH (a local Ollama server is the motivating case) had no way to send workers to it, even though the dispatch path already hands {provider, model} to the host and the host resolves the provider id itself.

Requested by @levicki (#10). Of the two shapes discussed there this takes Option 2: a provider is configured once, in DSH, and named here. Option 1 (teaching this plugin to define its own endpoints) would have been the third place to configure a provider — after DSH's own settings and this plugin's custom-provider list for the vision route — which is the problem the request was about.

Using it

Configure your provider in DSH (a local Ollama endpoint included), then name it:

dsh_worker_config({ flash_provider: "<your provider id>", flash_model: "<model id>" })

Calling dsh_worker_config with no arguments lists available_providers (what the host actually has) and bindings (where each tier currently resolves).

  • Provider and model resolve independently: naming only a model keeps the default provider, naming only a provider keeps the tier's model id.
  • A blank value is not a configuration: it falls back rather than dispatching to "".
  • Both backends honour it (hub and standalone), and job views now carry provider, so you can tell which route a worker actually ran on.
  • Binding a provider DSH does not know produces a warning that names it.

Two limits worth stating plainly

Appearing in available_providers does not mean a route can run a worker. It only means an adapter is registered. Measured: a route registered purely to re-route another provider fails a dispatch with registration.adapter.prepareCall is not a function.

DSH reports tool-calling support nowhere (neither listProviders() nor model discovery carries such a field), and a worker that cannot call tools returns prose and touches no files.

A tier bound to a custom route is therefore unverified until you dispatch to it once — route_caveat in the config output says so. A real capability probe is follow-up work, not part of this release.

Install

npm i @zseven-w/dsh-crew@next

dsh-crew v0.1.0-rc.7

dsh-crew v0.1.0-rc.7 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 02 Sep 17:51

dsh-crew v0.1.0-rc.7

卸载要像安装一样彻底;工作区路径不再只认 POSIX。/ Uninstall now undoes what install did, and workspace paths are no longer POSIX-only.

🐛 修复 / Fixed

  • uninstall-claude 只清 settings.json,CLI 侧状态留着 / Uninstall left the Claude Code CLI registration behind(#8)—— 原来只重写 ~/.claude/settings.json,known_marketplaces.json、插件缓存快照都在,claude plugin list 里插件只是变成 disabled。现在卸载会镜像安装:尽力执行 claude plugin uninstall dsh-crew@dsh-crew 与 claude plugin marketplace remove dsh-crew,消息如实说明结果,CLI 步骤失败时给出手动命令。/ Uninstall now mirrors install with best-effort claude plugin uninstall and claude plugin marketplace remove, and the message says exactly what happened.
  • legacy 数组分支是死代码 / The legacy array branch never matched anything(#8)—— 它过滤一个从未被写入的路径,且比较的字段形状也不对。现在按 marketplace 名或注册目录匹配。/ It filtered on a path nothing ever wrote and on a field that was never there; it now matches by marketplace name or the registered directory.
  • hub 拒绝 Windows 绝对路径 / The hub rejected Windows absolute paths(#5)—— cwd must be an absolute path 来自一个只认 / 开头的检查。现在接受盘符路径(D:\x、C:/x)、UNC(\\server\share)与 POSIX 路径;外来平台的路径只做规范化,不会被 hub 的 cwd 重新挂根。/ The check was POSIX-only. Drive, UNC and POSIX paths are all accepted; a foreign-platform path is normalized in its own flavour, never re-rooted.
  • 任务落到"未定义工作区" / Jobs landed in an undefined workspace(#5)—— 工作区匹配是精确字符串比较。现在 cwd 先规范化再匹配,D:/x 与 D:\x 落到同一个工作区。/ The workspace lookup was an exact string match; cwd is now canonicalized first.

🔧 改进 / Changed

  • cwd 支持相对路径与当前工作区 / cwd accepts relative paths and "current"(#5)—— dsh_run_worker / dsh_spawn_worker 的 cwd 省略、""、"." 或 "current" 都表示调用方的当前工作区,相对路径按当前工作区解析。没有新增字段,cwd 保持原名。/ Omitted, "", "." or "current" mean the caller's workspace; relative paths resolve against it. No new field.
  • 新增 scripts/smoke-cwd.mjs 并接入 prepack。/ New smoke-cwd script wired into prepack.

⚠️ 注意 / Caveats

Windows 路径行为只有单元断言覆盖,我们没有 Windows 机器实测;欢迎在 Windows 上验证后回帖 #5。/ The Windows-path behaviour is covered by unit assertions only; real-Windows confirmation on #5 is welcome.

🙏 致谢 / Credit

感谢 @jasonpaulso(#8)与 @weidusi(#5)的报告。/ Thanks to @jasonpaulso (#8) and @weidusi (#5).

📦 安装 / Install

dsh plugin --profile web add @zseven-w/dsh-crew@latest
dsh web

Full Changelog: v0.1.0-rc.6...v0.1.0-rc.7

dsh-crew v0.1.0-rc.6

dsh-crew v0.1.0-rc.6 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 23 Aug 06:16

dsh-crew v0.1.0-rc.6

四个宿主都能派活,派活这件事本身也终于有了指引。/ Four harnesses can dispatch now — and dispatching itself finally comes with guidance.

rc.5 与本版内容相同,但发布时 plugin.json 与 MCP serverInfo 落后一个版本号(详见文末)。请直接用 rc.6。/ rc.5 carries the same content but shipped with plugin.json and the MCP serverInfo one version behind (see the last section). Use rc.6.

✨ 新增 / Added

  • 四个派活宿主 / Four dispatching hosts — Claude Code、Codex 之外,新增 Antigravity(agy)与 Grok:各自的 MCP 注册、ds-flash / ds-pro agent、以及原生形态的技能与命令,都由安装器一键落地(改动前自动备份)。设置页与命令行 node src/install/cli.mjs <claude|codex|agy|grok|all> 等价。/ Antigravity (agy) and Grok join Claude Code and Codex, each with MCP registration, the two agents, and skills or commands in that host's native format.
  • 显式 CLI 后端 / Explicit CLI backends — dsh_run_worker / dsh_spawn_worker 的 worker="agy" 或 worker="grok" 参数把这次派发钉到该外部 CLI(后端 × 模型 × 强度)。始终是显式选择,没有默认值:一个隐式的默认派发目标等于第二套看不见的委派机制。/ Pinning a dispatch to an external CLI is opt-in per call; there is deliberately no default, because an implicit one would be a second, invisible delegation mechanism.
  • 派发护栏 / Dispatch guardrails — 每次派发都先过检查:worker→worker 嵌套超过 origin chain 深度上限(默认 3)会被拒,链上出现环(同一 backend + cwd 重复)也会被拒;同一个工作区已有 worker 在写时,第二次派发拒绝而非排队,并告诉你持有者是谁。只读任务可以用 allow_concurrent_cwd 放行。拒绝都是可读的错误,该等就等、该改范围就改范围。/ Every dispatch is checked before anything spawns: depth cap, cycle detection, and one writer per workspace — refused with the holder's identity rather than silently queued.
  • 原生识图 / Native vision — describe_image 只要有 key 就先用 DeepSeek 自己的视觉模型 deepseek-v4-flash-vision-exp,失败再回落到你本机已登录的 CLI。实测同一张图,原生 1.0–1.4 秒,借 CLI 约 10 秒。/ describe_image now tries DeepSeek's own VL model first and falls back to the CLI chain; measured 1.0–1.4s versus about 10s on the same image.
  • 派活手册 / Dispatch playbook — 工具描述里放进决策必需的规则(档位怎么选、spawn 返回的是 id 而不是结果、任务书必须自包含、CLI 后端是显式选项),更深的内容做成随包手册,按各宿主的原生形态分发:/dsh-crew:playbook(Claude Code 技能)、/dsh-playbook(Codex prompt、Antigravity 技能、Grok 命令)。涵盖选人、写任务书、并行时的接缝归属、以工件而非口头汇报验收、以及会遇到的护栏。/ The tool descriptions carry the rules a caller cannot proceed without; the depth ships as a per-host playbook covering worker choice, self-contained briefs, seam ownership in parallel work, verifying by artifact, and the guardrails.

🔧 改进 / Changed

  • 看板按工作区分组 / The board groups by workspace — 目录名只在可折叠的分组头出现一次,占用锁收成组头上的一枚徽标(持有者 + 已持有时长),原先那张独立的"工作区占用"大卡整个撤掉;任务行回归单行,已结束任务折叠进各自的分组,每组记住自己的展开状态。/ The directory is named once in a collapsible group header, the lock is a badge naming its holder, and the standalone card is gone.
  • 集成区补齐 / Integration cards completed — Antigravity 与 Grok 的卡片加入 Claude Code 和 Codex 的行列(此前安装状态已就绪却无人绘制);Worker 档案区随之撤除,档案本就该按次选择,不该有存量默认值。/ Antigravity and Grok cards join the other two; the worker-profile section is gone with them.

🛡️ 失联任务的进程管控 / Lost jobs can now be asked whether they are still running

hub 模式的任务随 hub 进程一同消失,不留残余;但 standalone 运行时与 CLI worker 各自是独立进程——派活的宿主若崩溃,那个进程会继续跑,而没有人还管得到它。

现在:拥有独立进程的任务会把 pid 带进墓碑,hub 可以回答该 pid 是否仍存活,确认还活着的失联行才会显示"进程仍在"徽标与杀死按钮。杀之前先验签:该 pid 的命令行必须匹配本插件真实会启动的形态,否则连同查到的命令行一起拒绝——被复用的 pid 绝不能变成别人被误杀的进程。通过验签的走 SIGTERM → 3 秒宽限 → SIGKILL,worker 自带进程组时杀整组。

状态分片也不再无限堆积:被硬杀的写入进程来不及清理,文件会永远留着被每次读取重复扫描。现在分片既过期、写入进程又确认已死才删除;判不准的一律保留——不靠猜删文件。

/ Hub jobs die with the hub, but a standalone runtime or CLI worker is its own process. Jobs that own one now carry its pid into the tombstone; a lost row whose process is provably alive offers to kill it, and killing verifies the pid's command line against the shapes this plugin actually spawns before it signals. Status shards are pruned only when stale AND their writer is provably gone.

📝 文档 / Docs

  • 15 个语言 README 全部更新:四个宿主与各自的安装与注意事项、护栏、看板、原生识图、派活手册入口。/ All fifteen locale READMEs cover the four hosts, guardrails, the board, native-first vision, and where the playbook lives.

⚠️ 注意 / Caveats

  • grok 出于安全设计,不会在未受信任的项目目录中启动仓库级 MCP server(grok mcp doctor 报 "folder untrusted");全局安装不受影响——换个目录,或加 --trust。/ grok will not start repo-level MCP servers in untrusted directories; a global install is unaffected.
  • agy 以完全放行方式运行 worker:1.1.16 没有工作区级权限模式,无头 worker 必须自动批准工具请求。/ agy runs workers with full approval — it has no workspace-scoped permission mode.
  • proc-alive / proc-kill 两个端点在旧实例上返回 404,重启 DSH 后生效。/ The two new endpoints activate after a DSH restart.

🐛 rc.5 发生了什么 / What happened to rc.5

rc.5 的 package.json 是 rc.5,而 .claude-plugin/plugin.json 与 MCP serverInfo 仍停在 rc.4——版本号需要在四处保持一致,那次发布只改了一处。两个缺口放行了它:交叉校验住在 smoke:pack 里,而发布流程只跑 smoke:mcp;插件清单(宿主展示的那个版本号)则根本无人校验。

本版把清单纳入 smoke:pack 的断言,并让发布流程在发包前跑它;护栏是照着 rc.5 的错误状态复现验证过的——它会指名道姓地报出两个不一致的版本号。npm 版本不可覆盖,所以修正版就是 rc.6,除版本号外与 rc.5 完全相同。

/ rc.5 shipped with package.json at rc.5 while the plugin manifest and MCP serverInfo still said rc.4. The cross-check lived in smoke:pack, which the release workflow never ran, and nothing checked the manifest at all. Both gaps are closed, verified by reproducing the rc.5 state.

📦 安装 / Install

dsh plugin --profile web add @zseven-w/dsh-crew@latest
dsh web

Full Changelog: v0.1.0-rc.4...v0.1.0-rc.6

dsh-crew v0.1.0-rc.5 (superseded by rc.6)

Choose a tag to compare

@finiking finiking released this 23 Aug 06:16

dsh-crew v0.1.0-rc.5

⚠️ 请改用 v0.1.0-rc.6。/ Superseded by v0.1.0-rc.6.

本版内容与 rc.6 完全相同,但发布时版本号只改了 package.json 一处:.claude-plugin/plugin.json(宿主展示的版本)与 MCP serverInfo 仍停在 0.1.0-rc.4。功能不受影响,但版本号会对不上。

rc.6 修正了版本号,并补上放行它的两个缺口:交叉校验此前住在 smoke:pack 里而发布流程从不运行它,插件清单则根本无人校验。

/ Identical in content to rc.6, but published with only package.json bumped — the plugin manifest and the MCP serverInfo still reported 0.1.0-rc.4. Nothing misbehaves; the versions simply disagree. rc.6 corrects them and closes the two gaps that allowed it.

完整发布说明见 rc.6。/ See the rc.6 notes for what this release actually contains.

dsh-crew v0.1.0-rc.4

dsh-crew v0.1.0-rc.4 Pre-release
Pre-release

Choose a tag to compare

@Kayshen-X Kayshen-X released this 21 Aug 15:30

dsh-crew v0.1.0-rc.4

DSH 0.1.1 适配版 + 发布工作流补洞。/ The DSH 0.1.1 adaptation, plus real holes closed in the release workflow.

🐛 修复 / Fixed

  • 在 DSH 0.1.1 上客户端永不激活 / The client never activated on DSH 0.1.1 — 0.1.1 移除了客户端模块图中的 @deepseek-ai/dsh-client-ui-slots 行(slots 服务改由 dsh-client-runtime 提供);dsh.client.inject 仍要求它,浏览器端 loader 永远等待,crew 界面静默失效并拖慢整页 "Loading plugins…"。本仓中该 inject 行是对这个包的唯一引用(连类型依赖都没有),直接删除。/ DSH 0.1.1 dropped the dsh-client-ui-slots module-graph row; the inject entry — this repo's only reference to the package, not even a type dependency — is gone.

🔧 发布工作流 / Release workflow

  • NPM_TOKEN 此前完全没有接线:在 npmjs.com 配好 trusted publisher 之前,每次发布都会 E401。现已接上 token 回退。/ NPM_TOKEN was entirely unwired — every publish would have died with E401 until a trusted publisher was configured. The fallback is now in place.
  • 发布前先构建:lib/ 是宿主直接加载的入库产物,旧流程会把陈旧的 lib/ 静默发上去;现在 tag 校验后先 build + smoke:mcp。/ lib/ is a committed artifact the host loads directly; a tag cut with a stale lib/ shipped silently. The workflow now builds and smokes before publishing.
  • npm 钉在 major 11(原为 latest);checkout 关闭凭据持久化;Node 24 + pnpm 缓存。/ npm pinned to major 11 (was latest); persist-credentials: false; Node 24 with the pnpm cache.

📝 文档与版本 / Docs & versioning

  • 15 个语言 README 的验证徽标移到 DSH 0.1.1-rc.1。/ All 15 locale READMEs state DSH 0.1.1-rc.1 as tested.
  • 版本号在必须一致的四处同步(package.json、.claude-plugin/plugin.json、src/server.mjs 的 MCP serverInfo、重建的 lib/server.mjs),smoke:pack 断言把关。/ The version moved in all four places that must agree, asserted by smoke:pack.

📦 安装 / Install

dsh plugin --profile web add @zseven-w/dsh-crew@next
dsh web

⚠️ 说明 / Notes

  • npm dist-tag: next。/ Published under next.
  • smoke:mcp(6 工具握手)与 smoke:pack(纯 npm 安装、零 @deepseek-ai/* 拉取)在适配后全过。/ Both smokes pass after the change.

Full Changelog: v0.1.0-rc.3...v0.1.0-rc.4

dsh-crew v0.1.0-rc.3

dsh-crew v0.1.0-rc.3 Pre-release
Pre-release

Choose a tag to compare

@finiking finiking released this 20 Aug 16:27

dsh-crew v0.1.0-rc.3

🐛 修复 / Fixes

  • npm install 直接失败的 ERESOLVE(#3)/ plain npm install died with ERESOLVE (#3). rc.1 与 rc.2 把 20 个 @deepseek-ai/* 宿主运行时包声明为必需 peer 且钉死 rc.6,该集合自身不可解(spine-demo@rc.6 → dsh-tools@rc.8 → dsh-agent@^rc.8 与钉死的 rc.6 冲突)。
    值得记录的是:把它们标成 optional 并不能修复——npm 对 optional peer 不安装但仍参与版本解析(在 npm 11.19 上实测确认)。因此宿主运行时整体移出 peerDependencies,改记在说明性的 dshHostRuntime 字段;唯一真正被 import 的 dsh-sdk-client 保留为惰性加载后的单个 optional peer。
    Marking them optional does NOT fix it — npm still resolves an optional peer's constraints even though it skips installing it (verified on npm 11.19). The host runtime therefore moves out of peerDependencies entirely.
  • 实测验收 / verified: 空目录从 tarball 安装成功(99 包,node_modules/@deepseek-ai 不存在),src/server.mjs(#1 报告者的原始场景)与 lib/server.mjs 两个入口均握手成功、6 个工具齐全。

🔧 CI

  • 发布改走 GitHub Actions(tag 触发),幂等:registry 已有该版本时跳过而非报错。
  • packageManager pin + pnpm 11 的 allowBuilds 构建授权(旧 onlyBuiltDependencies 与 package.json 的 pnpm 键均已失效)。

📦 安装 / Install

dsh plugin --profile web add @zseven-w/dsh-crew@latest

感谢 @Roland0511 的 #1 报告——#3 正是循着它的复现路径发现的。/ Thanks to @Roland0511, whose #1 report led straight to #3.