我给 AI 助手装了 10 个插件,然后自己写了 2 个发布到了市场

大多数人用 AI 助手的方式,和用搜索引擎差不多——有问题就问,问完就关。这没什么不对,但如果你愿意多花一点时间配置它,它能做的事远不止于此。

今天这篇,聊聊我折腾 OpenClaw Agent Skills 的完整过程:从批量安装官方推荐的 10 个核心 skill,到发现有几个根本装不了,再到自己动手搭了 2 个并发布到内网市场。过程有点绕,但挺有意思。

先说 Skills 是什么

OpenClaw 的 Skill 本质上是一个目录,里面放了一个 SKILL.md 文件,加上可选的脚本和参考文档。每次对话开始前,Agent 会扫描所有已安装的 skill,根据用户意图决定激活哪个。

结构是这样的:

skill-name/
├── SKILL.md          # 必须:触发描述 + 使用说明
├── scripts/          # 可选:Python/Bash 脚本
├── references/       # 可选:参考文档、API 文档等
└── assets/           # 可选:模板、图片等

SKILL.md 的 frontmatter 里有个 description 字段,这是 Agent 判断「要不要用这个 skill」的核心依据。写得越精准,触发越准确。

安装来源有两个:内网的 Knot 市场(knot.woa.com)和国际开源版的 ClawhHub(clawhub.ai)。在腾讯内网用的是 Knot,可以直接通过 Agent 的工具调用安装,不用离开对话界面。

批量安装:10 个里装上了 5 个

网上流传一份「OpenClaw 十大核心 Skills」的推荐清单,我让 Agent 批量去 Knot 上搜索安装。结果如下:

Skill 功能 状态
EdgeoOne-ClawScan 安全体检(对应 Clawsec) ✅ 已安装
Multi Search 17 引擎整合搜索 ✅ 已安装
self-improving-agent 记录错误、持续进化 ✅ 已安装
task-tracker 任务跟踪 + 每日汇报 ✅ 已安装
find-skills 本地 skill 发现 ✅ 已安装
Tavily Search 实时联网搜索(需 API Key) ❌ 未找到
Ontology 知识图谱 ❌ 未找到
GitHub 代码仓库管理 ❌ 内网无意义
Office-Automation 日程/邮件/文档全流程 ❌ 未找到
Systematic-Debugging 结构化调试法 ❌ 未找到

5 个装不上的原因各不同:Tavily 是国际平台、需要 API Key,Knot 上没有对应实现;GitHub 在内网没有意义,腾讯用的是工蜂(已内置);其余几个单纯就是 Knot 上没收录。

这种情况很常见。技能市场的覆盖度永远跟不上需求,到了边界就得自己造。

Tavily 装不了?用 web-reader 平替

Tavily 的核心价值是两点:联网搜索 + 网页内容提取(返回干净正文,方便 RAG)。搜索部分 Multi Search 已经覆盖了,缺的是内容提取。

最初想用 Jina Reader(r.jina.ai),在 URL 前加前缀就能把任意网页转成 Markdown:

GET https://r.jina.ai/https://example.com/article

测试发现内网出口把这个域名拦了,SSL 握手直接失败。换思路,OpenClaw 自带的 web_fetch 工具其实就能做这件事——它内置了 Readability 解析器,自动过滤广告和导航栏,返回干净 Markdown。

于是我做了一个 web-reader skill,本质上就是把这个工具的用法规范化,并定义清楚降级策略:

# 降级链
第一步: web_fetch(url, extractMode="markdown")
第二步: web_fetch(url, extractMode="text")     # 如果第一步失败
第三步: browser-operation skill                # JS 渲染页面兜底

配合 Multi Search 的标准工作流是:

• 用 Multi Search 搜索,拿到结果 URL 列表

• 对感兴趣的 URL 调用 web-reader 提取正文

• Agent 综合多篇内容给出答案

这个组合基本等价于 Tavily 的能力,而且完全免费,不依赖任何外部 API。

Ontology:给 Agent 装一个「长期记忆」

这个需求来自一个现实问题:每次新开对话,Agent 都是全新的,没有任何上下文。你跟它聊了很多次,它对你的偏好、项目、工作习惯一无所知。

