模型 / 数据集
proxysoul/Empryo avatar
proxysoul/Empryo

Empryo:用符号图而不是字符串来改代码的 AI 编程代理

Empryo issue tracker + SoulForge (v2). Empryo is the graph-powered AI coding agent that edits symbols, not strings: AST surgery, full LSP, a live code genome. Get it at https://empryo.com

1,175 个 Star93 个 ForkTypeScriptNOASSERTION

秒懂

它是什么?
Empryo(前身 SoulForge)把仓库预先解析成符号依赖图,让代理在改动前先知道影响范围。本文依据其公开 README 梳理它的机制、安装方式、真实约束与适用边界。
适合谁用?
Empryo 适合已经在用 CLI 代理、但被大仓库的上下文成本和误改字符串问题拖累的团队,尤其是愿意自己配模型、接受本地运行、且主要在 TypeScript 等被 tree-sitter 覆盖的语言上工作的工程组。它不适合需要审计源代码、需要发行版包管理器统一分发、或要求所有语言都达到同等编辑精度的组织。
能商用吗?
请先确认。这个仓库使用的许可证不在我们自动归类的范围内,商用前请阅读仓库里的 LICENSE 文件。
还在维护吗?
在维护。仓库最近一次提交在 5 天前。
用什么语言写的?
主要是 TypeScript(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

它要解决的是字符串补丁的盲区

多数编程代理的工作方式是 grep 定位、整文件读取、按字符串替换打补丁。这条链路有个结构性缺陷:代理在改完之后并不知道谁依赖了它刚动过的代码。README 把这一点写得很直接,说这类代理「从不了解自己刚改动的代码有什么依赖」。Empryo 的定位就是在这个环节插入一张图。目标用户不是偶尔写脚本的人,而是要在中大型仓库里反复做跨文件重构、且对 token 账单敏感的工程团队。README 给出的三类受益场景分别是:改动前需要知道爆炸半径、需要跨 30 多种语言做结构化编辑、以及希望用便宜模型做侦察、强模型做写入的分工。

图谱先行:tree-sitter 解析与 PageRank 排序

启动时 Empryo 用 tree-sitter 把仓库解析成一张实时图,节点是符号、导入和调用点。README 称这张图按 PageRank 和 git 共同变更历史排序,因此高频一起改动的文件会在图里彼此靠近。代理在动手前查询这张图,得到三个答案:谁 import 了这个文件、历史上它和什么一起变、改动会向外扩散多远。README 的说法是图查询在毫秒级返回,且不消耗 LLM token。这是它与纯检索式代理最实质的区别:导航成本从模型侧转移到了本地解析侧。需要说明的是,图的新鲜度依赖解析时机,README 未描述文件在会话中途被外部工具改动后图如何同步,这一点在长期运行的会话里值得实测。

AST 手术与全有或全无的回滚

编辑不走字符串匹配,而是走 AST。README 列出 65 个以上的符号级操作,支持原子批处理,失败时整体回滚,并以类型检查作为闸门。结构化编辑覆盖 30 多种语言。README 强调「空白字符不会破坏编辑」,这针对的正是字符串补丁最常见的失败模式:缩进、换行或格式化差异导致匹配失败或误替换。原子批处理加类型检查的组合意味着一次多文件重构要么全部通过类型检查落地,要么完全不落地,不会留下半成品状态。代价是每次编辑都要等类型检查,在类型检查本身很慢的项目里这会成为瓶颈,README 没有给出这方面的耗时数据。

十个可路由角色与 22 个提供商

Empryo 不是单模型循环,而是把十个角色做成可替换的槽位:brain、spark(侦察)、ember(写码)、explore、verify(审查)、goal review、desloppify、summarize、compact、web search。每个槽位可以接 22 个提供商中的任意模型。路由粒度有三个层次:每个标签页独立配置、全局或项目级默认、以及从标签页覆盖任意槽位。README 提到路由会保持 prompt 缓存前缀稳定,子代理继承父级的缓存行,重复上下文按缓存读取价计费。这个设计意图很清楚:让便宜模型做探索,让强模型只负责写。自定义代理也支持,形式是提示词加模型加工具策略。实际效果取决于你是否愿意花时间调这套路由,默认配置未必比单一强模型更省。

安装:官方脚本,不走包管理器

README 给出的安装方式只有官方渠道。macOS 和 Linux 用 curl -fsSL https://empryo.com/install.sh | bash,Windows PowerShell 用 irm https://empryo.com/install.ps1 | iex。README 明确写着 Empryo 不通过 Homebrew、WinGet 或 npm 分发,也不要从 GitHub Releases 或第三方包管理器下载二进制。配置密钥的命令是 empryo --set-key anthropic sk-ant-...,也可以完全本地运行 Ollama 而无需密钥。之后 cd 到项目目录直接执行 empryo 即可。这里有个需要留意的点:管道执行远程脚本是常见做法,但 README 同时强调只从 empryo.com/download 获取安装包,等于把信任集中在一个域名上。前身 SoulForge 仍可安装,命令是 brew tap proxysoul/tap && brew install soulforge 或 bun install -g @proxysoul/soulforge,但 README 说明新功能已全部转向 Empryo,SoulForge 只接收缺陷和严重问题的修复。

基准数字来自项目方,且对比对象是 pi

README 列出两轮对比,对手是 pi,条件是相同模型、相同仓库、相同任务。第一轮 3 个 bug 乘 3 个模型,修复数 8/9 对 7/9,成本低 28%,墙钟时间快 57%,输入 token 少 5.7 倍。第二轮用 hono、zod、ky 的 5 个真实 bug,修复数 7/10 对 6/10,成本低 23%,快 32%,步骤少 28%。README 说明第二轮用的是已合并 PR 里的真实缺陷,训练截止之后、历史已清理、每次运行后注入回归测试。这些数字来自项目方自己的仓库,README 提供了 proxysoul/pi-vs-empryo-bench 供复现。在你自己复现之前,应当把它们当作待验证的声明而非结论。第二轮 7/10 对 6/10 的差距只差一个 bug,样本量小,不足以支撑强判断。

源码不在这个仓库里,许可证也不明确

这是采用前最需要弄清的一点。该仓库的定位是 Empryo 的问题追踪和讨论区,README 写明 SoulForge 的源码「按既有许可证归档在此处」,并指向 LICENSE 文件。GitHub 上的许可证标识是 NOASSERTION,意思是平台无法自动识别为标准许可证。README 正文没有给出具体许可证名称,也没有说明 Empryo 本身是否开源。安装脚本分发的是预编译二进制,不是源码。如果你的组织需要审计代码或对许可证兼容性有硬性要求,仅凭这份材料无法完成判断,必须直接读仓库里的 LICENSE 文件。README 称 Empryo 免费使用、无按席位收费,但免费使用与开源是两回事,不能混为一谈。

维护成本与它不该被用在哪

从版本节奏看,v2.20.25 发布于 2026 年 7 月 12 日,v2.20.24 同日,v2.20.23 在 7 月 8 日,默认分支最后一次推送是 2026 年 9 月 9 日。这种密集的补丁版本号说明项目处于快速迭代期,跟着升级意味着要接受较频繁的变更。README 提到 13 个生命周期钩子和任意 MCP 服务器接入,这些扩展点本身也构成维护面。它不适合的场景至少有三个:一是需要发行版包管理器统一分发和签名验证的环境,README 明确不支持 Homebrew、WinGet 和 npm;二是主力语言不在 tree-sitter 覆盖范围内、或者该语言的类型检查器无法在编辑时快速给出结果的仓库,AST 编辑加类型检查闸门的优势会打折;三是需要把完整源码纳入内部审计流程的团队,在这个仓库里拿不到 Empryo 的源码。作为替代方案,pi 是 README 直接对标的对象,差别在于 pi 走的是常规的检索加字符串补丁路径,没有预建符号图,因此每次导航都要消耗模型上下文,这也是两轮对比里输入 token 差距的主要来源。

编辑结论

Empryo 适合已经在用 CLI 代理、但被大仓库的上下文成本和误改字符串问题拖累的团队,尤其是愿意自己配模型、接受本地运行、且主要在 TypeScript 等被 tree-sitter 覆盖的语言上工作的工程组。它不适合需要审计源代码、需要发行版包管理器统一分发、或要求所有语言都达到同等编辑精度的组织。上手前先确认三件事:仓库 LICENSE 的实际条款(GitHub 标注为 NOASSERTION,README 只说源码按既有许可证归档在仓库中),你主力语言的 tree-sitter 语法是否在支持列表内,以及 empryo --set-key 之外是否必须走 Ollama 本地模型。这三点决定它能不能进你的工作流,其余功能都可以后测。

官方来源

  1. Issues
  2. Project website
  3. proxysoul/Empryo on GitHub
  4. README
  5. Releases
社区笔记

社区笔记