Saplings
Saplings

Saplings

Saplings 是为工具调用 Agent 添加 MCTS、A* 与贪心树搜索的轻量 Python 库。6.2.0 仍可安装,但维护信号偏静默,且 PyPI 的 MIT 元数据与随包 Apache-2.0 LICENSE 冲突。

115

Views

0

Likes

Jan 2026

Added

github.com

项目链接

Tags

Saplings树搜索Agent蒙特卡洛树搜索A* AgentPython Agent框架LiteLLM

Product Preview

A quick visual look at Saplings before you visit the official site.

Published 1/21/2026
Saplings screenshot

Editorial Review

About Saplings

这里的 Saplings 特指 shobrook/saplings 的开源 Python 包:它让工具调用 Agent 用蒙特卡洛树搜索(MCTS)、A* 或 greedy best-first search 探索多条行动轨迹。它不是 Meta 的 Sapling 源代码管理系统,也不是作者曾使用相同名称、后来改名 Syntaxis 的旧包。当前实现通过 LiteLLM 调用模型,再由 evaluator——默认同样是 LLM——给候选分支评分。

Saplings 更适合可回滚工具、边界明确任务和搜索算法原型,不应直接当作完整生产 Agent 平台。它能比较后续行动并在较差路径后换分支,但搜索中被探索的工具可能已经真实执行。计算、检索、沙箱代码与模拟环境适合作为首批试验;邮件、支付、工单和数据库写入必须放在独立的 preview/commit 门之后。

Saplings 官方图,对比线性 ReAct Agent 与分支探索并自我评估的树搜索 Agent
来自 shobrook/saplings README 的官方示意:搜索会生成并评价多条工具调用路径,而不是从第一步起只保留一条线性轨迹。

准确实体与当前维护状态

核查项2026-08-20 可验证事实应如何解读
唯一实体GitHub shobrook/saplings;PyPI saplings不要混写 Meta Sapling SCM 或 Syntaxis
最新包PyPI 6.2.0,上传于 2025-06-22仍能安装,但约十四个月没有新版
仓库公开且未 archive;最后 push 为 2025-07-27最后几次是 README 修改;可见最近代码修复为 2025-06-22
分发形式6.2.0 只有 33 kB source distribution,未列 wheelpip 安装时需要本地构建
运行元数据Python >=3;litellmjson-repair 均未限定版本过宽 Python 声明不能证明当前版本兼容
许可证LICENSE 文件是 Apache-2.0;setup.py 与 PyPI 写 MIT这是冲突,不是明确双许可;需要作者澄清

最准确的状态是仍可获得,但维护偏静默。仓库没有 archive 或 disable,PyPI 也继续提供 6.2.0,所以直接写“已停止”超出证据;但包页面在线同样不代表持续做兼容与安全维护。GitHub 没有 Release,2025 年 6 月之后没有新 PyPI 文件,6.2.0 sdist 也没有随包测试或 benchmark harness。采用前应固定包与全部传递依赖,在自己的 Python/模型/工具矩阵上跑回归。

许可证必须单列为采购门槛。仓库 LICENSE 与 6.2.0 sdist 内的 LICENSE 都是 Apache License 2.0,setup.py 却声明 MIT,PyPI 又复制了 MIT 元数据。不能把这些信号简化成一句“MIT 开源”或“Apache 开源”。需要再分发、嵌入产品或维护 fork 的团队应向作者求证,保留随包 notice,并由合规人员决定适用条件。

如何选择 Saplings 搜索 Agent

搜索方式成本与失败边界
COTAgent单条普通工具调用轨迹,不做搜索适合作为基线,也最便于先确认工具与 evaluator 正确
GreedyAgent生成、执行并评分多个候选,然后只沿当前最好分支继续搜索开销相对低,但不能从局部最优的错误路径回退
AStarAgent保留备选路径,可以回到另一条 frontier折中方案;evaluator 失真时排序也没有意义
MonteCarloAgent选择、rollout、backpropagation;6.2.0 默认 b_factor 3、depth 5、最多10次 rollout潜在调用与副作用最多;当前 root 工具只生成一次,之后才分叉
Custom evaluator继承 evaluator,返回归一化 score 与 reasoning代码任务优先编译/测试,检索优先证据覆盖,不只用 LLM 给自己的文本打分

树搜索的价值取决于 value function。默认 evaluator 把整条 trajectory 发给配置模型,请求 0–10 分,再转成 0–1。原型阶段很方便,但模型可能把“说得像进展”误判为“任务已完成”。编码 Agent 应使用编译、单测和静态约束;检索 Agent 应检查来源覆盖与结论支持;环境 Agent 应从真实 state 算 reward。最好保留固定 holdout 集,因为仅修改 evaluator prompt 就可能像换算法一样改变搜索结果。

