Observatory · 数据研究

2026 年,Effect-TS 正在成为 AI Agent 的下一种工程范式吗?

基于 GitHub 开源生态的第一次调查 · 数据快照 2026-09-14 · 数据集 v0.1

结论

  • Scenario C:Effect 在 Agent Runtime 中有明显技术价值,但生态规模仍然有限。 在有界宇宙的 856 个 TypeScript Agent 里,真正把 Effect 用进业务(L2+)的只有 33 个(3.9%)—— 规模上远谈不上”下一种范式”;但这 33 个里 23 个是 L4(Effect 是 Runtime 的地基), 而不是浅尝辄止的 L2/L3,说明采用者的用法很重:他们不是在 Agent Loop 里顺手 import 一下, 而是把整个执行模型建在 Effect 上。
  • H4 得到支持,H2 仍未验证。 数据支持”Effect 的价值在 Agent Loop 之下的 Runtime”: L2+ 项目最常用的能力是服务与依赖注入(Layer/Context)、类型化错误、Scope 资源管理、Stream 与 Fiber 并发—— 全是运行时能力,而不是”怎么调 LLM”。至于”H2 框架竞争力是否真的转向 Runtime”,需要框架对比矩阵, v0.1 没有取证,因此不下结论。
  • 判不准的比例(44.8%)本身就是结论的一部分。 我们无法用规则+文件路径判定近一半候选是不是 Agent—— 这不是数据脏,而是”Agent”这个概念在开源世界里还没有稳定的边界(一个 MCP 工具服务器算不算? 一个把 Claude Code 包一层的 CLI 算不算?)。任何把这个比例当成精确数字引用的做法都比数字本身更危险。
  • 对本站的含义:这个数字不足以支撑”Effect 是 Agent 的未来”这种话术,但足以支撑一件事—— 用 Effect 做 Agent 的人,都是在解决运行时问题。中文世界缺的正是这类内容: 不是”怎么调 LLM”,而是”失败、取消、资源、并发怎么收敛”。这与站点既有的错误管理与并发章节是对齐的。
4,861 候选仓库(有界宇宙内)
2,275 判定为 Agent(另有 2,177 判不准,不计入)
856 TypeScript Agent
33 真正在用 Effect(L2+)· 3.9%

这不是"全量统计":GitHub 搜索每条查询硬上限 1000 条,所以宇宙被限定为 stars ≥ 300 ∧ 180 天内有 push ∧ 5 种语言 × 16 个 Agent 方向词。 所有比例的分母都是这个宇宙,不是整个 Agent 产业。

最关键的一张图:Effect 用得多深

3.9% 的占比离"范式"很远;但把 33 拆开看,故事变了 —— 23 / 33 是 L4: 用 Effect 做 Agent 的团队绝大多数不是浅尝,而是把执行模型建在它上面。

Effect 使用深度(TypeScript Agent 内) L2+ 才算「真正在用」;L4 = Effect 是 Agent Runtime 的地基 L0816 不用 L17 边角路径 L26 部分业务逻辑 L34 重要架构组成 L423 Runtime 地基

其余四张

Agent 项目按语言分布(有界宇宙内) stars ≥ 300 且 180 天内有 push · 共 4861 个候选、2275 个判定为 Agent Python2,223 其中 Agent 934 TypeScript1,612 其中 Agent 856 Go465 其中 Agent 217 Rust402 其中 Agent 185 Java158 其中 Agent 83 (未知)1 其中 Agent 0
TypeScript 候选的判定构成 判不准的不计入分子分母(见 methodology §7) 判定为 Agent856 判不准(uncertain)552 判定为非 Agent204
Effect Agent 用到了哪些能力(33 个项目,可多选) 最常用的不是 @effect/ai —— 而是运行时能力 gen32 error31 primitives28 service26 concurrency26 schema26 resource26 stream22 observability20 config18 platform17 cluster14
Effect Agent(L2+)的 star 分布 中位数 1,308(全体候选中位数 1,071) opencode207,170 L4 composio30,160 L4 kilocode27,293 L4 eliza19,331 L2 trigger.dev16,273 L2 react-doctor14,840 L4 MiMo-Code13,095 L4 typebot.io10,318 L4 openstatus9,110 L3 latitude-llm4,642 L4 executor3,760 L4 wa-automate-nodejs3,653 L4 expect3,553 L4 athas3,055 L3 xum2,016 L4

数字背后的表

Effect 使用深度

深度含义项目数
L0 不用 Effect 816
L1 只在边角路径依赖 7
L2 部分业务逻辑用了 6
L3 Effect 是重要架构组成 4
L4 Effect 是 Runtime 的地基 23

Effect Agent 用到了哪些能力(共 33 个项目,可多选)

能力项目数
gen32
error31
primitives28
service26
concurrency26
schema26
resource26
stream22
observability20
config18
platform17
cluster14

注意 @effect/ai 不在表里:33 个项目里命中 0 个(全部 1,612 个 TS 候选里也只有 1 个)。 这些团队用 Effect 不是为了"接模型方便",而是为了管住失败、并发与资源

Agent 生态按语言

语言候选判定为 Agent占比
Python 2,223 934 42.0%
TypeScript 1,612 856 53.1%
Go 465 217 46.7%
Rust 402 185 46.0%
Java 158 83 52.5%
(未知) 1 0 0.0%

真正在用 Effect 的项目(33 个)

