OpenSpace 实战:给 Agent 接个自进化 Skill 引擎,token 消耗直接少一半
做了这么久 Agent,我踩过最大的坑就是:同一个任务,今天能跑,明天换个工具版本就挂了;挂了之后重新推理,一通乱试,token 烧了一堆,最后才想起来这个问题上周已经解决过了。
这种事情反复发生,根子在哪?Agent 没有记忆。 每次任务对它来说都是第一次——不管你上周成功解决了多少次类似的问题,它依然要从零开始推理,从零开始踩坑。
上个月 HKUDS(香港大学数据科学实验室)开源了 OpenSpace,专门解决这个问题。我把它接进 OpenClaw 用了一段时间,有点东西,写一篇实战记录。
为什么 Agent 会一直重复犯同样的错误?
今天主流的 AI Agent——OpenClaw、Claude Code、Codex、Cursor——功能都挺强,但它们有一个共同的死穴:
没有任务级别的学习机制。
具体表现:
| 问题 | 症状 |
|---|---|
| Token 大量浪费 | 每次做相似任务都从头推理,之前成功的路径不会复用 |
| 重复踩坑 | 同一个 API 的正确调用姿势,这次探索完,下次又探索一遍 |
| Skill 悄悄失效 | 工具升级之后旧 Skill 失效,Agent 自己不知道,继续调用直到报错 |
OpenSpace 的思路是:把每一次任务的成功/失败模式记下来,变成可复用的 Skill,然后持续演进、共享给所有 Agent。
OpenSpace 三个核心能力
1. 自进化引擎(Self-Evolution Engine)
OpenSpace 有三种进化模式,任务跑完后自动触发:
- FIX — Skill 执行失败?自动分析报错,生成修复版本
- DERIVED — 任务成功?提取这次的成功模式,生成改进版 Skill
- CAPTURED — 从头推理的新任务成功了?把整个解题思路抽象成新 Skill
这三种模式加上三类触发机制(任务后分析、性能下降检测、定期健康检查),构成了一套持续演进的闭环。
💡 提示:Skill 并不是一写就定死的,每次执行都可能触发演进。经过十几轮真实任务的洗礼,一个 Skill 的稳定性和效率会显著提升。
2. 集体智能(Collective Intelligence)
进化不只在单个 Agent 内部发生。OpenSpace 有一个云端社区 open-space.cloud,任何进化出来的 Skill 都可以一键同步上去,供其他 Agent 下载复用。
网络效应很清晰:接入 OpenSpace 的 Agent 越多,可用的 Skill 库越丰富,所有人都跑得越快、烧的 token 越少。
3. Token 效率(Token Efficiency)
这是最值得关注的地方,也是官方 benchmark 数据最硬核的部分。
OpenSpace 在 GDPVal(一个包含 44 种职业、220 个专业任务的真实场景 benchmark)上的测试结果:
| 指标 | 结果 |
|---|---|
| Token 消耗(第二轮 vs 第一轮) | **减少 45.9%** |
| 收入产出 vs baseline | **4.2 倍** |
| 任务价值捕获率 | 72.8%(总价值 $15,764 中实际拿到 $11,484) |
| 平均任务质量 | 70.8%(baseline 为 40.8%) |
这不是玩具任务,是真实的薪资计算、税务申报、法律备忘录、工程设计等专业工作。用同一个底座模型(Qwen 3.5-Plus),仅靠 Skill 积累带来的差距,说老实话超出了我的预期。
接入 OpenClaw:Path A 实战步骤
OpenSpace 支持两种用法:Path A 是把它当 MCP 工具接进你的 Agent(推荐),Path B 是直接把 OpenSpace 当独立 AI 助手用。这里专门讲 OpenClaw + OpenSpace(Path A)。
Step 1:安装 OpenSpace
git clone https://github.com/HKUDS/OpenSpace.git
cd OpenSpace
pip install -e .
openspace-mcp --help # 验证安装成功⚠️ 注意:仓库里的 assets/ 文件夹有约 50MB 的图片,国内网络直接 clone 容易卡,建议用精简克隆:
git clone --filter=blob:none --sparse https://github.com/HKUDS/OpenSpace.git
cd OpenSpace
git sparse-checkout set '/*' '!assets/'
pip install -e .Step 2:配置 MCP 服务器
找到 OpenClaw 的配置文件(一般是 ~/.openclaw/openclaw.json),在 mcpServers 里加入 OpenSpace:
{
"mcpServers": {
"openspace": {
"command": "openspace-mcp",
"toolTimeout": 600,
"env": {
"OPENSPACE_HOST_SKILL_DIRS": "/root/.openclaw/workspace/skills",
"OPENSPACE_WORKSPACE": "/path/to/OpenSpace",
"OPENSPACE_API_KEY": "sk-xxx(可选,接入云端社区)"
}
}
}
}💡OPENSPACE_HOST_SKILL_DIRS填你的 OpenClaw skills 目录的绝对路径,一般是~/.openclaw/workspace/skills/。
>
OPENSPACE_API_KEY 是云端社区的密钥,去 open-space.cloud 免费注册可以拿到。没有也没关系,所有本地功能完全可用。Step 3:复制两个核心 Skill
# 把这两个 Skill 复制到你的 OpenClaw skills 目录
cp -r OpenSpace/openspace/host_skills/delegate-task/ ~/.openclaw/workspace/skills/
cp -r OpenSpace/openspace/host_skills/skill-discovery/ ~/.openclaw/workspace/skills/delegate-task 告诉 Agent 什么时候应该把任务交给 OpenSpace 处理;skill-discovery 让 Agent 知道如何检索和复用已有的 Skill。两个 Skill 缺一不可。
Step 4:重启 OpenClaw 验证连接
openclaw gateway restart重启后,在 OpenClaw 里问一句"你现在有哪些 MCP 工具可用?",如果能看到 openspace 相关工具出现在列表里,就接好了。
三种传输模式怎么选?
OpenSpace MCP 服务器支持三种启动方式:
| 模式 | 启动命令 | 适用场景 |
|---|---|---|
| **stdio**(默认) | MCP config 里直接配 command | 本地 Agent,最简单 |
| **SSE** | `openspace-mcp --transport sse --host 127.0.0.1 --port 8080` | 需要持久连接 |
| **streamable HTTP** | `openspace-mcp --transport streamable-http --host 127.0.0.1 --port 8081` | 远程主机、避开 stdio 超时限制 |
如果你的 OpenClaw 部署在 VPS 上(参考这篇部署教程),建议用 SSE 或 HTTP 模式,稳定性更好。本地日常使用 stdio 就够了。
本地 Dashboard:可视化 Skill 进化过程
OpenSpace 提供了一个本地可视化面板,可以看 Skill 的进化谱系、版本对比、执行统计。
# 终端 1:启动后端 API
openspace-dashboard --port 7788
# 终端 2:启动前端(需要 Node.js ≥ 20)
cd OpenSpace/frontend
npm install # 第一次需要
npm run dev跑起来之后打开 http://localhost:5173,能看到每个 Skill 从初版到当前版本的完整演化路径。如果你是搞 Agent 开发的,这个面板挺有意思,能直观看出哪些任务在推动 Skill 往哪个方向演进。
实际效果:从"冷启动"到"热复用"
OpenSpace 有一个经典的两阶段模型:
Phase 1(冷启动):第一次跑任务,没有历史 Skill 可用,Agent 需要完整推理,token 消耗最高。任务结束后,成功模式被自动提取为 Skill 存入本地数据库。
Phase 2(热复用):相同或相似的任务再次出现,Agent 直接检索 Skill 库,用预验证的解决方案执行,跳过重复推理。官方 benchmark 里这个阶段的 token 消耗比 Phase 1 少了 45.9%。
以文档生成任务为例,benchmark 里各类任务的降本数据:
| 任务类型 | Token 减少幅度 | 主要原因 |
|---|---|---|
| 文件与文书(7个) | **-56%** | 文档结构、错误恢复路径已固化 |
| 合规与表单(11个) | **-51%** | PDF 生成管道完整演化后整体复用 |
| 工程项目(4个) | **-43%** | 跨项目协调 Skill 通用化 |
| 媒体制作(3个) | **-46%** | ffmpeg 参数和编解码回退路径已记录 |
云端社区:一个 Agent 学了,所有人都会
如果你注册了 open-space.cloud 账号,进化出来的 Skill 可以一键发布:
# 下载社区里的 Skill
openspace-download-skill <skill_id>
# 上传你自己进化出来的 Skill
openspace-upload-skill /path/to/skill/dir权限可以设置为 public、private 或 team。如果你维护了一套特定场景的工作流(比如博客运营、SEO 自动化),把跑得好的 Skill 发布出去,社区里其他人的 Agent 就能直接复用。
这个逻辑跟 ClawHub 的 Skill 分发有点像,但 OpenSpace 的 Skill 是从真实任务中自动提取并持续打磨的,而不是手写一次就定死——实际场景打磨出来的东西,容错性往往更高。
踩坑记录
坑 1:toolTimeout 必须设够
OpenSpace 处理复杂任务时,MCP 工具调用时间可能超过默认超时。一定要在 MCP 配置里加 "toolTimeout": 600,否则长任务跑到一半会被强制中断,进化也触发不了。
坑 2:两个 host_skill 必须都复制
只复制 delegate-task 不够,skill-discovery 是让 Agent 学会主动检索已有 Skill 的关键。两个都放进 skills 目录才能形成完整闭环。如果你不熟悉 OpenClaw 的 Skill 机制,可以先看这篇自定义 Skill 教程。
坑 3:OPENSPACE_HOST_SKILL_DIRS 路径要用绝对路径
这个环境变量告诉 OpenSpace 去哪找 host-side 的 Skill 文件。路径写错或使用相对路径,Skill 就找不到。OpenClaw 的 skills 目录建议填完整的绝对路径。
坑 4:国内克隆仓库慢
官方仓库的 assets 目录有 50MB 图片。国内网络直接 clone 容易中途断,用上面说的 --sparse 参数跳过图片目录,能快很多。
总结
| 维度 | 结论 |
|---|---|
| Token 节省 | Phase 2 相比 Phase 1 减少约 46% |
| 任务质量提升 | 比无 Skill baseline 高约 30pp |
| 接入复杂度 | MCP 配置 + 两个 Skill 文件,15 分钟内可完成 |
| 云端共享 | 可选,不影响本地任何功能 |
对于已经在用 OpenClaw 的用户,接入成本极低。长期来看,随着任务量积累,Skill 库越来越成熟,token 消耗会持续下降,是少数"用得越多越省钱"的工具之一。
如果你还没有自己的 OpenClaw 实例,可以先看从零部署教程,装好之后回来接 OpenSpace。
📦 项目地址:github.com/HKUDS/OpenSpace
🌐 云端社区:open-space.cloud
Member discussion