Node CLI 工具部署

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

在 Windows + WorkBuddy 受管环境里部署 Node CLI 工具(npm 包形式的命令行程序,如 @deepseek-ai/dsh / 各类 agent harness / 代码工具),并让它在受管沙箱里真正跑起来。当用户说「帮我部署一个 X」「装一下这个 CLI」「npm install 卡住不动」「装完了启动就报错」「Cannot find package XXX / 缺少原生模块」时使用。含四个必踩的坑:①npm 官方源在国内慢到不可用 ②WorkBuddy 的 safe-delete 钩子会拦死工具自己的锁文件清理 ③首次安装报错回滚会留下"半损坏依赖树"而 npm 坚称树是完整的 ④平台二进制包(koffi/sharp/ripgrep 类)被静默跳过、npm 不报错但运行时炸。

一句话选型结论

按资料字段整理

Node CLI 工具部署是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_1572dda2/node-cli-deploy
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_1572dda2仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791682036
正文体量9.4 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
Node CLI 工具部署当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

9.4 KB
模型实际读到的说明书原文,来自技能仓库

在 WorkBuddy 受管环境部署 Node CLI 工具(Windows)

适用场景

  • 用户要装一个 npm 发布的命令行工具,且希望不污染系统环境(不 npm install -g)
  • 工具装完启动失败,报缺包 / 缺原生模块 / 权限 / 被拦
  • npm install 跑很久没动静

核心策略:装到受管 workspace,用一个薄 dsh.cmd 样式的启动器提供入口,不动用户 PATH、不动全局 npm。


标准流程

第 1 步:核实包的真实存在(别信二手教程)

npm view <包名> version dist-tags time.created

同时对照官方仓库/文档核一遍系统要求(Node 版本)和入口方式。

> 入口路径别猜。package.json 的 bin 字段才作数:
> bash > node -e "const p=require('./node_modules/<包名>/package.json');console.log(p.bin,p.main)" >
> 真踩:DSH 的文档/教程都写 npx,实际 bin 指向 lib/bin.js,而误以为是 dist/bin.js 会直接 MODULE_NOT_FOUND。

第 2 步:装到受管 workspace(先配镜像)

mkdir -p "C:/Users/<用户>/.workbuddy/binaries/node/workspace"
cd "C:/Users/<用户>/.workbuddy/binaries/node/workspace"

写 .npmrc(这一步别省,见坑 1):

registry=https://registry.npmmirror.com

然后:

"/c/Users/<用户>/.workbuddy/binaries/node/versions/<版本>/npm.cmd" install <包名> --no-audit --no-fund

第 3 步:跑依赖完整性扫描(关键,别跳)

node "<skill目录>/scripts/check-deps-integrity.cjs" .

0 缺失才往下走。有缺失就按它给的命令补装。

> 为什么必须单独扫:npm install 重跑时会说「树是完整的」,因为 npm 只检查直接依赖,
> 不深挖间接依赖的子依赖。首次安装一旦中途报错回滚,留下的窟窿 npm 永远看不见。

第 4 步:补齐当前平台的二进制包

上一步的扫描器不看 optionalDependencies(因为其他平台的包缺失是正常的)。所以平台包要单独查:

# 列出所有包的 optionalDependencies,筛出含本机平台标识的
# 本机 win32-x64 需要关注的典型包:koffi / sharp / ripgrep / node-addon-system
node "<skill目录>/scripts/check-platform-pkgs.cjs" .

缺哪个装哪个,例如:

npm install @koromix/koffi-win32-x64@3.3.1 @img/sharp-win32-x64@0.35.4 @vscode/ripgrep-win32-x64@1.18.0 --no-audit --no-fund --ignore-scripts

为什么是这类包:它们把预编译二进制拆成 @scope/<包名>-<平台>-<架构> 发布,
靠 optionalDependencies 分发。缺失时 npm 静默跳过、不报错,运行时才炸。

第 5 步:写启动器 + 实测

启动器模板(.cmd,纯 ASCII,见坑 5):

@echo off
setlocal
set "APP_NODE=C:\Users\<用户>\.workbuddy\binaries\node\versions\<版本>\node.exe"
set "APP_BIN=C:\Users\<用户>\.workbuddy\binaries\node\workspace\node_modules\<包名>\lib\bin.js"

if not exist "%APP_NODE%" (echo [ERROR] Node not found: %APP_NODE% & exit /b 1)
if not exist "%APP_BIN%"  (echo [ERROR] Entry not found: %APP_BIN% & exit /b 1)

rem 规避 WorkBuddy 沙箱的 safe-delete 钩子(见坑 2)
set "CODEBUDDY_SAFE_DELETE_ENABLED=0"

"%APP_NODE%" "%APP_BIN%" %*
endlocal

实测:先 --version / --help(不占端口、不阻塞),再跑真实服务。


五个坑(都真踩过)

坑 1:npm 官方源国内不可用

实测(2026-09,Windows):

源 元数据请求耗时
registry.npmjs.org 4.6 s
registry.npmmirror.com 0.8 s