当前 MCTS 有一个非常产品专属的边界:它强制模型先生成一次 root tool call,并以这一步建立根节点。源代码 TODO 也承认,如果 root call 错了,整棵树会受影响。换句话说,它能在后续分支间探索和回退,却没有在第一步同时生成多个独立 root 再选择。详情页若只复述“能 look ahead 与 backtrack”,就会隐藏关键实现差异。

安全、可复现的评测流程

  1. 冻结安装物。在隔离环境中固定 saplings==6.2.0,生成 lockfile,并记录 PyPI sdist 的 SHA256。
  2. 先解决许可政策。把 Apache-2.0 LICENSE 与 MIT package metadata 冲突记录进依赖审批。
  3. 先跑 COTAgent。在没有搜索时建立成功率、模型费用、延迟和工具正确性的基线。
  4. 让工具可重放。拆分 propose/preview 与 commit;每个候选分支使用 sandbox、幂等键或克隆 state。
  5. 设计客观 evaluator。优先测试、schema、确定性约束、simulator state 和来源检查,只有主观维度才用 LLM。
  6. 明确限制树。显式设置 branching factor、max depth、MCTS rollouts、timeout 与 provider budget。
  7. 记录每次调用。保存 branch/parent、工具参数、结果、评分、模型、tokens、latency、retry 与 exception,同时做 secret redaction。
  8. 使用同一矩阵比较。COT、Greedy、A*、MCTS 共用 prompts、可用 seed、mock tools 和 evaluator。
  9. 专测失败。覆盖 API 不可用、工具输出损坏、rate limit、重复行动、误导证据、context truncation 与 evaluator 分歧。
  10. 只在搜索后提交。让树产生 plan、patch 或候选动作,由确定性 validator 或人工只批准一次真实写入。
  11. 核查模型数据路径。Saplings 本地运行,但 LiteLLM 会按配置把 prompt、tool schema 与轨迹发送给 provider;适用的是该 provider 的 retention/privacy 条款。
  12. 预留替换层。用自有 interface 包住 Saplings,使依赖长期不更新时可以替换而不重写所有工具。

简短 README 没有替你解决的问题

风险6.2.0 中为什么出现控制办法
重复副作用BaseAgent 在评分前就执行每一个候选 tool call只搜索纯函数/模拟动作;选出结果后再 commit 一次
调用膨胀生成候选、每个分支评分、rollout 都可能调用模型或工具硬预算、timeout、安全读缓存,并测每个 solved task 成本
Evaluator 偏差默认 value function 是 LLM 自评 trajectory客观 reward、多 evaluator 或人工抽查
Root 锁定MCTS 在分叉前只创建一个 required root call先生成/验证 plan,或修改 root 策略
依赖漂移litellm/json-repair 没有版本范围锁定传递版本,升级前跑 CI
隐私与安全模型看到 prompt、schema、trajectory;工具还接收 trajectory memory最少数据、脱敏、最小权限和 provider 治理
维护/许可更新静默且 license metadata 冲突pin 或自有 fork、安全扫描、指定 owner、取得书面澄清

分支副作用是最重要的工程结论。BaseAgent.expand 先生成候选调用,为每个候选创建异步执行任务,等工具返回后才评价 child node。Backtracking 不会撤销已发生的动作。MCTS 若探索三个 send_email 候选,可能真的发出三封邮件,即便最终只返回一条路径。安全架构应在描述、模拟 state 或可回滚 patch 上搜索,把不可逆操作放到树结束之后。

成本也不能凭默认参数猜一个固定倍数。实际 provider calls 取决于提前终止、候选去重、深度、rollout、evaluator samples、tool behavior 与异常重试。应报告每个批准任务的模型/工具费用、p50/p95 latency 和重复副作用数。README 表格中的 benchmark 明确引用 LATS 论文,不是 Saplings 6.2.0 自身复现;sdist 没有 benchmark runner,因此本文不把论文数字写成这个包的实测成绩。

Saplings 与同类方案怎么选

