把 LLM agent runtime 整个重写到 Elixir/OTP,然后打包成单二进制直接 curl | bash
当你还在为 Python agent 框架的并发和部署头疼时,有一个项目已经用 Elixir/OTP 整套重写了一遍——而且打包成单二进制、curl | bash 就能跑。这个叫 Long 的项目,正在重新定义”个人 LLM agent runtime”应该长什么样。
为什么是 Elixir/OTP?
Python 是 LLM agent 的默认语言,但它有个尴尬:你每开一个 session,就要再 fork 一个进程;崩溃了要么自己写 supervisor,要么祈祷。作者直接选了 BEAM——每个 session 就是一个被监督的 GenServer,天然支持并发、故障恢复、长连接推送。没有 GIL,没有 asyncio 心智负担,几万个 session 跑在同一颗 BEAM 上是常态。
更关键的是,这套 runtime 不是 Python 项目套个 Web UI 的缝合怪:Phoenix 做 UI、Ash 做数据层、Oban 做定时任务、ReqLLM 做多 provider 抽象——都是 Elixir 生态成熟的标准件,而不是临时拼凑。
GraphQL 当作 agent 的唯一工具
这是我见过最巧妙的设计。
大多数 agent framework 都有一堆工具:schedule_task、remember_fact、update_checkpoint……每个都要手写 schema、喂给模型认。Long 直接给了 agent 一个 GraphQL 工具,操作 sessions、messages、memory tiers、scheduled tasks、secrets 全在一个 introspectable 接口里。
好处是什么?模型本来就会 GraphQL——这是它在 pretraining 里就见过无数次的语言;schema 自描述,模型自己发现自己能干啥;新增 Ash 资源就自动获得 CRUD 权限,不用再写工具。一个 graphql tool 顶十个 bespoke tools,这就是”用成熟技术换杠杆”的典型打法。
单二进制 + curl | bash 的部署哲学
mix release 把 ERTS 整个 Erlang VM 打包进去,目标机器不用装 Erlang/Elixir。下载、解压、运行,一个 binary 全搞定。SQLite 当存储、文件系统当 workspace,没有 Postgres、没有 Redis、没有 message broker。
更狠的是 ~/.long/service install 直接接 launchd(macOS)或 systemd user unit(Linux),无需 sudo,autostart 自动接好。卸载就 rm -rf ~/.long。作者的设计目标写得很清楚:”像 CLI 工具,不像服务器基础设施”。code_run 用 Deno sandbox 跑 TS/JS,连 Node 都不用装。
4-Tier Memory + Anthropic 兼容 Skills
四层记忆体系把 hot/warm/cold 分得清清楚楚,保证上下文不会随 session 老化而崩坏。Skills 走的是 Anthropic 的 SKILL.md 开放标准,意味着 Long 直接兼容 Claude Code、Codex、Cursor、Gemini CLI 那套生态——你从别处搬过来的 skill,这里能直接用。
适用场景
- 想在家里/小团队跑一个永远在线的 AI 助手,接 WeChat / Telegram / Slack / Discord 自动回复
- 受不了 Python agent runtime 的进程管理和崩溃恢复
- 想用一个统一 GraphQL 接口管理 agent 所有数据,而不是维护一堆工具定义
- 需要在 Mac mini 或 Linux 盒子上一行命令部署,不想搭 Docker / K8s
怎么上手
一行安装:
curl | bash→ 解压到~/.long/- 贴一个 OpenAI / Anthropic / Ollama / DeepSeek 的 API key(支持 20+ provider)
- 浏览器打开 Web UI,聊天、管理 skills、定时任务全在页面里完成
整个过程零依赖、零配置、零容器。这才是”家用 AI agent”应该有的样子。
GitHub: https://github.com/mjason/long
GitHub: https://github.com/mjason/long
评论区
登录后可评论。