ReCode

GitHub
546 65 中等 1 次阅读 1周前语言模型Agent
AI 解读 由 AI 自动生成,仅供参考

ReCode 是一种面向大语言模型(LLM)智能体的全新框架,旨在通过递归代码生成技术,将“规划”与“行动”统一为单一的代码表示形式。传统智能体往往难以在宏观策略与微观执行之间灵活切换,导致处理复杂任务时效率低下或逻辑断裂。ReCode 创造性地采用分治策略,将高层计划视为可递归展开的占位函数,动态分解为具体的可执行代码片段。这种树状结构的代码组织方式,让智能体能根据实时环境反馈,自主决定是继续细化步骤、重试还是完成任务,从而实现了对任务粒度的通用控制。

该工具特别适合 AI 研究人员和开发者使用,尤其是那些致力于提升智能体在复杂环境(如家庭模拟、电商购物或科学实验场景)中决策能力的团队。其核心技术亮点在于“递归扩展”机制与共享执行状态的管理:大模型不仅能生成代码,还能在受控的 Python 执行环境中即时运行并验证结果,形成高效的动态执行闭环。实验数据显示,ReCode 在多个基准测试中显著优于 ReAct 和 CodeAct 等主流范式,甚至在特定模型配合下能达到完美得分。此外,它在监督微调训练中也展现出卓越的数据效率。如果你正在探索更具适应性和类人决策能力的智能体架构,ReCode 提供了一个极具价值的参考实现。

使用场景

某电商运营团队需要构建一个智能助手,自动处理跨平台的复杂订单履约任务,包括查询库存、比对价格、调用物流接口及生成异常报告。

没有 ReCode 时

  • 规划与执行割裂:传统代理(如 ReAct)将思考步骤与代码动作分离,导致在处理长链路任务时,模型容易迷失方向,无法动态调整后续策略。
  • 粒度控制僵化:面对“处理异常订单”这类模糊指令,模型难以自主决定是直接调用 API 还是先拆解为“检查日志”、“联系用户”等子步骤,常因步骤过粗而失败。
  • 错误恢复能力弱:一旦中间某步代码报错或环境反馈意外,整个任务链往往直接中断,缺乏像人类一样的“重试”或“降级执行”机制。
  • 上下文效率低:随着任务进行,历史对话堆积大量无效信息,模型注意力分散,导致后期决策准确率显著下降。

使用 ReCode 后

  • 规划行动一体化:ReCode 通过递归代码生成,将高层计划直接转化为可执行的占位函数,模型在运行中能根据实时反馈动态展开子任务,实现自适应决策。
  • 通用粒度控制:系统自动将复杂目标分解为树状代码结构,既能宏观调度战略步骤,又能微观精确调用具体工具,完美适配不同难度的子任务。
  • 动态执行闭环:每个代码节点执行后立即评估结果,若遇错可自动触发重试逻辑或切换备用方案,大幅提升了任务在复杂环境下的鲁棒性。
  • 状态共享高效:受限的 Python 执行器维护着共享的状态变量,确保每一步决策都基于最新的环境观测,避免了冗余上下文干扰,显著提升推理精度。

ReCode 通过将规划与行动统一为递归代码结构,让 AI 代理具备了类似人类的动态拆解与自我修正能力,彻底解决了复杂长程任务中的执行断层难题。

运行环境要求

操作系统
  • 未说明
GPU

未说明

内存

未说明

依赖
notes建议为三个不同的实验环境(ALFWorld, ScienceWorld, WebShop)分别配置独立的 Conda 环境以避免依赖冲突。WebShop 环境需要安装 OpenJDK 11 和特定的 Spacy 模型。运行前需配置 LLM API 密钥(如 OpenAI),并在 configs/profiles.yaml 中设置。部分环境数据集需手动下载或通过脚本获取。
python3.10+
openai (async wrapper)
spacy (en_core_web_lg)
openjdk=11 (for WebShop)
alfworld
scienceworld
webshop
ReCode hero image

快速开始

ReCode: 统一计划与行动的通用粒度控制

Arxiv

如果您在使用或复现代码时遇到任何困难,请通过 zhaoyangyu713@gmail.com 与我联系。

ReCode 引入了针对 LLM 代理的递归代码生成方法,将计划与行动统一为单一表示。通过将高层计划视为占位函数,并将其递归分解为可执行的原子操作,ReCode 实现了通用的粒度控制,能够动态地从战略思考过渡到具体行动。本仓库提供了论文中使用的参考实现,以及环境封装和实验工具。

基于 LLM 的代理决策范式比较

核心思想