方案最适用场景相对 Saplings 的取舍
Saplings用很小的 Python 包给 tool calls 加 MCTS/A*/greedy 的实验API 简洁;维护静默、无 durable runtime,分支副作用需自行治理
普通 ReAct/tool loop低成本、顺序明确、工具强且容易验收的任务不能回退,但费用和外部写入更容易推理
LangGraph需要持久 state、streaming、human review 与 durable execution 的生产流程编排更多;搜索策略需自建,但 checkpoint 与 commit gate 更明确
LLM Reasoners研究 MCTS、Tree-of-Thoughts、world model 与多 benchmark 复现体系更重,但比小型 agent wrapper 更适合算法研究
自建 beam/tree search已有 domain simulator、精确 reward 和严格副作用策略的团队工程量大,却能完全控制 branching、cache、预算与事务提交

独立判断:Saplings 最有价值的地方是可读。开发者可以在不引入大型平台的情况下读完搜索循环、Tool 抽象和 evaluator,适合学习和有边界的 proof of concept。它的短板是研究搜索与生产编排之间的缺口:没有内建 persistence、approval queue、transaction rollback、durable checkpoint 或发布的安全治理方案。

当环境可以廉价 clone、reward 客观、工具没有不可逆副作用时,可以采用。若要做长期服务,应该 fork 并真正拥有这份依赖——补 lock、tests、tracing、security policy 与许可说明——或把相同搜索策略放进维护更活跃的 workflow runtime。论文 benchmark 是针对私有任务的待验证假设,不是直接上线理由。

常见问题

Saplings 是什么?

它是 shobrook/saplings 的 Python 树搜索 Agent 库,用 greedy、A* 或 MCTS 探索工具调用轨迹,通过 LiteLLM 访问模型,并用 evaluator 给路径评分。

还在维护吗?

仓库未归档、PyPI 仍能安装,但维护偏静默。6.2.0 发布于 2025-06-22,最后 push 为 2025-07-27。没有新 release 或作者声明前,不应假设持续兼容与安全维护。

和 Meta Sapling 一样吗?

不一样。Meta Sapling 是源代码管理系统;本页是 Jonathan Shobrook 的 AI Agent Python 库。README 还说明作者另一个早期同名包已改名 Syntaxis。

哪个许可证有效?

仓库和 6.2.0 sdist 带 Apache-2.0 LICENSE,但 setup.py 与 PyPI metadata 写 MIT。这是需要作者澄清的冲突,合规页面不应擅自选择其中一个。

树搜索一定更好吗?

不一定。可可靠评分的多步骤任务可能受益,但调用量会增加,弱 evaluator 也会被放大。README 数据来自 LATS 论文,不是 Saplings 版本 benchmark。

能使用本地模型吗?

README 表示通过 LiteLLM 覆盖本地路线;实际仍取决于所选模型是否可靠支持 tool calling、structured output 和 token count,必须逐模型测试。

为什么写工具危险?

Saplings 在选择 winner 前执行候选分支,所以 backtracking 无法撤销多次写入。使用 preview、sandbox 和搜索后单次 commit。

替代方案?

顺序任务用普通 tool loop;需要持久状态与人工审批用 LangGraph;算法复现用 LLM Reasoners;有精确 simulator/reward 时可自建 search。

核对过的来源

独立复核日期:2026-08-20。已用 GitHub 与 PyPI 进行实体消歧。“仍可获得但维护偏静默”不是武断宣告 abandoned;license metadata 仍冲突,论文结果没有包装成 Saplings 自身 benchmark。

前往 Saplings 官方来源核查

打开官方仓库、文档或模型资源。

查看官方来源

Quick Info

项目链接
github.com
Category
AI 智能体
Added
1/21/2026
Published
1/21/2026
Updated
9/7/2026

Share This Tool

Have an AI tool to share?

Submit it to AI Dreamhub

Get your product in front of people actively exploring AI tools.

Submit Your Tool
Manus

Manus

Manus 是一个托管的通用 AI 代理,它使用云虚拟机、浏览器自动化、文件、代码和集成来完成多步骤任务。本独立指南涵盖计划和学分、Cloud Browser 与 Browser Operator、经过验证的操作、隐私、批准、任务设计、评估和替代方案。

ai-agentfree
2170
Gemini CLI

Gemini CLI

An open-source AI agent that brings the power of Gemini directly into your terminal. - 智能 AI 工具,助力您的工作效率。

ai-agentfree
1430
AgentScope

AgentScope

Agent-Oriented Programming for Building LLM Applications, Open-sourced by Alibaba - 智能 AI 工具,助力您的工作效率。

ai-agentfree
1570
Auto-GPT

Auto-GPT

Auto-GPT 是 Significant Gravitas 的开源自主 Agent 项目和平台,用于构建、运行和管理 AI 助手与自动化工作流。

Auto-GPTAI agentautonomous agents
1870