慢 5.6 倍。一个大依赖树(200+ 包)会慢到「跑 5 分钟一个包都没下来」。
症状识别:node_modules 一直不创建,但 npm 缓存有活动(说明在逐个拉元数据)。

解:装之前先在该目录放 .npmrc 指向镜像。别用 npm config set registry(那会改全局)。

坑 2:WorkBuddy 的 safe-delete 钩子会拦死工具启动

症状:

Error: [safe-delete][SAFE_DELETE_BULK_CONFIRM_REQUIRED] {"count":50,"threshold":50,...}
    at wrappedPromisesRm (.../cli/vendor/shim/node-safe-delete-shim.cjs)
    at withFileLock (.../node_modules/@scope/dsh-atomic-write/lib/index.js)

根因:工具启动时删自己的锁文件(正常操作),被受管环境的删除计数器拦住。

关键事实:该钩子只在被 WorkBuddy 管理的会话里注入——它的第一行就是
if (!process.env.CODEBUDDY_SESSION_ID) return;。
用户自己在普通终端里跑不会有这个问题。

解:启动前设 CODEBUDDY_SAFE_DELETE_ENABLED=0(钩子的官方开关,设 0 则直接 return)。
启动器模板里已经内置。只在启动那个子进程里设,别改全局。

坑 3:★★ 半损坏的依赖树(最隐蔽)

症状:启动报 Cannot find package 'X',补上 X 又报 Y,一个接一个。

成因链:
1. 首次 npm install 因为某个原生模块编译失败(如 koffi 需要 CMake)→ 报 error code 1
2. npm 触发回滚
3. 回滚的清理动作又被 safe-delete 钩子拦了一半(可能拦在 safe-delete 的阈值上)
4. → 留下一棵半损坏但结构完整的树

最坑的地方:重跑 npm install 会说「up to date / 树是完整的」。
因为 npm 只检查你声明的直接依赖,不会去核对每个间接依赖的子依赖是否齐全。

解:用 scripts/check-deps-integrity.cjs。它按 Node 自己的解析规则
(从包目录逐级向上找 node_modules)逐包核对,把窟窿一次列全。

真踩实例:一次扫出 4 个缺失,全是核心功能依赖 ——
@standard-schema/spec(框架核心)、@vscode/ripgrep(文件搜索)、
@joplin/turndown-plugin-gfm(网页转 md)、@img/colour(图像处理)。

坑 4:平台二进制包被静默跳过

形如 @koromix/koffi-win32-x64、@img/sharp-win32-x64、@vscode/ripgrep-win32-x64
的包通过 optionalDependencies 分发预编译二进制。

npm 对 optionalDependencies 的态度是「装不上就算了,不报错」 ——
所以它们缺失时安装过程一片祥和,运行时才炸(而且是拿到某个功能时才炸)。

解:用 scripts/check-platform-pkgs.cjs 扫;手动补装时带 --ignore-scripts(跳过源码编译,直接用预编译)。

验证三个典型包:

node -e "require('koffi');require('sharp');console.log('OK')"
node --input-type=module -e "import{rgPath}from'@vscode/ripgrep';console.log(rgPath)"

坑 5:★ Windows .cmd 里写中文 = 语法崩坏

.cmd 文件存成 UTF-8 但含中文 → cmd.exe 按 GBK(代码页 936) 解析 → 乱码成
嶆柊瀹夎,报 'dy' 不是内部或外部命令、系统找不到指定的文件,整个脚本语法崩掉。

解法二选一:

  • 工具型 .cmd → 纯 ASCII(注释和提示都用英文)。最稳,推荐。
  • 必须含中文的 .cmd → 用 GBK 编码 + CRLF 换行写:
content = '''@echo off
chcp 936 >nul
echo 中文提示
'''
with open(path, 'w', encoding='gbk', newline='\r\n') as f:
    f.write(content)

验证方法(确认 cmd.exe 能正确解读):

raw = open(path,'rb').read()
print(raw.decode('gbk'))   # 应显示正常中文

> 注意:文件名含中文没问题(NTFS 是 Unicode);只有文件内容的编码会出事。


交付清单(每次部署都产这些)

交付物 说明
启动器 .cmd 命令行入口,内置 safe-delete 开关 + 前置检查
双击启动器 .cmd(可选) 含中文提示则必须 GBK 编码
部署说明 .md 位置清单 / 启动方式 / 配置方式 / 坑 / 升级卸载
受管目录结构 装到 <node>/workspace/node_modules/,不碰全局

验收标准

  • [ ] 启动器 --version 有正确输出
  • [ ] check-deps-integrity.cjs 报 0 缺失
  • [ ] 典型平台包 require() 测试通过
  • [ ] 真实启动一次,日志零错误(不是"能起来就算过"——插件/模块加载错误必须消除)
  • [ ] 端口监听确认 + 退出码可判读
  • [ ] 交付说明写清用户还需要手动做什么(如填 API Key、选工作目录)

常见问题

5 问
答案由本站依据条目字段整理
Node CLI 工具部署怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_1572dda2/node-cli-deploy。安装方式为未标注。装完刷新技能列表或重开客户端。

Node CLI 工具部署支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

Node CLI 工具部署权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

Node CLI 工具部署收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

Node CLI 工具部署用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。