📈 GH Trending Explorer 🎲 Surprise me

← all repos

ABC12345anouys / EvoBot

git clone https://github.com/ABC12345anouys/EvoBot.git

Agent + reusable skill library for LIBERO manipulation tasks (no RL / VLA / world model; no LLM calls at runtime)

—
stars, 24h
—
stars, 7 days
+144
stars, 30 days · #1,661
144
★ total
1
forks · 0 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguagePython
LicenseApache-2.0
Created2026-09-23 (27d ago)
Last push19d ago
Watchers0
OwnerUser

GitHub topics

Links

README excerpt
# EvoBot
**Agent + Skill:Agent 决定做什么、按什么顺序做,技能库负责执行**
在 LIBERO 基准的 30 个任务上经过多轮迭代,成功率 **83%(25 / 30)**。
不用强化学习 · 不用视觉-语言-动作模型 · 不用世界模型 · 运行时不需要调用大模型
English · 设计文档
 一个完整回合:抓起黑碗,放到盘子上(LIBERO libero_spatial:0 ,第 1 次尝试成功,共 2965 个仿真步) 
---
## 这是什么
EvoBot 跑 LIBERO 机器人操作基准,分两层:**Agent 决定做什么、按什么顺序做,技能库负责执行**。技能是带参数、可复用的动作单元(抓取、放置、推动、开合抽屉柜门与炉灶旋钮);失败时不只报"失败",还给出原因(被挡住、够不到、打滑),Agent 据此换参数、换抓取位置或换做法。
执行顺序不让模型每次现场发挥:把 LIBERO 任务自带的定义文件解析成结构化数据,**离线**让模型读一遍、排好子目标顺序(含"要不要先开抽屉"这类前置判断),结果写成 YAML 提交进仓库;运行时只读这份 YAML,不调模型,所以同一任务的顺序每次都一样。模型只能排列顺序、从给定候选里挑前置动作,不能改目标、不能指定技能、不能给参数;结果过校验,不通过就退回按依赖关系自动排序。
一条轨迹用仿真步数截断而不是实际耗时,结果不受机器负载影响;每个任务都从示范轨迹的初始状态开始,不同次运行才可比。
## 评测结果
在 LIBERO 的 `libero_spatial`、`libero_object`、`libero_goal` 三个任务集共 30 个任务上完成全量评测,**25 / 30 通过**(每个任务单独运行,每次最多 8 次尝试)。
复现方式:
 [code] 
## 设计文档
| 编号 | 文档 | 内容 |
|---|---|---|
| 01 | 感知 | 物体位姿与抓取候选的来源:真值采样与模型推理两条路径 |
| 02 | 任务定义与规划 | 任务定义 → 有序子目标 → 技能序列,以及离线的一次分解 |
| 03 | 技能库 | 技能清单与统一约定 |
| 04 | 失败分类与恢复 | 失败原因分类与对应的处理方式 |
| 05 | 环境适配层 | 统一动作接口、固定初始状态、任务步数上限的接管与截断 |
| 06 | 逆运动学、末端伺服与运动控制 | 末端目标位姿如何变成关节动作 |
## 环境要求
- **Python 3.10**(conda 环境;3.12 无法运行 robosuite 及其依赖)
- **LIBERO 源码**,需要加到 `PYTHONPATH`
- MuJoCo + robosuite(LIBERO 自带);无显示器的机器上需要设置 `MUJOCO_GL=egl`
- 依赖清单见 `requirements.txt` 与 `requirements-extra.txt`(录像、轨迹规划)
 [code] 
## 快速开始
 [code] 
常用参数:
| 参数 | 默认值 | 说明 |
|---|---|---|
| `--suites` / `--tasks` | `libero_spatial,libero_object,libero_goal` | 要跑哪些任务集,或直接列出 `任务集:编号` |
| `--attempt-steps` | `7000` | 单条轨迹的仿真步数上限,主要的中断标准 |
| `--attempt-timeout` | `300` | 墙钟时间上限(秒),只在程序卡住不动时才可能先触发 |
| `--no-video` | — | 不录制视频 |
每个任务的尝试结果会记录在 `logs/libero_agent_progress.json`,键名形如 `libero: : `;已经通过的任务下次会跳过。
## 任务定义与生成
每个任务的定义是一份自描述 YAML,存放在 `darwin/skills/configs/task_specs/`:
 [code] 
**重新生成**(需要 `DEEPSEEK_API_KEY`;没有设置时会自动退回确定性排序):
 [code] 
## 许可
本项目使用 **Apache-2.0** 许可,详见 LICENSE。