📌 项目地址:apache/maka | ⭐ 2,797 颗星 | 🔧 TypeScript | 📜 未标注
📌 项目地址:apache/maka | ⭐ 2,797 | TypeScript | ASF 孵化中
一个不太一样的问题
大部分编码 Agent 产品在回答“怎么让 Agent 更能干”。apache/maka 关心另一个问题:Agent 跑完之后,“它到底干了什么”这个问题的答案存在哪。
Maka 是一个 local-first 的 Agent 工作区,TypeScript 写的,正在 ASF 孵化,目前 2797 颗 star。桌面端只有 macOS Apple Silicon 构建,属于早期公开版本。
记录是本体,UI 是视图
Maka 的核心设计一句话能说清:模型消息、工具调用、工具结果、每个 Turn 怎么结束的,全部写成持久的本地执行记录。UI 和下一次模型调用,都只是这份记录的视图,不是唯一副本。
这个思路带来两个直接后果。
崩溃可恢复。 有 durable execution record,程序崩了记录还在,中断的 Turn 支持续跑(optional resume)。跑长任务的 Agent 崩在第四十分钟,不用从头再来。
压缩上下文不删证据。 Maka 可以把旧的工具输出从下一个 prompt 里剔除,省 token,但本地保存的完整记录不动。这一点和很多工具的做法不同——别家压缩上下文是真裁剪,发给模型的内容变短,本地记录也跟着丢。等你需要审计或复盘某次工具调用的原始输出时,两种做法的差距就出来了。
沙箱边界,越界要批准
工具跑在沙箱里,想越界必须经过批准。运行可以中止,失败会被分类记录。
内置工具六个:Read、Write、Edit、Bash、Glob、Grep。Computer Use 和 catalog skills 是可选项,默认关闭。我觉得这个默认值选得对——危险能力不默认开,是这类工具应有的克制。
代价是你要花时间配置审批策略。有合规需求的团队会觉得划算;只想快速跑通的个人用户可能嫌麻烦。
三个入口,一个 Runtime Host
| 入口 | 定位 |
|---|---|
| Desktop | 日常交互、文件和 Artifact 工作流、模型与权限配置。Electron + React,支持流式会话、工具时间线、分支、搜索、恢复 |
| TUI / CLI | 当前项目目录下交互使用,或跑单个非交互 Turn |
| Eval | 可复现的 benchmark 实验,可跨 Maka 和外部对象 |
关键在最后一列之外:三个入口都走同一个 Runtime Host。桌面端和 CLI 共享 workspace 和模型连接。Eval 只拥有实验和评分,Agent 执行仍交给 Runtime Host。
这解决了评测圈的一个老毛病:跑分时一个 Agent,实际用时另一个,分数和体验对不上。Maka 让评测和真实使用跑在同一个执行环境里,测出来的东西才对得上你日常用的东西。
模型接入是“你带你的模型”:云 API、本地模型或兼容网关都行。会话、设置、运行记录默认留在本机。
怎么用
README 给出的命令:
maka—— 当前项目目录交互式使用maka run—— 执行一个非交互 Turnmaka eval run --out <目录>—— 跑评测实验并输出结果
完整安装步骤 README 没写,要去仓库文档找。细节可参考仓库里的 ARCHITECTURE.md。
现在上手还是等等
三个事实摆在前面:
- 孵化期项目,ASF 尚未完全背书,README 附了标准孵化声明
- API 不稳定,数据格式、CLI 命令、实验性能力都可能变,现在采用要做好跟进迁移的准备
- 平台单一,桌面端只有 macOS Apple Silicon,Windows 和 Linux 用户暂时只能用 CLI
我的判断:Maka 的差异化不在 Agent 能干多少活,而在执行记录的工程化——持久化、可恢复、跨入口复用。如果你需要回答“Agent 到底干了什么”(内部审计、评测归档、故障排查),现在就值得盯着。如果只想要一个开箱即用的编码助手,等它出孵化期、覆盖更多平台再看,不迟。