ReCode 采用分治策略,将复杂任务分解为可执行的代码片段:

  1. 树状代码结构:以树形组织部分程序,每个节点代表一个子任务,并记录其执行轨迹。
  2. 递归展开:占位函数由 LLM 根据特定于环境的提示和少量示例,扩展为更具体的调用或更小的子程序。
  3. 动态执行循环:每个节点立即执行;根据新的观测结果决定是否继续展开、重试或结束。
  4. 共享执行状态:受限的 Python 执行器维护环境变量、验证代码块,并暴露代理可用的工具集。

ReCode 概览

仓库布局

  • run.py – CLI 入口,用于实例化代理和环境、管理并发并记录运行摘要。
  • agents/recode/ – ReCode 代理实现、提示模板及辅助工具。
  • envs/ – 针对 alfworldwebshopsciworld 的环境封装及资源。
  • configs/ – LLM 配置模板及异步客户端使用的定价元数据。
  • utils/ – 共享组件:异步 OpenAI 封装、受限执行器、日志辅助工具和错误类型。
  • figures/ – 本 README 中使用的论文图表。

实验

为评估 ReCode 的有效性,我们将实验分为推理部分和训练部分。

  1. 推理结果:我们与几种主流范式(ReAct、CodeAct)以及一些专注于改进 LLM 代理规划的工作(AdaPlanner 和 ADaPT)进行了对比。ReCode 在所有三个环境中均取得了显著的性能提升,平均得分达到 60.8 分,比最佳基线方法高出 10.5 分(相对提升 20.9%)。在我们的测试中,ReCode 在 ALFWorld 环境下使用 claude-4-sonnet 模型时,甚至可以取得满分 100 分。

各环境下的推理性能

  1. 训练结果:我们对 ReCode、ReAct 和 CodeAct 使用 Qwen2.5-7B-Instruct 进行了监督微调(SFT)。ReCode+SFT 在所有环境中表现出色,平均性能达到 70.4%,优于 ReAct+SFT(67.6%)和 CodeAct+SFT(55.8%),凸显了其卓越的数据效率。

各环境下的 SFT 性能

各环境下的 SFT 性能

快速入门

要运行 ReCode,我们需要一个 conda 环境。Python 版本应为 3.10 或更高。

随后,需要为三个环境配置依赖项(尚未确认这些环境之间是否会存在冲突),建议分别在三个独立的环境中进行配置。

conda create -n recode-envname python=3.10 # 将 "envname" 替换为您选择的环境名称。
conda activate recode-envname

ALFWorld

  • 请按照 ALFWorld 官方说明 进行设置。

  • ALFWORLD_DATA 设置为数据集根目录,或编辑 envs/alfworld/base_config.yaml 以指向您的本地路径:

    export ALFWORLD_DATA=/path/to/alfworld
    

ScienceWorld

WebShop

感谢 ETO 提供的便捷脚本来配置 WebShop 环境。

cd envs/webshop
pip install -e .
conda install -y -c conda-forge openjdk=11
pip install "en_core_web_lg @ https://github.com/explosion/spacy-models/releases/download/en_core_web_lg-3.6.0/en_core_web_lg-3.6.0-py3-none-any.whl"

运行提供的辅助脚本以获取目标集合和预构建的索引:

# 当前路径为 "envs/webshop"
bash setup.sh

安装其他依赖项。

pip install -r requirements.txt # 此处可能并不完整,如遇问题请及时与我联系

确保 configs/profiles.yaml 指向有效的 API 凭证(如需模板,可复制 configs/profiles_example.yaml),然后在任意已启用的环境中运行一次简短的试运行:

python run.py -a recode -e alfworld -n 1 --split test --profile default

webshopsciworld 的资源准备就绪后,可将 alfworld 替换为相应环境。日志会写入 logs/<run_id>/ 目录,控制台也会输出精简摘要以便快速诊断。

配置 LLM 访问权限

  • configs/profiles.yaml 包含命名配置文件。run.py --profile 参数用于选择将哪个配置转发给 AsyncLLM。例如:

    models:
      default:
        api_key: "sk-your_api_key"
        base_url: "https://api.openai.com/v1"
        model: "gpt-4o-mini"
        temperature: 0.0
        track_costs: true
      gpt-4o:
        api_key: "sk-your_other_key"
        base_url: "https://api.openai.com/v1"
        model: "gpt-4o"
        temperature: 0.7
        max_tokens: 512
    
  • 成本跟踪功能会加载 configs/prices.json 文件。如果您不想记录成本,可在配置中将 track_costs: false

  • 作为备用方案,您可以不使用该文件,而直接在环境变量中设置 OPENAI_API_KEY;默认配置将自动使用该密钥。

  • 已准备好编辑的模板位于 configs/profiles_example.yaml;如果您是从头开始配置,可将其复制到 configs/profiles.yaml

    cp configs/profiles_example.yaml configs/profiles.yaml
    

