简介:OpenClaw技能合集内含5494个技能的中文翻译与分类整理,面向需要快速上手并行计算的中文开发者,覆盖从基础内存操作、算术运算到矩阵计算、信号处理、图像视频及机器学习等不同层级的技能模块,可用作日常开发的速查与学习手册。压缩包共66个文件,包含HTML说明页面、PNG/WebP视觉素材、JavaScript脚本、字体文件及Markdown说明等,整体约23.54MB,目录结构清晰,便于按需定位。目前已有189人学习下载。内容不仅针对CPU多线程、向量化指令集及GPU大规模并行等硬件特性给出优化策略,还覆盖FFT、流处理等常见计算模式的优化写法,可帮助开发者在保证算法精度的同时提升跨平台运行效率。通过学习这套中文技能集,能够显著降低OpenClaw的学习门槛,加快科学计算、数据处理与人工智能等领域的项目落地与性能调优。
1. 装完 OpenClaw 默认实例后,这套技能包才是让它真正干活的起点
如果你刚把一个 OpenClaw 实例跑起来,大概率会经历一段“龙虾中看不中用”的错觉:它能聊天、能解释计划,但真让它读一个 CSV、调一次终端命令,就卡在意图转执行的边界上。这个 zip 里的内容不是新皮肤,而是一整套技能扩展资源——每个技能由一份描述文件和一段可执行脚本组成,装进配置目录后,助手才知道在什么场景下调什么工具。适合的是那些不想从零写 agent 编排、只想拿现成技能模板快速跑通的从业者。我拆完这套包的最大感受是:技能能不能跑通,多半取决于你读没读懂它的文件约定,以及装的路径对不对。下文先把约定讲透,再给安装、调试和翻车排查的完整路径。
2. 先把技能机制拆开再看资源包:Skills 的文件约定与加载模型
这套资源的核心不是某个大而全的程序,而是一批“技能描述 + 脚本实现”的配对文件。理解这个模型后,你就能预判哪些文件该放在哪里、哪些配置不打开会导致技能静默失效。资源包里真正起作用的通常是三层:描述文件声明能力,脚本负责执行,框架按描述文件和触发条件决定何时调用。下面从最小单元开始拆。
2.1 一个技能长什么样:从 YAML 描述到脚本执行的完整调用链
技能的最小单元是“skill.yaml + scripts/ 目录”。描述文件里写清楚这个能力叫什么、在什么场景下用、需要哪些输入参数、用哪个脚本执行。框架加载技能时,先读描述文件建立索引,等用户请求进来后再根据触发词或语义匹配决定是否唤起脚本。
name: read_local_csv description: >- 当用户提到“读取 CSV”“统计 CSV”“查看表格”时使用。 需要提供文件路径参数 path。 trigger: - 读取csv - 查看csv - 统计csv script: ./scripts/read_csv.py env: - PATH timeout: 30description 字段是给大模型做意图匹配的,写的时候尽量把用户可能的问法都覆盖进去;trigger 是硬匹配关键词,起兜底作用。script 路径相对技能目录,timeout 控制脚本最大执行时长,超过会被强制终止。env 声明脚本运行时需要的环境变量,这里的 PATH 表示允许脚本使用系统命令路径。
资源包解压后通常是这样的结构:
openclaw-skills/ ├── README.md ├── install.sh ├── config.example.yaml ├── skills/ │ ├── base/ │ │ ├── file_ops/ │ │ │ ├── skill.yaml │ │ │ └── scripts/ │ │ │ ├── read_csv.py │ │ │ └── io_utils.py │ │ └── browser_ops/ │ │ ├── skill.yaml │ │ └── scripts/controller.js │ └── community/ │ ├── network_probe/ │ └── ... └── examples/ └── minimal_skill/base 目录放的是稳定可用的基础技能,community 是社区贡献的扩展技能,examples 是最小可运行示例。装包时建议先复制 base 而不是整个 skills 目录,避免把未经验证的社区脚本一次全塞进运行环境。
2.2 版本约定是隐藏门槛:先对齐再解压
这个资源包在不同发行分支下的目录命名和字段要求是不一样的。旧分支里技能目录可能叫 plugins,描述文件是 JSON 格式且没有 trigger 字段;新分支统一改成 skills 目录和 YAML 格式,并增加了 trigger 匹配。跳到新分支后如果还按旧路径配置,技能会被完全忽略,日志里却看不到报错。
我一般会先看包内 README 里标注的目标分支,再对照当前 twist 实例版本决定用哪套结构。下面这个表是常见的对应关系,具体以资源包 README 为准:
| 发行分支 | 技能目录默认位置 | 描述文件格式 | 触发支持 |
|---|---|---|---|
| 旧分支 | ~/.openclaw/plugins | JSON + 脚本 | 仅语义匹配 |
| 新分支 | ~/.openclaw/skills | YAML + scripts | 语义 + trigger 关键词 |
所以解压后别急着跑 install.sh,先看包内文档里写的目标分支,再决定把文件放 plugins 还是 skills。这个动作能省掉后面大半的排查时间。
2.3 技能启停的配置入口:从开关到权限位
技能加载的最终决定权在配置文件。资源包里通常会带一份 config.example.yaml,里面有几个字段直接决定技能能不能被加载和执行:
skills: dir: ~/.openclaw/skills enabled: true allow_unsafe: false timeout_default: 30enabled 设为 false 时,框架会完整跳过技能加载流程,表现是日志干净、列表为空,没有任何报错。allow_unsafe 控制技能脚本能否调用 shell 命令或执行非白名单操作,false 时涉及 subprocess 或 bash 调用的脚本会被拒绝执行。timeout_default 是全局默认超时,单个技能里的 timeout 字段可以覆盖它。
装技能前先检查这份配置,能避免不少“装完了一触发就说不可用”的尴尬。配置文件的路径一般在 ~/.openclaw/config.yaml,如果没有就从包里复制一份再改。
3. 把技能包装进助手实例:环境准备与三条可复现的安装路径
安装这个动作本身不难,但不同路径适用的场景差别很大,选错会留下隐患。下面三条路径分别是手动复制、CLI 注册和配置导入加软链,按你的实际使用习惯选一条就行。装完后别急着测试,先用列表命令确认技能已经被框架识别。
3.1 先检查运行时:版本、依赖、目录权限
OpenClaw 技能脚本常见的是 Python 和 Node 实现,运行时缺失会导致脚本执行阶段失败。先跑一轮环境检查,确认依赖在位再动包:
node -v python3 -V git --version openclaw version 2>/dev/null || echo "openclaw-cli not found"前三行分别检查 Node、Python 和 Git,第四行确认 CLI 命令是否可用。如果 openclaw 命令不存在,说明框架还没有装到 PATH 里,需要先完成基础安装。目录权限问题在 Linux 环境尤其常见,技能目录如果属于其他用户,加载器可能因为读不到 skill.yaml 而静默跳过。检查完环境后用ls -la ~/.openclaw/确认当前用户对目录有读和执行权限。
3.2 路径 A:把技能目录手动放进配置目录(最稳妥)
手动复制是理解整套机制最快的方式,出问题时也最容易排查。先把 zip 解压到独立临时目录,再按需复制:
unzip openclaw相关技能.zip -d ~/skill-pkg mkdir -p ~/.openclaw/skills cp -r ~/skill-pkg/skills/base/* ~/.openclaw/skills/ openclaw restart解压到独立目录而不是直接覆盖配置目录,是为了避免包里多层嵌套把目录结构搞乱。mkdir -p 确保目标目录存在,cp 只复制 base 下的稳定技能组,不把 community 里未经验证的内容一起带进来。restart 让框架重新扫描技能目录并建立索引。重启后立刻验证是否被识别:
openclaw skills list tail -f ~/.openclaw/logs/runtime.log | grep -i skill第一条命令输出已加载技能列表,第二条实时观察日志里和后端加载相关的记录。列表里能看到的说明文件结构没问题,看不到就按第五章的现象排查。手动复制适合第一次安装、想亲眼确认每一步效果的情况,缺点是后续更新技能需要重新复制。
3.3 路径 B:用 CLI 做一次性注册(适合单技能试装)
只想试一个社区技能时,用 CLI 注册比手动复制更快,它会自动处理 manifest 登记:
openclaw skill install ~/skill-pkg/skills/community/network_probe openclaw skill uninstall network_probeinstall 子命令把技能目录登记进框架的 manifest,技能文件可以放在任意位置而不用手动复制到 ~/.openclaw 下。uninstall 按技能名移除登记记录。需要注意的是,CLI 注册的记录文件在升级后有可能因格式变化而失效,卸载不干净时残留的配置项会导致同名技能安装失败。这条路径适合临时验证单个技能,不适合作为长期维护方式。
3.4 路径 C:配置导入加软链(适合多机同步与频繁迭代)
对于把技能包作为工具库长期维护的情况,我会用配置导入加符号链接的方式:
cp ~/.openclaw/config.yaml ~/.openclaw/config.yaml.bak cp ~/skill-pkg/config.example.yaml ~/.openclaw/config.yaml ln -s ~/skill-pkg/skills ~/.openclaw/skills openclaw restart先把现网配置备份到带 .bak 后缀的文件,这是任何配置变更前的后悔药。再用包内的示例配置覆盖,覆盖前建议先 diff 一下两份配置有哪些差异,避免丢失已有的其他自定义项。ln -s 建立软链后,技能目录本体不需要复制,迭代技能文件时直接改 ~/skill-pkg/skills 下的内容即可。这条路径的风险在于软链路径一旦漂移,manifest 里记录的绝对路径会失效,多机同步时尤其注意每台机器的路径要一致。
三条路径各有适用场景,手动复制适合新手第一次装,CLI 适合试单个技能,软链适合长期迭代和多机维护。装完后无论走哪条路径,都先跑一次openclaw skills list确认识别情况,再进入功能测试。
4. 自己动手写一个技能并跑通全链路:描述文件、脚本与触发调试
资源包里的技能可以拿来直接用,但真正让你上手的是仿照它的结构写一个自己的技能。全链路分三步:写描述文件、写执行脚本、用桩脚本验证触发链路。每一步都有可能踩坑,但链路是固定的,按顺序排查就能定位问题。
4.1 最小描述文件:从接口约定到可识别
技能描述文件决定了框架能不能识别这个技能、什么情况下会唤起它。以读取 CSV 的技能为例,最小描述文件长这样:
name: read_local_csv description: >- 当用户提到“读取 CSV”“统计 CSV”“查看表格”时使用。 需要提供文件路径参数 path。 trigger: - 读取csv - 查看csv - 统计csv script: ./scripts/read_csv.py env: - PATH timeout: 30name 字段是这个技能的唯一标识,CLI 列表和日志里都用它定位。description 是给大模型看的,写得越具体,意图匹配越准;这里把常见问法都列举了一遍,触发时不容易误判。trigger 是硬匹配关键词,当语义匹配不确定时可以作为兜底触发条件。script 指向的执行脚本路径是相对技能目录的,如果脚本被挪动位置,这个路径也要同步改。env 声明脚本执行时需要注入的环境变量,timeout 控制最大执行时长,读大文件时可以调大到 120 秒。
写描述文件最容易犯的错是把 description 写得太抽象,比如只写“用于读取文件”,大模型在意图匹配时不知道该不该唤起它。多写几个用户可能的问法,匹配准确率会明显提升。
4.2 脚本侧:入参与返回的规矩
脚本是技能真正干活的部分,它的输入输出格式需要和框架约定一致。常见约定是框架把用户请求解析成 JSON 对象,通过标准输入喂给脚本,脚本再把结果以 JSON 格式打印到标准输出。下面是一个最小可用的 Python 实现:
#!/usr/bin/env python3 import json import sys import csv def main(): payload = json.load(sys.stdin) path = payload.get("path", "") try: with open(path, newline="", encoding="utf-8") as f: reader = csv.DictReader(f) rows = list(reader) result = { "ok": True, "row_count": len(rows), "columns": list(reader.fieldnames or []) } except Exception as e: result = {"ok": False, "error": str(e)} print(json.dumps(result, ensure_ascii=False)) if __name__ == "__main__": main()脚本从标准输入读取 JSON 而不是从命令行参数读取,是因为文件路径里可能带空格和特殊字符,通过 JSON payload 传参可以规避转义问题。返回结果统一用 ok 字段标记成功失败,data 或 error 字段携带具体内容,这样框架可以按固定结构解析。异常处理很关键:脚本内部吞掉所有异常并转成 JSON 错误输出,不要让进程以非零退出码退出,否则框架会误判为技能崩溃。
还要注意脚本里不要 print 任何调试信息,比如print("loading...")这行出现在标准输出里,会污染 JSON 解析结果。调试日志一律写到 stderr 或外部日志文件。
4.3 用桩脚本先验证链路再写真逻辑
直接写复杂脚本然后一次跑通是小概率事件,更常见的是链路没通和脚本出错混在一起,排查时无从下手。我的习惯是先用桩脚本验证链路,再替换成真实实现。桩脚本只返回固定结果:
#!/bin/bash echo '{"ok": true, "stub": true, "args": "$@"}'把 skill.yaml 里的 script 临时指向这个桩脚本,触发一次对话测试。助手侧如果能正常返回{"ok": true, "stub": true},说明描述文件、触发匹配、脚本执行整条链路是通的。然后把脚本替换成真实的 Python 实现,再触发一次,这时如果失败,问题基本锁定在脚本本身。
这个调试习惯能帮你把“链路问题”和“脚本问题”分开,省掉大量无效排查时间。我见过很多人在第一步就翻车,其实是描述文件里 script 路径写错了,桩脚本一测就能暴露。
4.4 把资源包里的样板改造成自己的技能
熟悉链路后,改造资源包里的现成技能比从零写更快。常见做法是复制一个技能目录,改名后改描述文件和脚本路径:
cp -r ~/.openclaw/skills/base/file_ops ~/.openclaw/skills/custom/my_file_tool mv ~/.openclaw/skills/custom/my_file_tool/skill.yaml ~/.openclaw/skills/custom/my_file_tool/skill.yaml.bak复制目录后先改 name 和 description,避免和其他技能重名导致覆盖。脚本能复用的就复用,需要扩展的单独写在新脚本里。如果新技能和原技能共享部分工具函数,把公共逻辑抽到 scripts/lib 目录,技能脚本里通过相对路径导入。这样改造后,技能包就从一个固定资源变成你自己的工具库,后续迭代只是往 custom 目录里加新目录的事。
5. 避坑指南:装技能时最常见的五个翻车现场
技能安装的坑集中在目录结构、权限位、返回格式和版本迁移四个方面。下面这几条是我实际拆包和调试时反复遇到的,按“现象—原因—解决”的顺序写,建议边装边对照。
5.1 技能装了却看不到加载记录
现象:目录和配置看起来都对,重启后日志里没有技能相关的加载记录,openclaw skills list输出为空。
原因:最常见的是目录深度不对。技能包解压出来可能是openclaw-skills/skills/base/file_ops/skill.yaml这样的三层结构,如果你把外层目录直接复制到~/.openclaw/skills/,加载器会在~/.openclaw/skills/skills/base/file_ops/里找技能描述文件,路径对不上就静默跳过。另一个原因是技能目录权限不足,加载器读不了 skill.yaml,同样不会有报错。
解决:用find ~/.openclaw/skills -name skill.yaml确认描述文件的实际位置,加载器要求的是“目标目录下直接能找到 skill.yaml”,而不是再往下嵌套两层。目录权限问题用chmod -R o+rX ~/.openclaw/skills修复后再重启。
5.2 技能被识别但触发后提示不可用
现象:skills list里能看到技能,对话里触发它时却返回“技能不可用”之类的提示。
原因:配置文件里skills.allow_unsafe设为 false,而这个技能脚本内部调用了 shell 命令或 subprocess 执行外部程序。框架检查到危险调用后,在执行前就把请求拦住了,提示信息又不会明确告诉你”是因为权限位被拦“。
解决:临时把allow_unsafe改为 true 测试一次,确认是这个原因后,再把技能脚本里的敏感命令改成纯 Python 实现,避免直接调 shell。后者更安全,也符合权限控制的本意。
5.3 脚本能手动跑但助手侧返回空结果
现象:在终端里手动执行脚本,输出 JSON 完全正常,但助手的回答里没有任何数据,像是脚本没执行一样。
原因:脚本标准输出里混入了非 JSON 内容。有人习惯在脚本里加一行print("loading...")或print("开始处理"),这些内容会被框架当作结果的一部分解析,导致 JSON 解析失败或取到了错误字段。另一个常见原因是编码问题,Windows 环境下 multibyte 字符串没有正确转码,打印出来的 JSON 是乱码。
解决:脚本里只print(json.dumps(result))这一行输出,其他调试信息写到 stderr 或日志文件。编码方面在脚本开头声明# -*- coding: utf-8 -*-,并确保从标准输入读取时用 UTF-8 解码,落地数据统一转成 UTF-8 再输出。
5.4 框架升级后技能集体失效
现象:原本跑得好好的技能,在框架升级后全部无法触发,skills list里一个都不见了。
原因:发行分支的版本约定变了。旧分支读的是 plugins 目录和 JSON 描述文件,新分支统一改为 skills 目录和 YAML 格式,触发字段也可能从 trigger 改名。升级后旧结构不再被识别,但升级过程通常不会清理旧目录,所以看起来毫无征兆。
解决:升级前先看新分支的迁移说明,确认技能目录和描述文件格式有没有变化。技能目录用 Git 管理的话,升级前打好 tag,迁移完用git diff对比改动,再批量改描述文件。不要直接覆盖旧配置,先跑一次升级前备份。
5.5 装完社区技能后启动变慢
现象:装了几个社区技能后,框架启动时间从几秒涨到几十秒,日志显示有一个技能加载耗时特别长。
原因:技能脚本里有重量级依赖,比如一启动就 import 了大型数据分析库,冷启动需要好几秒。框架加载技能时如果做了预编译或预检查,这个耗时会被放大。多个社区技能堆在一起,启动就变得难以忍受。
解决:把重依赖的 import 语句移到 main() 函数内部,做到用到时才加载,减少启动阶段的预热。如果框架支持技能懒加载配置,把不常用的社区技能设为延迟加载。实测下来,这一招能把启动时间从几十秒压回几秒。
6. 进阶:把技能包变成你自己的工具库:目录规范、冒烟测试与回滚
当技能数量超过十几个,靠记忆管理就不够了。我最后的落地方式是把技能包当代码库管:定目录规范、写冒烟测试、用版本控制做回滚,这套组合能让技能长期稳定运行。
6.1 目录规范:区分稳定组和自定义组
技能目录我固定分两层:base 放官方稳定技能,custom 放自己写的技能。custom 下按业务领域分子目录,比如文件处理、网络请求、数据分析。这样出问题时能快速定位是哪部分出了偏差,升级资源包时也只替换 base,不影响 custom。
6.2 用冒烟脚本守护技能目录
技能文件改过头或复制漏了文件时,运行时的报错往往不直观。我写了一个小的冒烟测试脚本,每次改完配置或升级前先跑一遍,检查目录下所有技能的描述文件字段和脚本文件是否完整:
#!/usr/bin/env python3 import os import json import yaml base = os.path.expanduser("~/.openclaw/skills") required = ["name", "description", "script"] failed = [] total = 0 for root, dirs, files in os.walk(base): if "skill.yaml" not in files: continue total += 1 skill_path = os.path.join(root, "skill.yaml") with open(skill_path, "r", encoding="utf-8") as f: meta = yaml.safe_load(f) missing = [k for k in required if k not in meta] if missing: failed.append({"skill": skill_path, "reason": "missing: " + ", ".join(missing)}) continue script_path = os.path.join(root, meta["script"]) if not os.path.exists(script_path): failed.append({"skill": skill_path, "reason": "script not found"}) print(json.dumps({ "total": total, "failed_count": len(failed), "failed": failed }, ensure_ascii=False, indent=2))这段脚本遍历技能目录,检查每个技能是否具备 name、description、script 三个必要字段,并确认脚本文件实际存在。字段缺失和脚本文件丢失是最常见的两类问题,跑一遍就能暴露。总数为零时说明技能目录路径本身有问题,检查配置里的 dir 字段是否指向正确位置。这个脚本不触发实际执行,只做静态检查,速度很快,适合每次改完配置后立即运行。
6.3 版本控制与回滚
技能目录纳入 Git 管理后,升级前先打 tag,升级失败就能直接回滚:
git tag before-upgrade git diff before-upgrade -- skills/ | less升级前打 tag 相当于给当前状态拍了快照,升级后如果技能集体失效,git reset --hard before-upgrade就能回到升级前状态,比手工恢复文件快得多。从那以后我每次改配置或升级框架,都强制先跑一遍冒烟脚本再放真实技能进去,这个习惯在换过三台机器之后依然有效,省下的排查时间远超那几分钟的测试成本。希望帮到你。
本文还有配套的精品资源,点击获取