工具不是预设的,而是在解决任务的过程中生长出来的。


什么是 Yunjue-Agent?

Yunjue-Agent 是云玦科技于 2026 年 1 月开源的 AI Agent 系统,曾在 HLE(Humanity’s Last Exam)基准排行榜上位列第 2。它的核心创新在于一个听起来简单但极具颠覆性的理念——原位自进化(In-Situ Self-Evolving)

传统 Agent 框架里,工具是静态的:开发者提前写好一组函数,Agent 只能在这些预设工具中选择使用。遇到新问题?抱歉,没有对应的工具,Agent 只能靠自身参数空间里有限的知识硬撑。

Yunjue-Agent 打破了这个限制。它在解决任务的过程中,自动生成、测试、修复并积累 Python 工具。工具的成败是唯一的反馈信号——执行成功就保留,失败就修复,修不好就放弃。不需要人工标注,不需要额外的训练数据。

成功的工具会被保存到公共工具库,跨任务复用。Agent 的能力不是固定的,而是随着使用次数持续增长。

四节点循环架构

Yunjue-Agent 的实现基于 LangGraph 的四节点循环图:

START → Manager → Tool Developer → Executor → Manager(循环评判)→ Integrator → END
节点 职责
Manager 分析任务所需工具,评判 Executor 输出质量,决定继续还是重试
Tool Developer 从工具目录加载已有工具,或调用 Codex CLI 并发生成新工具,绑定给 Executor
Executor ReAct 循环执行任务;内置 enhance_tools 子节点,每隔 N 步自动修复失败工具
Integrator 质量通过后,将 Executor 的输出提炼为结构化最终答案

几个关键机制值得注意:

  • Manager 每轮必经 Tool Developer——即使不需要新工具,Tool Developer 也会判断后透传或按需生成
  • Executor 完成后固定返回 Manager——由 Manager 决定是进入下一轮还是输出结果
  • 工具修复发生在 Executor 内部——不是外部节点,而是 Executor 的 enhance_tools 子节点
  • 工具分私有和公共两个目录——单次任务的工具在 private/,成功后晋升到 public/ 跨任务复用

这个设计的优雅之处在于:工具的进化完全是涌现的。Agent 不知道自己在"造工具",它只是在解决问题——而工具是解决问题的副产品。


OpenClaw 适配:把论文变成日常可用的 Skill

原版 Yunjue-Agent 是一个完整的 Python 工程,包含 Web Demo、CLI、评测脚本、工具进化(cluster/merge)等模块。但我们的目标不同:把它浓缩成一个 OpenClaw Skill,让你的日常 Agent 工作流立刻拥有深度推理和工具自进化能力。

适配过程中遇到了几个核心的架构差异,每一个都值得展开讲。

差异 1:内存对象 vs 文件系统

原版: Tool Developer 是独立的图节点,生成工具后直接把 LangChain Tool 对象 bind 到 Executor 的 LLM 上——这是纯内存操作,零拷贝。

问题: OpenClaw 子 Agent 之间只能通过文本消息通信,无法传递内存对象。

解法: 把 Tool Developer 的逻辑合并进主 Agent 的派发前准备阶段。主 Agent 生成工具文件后,将工具路径和调用方式写入 sessions_spawn 的 task 文本,deep-thinker 通过 bash 工具直接执行这些脚本。

文件系统是两个 Agent 之间共享状态的媒介。 这个设计选择看似退步,实际上带来了额外的好处——工具是持久化的 Python 文件,可以被检查、被版本控制、被人类直接阅读。

差异 2:解耦 Coding Agent

原版: 硬编码调用 codex exec --dangerously-bypass-approvals-and-sandbox,无法替换。

解法: 通过 coding-agent.yaml 配置文件切换,支持 Claude Code、Codex、OpenCode、Pi 四种 coding agent,以及 auto 模式自动检测。

# ~/.openclaw/workspace/agents/deep-thinker/coding-agent.yaml
agent: auto   # claude | codex | opencode | pi | auto

Coding agent 在两处被调用:主 Agent 生成新工具时,以及 deep-thinker 修复失败工具时。两处共享同一份配置,行为一致。

差异 3:多 Agent 循环替代单进程 LangGraph

原版: 循环在单进程 LangGraph 图内完成,状态在内存中流转。

解法: 主 Agent 通过多次 sessions_spawn 实现重试循环。每轮将上一轮的 failure_report 附在 task 文本中传入下一轮。循环上限、质量评判均由主 Agent 掌控。

这个设计天然支持分布式执行——主 Agent 和 deep-thinker 可以运行在不同的机器上。

核心工作流

简化后的 Skill 只保留两个角色的循环迭代:

主 Agent(Manager + Tool Developer + Integrator)
    │
    ├── 分析任务,扫描工具目录
    ├── 按需调 coding agent 生成新工具
    ├── 构建工具清单,sessions_spawn 派发
    │
    ▼
deep-thinker 子 Agent(Executor)
    │
    ├── ReAct 循环:THINK → ACT → OBSERVE
    ├── 失败时调 coding agent 自行修复
    ├── 成功后晋升工具到 public/
    │
    ▼
主 Agent 评判 → 合格:汇总回复 / 不合格:携带 failure_report 重走一轮

安装

yunjue.skill 文件发给主 Agent,或通过 OpenClaw CLI 安装:

openclaw skills install ~/.claude/skills/yunjue.skill

安装时会自动执行以下初始化操作:

  • 创建 ~/.openclaw/workspace/agents/deep-thinker/ 工作目录及工具目录
  • 在主 AGENTS.md 中追加 deep-thinker 的路由规则

安装后无需手动操作。向主 Agent 发送需要深度推理的任务(如"深度分析"、“复杂推理”、“自动编写工具”),它会自动识别并路由。


开源与贡献

这个 Skill 是一个开源项目,欢迎任何人来修改和改进。

GitHub 地址: https://github.com/maquedexiju/yunjue-openclaw-skill

目前可以改进的方向包括但不限于:

  • 支持更多 coding agent 的适配
  • 优化工具晋升的判断标准
  • 完善 failure_report 的结构化格式
  • 添加更多开箱即用的公共工具
  • 适配其他 Agent 框架(不局限于 OpenClaw)

如果你对 Agent 的工具自进化感兴趣,欢迎来 issue 区讨论,或者直接提 PR。

Logo

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

更多推荐