首页龙虾技能列表 › Safe Script Runner — 安全脚本执行器

Safe Script Runner — 安全脚本执行器

v1.0.0

通过临时文件和环境变量隔离工作流,完全解决终端冻结和逃逸问题,确保脚本执行安全可靠。

1· 179·0 当前·0 累计
by @zaynzhu·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/17
安全扫描
VirusTotal
无害
查看报告
OpenClaw
可疑
medium confidence
指令大致符合目标(使用临时文件避免 shell 逃逸问题),但部分指导点(显式加载 .env 文件、编辑 .gitignore、隐式访问工作空间环境文件)引发了未在技能描述中解释的范围和数据访问担忧。
评估建议
该技能的方法(创建临时脚本文件、执行、删除)在避免 shell 逃逸和终端挂起方面是合理的。然而,它特意指示从工作空间(通过 dotenv 加载 .env 文件)加载环境变量并编辑 .gitignore,这意味着代理将读取项目秘密并修改仓库文件。使用前:1) 确认代理在工作空间创建和删除文件;2) 避免在工作空间的 .env 文件中存储敏感秘密;3) 要求代理显示临时脚本内容并获得手动批准;4) 审查和批准 .gitignore 更改;5) 如果必须允许自动脚本创建, предпочтительно 在隔离测试环境或容器中运行。若期望技能永不访问秘密,请要求作者移除显式 dotenv 要求并要求交互式批准执行生成的脚本。...
详细分析 ▾
用途与能力
名称/描述(安全脚本执行器,避免内联 shell 执行)与 SKILL.md 工作流一致,后者通过创建临时独立脚本文件并执行它们,而不是内联命令。
指令范围
指令要求在项目工作空间创建、执行和删除临时文件,并明确指示将 temp_* 添加到 .gitignore;它们还坚持在文件中加载环境变量(dotenv)。这些步骤超出了仅避免 shell 逃逸问题,因为它们授予代理读取工作空间文件(.env)、写入仓库配置(.gitignore)以及创建可能包含敏感数据的脚本文件的权限。SKILL.md 没有限制可以写入临时脚本的内容,也不要求在执行前进行人工审查。
安装机制
仅指令的技能,无安装规格和代码文件;安装程序没有下载或写入任何内容。从安装角度看,这是低风险的。
凭证需求
技能指示使用 dotenv(导入 'dotenv/config' 或 require('dotenv').config())显式从项目文件加载环境变量,但注册表元数据未声明任何必需凭据。鼓励自动加载 .env 文件使技能可以访问存储在那里的任何秘密,并增加了敏感值被写入临时脚本或记录的机会。要求 '显式加载环境变量而不是依赖外部环境注入' 是不寻常的,可能与声明的目的不成比例。
持久化与权限
技能未设置为 always:true 且不自行安装,但它指示修改 .gitignore 并在工作目录创建文件。这需要对仓库/工作空间的写入访问权限,并可能改变项目配置;这是一个有限的权限,但值得注意。
安装前注意事项
  1. 确认您同意代理在工作空间创建和删除文件;
  2. 避免在工作空间的 .env 文件中存储敏感秘密;
  3. 要求代理显示临时脚本内容并获得手动批准;
  4. 审查和批准 .gitignore 更改;
  5. 如果必须允许自动脚本创建,优先在隔离测试环境或容器中运行。若期望技能永不访问秘密,请要求作者移除显式 dotenv 要求并要求交互式批准执行生成的脚本。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/17
● 无害

安装命令 点击复制

官方npx clawhub@latest install safe-terminal-runner
镜像加速npx clawhub@latest install safe-terminal-runner --registry https://cn.clawhub-mirror.com

技能文档

执行包含复杂逻辑、环境变量或特殊字符(如单双引号、括号、 %$ 等)的脚本或数据库操作时(Node.js 或 Python),必须严格遵循以下规则:

🚫 禁止

  • 永远不要 使用内联单行脚本,如 node -e "..."python -c "..." 执行复杂逻辑。
  • 永远不要 直接在终端命令中构造包含 SQL 查询、JSON 解析或复杂正则表达式的复杂字符串,以防止 Windows PowerShell 或 Bash(如错误解释 %ForEach-Object)中的逃逸错误和命令别名冲突。

✅ 必须遵循的过程

当需要运行一次性脚本(如更新数据库架构、迁移数据、测试 API)时,必须按照以下工作流:
  • 创建临时文件:在适当目录(如 scripts/ 或当前工作目录)生成完整的独立脚本文件(如 temp_update_db.jstemp_task.ts)。
  • 写入完整代码:在文件中清晰写入所有逻辑,包括导入、环境变量加载、执行和健壮的错误处理。脚本必须在文件顶部显式加载环境变量,而不是依赖外部环境注入:
import 'dotenv/config'; // 对于 ESM
// 或
require('dotenv').config(); // 对于 CJS
  • 执行文件:使用标准命令(如 node temp_update_db.jsnpx tsx temp_task.ts)在终端运行文件。
  • 清理:无论执行是否成功,一旦确认结果,请立即删除临时文件以保持项目工作空间清洁。
注意:所有临时脚本必须以 temp_ 为前缀。确保将 temp_* 添加到 .gitignore 以防止意外提交。

⚠️ 错误处理

如果在执行过程中终端挂起、冻结或显示意外提示(如等待用户输入),必须立即停止当前操作。假设脚本触发了终端环境的特殊逃逸规则,重试使用上述描述的独立文件执行方法。

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务