tontinton/maki
An efficient AI coding agent extendable by neovim-like Lua plugins
什么是 Maki?
Maki 是一款基于终端的 AI 编码助手,它与大语言模型提供商(Claude、OpenAI、Gemini、Ollama 等)通信,帮助您编写、阅读和重构代码。它的主要卖点是上下文令牌效率——它力求在保持流畅、功能丰富的用户体验的同时,尽可能降低发送给模型的文本量。
项目背后的核心理念
| 理念 | Maki 的实现方式 |
|---|---|
| 节省令牌 | • index 使用 tree-sitter 解析文件,只发送高级骨架(函数位置),而不是整个文件。 • code_execution 运行沙盒化的解释器(monty),可以在不将中间结果放入 LLM 上下文的情况下转换数据。 • task 允许代理为子任务选择较弱或较强的模型,这样只在真正需要时才为繁重的工作付费。 |
| 快速、轻量级的 UI | 使用 ratatui(一个 Rust TUI 库)构建。无 JavaScript,60 FPS 渲染,SIMD 驱动的启动画面。 |
| 可扩展 | 插件使用 Lua 编写(类似于 Neovim)。仓库附带内置插件,并为自定义插件提供公共 API。 |
| 透明与安全 | 精确显示模型读取的内容,使用 tree-sitter 解析 bash 命令以限制权限,在网页抓取时防止 SSRF,并提供可逆的聊天记录。 |
| 跨提供商 | 支持大量商业和自托管 LLM 后端(Anthropic、OpenAI、Gemini、Ollama、llama.cpp、Mistral 等),并为额外提供商提供插件系统。 |
您会真正使用的主要功能
| 功能 | 对您的作用 |
|---|---|
上下文高效的 index 工具 |
快速获取文件的大纲(例如,函数 X 位于 150-165 行),并让 Maki 只读取它需要的部分。 |
沙盒化的 code_execution 工具 |
在助手内部运行小段代码;结果保留在 LLM 提示之外,使令牌数量保持较低。 |
子代理 task 工具 |
自动将工作委派给“弱”、“中”或“强”模型,在廉价操作上节省资金。 |
| 丰富的 TUI | 60 FPS、模糊搜索(Ctrl-F)、/btw 在不中断当前聊天的情况下运行命令、/cd 更改目录、图像附件、26 种主题、会话恢复,以及“回退”快捷键(Esc-Esc)。 |
| 权限感知命令处理 | Maki 解析诸如 git diff && rm -rf / 之类的命令,并且只授予它能理解的权限(例如,git *)。使用 --yolo 绕过。 |
| 长期记忆工具 | 使用 /memory 存储事实,以便助手之后无需重新读取文件即可回忆。 |
| OpenTelemetry 导出 | 可选的遥测功能,遵循与 Claude Code 相同的格式,用于可观测性。 |
| 仅 CLI 模式 | --print --output-format stream-json 允许您在没有 UI 的情况下运行 Maki,将 JSON 输出通过管道传给其他工具。 |
谁将受益?
| 用户类型 | Maki 为何有帮助 |
|---|---|
| 低配机器上的开发者 | TUI 轻量、启动迅速,避免繁重的 JavaScript 运行时。 |
| 关注令牌成本的团队 | 通过索引文件和使用 task 工具,可以显著减少发送给模型的令牌数量(README 引用了作者工作流中每轮节省 165 个令牌)。 |
| Neovim/Lua 爱好者 | 插件基于 Lua,项目附带一组内置插件和社区展示。 |
| 注重安全的用户 | 明确的权限解析、SSRF 保护,以及清晰的“模型所见”理念。 |
| 需要多个 LLM 提供商的人 | 一个二进制文件可以与数十个商业和自托管后端以及自定义提供商插件通信。 |
如何开始(快速入门)
- 安装 – 最简单的方式是通过 Homebrew 公式(
brew install maki)或一行命令curl … | sh。二进制文件也可通过 Nix 或cargo install获取。二进制文件将位于~/.local/bin(Windows 上为%LOCALAPPDATA%\maki)。 - 配置 API 密钥 – 为您要使用的提供商设置环境变量,例如
export OPENAI_API_KEY=…。 - 运行 –
maki启动 TUI。使用/tasks查看子代理,使用/memory管理存储的事实,使用!执行 bash 命令。 - 扩展 – 将 Lua 插件放入
~/.config/maki/plugins,或使用文档化的 Lua API 编写自己的插件。
限制 / 未解决的问题
- README 提到了“未来版本”中的 bash 输出过滤,因此当前版本可能仍会将部分 bash 输出发送到提示中。
- 虽然 UI 很快,但它仍仅限终端;需要图形 IDE 的用户必须将 Maki 与编辑器并行运行。
- 节省令牌的说法基于作者的个人工作流;实际节省会因项目大小和语言支持而异。
结语
Maki 是一个真实的、积极维护的 Rust + Lua 项目,为终端提供了令牌高效、可扩展的 AI 编码助手。它专注于保持 LLM 上下文小巧,让开发者能精细控制模型所见,并支持广泛的模型提供商。如果您在 LLM 驱动的代码辅助上花费较多,或者在配置一般的硬件上工作,Maki 值得一试。
链接
- 官方文档 – https://maki.sh/docs
- Discord 社区 – https://discord.gg/8VKuA4naC3
- 示例配置仓库 – https://github.com/tontinton/makiconf
- 发布页面 – https://github.com/tontinton/maki/releases/latest
相关
- 项目
- 项目
- 项目
- 项目
- 项目