23 KiB
1
说明:
Prompts/CCPE/强哥的虎贲卫/下的Prompt是我写作时用的智能体。
- 之前这些智能体的Prompt全部并列在文件夹里,我现在将它们放在了各自的文件夹;
- 之前测试了芒格,但是之前芒格在
强哥的虎贲卫/,现在我移动到了强哥的虎贲卫/芒格之魂/下,导致对应的skill和Readme这些都不对了。
任务:
我准备将强哥的虎贲卫/下的智能体都打造出来。
但是在这个之前,需要探讨下skills管理的问题。
我看到芒格之魂在skills/下,我就有100多个智能体,将来这些全部并列放进skills/中么?
还是可以做一些分类,比如将我自己的和github上的分开来;我的本身就有不同的分类。
2
这是个好问题。让我先看看你现在的目录结构和芒格之魂的具体情况。明白了。你现在有12个skill,但Prompts里有18个智能体文件夹。让我看看skill-creator的规范,了解如何组织这些skills:现在我明白了skill系统的结构。让我给你几个关于skills管理的方案:
Skills 组织方案对比
方案1:扁平结构(现状)
skills/
├── agent-browser/
├── github/
├── munger-soul/
├── weather/
└── ... (100+ 个并列文件夹)
优点:简单,OpenClaw原生支持 缺点:难以管理,没有命名空间,容易冲突
方案2:前缀命名空间(推荐过渡方案)
skills/
├── agent-browser/ # 官方/第三方
├── github/
├── weather/
├── ws-munger-soul/ # wantsong的个人技能 (ws-前缀)
├── ws-zhang-liao/
├── ws-xiao-he/
├── ws-kepner-tregoe/
└── ws-ccpe-analyst/
优点:无需改OpenClaw代码,一眼看出归属 缺点:还是在一个大目录里
方案3:分层目录 + 符号链接(推荐长期方案)
skills/
├── _external/ # 第三方skills (git submodule或手动安装)
│ ├── agent-browser/
│ ├── github/
│ └── weather/
├── _personal/ # 你的个人skills
│ ├── 强哥的虎贲卫/ # 按你的分类组织
│ │ ├── munger-soul -> ../../../users/wantsong/Prompts/CCPE/强哥的虎贲卫/芒格之魂/
│ │ ├── zhang-liao -> ...
│ │ └── xiao-he -> ...
│ ├── 强哥的龙骧营/
│ └── 强哥的思想审判庭/
└── _store/ # 软链接指向实际位置
├── munger-soul -> ../_personal/强哥的虎贲卫/munger-soul/
├── zhang-liao -> ...
└── ... (OpenClaw实际扫描的入口)
核心思想:
- 源文件保留在
Prompts/CCPE/下 — 那是你的创作空间 - Skills 目录只放软链接 — 指向源文件
- OpenClaw 只扫描
skills/下的软链接 — 对它来说一切如常
方案4:配置文件映射(需要OpenClaw支持)
在 openclaw.yaml 中添加:
skills:
paths:
- ./skills
- ./users/wantsong/Prompts/CCPE/*/ # 通配符扫描
优点:最干净,源文件和skill位置统一 缺点:需要OpenClaw代码支持
我的建议
现阶段用方案3的简化版:
# 你的源文件位置(保持不变)
users/wantsong/Prompts/CCPE/强哥的虎贲卫/芒格之魂/
# 创建skill时,在 skills/ 下创建软链接
skills/munger-soul -> ../users/wantsong/Prompts/CCPE/强哥的虎贲卫/芒格之魂/
这样:
- ✅ Prompts目录保持你的分类逻辑
- ✅ Skills目录保持OpenClaw兼容
- ✅ 编辑源文件,skill自动更新
- ✅ 100个智能体也不会乱
下一步行动?
- 我可以帮你把现有的
芒格之魂重新链接到正确位置 - 批量为你创建其他17个智能体的skill结构
- 或者先讨论清楚分类命名规范再动手
你想怎么推进?
3
我倾向于方案3:分层目录 + 符号链接,但是我还有问题。需要先答复我的问题,我充分了解后,再决定后续。
skills/munger-soul/SKILL.md其实已经包含了我的users/wantsong/Prompts/CCPE/强哥的虎贲卫/芒格之魂/芒格之魂1.1.md的内容,那么:
- 我还有必要将这个
munger-soul链接到我的原始Prompt芒格之魂1.1.md么? 芒格之魂1.1.md的内容不多,只有4000多字,openclaw的机制是什么?- 先阅读的
munger-soul/SKILL.md么,然后再去阅读芒格之魂1.1.md么? Prompts/下,我有些智能体的提示词比较长,里面放着多个附录(模型、规则),比如知行合一元认知分析师1.1.md,你不用打开阅读看文件的长度即可,这个大约有2.8万字。这个应该是我指定用知行合一元认知分析师时,OpenClaw才去加载,不然上下文容易超出。
- 先阅读的
- 像
知行合一元认知分析师这样的,里面有大量公式,有逻辑运算,我现在手工跑,都是在Gemini,Claud这样的模型上跑的,国内的Qwen,Kimi效果不理想,我需要为这些特殊的指定LLM。
好问题,我来逐一解答。
问题1:还有必要链接到原始Prompt吗?
取决于你的维护方式:
| 场景 | 建议 |
|---|---|
SKILL.md 是唯一的真相源 → 你直接在 skills/munger-soul/SKILL.md 编辑 |
不需要链接,Prompts目录只留备份 |
Prompts 是唯一的真相源 → 你在 Prompts/ 编辑,定期同步到 skill |
用软链接,或写同步脚本 |
| 双向维护 → 两边都改(容易出错) | 不推荐 |
看你的情况,SKILL.md 已经包含了完整 Prompt,而且格式规范(有 frontmatter、有结构),建议以 SKILL.md 为准,Prompts/ 下的文件可以视为:
- 历史备份
- 或开发中的草稿
问题2:OpenClaw 的加载机制
渐进式披露(Progressive Disclosure):
┌─────────────────────────────────────────────────────────────┐
│ 阶段1: 元数据 (始终加载) │
│ ───────────────────── │
│ 读取所有 skills/*/SKILL.md 的前 100 词 (YAML frontmatter) │
│ 提取 name + description,用于判断哪个 skill 触发 │
├─────────────────────────────────────────────────────────────┤
│ 阶段2: SKILL.md 全文 (触发后加载) │
│ ───────────────────── │
│ 当用户请求匹配某个 skill 的 description 时 │
│ 才加载该 skill 的 SKILL.md 全文 │
├─────────────────────────────────────────────────────────────┤
│ 阶段3: References (按需加载) │
│ ───────────────────── │
│ 如果 SKILL.md 里有指向 references/ 文件的链接 │
│ 且 Codex 判断需要,才加载那些文件 │
└─────────────────────────────────────────────────────────────┘
关键结论:
- ✅ 4000字的 SKILL.md → 只在触发时加载,平时不占上下文
- ✅ 28000字的智能体 → 必须拆分,把核心放 SKILL.md,附录放
references/ - ❌ 不要把 2.8 万字全塞进 SKILL.md,会撑爆上下文
拆分示例:
知行合一元认知分析师/
├── SKILL.md # ~5000字:核心身份、使命、执行流程
└── references/
├── 思维模型库.md # 按需加载
├── 逻辑运算规则.md # 按需加载
└── 案例分析集.md # 按需加载
问题3:为特定 Skill 指定 LLM
OpenClaw 目前不支持 per-skill 模型配置,但有几个变通方案:
方案A:会话级指定(最灵活)
/reset
/model gemini-2.0-pro
# 然后调用 skill
方案B:Skill 内部提示(推荐)
在 SKILL.md 开头加:
---
name: 知行合一元认知分析师
description: |
【模型要求】此 skill 包含复杂逻辑运算,建议在
Gemini 2.0 Pro / Claude 3.5 Sonnet / GPT-4o 上运行。
在 Qwen/Kimi 上可能效果不佳。
使用场景:深度元认知分析、思维过程显影...
---
这样用户每次触发时都能看到提示。
方案C:包装 Skill(如果需要强制)
创建一个代理 skill:
# SKILL.md
---
name: run-on-gemini
description: 将请求转发到 Gemini 运行的 知行合一元认知分析师
---
1. 检查当前模型,如果不是 Gemini 系列,提示用户切换
2. 加载 ../知行合一元认知分析师/SKILL.md 并执行
总结建议
| 问题 | 建议 |
|---|---|
| 1. 链接问题 | 以 skills/ 为准,Prompts/ 作为备份/草稿区 |
| 2. 大文件拆分 | 28000字的智能体必须拆成 SKILL.md + references/ |
| 3. 模型指定 | 在 SKILL.md 开头用注释说明推荐模型,靠用户自觉切换 |
下一步等你决定:
- 是否需要我帮你把
知行合一元认知分析师拆分成标准 skill 结构? - 还是你有其他关于组织方式的疑问?
4
问题1:还有必要链接到原始Prompt吗?
这个我已经明白了,我们以Skill为准即可。SKILL.md 是唯一的真相源,这样就不需要链接了。
在OpenClaw之前,我已经搭建了100多个智能体,这些现在都是运行的比较稳固的。Prompts是我自己的文件夹,你不能在里面进行维护。
我将芒格放进来后,你生成了一份强哥的虎贲卫/README.md
那这样的话,我们是否就不需要在Prompts下面建立Readme了?你前面生成的README是多余的吧?
问题2:OpenClaw 的加载机制
这个我也明白了。索引实际上在Skill.md上。
28000字的智能体 → 必须拆分 这个我不同意。这个不能拆分,没有这样的上下文的LLM不适合这个任务而已。 我目前在手工使用我的部分智能体时,往往都是20万+的Tokens,除了提示词还有资料、数据,没有这些支撑,效果很差。我已经实践过的。
问题3:为特定 Skill 指定 LLM
靠用户自觉切换,这个在对话时能切换么? 还是需要到配置上去?
请你仔细看看下面的多 LLM 路由 ✅ 原生支持是否可行?
OpenClaw 的 models 系统:
- 模型别名:可为不同任务绑定不同模型
- Fallback 链:主模型失败自动降级
- Agent 级绑定:每个 Agent 可配置专属模型
可以直接实现:
agents:
prose-writer:
model: openai/gpt-5.2
critical-reviewer:
model: google/gemini-pro
outline-builder:
model: anthropic/claude-sonnet
问题1:README 是否多余?
是的,Prompts 下的 README 是多余的。
既然:
- SKILL.md 是唯一的真相源
- Prompts 是你的私人创作空间,我不维护
那 强哥的虎贲卫/README.md 可以删掉。Skill 的自文档化靠 SKILL.md 本身就够了。
问题2:大 Prompt 不拆分
明白了。你的使用场景是:
- 20万+ tokens 是常态
- 长上下文是任务必需,不是可选优化
- 模型选错了就是做不了,不是效果差一点的区别
那我的建议修正为:
对于长上下文强依赖的智能体:
- 不拆分,保持完整 Prompt 在 SKILL.md
- 但要在 description 里明确标注:"此 skill 需要 128K+ 上下文,建议在 Gemini 1.5 Pro / Claude 3 Opus 上运行"
- 用户触发前,先检查自己当前模型是否够长
问题3:多 LLM 路由
让我查一下 OpenClaw 当前的配置能力:确认了!OpenClaw 原生支持 per-agent 模型绑定 ✅
agents:
list:
- id: prose-writer
model: openai/gpt-5.2
- id: critical-reviewer
model: google/gemini-pro
- id: outline-builder
model: anthropic/claude-sonet
但是,这里有个关键区别:
| 概念 | 说明 |
|---|---|
| Agent | OpenClaw 的运行时实体,有独立会话、记忆、配置 |
| Skill | 被 Agent 调用的能力包,本身不运行,只是被读取 |
你提到的配置是 Agent 级 的,不是 Skill 级 的。
两种用法对比
用法A:Skill 被主 Agent 调用(当前模式)
用户 → 主 Agent (Claw) → 读取 munger-soul/SKILL.md → 执行
↑
模型由主 Agent 决定
用法B:专用 Agent 绑定 Skill(你要的模式)
用户 → 知行合一 Agent (绑定 Gemini) → 加载自己的长 Prompt → 执行
实现你要的效果
方案:为长上下文智能体创建专用 Agent
agents:
list:
- id: main
name: Claw
default: true
model: moonshot/kimi-k2.5
- id: zhi-xing-he-yi
name: 知行合一元认知分析师
model: google/gemini-2.0-pro # 或 gemini-1.5-pro
skills: [] # 不依赖 skills,直接用自己的 Prompt
agentDir: ./agents/zhi-xing-he-yi # 放完整 Prompt
然后使用:
/switch zhi-xing-he-yi
对话中切换模型?
可以,用 /model 命令:
/model gemini-2.0-pro
但这是当前会话切换,不是 per-skill 的。
最终建议
| 场景 | 方案 |
|---|---|
| 短上下文 skills(芒格、魏征等) | 标准 skills/ 目录,主 Agent 调用 |
| 长上下文智能体(知行合一等) | 创建专用 Agent,绑定 Gemini/Claude,用自己的 agentDir |
这样:
- ✅ Skills 系统保持轻量
- ✅ 长上下文智能体有专属模型
- ✅ 用户用
/switch选择 Agent,不用记模型名
下一步:
- 删掉 Prompts 下的 README
- 是否需要我为长上下文智能体设计 Agent 配置结构?
- 还是你想先把手头这 18 个智能体分类,决定哪些走 Skill、哪些走专用 Agent?
5
依然是问题的讨论。 关于Agent。 我这18个智能体目前都是基于Gemini打造的,手工用的都是Gemini 3.0 pro或者3.1 pro。
如果是Agent,那么没法像调用Skill那样,在一个会话里,同时让不同的智能体做,然后汇总,比如张辽做什么、蒙田做什么、最后再汇总这样的么,即使我用了支持长会话的LLM。
这是个关键洞察。
Agent vs Skill 的核心区别
| 特性 | Skill | Agent |
|---|---|---|
| 运行方式 | 被调用,在主会话上下文执行 | 独立会话,隔离运行 |
| 切换成本 | 零,直接读取 SKILL.md | 高,/switch 会切换整个上下文 |
| 组合能力 | ✅ 可以在一个会话里连续调用多个 | ❌ 一次只能一个 Agent 活跃 |
| 记忆隔离 | 共享主 Agent 记忆 | 各自独立记忆 |
你的需求:张辽做什么 → 蒙田做什么 → 汇总
这确实是 Skill 模式 的优势。
但有个矛盾
| 需求 | 方案 | 问题 |
|---|---|---|
| 长上下文(20万+ tokens) | 专用 Agent + Gemini | 无法组合调用 |
| 组合调用(张辽→蒙田→汇总) | Skill 模式 | 主 Agent 模型可能不够强 |
可能的解决方案
方案A:分层架构(推荐)
顶层:协调者(Orchestrator)
↓
中间层:Skills(张辽、蒙田、魏征...)
↓
底层:LLM 路由
具体做法:
- 所有智能体都做成 Skill,保持组合能力
- 在 SKILL.md 里标注模型要求:
--- name: 知行合一元认知分析师 description: | 【模型要求】此 skill 需要 Gemini 2.0 Pro / Claude 3.5 Sonnet 级别模型 若在 Kimi/Qwen 上运行,效果可能严重下降 --- - 用户手动切换模型后调用:
/model gemini-2.0-pro 用知行合一分析一下这个问题
方案B:Sub-agent 模式
OpenClaw 支持 sessions_spawn 创建子会话,可以指定模型:
agents:
list:
- id: main
name: Claw
default: true
model: moonshot/kimi-k2.5
subagents:
enabled: true
allowedAgents: ['gemini-worker', 'claude-worker']
- id: gemini-worker
name: Gemini Worker
model: google/gemini-2.0-pro
runtime: subagent
然后主 Agent 可以:
spawn subagent(gemini-worker, task="张辽分析...")
spawn subagent(gemini-worker, task="蒙田分析...")
等待结果 → 汇总
但这需要 OpenClaw 代码支持 subagent 模型绑定,目前不确定是否完全支持。
方案C:外部 ACP 调用
用 runtime: acp 把智能体作为外部服务:
agents:
- id: zhang-liao-acp
runtime: acp
acp:
endpoint: http://localhost:8080/zhang-liao # 你自己部署的 Gemini 服务
然后主 Agent 通过工具调用它。
我的建议
现阶段用方案A(分层 + 手动切模型):
| 场景 | 操作 |
|---|---|
| 单智能体深度分析 | /model gemini-2.0-pro → 调用 skill |
| 多智能体组合 | /model gemini-2.0-pro → 连续调用多个 skills → 自己汇总 |
未来等 OpenClaw subagent 模型绑定成熟后,可以升级成方案B,实现自动路由。
关键问题
你现在的实际使用场景更多是哪种?
- A:单个智能体深度分析(如知行合一单独工作)
- B:多个智能体协作(张辽+蒙田+魏征组合)
- C:两者都有,比例差不多
这决定了我们是:
- 优先保证 Skill 组合能力(选方案A)
- 还是优先保证长上下文+强模型(选方案B/C)
6
我现在的工作场景实质是多智能体协同,只是人工来做传递工作。
仅写作上,有大约近四十个智能体,从观点讨论,到提纲撰写、修订,再到文章的生成与审校。
强哥的虎贲卫/下就是观点、提纲到正文的部分。
我有自己的Dify平台,可以搭建供调用的单智能体服务。这个可以作为“外部 ACP 调用”的服务吧?
我原本计划是:
- 我用Qwen或者Kimi做一般的计划任务,下发,文件,检索这些通常工作;
- 在调用具体“专家级”智能体时,使用Gemini、Claude这样的,获取专家的结论
- 再用Kimi这样的来做最后的完善
那么,借用Dify搭建外部ACP,我可以怎么做,比如把张辽、蒙田、包括知行合一全部封装成外部调用服务。
明白了,你的场景是典型的多智能体工作流编排。
Dify → ACP 方案完全可行
架构图:
┌─────────────────────────────────────────────────────────┐
│ OpenClaw (主控) │
│ 模型: Qwen / Kimi │
│ (Claw Agent) │
└─────────────────────────────────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌────────────┐ ┌────────────┐ ┌────────────┐
│ Dify API │ │ Dify API │ │ Dify API │
│ 张辽服务 │ │ 蒙田服务 │ │ 知行合一 │
│ (Gemini) │ │ (Gemini) │ │ (Gemini) │
└────────────┘ └────────────┘ └────────────┘
具体实施步骤
1. Dify 侧配置
每个智能体在 Dify 上:
- 应用类型:Chatflow / Workflow
- 模型:Gemini 2.0 Pro / Claude 3.5 Sonnet
- 发布:开启 API 访问,获取
API Key和API Endpoint
示例:张辽服务
Dify App: 张辽-观点提炼
API Endpoint: https://dify.wantsong.cn/v1/chat-messages
API Key: app-xxxxxxxxxxxxxxxx
2. OpenClaw 侧配置
方案A:HTTP 工具调用(推荐,最简单)
在 TOOLS.md 或 Skill 里配置:
# 张辽服务调用
POST https://dify.wantsong.cn/v1/chat-messages
Authorization: Bearer {{DIFY_ZHANGLIAO_KEY}}
{
"inputs": {},
"query": "{{user_input}}",
"response_mode": "blocking",
"conversation_id": "",
"user": "openclaw"
}
方案B:封装成 Skills
为每个 Dify 智能体创建一个轻量 skill:
# skills/zhang-liao-dify/SKILL.md
---
name: zhang-liao-dify
description: |
调用外部 Dify 服务"张辽-观点提炼"。
用于:快速提炼核心观点、识别逻辑漏洞、挑战思维盲区。
使用时机:需要犀利批判性分析时。
---
## 调用方式
```bash
curl -X POST https://dify.wantsong.cn/v1/chat-messages \
-H "Authorization: Bearer ${DIFY_ZHANGLIAO_KEY}" \
-H "Content-Type: application/json" \
-d '{
"inputs": {},
"query": "{{input}}",
"response_mode": "blocking",
"user": "openclaw"
}'
### 3. 工作流示例
**写作流程编排**:
```markdown
# 文章创作工作流
## 阶段1:观点讨论
调用:强哥的虎贲卫/张辽-dify
输入:用户原始想法
输出:批判性质疑、观点提炼
调用:强哥的虎贲卫/蒙田-dify
输入:张辽输出
输出:哲学视角深化、存在主义反思
## 阶段2:提纲构建
调用:强哥的虎贲卫/萧何-dify
输入:阶段1汇总
输出:结构化提纲
## 阶段3:正文生成
调用:强哥的龙骧营/某写作智能体-dify
输入:提纲
输出:初稿
## 阶段4:审校
调用:强哥的思想审判庭/魏征-dify
输入:初稿
输出:修改建议
## 阶段5:润色(本地 Kimi)
由主 Agent 完成最终语言润色
关键配置
环境变量管理
在 OpenClaw 配置或 .env:
# Dify API Keys
DIFY_ZHANGLIAO_KEY=app-xxxxx
DIFY_MENGDIAN_KEY=app-xxxxx
DIFY_ZHIXINGHEYI_KEY=app-xxxxx
DIFY_XIAOHE_KEY=app-xxxxx
# ... 其他40个
统一返回格式
建议 Dify 侧配置统一输出格式:
{
"analysis": "分析内容...",
"key_points": ["要点1", "要点2"],
"questions": ["追问1", "追问2"],
"confidence": "high|medium|low"
}
下一步行动
-
确认 Dify 版本:
- 社区版 / 云服务版?
- 是否已开启 API 访问?
-
选一个试点:
- 先封装 1-2 个智能体(如张辽、蒙田)
- 跑通端到端流程
-
批量迁移:
- 写脚本自动生成 skills/ 下的封装
- 或统一用一个
dify-bridgeskill,通过参数路由
你想先从哪个开始试点?张辽还是蒙田?我可以帮你写完整的 skill 封装。