AgentDescent
并行演化提示词、技能与代理实现,并通过冲突感知的差异合并沉淀改进。
- Star 数
- ★ 198
- 最近更新
- 今天
- License
- MIT
- 主语言
- Python
- FA 评分
- 83/100 · 表现良好
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code · OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 拥有带标准答案数据集的模型工程师,可用留出集奖励演化系统提示词或单槽技能,并比较演化前后的准确率。
- 不适合
- 需要生产级稳定性与运维保障的团队
- 希望用数值梯度式平均来合并并发编辑的用户
- 需要归档、逐实例分数或岛屿池等算法的研究者,仅靠策略槽无法实现
- 源码审查
- 83/100 · 表现良好
这个 Agent 能做什么,适合哪些场景?
AgentDescent 是一个面向提示词、技能、代理目录和代理代码的自演化研究框架,把多个工作器生成的差异视作“梯度”,由聚合器充当“优化器”。工作器针对带版本的账本快照并行执行任务,提交差异和证据卡;单一聚合线程经过五阶段流水线处理陈旧性、冲突、融合、验收与提交。主要 Python 入口是 evolve(),并提供 Strategy、八个 Policies 插槽、LLMAgent、数据加载与评分辅助组件,以及可替换的 aggregator_factory。结果写入 Git 支持的版本化账本,并可通过渲染后的产物、最终留出集奖励和聚合结果计数进行检查。它既能作为 Python 库使用,也提供 CLI、MCP 服务和面向 Claude Code、Codex、OpenCode、DeepSeek Harness 的宿主插件;不过项目明确定位为研究参考实现,而非生产系统。
用户先把数据行转换为 Task,定义奖励函数,以及用于执行当前产物的 run 和生成修改建议的 propose;也可以将这些职责封装进 LLMAgent。evolve() 将任务分配给多个工作器,各工作器读取账本快照、执行 rollout,并输出带证据卡的差异。聚合器持续消费这些结果,按选择、任务采样、提议、陈旧性、冲突、融合、验收和晋升策略处理并发修改,再以事务方式提交到 Git 支持的账本。AppendRules、KeyedRules、FileTree 和 SingleSlot 决定产物如何映射为键,也因此决定修改能够融合还是会发生冲突。调用结束后可读取 result.rendered、result.final_reward 和 result.outcomes();通过代理插件使用时,还可借助 MCP 或 CLI 的 doctor、plan、start、status、show、apply、cancel、resume 管理运行。
- 拥有带标准答案数据集的模型工程师,可用留出集奖励演化系统提示词或单槽技能,并比较演化前后的准确率。
- 维护规则库的代理开发者,可选择
AppendRules或KeyedRules,让多个工作器并行提出经验规则,并融合落在不同键上的修改。 - 维护多文件技能或代理实现的研究人员,可用
FileTree对目录逐文件演化,把冲突限制在同一路径内。 - 研究自改进算法的团队,可在串行、同步或无屏障异步调度下运行 ACE、GEPA、EvoSkill 等算法端口,将调度方式作为受控变量。
- 使用 Claude Code、Codex、OpenCode 或 DeepSeek Harness 的开发者,可通过宿主插件发起演化任务,再从 CLI 检查状态和结果。
- 需要自定义演化规则的框架作者,可替换八个
Policies插槽;若算法需要归档、实例级分数或岛屿池,则可改用aggregator_factory。
如何安装或部署这个 Agent?
核心包要求 Python 3.9 或更高版本,且没有必需的第三方依赖。安装发布包:
pip install agentdescent若要运行仓库中的示例和开发测试,需要克隆仓库并安装开发依赖:
git clone https://github.com/Birfy/agentdescent && cd agentdescent
pip install -e ".[dev]"
python -m examples.run_demo该演示不需要 API 密钥或网络。若要连接 OpenAI 兼容端点,应在调用时从环境读取凭据;基础 URL 决定服务提供方:
export OPENAI_BASE_URL=https://api.deepseek.com
export OPENAI_API_KEY=sk-...为已安装的代理 CLI 配置插件和 MCP 接口,可在仓库中运行:
bash scripts/setup-hosts.sh
agentdescent demo
agentdescent doctor如何使用这个 Agent?
以下最小示例不需要 API 密钥或第三方依赖。它创建任务、定义 [0, 1] 范围内的奖励、执行函数和失败后的提议函数,然后并行演化共享产物:
from agentdescent import Task, evolve
tasks = [Task(id=f"t{i}", prompt=f"item {i}") for i in range(12)]
def reward(task, output):
return 1.0 if "2026" in output else 0.0
def run(rendered, task):
return "answer" + (" 2026" if "year" in rendered else "")
def propose(rendered, task, output, reward):
return "always state the year"
result = evolve(tasks, reward, run=run, propose=propose,
rounds=6, n_workers=3, max_concurrency=3)
print(result.rendered, result.final_reward, result.error)连接真实模型时,可以使用 LLMAgent 和已有适配器;无屏障模式通过 asynchronous=True 开启:
from agentdescent import LLMAgent, claude, openai_compatible, claude_code
evolve(tasks, reward, agent=LLMAgent(claude(model="claude-haiku-4-5")))
evolve(tasks, reward, agent=LLMAgent(openai_compatible(model="deepseek-v4-flash")))
evolve(tasks, reward, agent=LLMAgent(claude_code()))
# 或:evolve(..., asynchronous=True, async_ratio=3)命令行可先检查本机的 CLI 和密钥,再运行离线演示:
agentdescent doctor
agentdescent demo这个 Agent 有哪些优点和局限?
- 并行工作器与无屏障聚合器允许一次迭代接纳多个可融合修改,而不是固定为一次只接受一个修改。
- 策略、八个政策插槽和
aggregator_factory提供分层扩展面;不支持某个政策字段的驱动会明确拒绝它,而不是静默忽略。 - 同一引擎支持串行、同步和异步调度,并提供 20 个自演化算法端口,便于在统一运行时下研究调度差异。
- 核心引擎支持 Python 3.9 以上且无必需依赖;离线演示和确定性测试均不需要 API 密钥。
- 提供 Python API、CLI、MCP 服务和多个代理宿主的插件路径,启动的运行可在代理与终端之间交叉检查。
- 项目明确是研究参考实现,不是生产系统;生产部署所需的可用性、运维和服务级别保证没有在材料中建立。
- 差异不像数值梯度那样可直接相加;同键修改会冲突,实际吞吐收益高度依赖策略的键空间和聚合质量。
- 使用真实模型会产生网络访问和模型调用成本;插件流程因此需要在启动前估算调用量并取得确认。
- 公开的质量与性能结果来自特定任务、模型、种子数和 rollout 预算,不能直接视为其他数据集或代理的普遍保证。
- 部分合并与选择实验未保留逐次运行数据,只能按论文给出的命令重新测量,限制了原始结果的复算能力。
- 需要归档、实例级评分行或岛屿池等状态的算法无法只靠政策插槽实现,必须接入更底层的
aggregator_factory。
这个 Agent 与同类方案有什么区别?
相较于每轮最多接受一次修改的串行自改进循环,AgentDescent 让多个工作器同时提议修改,并尝试融合不冲突的差异。README 报告,在指定的 GEPA/HotpotQA 设置中,相对忠实串行对照的墙钟时间中位加速为 6.8 倍;这只是给定三次种子、四个工作器和固定 16 次 rollout 的测量结果。它还把 ACE、GEPA、EvoSkill、SkillOpt、ADAS、DGM、OpenEvolve 和 ERA 等实现为可插拔端口,使这些算法可在串行、同步或无屏障调度下运行;另有 12 个微型端口或类比实现,但材料明确说明后者不应作为基准复现引用。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| AgentDescent 当前 | 83 · 表现良好 | 代码库 / SDK免费 + 模型费 | ★ 198 | 今天 | Python | Codex · Claude Code · OpenAI API · Claude API |
| SkillLite | 60 · 存在缺口 | 命令行工具免费 + 模型费 | ★ 150 | 1 个月前 | Rust | — |
| LLMSlim 上下文与记忆工具 | 70 · 存在缺口 | MCP 服务器免费 + 模型费 | ★ 22 | 2 天前 | Python | Codex · Claude Code |
| Trace 生成式优化框架 | 67 · 存在缺口 | 代码库 / SDK免费 + 模型费 | ★ 763 | 1 年前 | Python | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示核心包无必需依赖,文档描述隔离副本、冻结权限配置、递归保护、受版本控制的账本,以及启动和回写前的明确确认;发布工作流也采用有限权限和 OIDC。数据路径及唯一反馈路径有清晰说明,因此确认机制和外部效果控制充分。扣分原因是没有给出完整的密钥存储、脱敏、日志清理或数据保留政策;工作流依赖使用版本标签而非提交摘要;虽有 cancel、resume 和 git 版本记录,但未展示完整、明确的用户级回滚流程。论文作者、DOI 和代码来源得到标注,但包作者字段使用通用名称,且发布者身份未知。
README、项目元数据和测试辅助代码对 Python 版本、离线行为、入口点及合并模型保持较强一致;金丝雀式黄金轨迹覆盖融合和冲突,故自洽性充分。依赖面较小,Python 3.9 与 MCP 版本差异也有显式条件处理,但可选依赖只有下界且外部模型、数据集、CLI 和 git 的可用性仍受环境影响。故障夹具覆盖鉴权失败、限流、永久及瞬态故障、线程卡死、空响应和账本失败,并强调快速、明显的错误,支持较高的失败消息评分。
材料明确面向研究人员、Agent 主机用户及算法移植者,覆盖提示词、技能、目录、代码和插件等场景;Strategy、Policies、aggregator_factory、同步及异步调度提供充分的适配面。研究参考实现而非生产系统、不可替换的治理层、策略键空间约束和无法支持的策略字段拒绝机制清楚界定能力边界。触发语句和 doctor/plan/start/status/apply 流程有所描述,但实际共享技能和触发规则内容未提供,故触发精度未给满分。Python、离线演示、多主机 CLI、可选 MCP 和版本条件体现了较好的环境适配。
README 具有清晰的安装、快速入门、架构、扩展点、结果、文档、引用和范围结构,并提供可运行的离线及真实模型示例;安装说明区分核心包、开发依赖、MCP 和仓库示例。限制披露充分,包括研究性质、diff 不可相加、一键空间限制、统计显著性边界及部分原始数据未保留。MIT 文本和元数据完整。扣分在于材料承认曾发生版本漂移,虽已改为单一版本来源但未提供当前版本文件;也未提供 changelog、发布历史或兼容性迁移记录。贡献入口和自动发布路径存在,但个人或团队维护职责、支持渠道及响应承诺不清楚。
结果对象直接暴露渲染产物、最终奖励和结果原因,CLI/MCP 又提供检查、状态、展示、应用及取消能力,输出具有较强可用性。并行冲突合并、策略及政策插槽、十九个算法端口相对普通串行自改进框架提供明确增量价值。材料还给出模型调用减少、墙钟加速、准确率变化、置信区间及启动前调用量报价,充分说明成本收益;但这些分数仅反映静态材料的说明质量,不代表本次独立复现。
主要经验声明附带任务、模型、工作数、种子、预算、样本数、区间或原始数据位置,架构图也声明由论文 TikZ 源生成;测试辅助代码具体说明其所保护的合并决策和故障类别,因此声明可追踪性较强。README、项目元数据、工作流和测试代码在若干事项上相互印证,但论文、完整测试主体、结果文件及实现核心并未包含在本次材料中,跨来源核验不能满分。材料明确区分基准忠实端口与类比实现、实测与假设、置信区间与不可达显著性以及未保留数据,事实和推断分离充分。
- 这是静态、低置信度审查;未执行代码、测试、演示或基准,也未验证外链论文、文档、PyPI/npm 包或结果数据。
- 该项目明确定位为研究参考实现而非生产系统;在允许其修改技能、提示词、代码或插件前,应使用隔离仓库、最小权限凭据、人工审阅和可验证备份。
- 对真实模型或数据集的运行可能向外部提供商发送提示、任务内容和输出;所给材料没有完整说明密钥、敏感数据、日志及保留策略。
- 部分基准原始逐次运行数据未保留,十九个算法端口的忠实度及性能声明不能仅凭本次所给文件独立确认。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
v0.7.0 0.7.0 — named algorithm registry, self-improvement and verifier tooling
发布说明摘录
Added - A persistent-island population run now returns EvolutionResult.lineages (#150, semantics C): a read-only row per lineage (dev plus each island) with its candidate count, best archived version/score, selection count and lineage tip. It is read from the archive the gate already scored, survives finalize, and is None on a single-head run; the official artifact is unchanged. - ACE's grow-and-refine playbook is now a named algorithm ("algorithm": "ace", kind: text) in the in-package registry (#384). ACEPlaybook, its …在 GitHub 查看 ↗ -
v0.6.0 0.6.0 — multi-head, allocator, trajectories, governance
发布说明摘录
Everything merged since 0.5.1: multi-head ledger forks, value-directed allocation, L-traj resume, trajectory ledger, governance contracts, CladeThompson, skill_dir structural gates, RRSI building blocks, changelog fragments, and a large set of crash-safety / overflow / parser fixes. Highlights - Multiple live heads — Ledger.fork / live_heads / discard_head so workers can expand different candidates in parallel without serialising on dev. - Value-directed budget allocation — evolve(allocator=...) learns which candidates are worth the expensive self-verify rollout. …在 GitHub 查看 ↗ -
v0.5.1 0.5.1 — reliable host installs and a clearer first run
发布说明摘录
Everything merged since 0.5.0, including the host-launch repair and the updated website, quickstart and documentation. Highlights - Machine-local MCP launchers and session hooks use the installing Python, so a later agent process does not need the pip scripts directory on PATH. Reinstalling repairs stock legacy and stale pinned Codex/OpenCode entries while preserving custom configurations and wrappers. …在 GitHub 查看 ↗
常见问题
必须使用付费模型或提供 API 密钥吗?
python -m examples.run_demo、agentdescent demo 和 pytest -q 都可离线运行。连接 OpenAI 兼容服务、Claude 或其他真实模型时,才需要相应凭据、网络连接并承担模型调用费用。并行提议一定会提高结果或速度吗?
它会直接覆盖我的提示词或代码吗?
能否使用 OpenAI 之外的提供方?
openai_compatible()、claude() 和 claude_code(),并说明可通过基础 URL 选择 DeepSeek、GLM、本地 vLLM 或 OpenAI 端点。失败或没有进一步改进时会发生什么?
result.error 和 result.outcomes(),插件用户则可通过 status、show、cancel 或 resume 管理任务。