Appearance
多OpenClaw智能体共享SKILL库:四轮探索+Junction方案完整实录
原生不支持跨智能体共享,需要手动干预。Junction是最干净最省事的方案。
背景
机器上同时跑两个OpenClaw系智能体:
- OpenClaw:
C:\Users\Administrator\openclaw\ - Claude Code:
C:\Users\Administrator\claude\
两边各有skills目录,积累大量重复和分散的Skill,维护成本越来越高。
问题:很多技能记不得在哪个智能体上安装,如果再加上爱玛仕、WorkBuddy更无法管理。
目标:让它们共享同一份SKILL库。
第一轮探索:Skill能不能共用?
| 智能体 | Skills路径 | 数量 |
|---|---|---|
| OpenClaw | C:\Users\Administrator\openclaw\skills\ | ~37个 |
| Claude Code | C:\Users\Administrator\claude\skills\ | ~20个 |
发现:
- Claude Code读的是
~/.claude/skills/ - OpenClaw读的是
~/.openclaw/skills/ - 路径完全不同,互不相通
结论:原生不支持跨智能体共享,需要手动干预。
第二轮探索:能不能合并到同一个目录?
问题一:同名Skill内容不同
Claude Code版本:
yaml
---
name: github
description: "Interact with GitHub using the `gh` CLI..."
---OpenClaw版本:
yaml
---
name: github
description: "Interact with GitHub using the `gh` CLI..."
description_zh: "管理 GitHub Issues、PR 和 CI"
description_en: "Manage GitHub issues, PRs, and CI runs"
version: 1.0.0
---OpenClaw版多了description_zh、description_en、version字段。物理合并只能保留一份,会丢失元数据。
问题二:SKILL.md格式不完全兼容
多余字段通常被静默忽略,但如果某个平台做强校验,可能报错。
问题三:脚本路径硬编码
部分Skill内含.sh/.py/.js脚本,可能硬编码了相对路径。
结论:直接物理合并风险较大,同名冲突不好处理。
第三轮探索:Symlink软链接方案
Windows两种链接方式
| 类型 | 命令 | 权限要求 | 跨分区 | 适用场景 |
|---|---|---|---|---|
| Junction(目录联接) | New-Item -ItemType Junction | 普通用户即可 | ❌ 仅同分区 | 同分区目录映射 |
| Symlink(符号链接) | New-Item -ItemType SymbolicLink | 需要管理员或开发者模式 | ✅ 可跨分区 | 更灵活但权限门槛高 |
检查权限状态:
powershell
whoami /priv | Select-String 'SeCreateSymbolicLinkPrivilege'
# 输出:SeCreateSymbolicLinkPrivilege Create symbolic links DisabledSymlink权限未开启,Junction不需要额外权限,且两个目录都在C盘。
决定:用Junction。
第四轮探索:怎么链接?——三个方案对比
方案A:把整个目录作为子目录挂载
powershell
New-Item -ItemType Junction `
-Path "C:\Users\Administrator\claude\skills\openclaw-shared" `
-Target "C:\Users\Administrator\openclaw\skills"问题:openclaw-shared会被当成一个Skill名字,里面嵌套37个子Skill。
结果:37个Skill全部不会被识别,因为它们在二级目录里。
❌ 不可行。
方案B:逐个Skill建立Junction
powershell
New-Item -ItemType Junction `
-Path "C:\Users\Administrator\claude\skills\nuwa" `
-Target "C:\Users\Administrator\openclaw\skills\nuwa"每个Skill一个链接,37个Skill要建37个Junction。还要处理同名冲突。
⚠️ 可行但非常繁琐,后续新增Skill还要手动建链接。
方案C:让Claude的skills目录直接指向OpenClaw的(✅ 推荐)
思路:把所有Skill统一存放在OpenClaw的openclaw/skills/下,删掉Claude的claude/skills/目录,用Junction让它指向OpenClaw的目录。
C:\Users\Administrator\openclaw\skills\ ← 实际文件存放位置(主库)
↑
C:\Users\Administrator\claude\skills\ ← Junction,指向上面两个智能体读的都是同一份文件,真正共享,零冗余。
✅ 最干净、最省事的方案。
落地:六步执行计划
第一步:差异对比——找出重叠和独有
| Skill名称 | OpenClaw | Claude |
|---|---|---|
| github | ✅ (v1.0) | ✅ (精简) |
| nuwa | ✅ | ❌ |
| stock-watcher | ✅ | ❌ |
| ... | ... | ... |
重叠的Skill,选择字段更完整的版本(通常是OpenClau版本)。
第二步:迁移Claude独有的Skill
powershell
Move-Item -Path "C:\Users\Administrator\claude\skills\some-unique-skill" `
-Destination "C:\Users\Administrator\openclaw\skills\some-unique-skill"第三步:备份Claude原目录
powershell
Copy-Item -Path "C:\Users\Administrator\claude\skills" `
-Destination "C:\Users\Administrator\claude\skills-backup-20260426" `
-Recurse第四步:删除Claude原skills目录
powershell
Remove-Item -Path "C:\Users\Administrator\claude\skills" -Recurse -Force第五步:创建Junction
powershell
New-Item -ItemType Junction `
-Path "C:\Users\Administrator\claude\skills" `
-Target "C:\Users\Administrator\openclaw\skills"验证:
powershell
# 确认Junction创建成功
dir "C:\Users\Administrator\claude\skills"
# 确认是Junction而非普通目录
fsutil reparsepoint query "C:\Users\Administrator\claude\skills"第六步:双端验证
- 列出可用Skills,确认数量和内容一致
- 调起一个原来Claude独有的Skill,确认功能正常
- 调起一个重叠Skill(如
github),确认无报错
踩坑指南
🔴 删除Junction时的安全操作
安全操作:
powershell
Remove-Item -Path "C:\Users\Administrator\claude\skills" -Force
# 或者用rmdir,更明确
cmd /c rmdir "C:\Users\Administrator\claude\skills"危险操作:
powershell
# ❌ 危险!可能删除openclaw/skills下的所有文件
Remove-Item -Path "C:\Users\Administrator\claude\skills" -Recurse -Force🟡 SKILL.md格式兼容性
OpenClaw版的SKILL.md通常包含更多字段,Claude Code遇到不认识的字段一般会静默忽略。
🟡 后续新增Skill的维护
共享后,无论从哪个平台安装新Skill,文件都会写入OpenClaw的目录。两边立即可见,无需额外操作。
🟡 跨分区场景
如果两个智能体安装在不同分区,Junction不能用。需要:
- 开启Windows开发者模式
- 改用Symlink:
powershell
New-Item -ItemType SymbolicLink `
-Path "D:\Users\xxx\claude\skills" `
-Target "C:\Users\Administrator\openclaw\skills"🟢 备份策略
建议操作前保留备份目录一段时间(一周),确认双端运行正常后再删除。
最终架构
C:\Users\Administrator\openclaw\skills\ ← 主库(所有Skill的实际存储位置)
├── github/
├── nuwa/
├── stock-watcher/
└── ...(37+个Skill)
↑
│ Junction(目录联接)
│
C:\Users\Administrator\claude\skills\ ← 指向主库的链接核心思路:一份文件,两个入口,零冗余,单点维护。
总结
| 问题 | 答案 |
|---|---|
| 多个OpenClaw智能体能共享Skill吗? | 原生不支持,但可以通过Junction实现 |
| 推荐方案 | 让次要智能体的skills目录Junction指向主智能体的目录 |
| 关键前提 | 两个目录在同一分区(Junction限制) |
| 最大风险 | 删除Junction时误加-Recurse可能穿透到源目录 |
| 日常维护 | 共享后新增Skill自动对两边可见,无需额外操作 |
关键词:OpenClaw, Skills共享, Junction, Claude Code, 智能体, Windows
