GitHub 趋势 · 第 44 期

5,208 个 star 却发不出一个正式版:Apache Maka 把编程 Agent 的日志做成了运行时

#编程Agent#事件溯源#Apache孵化

这一期讲一个矛盾体。它的星标涨得比绝大多数新项目都快——5,208 star、484 fork,本月净增 3,941;但你去它的 GitHub Releases 页面,会发现那里是空的。README 自己写着「Maka has not made an Apache release yet」,对 releases/latest 的请求直接返回 404。热度已经跑到流程前面去了。所以本文的判断是:值得读它的架构,但现在还不适合装;真要尝鲜,下面那 9 个坑请先看完。

跑长任务的人都踩过这个坑

让 Agent 干一个小时的活,中途断了。恢复回来,它不记得刚才做到哪一步,你只能自己回忆着重新交代一遍。更难受的是事后审计:你想知道它为什么删了那个文件、为什么跑了那条命令,翻聊天记录翻不到,因为那些决定当时只存在于内存里。

很多人把这归因于模型不行、上下文太短。但 Apache Maka 给出的另一个解释是:状态活在内存和对话里,日志只是顺手打印出来的副产品——副产品当然对不上账。

Maka 的做法是把因果关系掉个个儿:先有日志,再有运行时。

它到底是什么

一句话:一个本地优先的编程 Agent 工作台。它由 Apache 孵化器孵化(2026 年 5 月 27 日建仓),主语言 TypeScript,另有一个 Rust 写的 native addon。入口有三个——桌面端、TUI/CLI、以及 Eval 评测——但这三个都只是同一个 Runtime Host 的瘦客户端。

它给自己的衡量标准只有两条,README 原话是:how many it completes and at what cost(完成了多少任务,花了多少成本)。围绕这两条,它有四个明确主张:

日志就是运行时,这句话得拆开看

事件溯源(event sourcing)这个词听着很重,但 Maka 的用法很具体:日志不是用来给人看的调试输出,而是唯一的事实来源。其余一切都是从它算出来的。

RuntimeEvent 日志(append-only,唯一副本)
  │
  ├─▶ UI 渲染          ← 投影
  ├─▶ 下一轮 prompt     ← 投影(旧工具输出可离开 prompt)
  └─▶ 崩溃恢复          ← 投影(从日志重建,不靠状态快照)

这件事的工程含义是:崩溃恢复不需要状态快照,它把那一段日志重放一遍就够了;上下文管理也不需要「另存一份摘要」,因为旧工具输出只是从下一轮 prompt 里被摘掉,本体还在日志里躺着。它的后端骨架在 README 里就画成这样:

Desktop / TUI / CLI → Runtime Host → SessionManager → AgentRun
                                             ↓
                         Model + Tool Runtime → Runtime Event Log
                                             ↓
                              Context / Session / UI projections

仓库里有什么

README 的仓库布局一节把边界写得很清楚,直接抄下来:

目录职责
apps/desktop/Electron main / preload / React renderer
packages/core/Sessions、Events、Permissions、Connections 的纯契约
packages/storage/SQLite 运行状态、配置与 payload 存储
packages/mcp/与供应商无关的 MCP 客户端集成
packages/runtime/AgentRun、模型适配器、工具、上下文与恢复
packages/runtime-host/单属主的 Runtime Host 生命周期、协议与客户端引导
packages/eval/实验 cell、attempt、结果,以及 executor/subject 适配器
packages/cli/TUI 与非交互式 CLI
native/Rust:Runtime Host 的 direct-peer addon 与 gitoxide helper

文档这边也值得单独提一句:docs/README.md 是一份文档权威表,明确写了文档与实现冲突时,以代码和契约测试为最终权威;已完成的方案会被移进 docs/archive/,并且注明归档文档不算当前实现指引。这种把「哪份文档说了算」写明白的做法,在开源项目里并不常见。

上手:先别用那个最顺手的命令

照 README 走是这样装的——注意后面那个 @nightly,它不是一个可有可无的修饰:

npm install --global maka-agent@nightly
maka --version
maka --help

只想试一次、不想全局安装,可以用 npx:

npx --yes --package maka-agent@nightly maka

然后进到你想让它干活的项目目录里:

cd path/to/project
maka

maka run "Summarize this project and identify its highest-risk area"

想直接跑桌面端,就从源码构建(需要 Node.js 22.19 以上,CI 用的是 Node 24):

git clone https://github.com/apache/maka.git
cd maka
npm ci
npm run dev

我的判断:适合谁,不适合谁

适合:想研究「一个 Agent harness 该怎么长得像个正经系统」的工程师。ARCHITECTURE.md 加 docs/ 里那批契约文档,是这一轮趋势榜项目里材料最厚的一份,而且有中文版。另外两类人也合适:已经被上下文和恢复问题折磨过、想看另一条路的资深用户;以及需要在自有机器上留全量审计记录的团队——append-only 日志天然就是审计材料。

不适合:想要装完就用的人,原因见下面的坑;把 API key 托付给系统钥匙串的人——它的凭据是本地明文文件 credential-vault.json,CLI README 原文写的是 It is not an OS keychain,POSIX 上只靠「仅属主可读」的权限位保护;以及打算把它直接拼进商业产品的团队,先看 Disclaim 那条。

装之前必须知道的 9 个坑

平台这件事要说清楚

目前没有 Apache 正式 release,能装的是每天从 main 构建的 Desktop Nightly,它明确写着 not an ASF release、not intended for production use,Windows 与 Linux 的桌面构建还是未签名的 preview。官方 release gate 里真正验过的组合是这样:

平台架构Node.jsTUI/CLI/Host真实 Eval
Linuxx6422.19已验仅 preflight
Linuxx6424已验已验
Linuxarm6424已验仅 preflight
macOSarm6424已验仅 preflight
Windowsx6424已验仅 preflight

换句话说,M 系列 Mac 配 Node 24 正好落在被验过的行里;而真实 Eval 执行器目前只在 Linux x64 + Node 24 上跑通,其余平台只做到预检。

仓库:apache/maka · https://github.com/apache/maka

官网与下载:https://maka.apache.org/en/ · 中文 README:https://github.com/apache/maka/blob/main/README.zh-CN.md

Star 5,208 · Fork 484 · Open issues 481 · Watchers 25 · 语言 TypeScript

许可:Apache License 2.0(LICENSE 在标准正文后追加 THIRD-PARTY COMPONENTS 归属章节)

孵化状态:Apache Incubator 项目,尚未发布正式 release(releases/latest 返回 404);nightly 开发 tag 最新为 v0.2.0-dev.27.20260910

数据来源:GitHub Trending 月榜 + GitHub API · 抓取时间:2026-09-11 18:50

你更想要哪一种 Agent 运行时:把状态藏进对话里、还是摊开成一份可重放的日志?评论区说说你的答案,也欢迎把踩过的坑补进来。

下一期大概率写 Lakr233/vphone-cli(11,549 star,本月 +3,892,Swift)或 modular/modular(29,677 star,本月 +3,080,Mojo 与 MAX)。

#编程Agent#事件溯源#Apache孵化