Ontology skill 的方案是:把这些信息存成本地 JSON 知识图谱,Agent 需要时读取。核心数据结构很简单:

{
  "entities": {
    "用户": {
      "type": "person",
      "偏好语言": "Python",
      "updated_at": "2026-03-29"
    },
    "OpenClaw": {
      "type": "tool",
      "updated_at": "2026-03-29"
    }
  },
  "relations": [
    {
      "from": "用户",
      "relation": "使用",
      "to": "OpenClaw",
      "created_at": "2026-03-29"
    }
  ]
}

操作接口全部封装在 scripts/ontology.py 里,支持命令行调用:

# 写入
python3 ontology.py set "用户" "偏好语言" "Python"
python3 ontology.py relate "用户" "发布" "web-reader"

# 查询
python3 ontology.py get "用户"
# → [用户] (person)
# →   偏好语言: Python
# →   relations:
# →     → 发布 → web-reader

# 统计
python3 ontology.py summary
# → Knowledge graph: 3 entities, 2 relations

零外部依赖,纯标准库,文件默认存在 ~/.openclaw/workspace/memory/ontology.json,跨 session 持久化。

这和 RAG 不同——RAG 是把大量文本塞进向量库,语义检索;Ontology 是结构化知识图,适合存「偏好」「关系」「设定」这类确定性强的信息。两者互补,不冲突。

发布到 Knot 市场:踩了几个坑

skill 写完,用官方脚本打包:

python3 package_skill.py /path/to/skill-dir /tmp

打包脚本输出 .skill 文件(本质是 zip)。上传到 Knot 时遇到几个报错,按顺序踩完:

报错一invalid zip file:未找到 SKILL.md — 打包脚本生成的路径是 skill-name/SKILL.md,Knot 识别的是根目录 SKILL.md。解法:把 .skill 改成 .zip 上传

报错二仅支持 .zip 格式 — 改扩展名即可

报错三ZIP 必须只包含一个顶层文件夹 — 用 zip -r 重新打包,确保 zip 结构是 skill-name/ 作为唯一顶层

最终正确的打包方式:

mkdir -p /tmp/pkg/web-reader/scripts
cp SKILL.md /tmp/pkg/web-reader/
cp scripts/test_fetch.py /tmp/pkg/web-reader/scripts/
cd /tmp/pkg && zip -r web-reader.zip web-reader/
# 结构:web-reader/ 为唯一顶层,SKILL.md 在其中

上传成功后,通过 Agent 的 knot_skills 工具搜索到 skill ID,直接在对话里安装。整个流程不用离开聊天界面。

写 Skill 的几个实操建议

折腾下来总结几点:

description 字段比 body 更重要。Agent 是先看 description 决定要不要加载这个 skill,body 只有触发后才读。description 写得模糊,skill 永远不会被用到

零依赖优先。能用标准库就不要引入第三方包,能用内置工具(web_fetchexec)就不要调外部服务。技能要能在隔离环境里跑,依赖越多越脆

降级链要写清楚。网络环境千变万化,skill 里要定义好:主路径失败了走哪条备用路径,最终兜底方案是什么

脚本要实际测试。SKILL.md 里写的步骤,一定要真正跑一遍。光靠「看起来没问题」,上线后大概率会出错

发布前检查 zip 结构。用 unzip -l 确认唯一顶层文件夹,这是 Knot 上传最常见的坑

现在的 Skill 配置全景

今天装完后,我的 OpenClaw 上已经有这些 skill 在跑:

搜索层:Multi Search(17 引擎)+ web-reader(正文提取)

记忆层:ontology(结构化知识图)+ self-improving-agent(错误学习)

任务层:task-tracker(进度跟踪)

工具层:EdgeoOne-ClawScan(安全体检)+ find-skills(技能发现)

腾讯内网专属:工蜂、TAPD、iWiki、KM、企微文档、Claude Code 内网版等

这些层加起来,Agent 能做的事已经相当具体了:搜索→提取→记住→复用,基本的知识工作流跑通了。

接下来值得探索的方向是:ontology 和 self-improving-agent 联动——当 Agent 纠正自己的错误时,自动把「正确做法」写入知识图谱,下次直接命中。目前这两个技能是独立运行的,打通之后才是真正意义上的「越用越聪明」。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