@chenkai114/dsh-daemon
将Web服务注册为自启动、自愈的后台守护进程 适合需要保障dsh web服务在后台稳定运行、自动重启的系统管理员。
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:chenkai2/dsh-daemon说明文档
阅读完整 README ↗使用方式
方式 A —— 用 dsh plugin 安装(v0.1.9+,推荐)
-
用官方插件管理器将包安装到 web profile(在 profile 目录内运行 pnpm,使 loader 能解析到它;仅全局安装不够——见下):
dsh plugin --profile web add @chenkai114/dsh-daemon(需要 PATH 上有
pnpm——用corepack enable一次性启用。)为什么不能只
npm install -g?loader 以 Node ESM 解析导入name:行,解析锚点是 profile 目录(~/.dsh/profiles/web/);全局node_modules不在该解析链上(NODE_PATH对 ESM 无效)。profile 自己的node_modules——由 pnpm 管理——才是包可达的原因。 -
重启
dsh web。包声明了dsh.bundlemanifest,dsh plugin add会把它自动加入dsh.profile.bundles,启动时作为 bundle 层挂载——不需要(也不应该)再手动往~/.dsh/profiles/web/cordis.patch.yml里 insert 同一行,否则会触发duplicate loader entry id: dsh-daemon启动失败。七个
dsh_daemon_*工具即可供每个 agent 使用——直接让 agent 运行dsh_daemon_install。
以后升级:dsh plugin --profile web update @chenkai114/dsh-daemon(并重启)。
⚠️ 从 v0.1.8 及更早版本升级:如果你之前按旧文档在
~/.dsh/profiles/web/cordis.patch.yml里手动加过- insert: dsh-daemon行,升级后必须删掉那一行(保留文件里其他内容),否则 bundle 层 + 手动层会插入同一个id: dsh-daemon两次,dsh web启动时报duplicate loader entry id。删除后重启即可。
权限说明:daemon 管理用户级系统服务(LaunchAgent plist、
$DSH_HOME下的状态文件),因此插件对其文件与命令操作请求danger-full-access。若部署拒绝提权,工具会以沙箱拒绝失败。
方式 B —— 动态 Cordis 插件(无需安装)
将 lib/index.js 的内容粘贴到 cordis_define 的 code.host 字段并运行。这正是插件在真实会话中开发与验证的方式:沙箱提供 harness 全局,文件以 return plugin; 结尾。
端口
默认端口为当前监听的 webServer 端口(通常 3080),其次 DSH_WEB_PORT,再其次工具显式 port 参数。更换端口后运行 dsh_daemon_reinstall。