AgentDescent
并行演化智能体的技能、提示词与执行框架。
按维度查看评分与理由
证据显示核心包无必需依赖,文档描述隔离副本、冻结权限配置、递归保护、受版本控制的账本,以及启动和回写前的明确确认;发布工作流也采用有限权限和 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 包或结果数据。
- 该项目明确定位为研究参考实现而非生产系统;在允许其修改技能、提示词、代码或插件前,应使用隔离仓库、最小权限凭据、人工审阅和可验证备份。
- 对真实模型或数据集的运行可能向外部提供商发送提示、任务内容和输出;所给材料没有完整说明密钥、敏感数据、日志及保留策略。
- 部分基准原始逐次运行数据未保留,十九个算法端口的忠实度及性能声明不能仅凭本次所给文件独立确认。
这个 Agent 能做什么,适合哪些场景?
AgentDescent 是一个 Python 研究框架,将技能、提示词、目录或智能体代码表示为可版本化的状态,并让多个工作器并行提出修改。工作器基于账本快照执行任务,生成带证据的差异;单一聚合线程再完成冲突处理、融合、统计验收和事务式提交。核心入口是 evolve(),可搭配 Task、不同 Strategy、Policies、数据集转换器、评分器以及模型适配器使用。它既能作为零必需依赖的 Python 库运行,也提供 CLI、MCP 服务和面向 Claude Code、Codex、OpenCode、DeepSeek Harness 的宿主插件。最终产物是演化后的共享制品及其留出集奖励、结果原因和提交、融合、过期、冲突等运行指标。项目明确定位为研究参考实现,而非生产系统,因此适合实验和算法比较,不应未经额外工程化便承担关键生产流程。
evolve() 接收 Task 集合、返回 0 到 1 分数的奖励函数,以及 run/propose 回调或 LLMAgent。每个工作器读取 git 支持的账本快照,运行任务并提出带证据卡的差异;聚合器以五阶段流程处理选择、过期、冲突、融合、验收与晋升策略,然后事务式提交获胜版本。AppendRules、KeyedRules、FileTree 和 SingleSlot 分别把制品表示为去重规则、分类条目、文件树或单值提示词,其键空间决定并发修改能否融合。tasks_from、hf_rows 和 scorer 可把数据集转换为任务并进行评分;openai_compatible、claude 和 claude_code 可连接模型 API 或 Claude Code CLI。CLI 与 MCP 服务提供 doctor、plan、start、status、show、apply、cancel、resume,支持在写回前检查、报价和征得确认。
- 研究人员希望在固定 rollout 预算下,对串行、同步和无屏障异步的智能体自我改进流程进行可控比较。
- 提示词工程师拥有带标准答案的数据集,希望用 evolve()、SingleSlot 和 scorer("exact") 学习并验证单一系统提示词。
- 智能体开发者需要让多个工作器并发积累可去重的经验规则,可采用 AppendRules 降低同键冲突。
- 维护技能目录或智能体代码的团队,希望以 FileTree 为逐文件键空间,在隔离 rollout 后合并可兼容修改。
- 算法研究者希望在同一引擎和调度器中运行 ACE、GEPA、EvoSkill、DGM、OpenEvolve 等已提供端口,并利用 --dry-run 做无密钥检查。
- Claude Code、Codex、OpenCode 或 DeepSeek Harness 用户希望通过共享技能、MCP 服务和 CLI 启动、观察及应用演化任务。
这个 Agent 有哪些优点和局限?
- 以差异为演化单位并显式处理冲突、融合、过期和事务提交,比只能逐轮接受一个修改的串行循环支持更高的并发吞吐潜力。
- 核心引擎支持 Python 3.9 以上且零必需依赖,并提供无需密钥、无需网络的确定性演示和测试路径。
- Strategy 与八个 Policies 插槽均为可替换协议;驱动器会拒绝无法兑现的策略字段,而不是静默忽略。
- 同时提供 Python API、CLI、MCP 服务和多个智能体宿主集成,并支持 OpenAI 兼容接口、Claude API 与 Claude Code CLI。
- 包含十九个自我演化算法端口,可在串行、同步或无屏障调度下运行,并明确区分基准忠实端口与类比实现。
- 项目明确是研究参考实现而非生产系统;生产采用仍需补充可靠性、运维、安全和扩展性工程。
- 差异不像数值梯度那样可以直接相加;同键修改会冲突,SingleSlot 甚至让所有并发提议互相矛盾,效果高度依赖键空间与聚合策略。
- 质量提升并非普遍保证;项目将吞吐优势描述为待检验假设,部分比较只能报告区间而无法达到统计显著性。
- 真实模型与数据集流程会引入提供商凭据、网络调用和模型费用;离线演示不能代表这些部署条件。
- 某些机制需要归档、逐实例分数或岛屿池等引擎未保留的状态,必须改用 aggregator_factory,而不能仅填充 Policy 插槽。
- 部分合并与选择实验未保留逐次运行数据,只能按论文命令重新测量,限制了原始结果的完整复算。
如何安装或部署这个 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 密钥或网络。若要接入支持的智能体宿主,可在仓库中运行:
bash scripts/setup-hosts.sh
agentdescent demo
agentdescent doctor如何使用这个 Agent?
最小离线调用可直接定义任务、奖励、执行器和提议器:
from agentdescent import Task, evolvetasks = [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.0def 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)接入模型时可传入 agent=LLMAgent(claude(...))、LLMAgent(openai_compatible(...)) 或 LLMAgent(claude_code());相应 API 路径需要可用凭据和网络。无屏障模式使用 asynchronous=True, async_ratio=3。宿主插件流程先运行 agentdescent doctor,再规划并报告调用次数;用户确认后启动分离式任务,写回前还会再次确认。
这个 Agent 与同类方案有什么区别?
相较于每轮最多接受一次修改的串行自我改进,AgentDescent 尝试并发产生差异并合并兼容编辑;README 报告在固定设置中的模型调用量和墙钟时间改善,但也强调这些结论依赖具体任务、预算和键空间。ACE、GEPA、EvoSkill、SkillOpt、ADAS、DGM、OpenEvolve、ERA 等在这里作为同一引擎上的算法端口,而不是需要各自维护独立循环;另外十一项被明确标为微型端口或类比实现,不能当作基准复现引用。