运行 ReCode

run.py 是标准入口点。它解析代理和环境的别名,管理并发,流式记录日志,并输出结构化的运行摘要。


# ALFWorld,单实例
python run.py -a recode -e alfworld -n 1 --split test --profile default

# WebShop,3个测试目标,允许更深的递归
python run.py -a recode -e webshop -n 3 --split test --profile default --max-depth 12

# ScienceWorld,运行5个实例,支持2路并发
python run.py -a recode -e sciworld -n 5 -c 2 --profile gpt-4o

关键命令行参数:

  • -a / --agent – 代理类路径或别名(recode 解析为 agents.recode.agent.ReCodeAgent)。
  • -e / --env – 环境类或别名(alfworldwebshopsciworld)。
  • -n / --instances – 评估剧集数量。
  • -c / --concurrent – 最大并发剧集数(进度界面会自动调整)。
  • --split--seed--max-depth--profile – 会传递给代理和环境。
  • -C / --config – YAML 配置文件,其键值可覆盖命令行参数;适用于复杂的参数扫描。

YAML 示例配置(configs/example.yaml):

agent: recode
env: alfworld
instances: 10
concurrent: 2
profile: gpt-4o
split: test
task_types: ["put", "clean"] # 用于 ALFWorld
max_depth: 12
max_retry: 4

运行方式:

python run.py -C configs/example.yaml

日志与结果

  • 每次运行都会创建 logs/<run_id>/ 目录,包含:
    • running_logs/run.log – 代理与环境日志的聚合流。
    • running_logs/instance_<id>.log – 每个实例的跟踪日志(当启动多个实例时)。
    • <results.json> – 由 write_summary 写入的结构化摘要文件,包含每个实例的指标及汇总统计信息(总体及按任务类型划分)。
  • 运行结束后,控制台会打印精简的摘要信息(成功率、标准指标、按任务细分)。

扩展至新环境

  1. 实现 Env 接口,位于 envs/<your_env>/env.py 中。以 base.environment.Env 作为接口规范:实现 reset_runis_doneis_successreport 方法。在 reset 方法中返回 {"observations": [...], "env_name": <name>, "env": self}
  2. 提供提示与指导材料,存放在 agents/recode/resources/ 目录下:
    • prompts/<env_name>/actions.txt – 对有效 run("...") 调用/工具的简要描述。
    • fewshots/<env_name>/ – 一个或多个 .txt 示例,展示思考→执行的模式。
    • 如果你的环境有任务类型,请更新 agents/recode/agent.py::_load_resourcesagents/recode/utils.parse_raw_observation 方法,以便正确解析初始观测数据。
  3. 注册别名,将你的类添加到 run.py 中的 ENV_ALIASES 列表中(可选但方便),并在必要时在代理工具中规划特定逻辑。
  4. 可选地添加设置脚本(类似于 envs/webshop/setup.sh),用于记录数据集的获取过程。

编程式使用

你可以通过复用提供的工具,将代理直接嵌入到自己的循环中:

import asyncio

from agents.recode.agent import ReCodeAgent
from envs.alfworld.env import AlfworldEnv

async def solve_once():
    config = {"split": "test", "task_types": ["put"], "max_depth": 10}
    env = AlfworldEnv(logger=None)
    agent = ReCodeAgent()
    init_info = env.reset(config)
    agent.reset(config, init_info)

    observations = init_info["observations"]
    while not env.is_done():
        actions = await agent.act(observations)
        observations = await env.run(actions)

    print(env.report())
    await env.close()

asyncio.run(solve_once())

同样的模式适用于任何 Env 实现;如果需要文件记录的跟踪信息,请务必传递日志记录器。

引用

@misc{yu2025recodeunifyplanaction,
      title={ReCode: Unify Plan and Action for Universal Granularity Control}, 
      author={Zhaoyang Yu and Jiayi Zhang and Huixue Su and Yufan Zhao and Yifan Wu and Mingyi Deng and Jinyu Xiang and Yizhang Lin and Lingxiao Tang and Yingchao Li and Yuyu Luo and Bang Liu and Chenglin Wu},
      year={2025},
      eprint={2510.23564},
      archivePrefix={arXiv},
      primaryClass={cs.AI},
      url={https://arxiv.org/abs/2510.23564}, 
}

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|昨天
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2天前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

142.7k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.9k|★★☆☆☆|昨天
开发框架图像Agent

LLMs-from-scratch

LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备

90.1k|★★★☆☆|昨天
语言模型图像Agent

Deep-Live-Cam

Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。

88.9k|★★★☆☆|昨天
开发框架图像Agent