每一条都来自 tarball 全仓扫描:下载整个仓库、只统计确实 import 了 effect 的文件, 并剔除"仓库里塞了一份 Effect 源码"的情况。核心 列是能力命中数。

项目深度类型核心依赖
anomalyco/opencode 207,170 L4 coding-agent 14 @effect/opentelemetry@effect/platform-node
ComposioHQ/composio 30,160 L4 multi-agent 12 @effect/platform-buneffect
Kilo-Org/kilocode 27,293 L4 multi-agent 14 @effect/opentelemetry@effect/platform-node
elizaOS/eliza 19,331 L2 workflow-agent 2 effect
triggerdotdev/trigger.dev 16,273 L2 single-agent 4 effect
millionco/react-doctor 14,840 L4 single-agent 11 @effect/platform-node-sharedeffect
XiaomiMiMo/MiMo-Code 13,095 L4 mcp-agent 13 @effect/opentelemetry@effect/platform-node
baptisteArno/typebot.io 10,318 L4 workflow-agent 13 @effect/opentelemetry@effect/platform-bun
openstatusHQ/openstatus 9,110 L3 mcp-agent 4 effect
latitude-dev/latitude-llm 4,642 L4 mcp-agent 9 @effect/opentelemetryeffect
UsefulSoftwareCo/executor 3,760 L4 mcp-agent 12 @effect/atom-react@effect/opentelemetry
open-wa/wa-automate-nodejs 3,653 L4 single-agent 11 @effect/platform-browser@effect/platform-bun
millionco/expect 3,553 L4 mcp-agent 12 @effect/atom-react@effect/platform-node
athasdev/athas 3,055 L3 multi-agent 2 effect
coder/xum 2,016 L4 coding-agent 10 effect
steipete/birdclaw 1,652 L3 mcp-agent 3 effect
cyberpapiii/chipotlai-max 1,556 L4 mcp-agent 8 effect
amicalhq/amical 1,530 L2 workflow-agent 7 effect
aws-samples/bedrock-chat 1,323 L3 single-agent 1 effect
LodyAI/Lody 1,049 L4 mcp-agent 7 effect
AltimateAI/altimate-code 811 L4 mcp-agent 14 @effect/opentelemetry@effect/platform-node
FrancescoStabile/numasec 779 L4 mcp-agent 13 @effect/opentelemetry@effect/platform-node
joelhooks/swarm-tools 735 L2 mcp-agent 6 effect
browser-use/browsercode 716 L4 single-agent 14 @effect/opentelemetry@effect/platform-node
s0ld13rr/pentestcode 700 L4 mcp-agent 13 @effect/opentelemetry@effect/platform-node
openteams-lab/openteams 612 L2 multi-agent 10 @effect/platform-nodeeffect
momozi1996/momo-code 604 L4 coding-agent 6 effect
paperboytm/spool 590 L2 multi-agent 7 @effect/opentelemetryeffect
shobcoder/shob 581 L4 coding-agent 13 @effect/opentelemetry@effect/platform-node
maria-rcks/t1code 520 L4 single-agent 12 @effect/platform-node@effect/sql-sqlite-bun
morapelker/hive 470 L4 single-agent 9 effect
smithersai/smithers 412 L4 workflow-agent 14 @effect/opentelemetry@effect/platform-bun
boringcomputers/nehemiah 326 L4 mcp-agent 7 effect

案例与文章

完整文章(10 章)

从"Agent 早就不是 LLM wrapper"讲到"不是范式,但用法很重";含 4 个深案例(opencode / composio / typebot / latitude-llm)与 1 个反例(eliza)。

报告与数据

报告:reports/effect-agent-ecosystem-v0.1.md(仓库内)
下载:effect-agents.csv · typescript-agents.csv · agents.csv · stats.json

口径(宪法)

有界宇宙、可代码验证的 Agent 判据(A1–A4)、Effect 深度 L0–L4、证据分级、Bias 清单: docs/observatory/methodology.md

一条命令复现

pnpm --filter @ecn/observatory discover && … scan && … classify && … report

这份调查不知道什么(写在前面比写在附录里好)

  • 这不是全量:有界宇宙排除了 stars < 300、半年不活跃、以及名字/描述里没有 Agent 方向词的仓库;
  • 2,177 个候选我们判不准是不是 Agent(占 44.8%)。这不是数据脏,而是"Agent"在开源世界还没有稳定边界; 它们不计入任何比例。人工审核抽样表见 docs/observatory/review-sample.md(124 条,待人工判定);
  • 没有 Benchmark:本文不声称任何性能或可靠性优势。同 LLM 同 prompt 下的耗时差异支撑不了"谁更好";
  • 语言字段是参考口径:GitHub 按字节占比判定语言,TS 项目常被判成 JS/JSON/Markdown;
  • 研究的是 GitHub 开源生态,不是整个 Agent 产业(企业私有项目完全不可见)。

怎么保证数字不是编的

  1. LLM 不产生任何数字:star / 活跃度 / 依赖 / 文件清单 / 能力命中全部来自 GitHub API 或仓库文件;
  2. 每条候选可回溯:快照里记着它被哪条查询命中(via);
  3. 每个汇总可重算:CI 门禁断言 stats.json 能由 dataset.json 重算、 effect-agents.csv 每一行都真的是 L2+ —— 数字看起来永远是对的,所以必须机器来盯;
  4. 快照禁止覆盖:目录已存在即报错,保证"旧数据没被改过"。