Maki Lua API深度参考:注册工具、斜杠命令与自定义UI

发布时间:2026/10/15 11:40:34

Maki Lua API深度参考:注册工具、斜杠命令与自定义UI 【免费下载链接】makiAn efficient AI coding agent extendable by neovim-like Lua plugins项目地址https://gitcode.com/gh_mirrors/maki3/maki点击查看免费下载Maki 是一个高效的 AI 编码智能体AI coding agent其最大的特色在于可以用类 Neovim 的 Lua 插件进行扩展。本文带你深入 Maki 的 Lua API手把手讲清三件最实用的事用maki.api.register_tool注册自定义工具、用maki.api.register_command创建斜杠命令以及用maki.ui搭建浮动窗口等自定义 UI 界面并附上权限声明与官方参考文档的查阅方法。先了解 Maki 的插件体系Maki 的插件就是普通的 Lua 文件一切能力都挂在同一个全局表maki下。官方 API 参考文档由源码直接生成模块结构清晰模块用途maki.api插件注册工具、斜杠命令、提示词注入maki.ui构建交互式 UI缓冲区、浮动窗口、消息提示maki.fs/maki.keymap/maki.treesitter文件系统、按键映射、语法解析签名对齐 Neovimmaki.agent/maki.task子智能体与任务原语maki.log/maki.json/maki.yaml日志、JSON Schema 校验、YAML 编解码两个约定值得记住错误返回而非抛异常可失败的运行时操作返回(value, err)二元组Lua 异常只留给编程错误JIT 编译插件以 Luau JIT 编译为原生代码运行调试时可加--no-jit启动获得完整堆栈。注册工具register_tool 完整指南工具tool是 Maki 扩展模型能力的核心方式。模型在对话中看见工具后会自主决定何时调用它调用时执行你提供的handler。实现位于 tool.rs。最小可用示例一个数单词的小工具足以展示全部必需字段maki.api.register_tool({ name word_count, description Count words in a file., kind read, schema { type object, properties { path { type string, description File path } }, required { path }, }, handler function(input) local f io.open(input.path, r) if not f then return { llm_output file not found, is_error true } end local n 0 for _ in f:read(*a):gmatch(%S) do n n 1 end f:close() return tostring(n) .. words end, })关键参数字段一览字段必需说明name是工具名如word_countdescription是描述文本供模型理解用途schema是JSON Schema描述输入参数结构handler是被调用时执行接收input参数audiences否哪些模型可见main、sub、all默认全体可见kind否分组标签如filesystem、readtimeout否执行超时秒数0或false表示禁用header/start否执行前回调用于 UI 实时展示restore否会话恢复时重新渲染历史结果examples否示例输入数组用于文档与提示handler 的两种返回值handler可以直接返回字符串最简单也可以返回一张结构化表同时照顾模型要看什么和用户要看什么llm_output返回给模型的文本结果is_error置为true时按错误处理body/headerUI 中展示的富文本主体与一行标题diff_path/diff_before/diff_after在界面上渲染差异块image{ media_type, data }形式的 base64 图片annotation工具调用旁的短标签。内置的 grep 插件就是一个优秀的参考实现它同时生成了给模型的纯文本与给界面的高亮视图见 init.lua。权限字段permission 与 permission_scopes涉及写文件、网络、进程执行的敏感工具需要声明能力边界permission工具暴露的能力取值为fs_read、fs_write、net、run、env之一permission_scopes指定 schema 中的路径字段名或一个返回路径范围的函数——声明后工具才会进入权限确认流程mutable_path声明fs_write时必需指定工具写入的主路径字段Maki 会在调度层自动做并发串行化、防陈旧读取与计划模式拦截。另外可以用 maki.api.register_permission_rule 为插件自己管理的目录预先放行避免用户反复确认。创建斜杠命令register_command斜杠命令让用户在输入框中键入/name即可触发插件动作适合那些不需要模型参与的交互式工作流浏览笔记、切换设置等实现在 register_command。maki.api.register_command({ name /hello, description Say hello, handler function(opts) maki.ui.flash(Hello! You typed: .. (opts.args or )) end, })nargs 参数数量控制nargs采用 Neovim 风格的写法控制命令接收的参数个数上限取值含义0默认无参数1恰好一个?零或一个*任意多个至少一个空参数需自行处理超出上限时命令静默停止匹配输入会作为普通消息发给模型——这个设计让命令与聊天互不干扰。handler收到opts.args原始参数字符串和opts.fargs按词拆分后的表。用 run_command 做命令别名maki.api.run_command(/sessions)可以以程序方式执行任意斜杠命令内置、MCP prompt、其他插件注册的都可以是实现命令别名的最省力的方式例如把你的/resume指向内置的会话选择器。提示词注入register_prompt_hint想让插件影响模型的说话方式maki.api.register_prompt_hint可以向聚合型提示槽位如tool_usage、general追加文本多个插件的贡献会被自动拼接maki.api.register_prompt_hint({ slot tool_usage, content - Prefer **grep** over reading entire files., })而maki.api.set_prompt面向单例槽位如identity、tone同一时间只有一个插件拥有它。content也可以是一个函数在每次运行时动态生成变更会以上下文更新的形式传达给模型。自定义 UImaki.ui 实战Maki 内置了相当完整的终端 UI 工具箱实现位于 ui/mod.rs下面这张截图就是 Lua 插件驱动的 Maki 终端界面实际效果第一步创建缓冲区 buf缓冲区Buf是 UI 内容的基本容器持有带样式的文本行local buf maki.ui.buf() buf:line(Pick an option:)工具调用期间创建的第一个缓冲区会成为live buffer实时流式显示在工具输出面板中若在工具执行期间开浮动窗口请用maki.ui.buf({ scratch true })避免抢占。第二步用 open_win 打开浮动窗口maki.ui.open_win(buf, opts)打开浮动或停靠窗口返回可接收按键事件的Win句柄local win maki.ui.open_win(buf, { title Menu, width 50%, height 10, cursor_line true, footer { { q, quit }, { Enter, select } }, })常用选项包括anchor锚点角落、border边框样式、title标题、footer底栏按键提示、splitabove/below/left/right停靠模式、focus是否获取键盘焦点。未聚焦的窗口可用keys声明要抢占的按键。高亮、Markdown 与轻量提示maki.ui.highlight(code, rust)对源码做语法高亮返回可直接喂给buf:line的样式行maki.ui.markdown(text, width)把 Markdown 渲染成带样式的行标题、粗体、行内代码都支持maki.ui.flash(Copied!)在状态栏显示一闪而过的提示maki.ui.theme_color(accent)/maki.ui.theme_style(dim)读取当前主题配色让插件 UI 自动适配任何主题。权限声明plugin.toml 一次看懂敏感 API 按插件文件门控权限通过插件旁的plugin.toml授予[permissions] fs_read true fs_write true net true run true env true规则要点没有plugin.toml所有权限拒绝加载时记录警告文件存在权限默认全部授予把某项设为false即收回空文件等于全开net_hosts可将net收窄为主机白名单注册 provider 的插件必须设置。参考官方 grep 插件的声明仅需 fs_read true 一行。延伸阅读官方 Lua API 参考由maki-docgen从源码生成随版本更新site/docs/content/lua-api/_index.md插件编写指南目录结构、开发循环、完整示例site/docs/content/plugins/_index.mdAPI 源码实现maki-lua/src/api/其中 tool.rs 是工具/命令注册ui/mod.rs 是 UI 子系统可参考的内置插件plugins/grep/、plugins/memory/斜杠命令 浮动 UI 的典型组合掌握register_tool、register_command和maki.ui这三组 API你就已经具备开发绝大多数 Maki 插件的能力——从一句话的命令提示到带语法高亮的交互式选择器都是同一个maki全局表下的自然延伸。赞分享【免费下载链接】makiAn efficient AI coding agent extendable by neovim-like Lua plugins项目地址https://gitcode.com/gh_mirrors/maki3/maki点击查看免费下载相关推荐claude-howto 斜杠命令完全指南四大来源、内置命令参考与自定义技能实战claude howto 斜杠命令完全指南四大来源、内置命令参考与自定义技能实战 本指南以 claude howto 仓库的 ja/01 slash comm教程文档claude-howto 斜杠命令完全指南内置命令、自定义 Skills 与插件/MCP 命令实战手册claude howto 斜杠命令完全指南内置命令、自定义 Skills 与插件/MCP 命令实战手册 导读 斜杠命令Slash Commands是 Cl教程文档forgecode 斜杠命令入门用 YAML Frontmatter 定义可复用 Prompt 的自定义命令forgecode 斜杠命令入门用 YAML Frontmatter 定义可复用 Prompt 的自定义命令 导读 本文围绕 forgecode面向 Cla人工智能AI Agent代码智能体AI 应用CLI开发工具创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/15 11:40:34

电网抗台风加固中移动电源车动态调度策略与Matlab实现

1. 项目背景与核心价值 去年参与某沿海城市电网抗台风加固项目时,我深刻体会到移动电源车(MPS)调度对配电网韧性的关键作用。当主变电站因灾害失压后,正是靠3台500kW移动电源车72小时不间断供电,才保住了医院和应急指挥…

2026/10/15 11:40:34

Python爬虫HTTPS证书验证问题与安全实践

1. 网络爬虫中的证书验证问题解析在Python爬虫开发中,requests库是最常用的HTTP客户端工具之一。当我们访问HTTPS站点时,经常会遇到SSL证书验证错误,典型的报错信息是"SSL: CERTIFICATE_VERIFY_FAILED"。这种情况通常发生在以下几种…

2026/10/15 12:40:53

深入解析AQS:Java并发编程的核心框架

1. 理解AQS的本质第一次接触AQS时,我盯着这个缩写看了半天——AbstractQueuedSynchronizer,抽象队列同步器。名字听起来就很唬人,但当我真正理解它的设计哲学后,才发现这简直是Java并发编程中的瑞士军刀。AQS本质上是一个构建锁和…

2026/10/15 12:40:53

B2B销售邮件采集工具选型指南:从抓取到CRM的实操避坑

1. 销售勘探场景下的邮件信息采集工具选型思路做B2B销售的人都有一个共识:客户线索的质量直接决定成单率。而在所有线索获取渠道中,邮件信息采集一直是最稳定、最可规模化的一种方式。2020年前后,这个领域经历了一轮明显的工具迭代——早期那…

2026/10/15 12:40:53

Flowing多智能体入门:从猜词游戏理解消息流控与Schema契约

1. 这不是玩具代码:一个真正能跑通、能调试、能讲清原理的多智能体入门切口“Flowing框架”这个词最近在技术圈里冒得挺快,但翻遍中文社区,要么是零散的API文档截图,要么是直接甩出一整套企业级调度系统demo——对刚摸到多智能体门…

2026/10/15 12:40:53

推荐系统冷启动实战:用户、物品与系统冷启动策略详解

1. 冷启动不是"没数据"三个字能概括的推荐系统做到一定阶段,最让人头疼的不是模型效果上不去,而是新用户进来之后首页推什么。老用户有行为序列、有画像标签、有协同过滤的相似邻居,模型随便跑跑都能给出像样的结果。但新用户呢&am…

2026/10/15 12:40:53

ECharts花式折线图实战:渐变、双轴、动态效果与性能优化

折线图大概是数据可视化里最朴素的一张图了。但做项目的人基本都遇到过这种需求——明明是同一份数据,客户看完默认样式的折线图只说“还行”,看到加了渐变、标记点和动画的“花式折线图”却说“这个好看,就要这个”。我接过的可视化需求里&a…

2026/10/14 11:31:03

Python调用Gemini Structured Outputs实现工单路由门禁

客服工单最怕的不是模型“答错一句话”,而是它给出一段看起来合理的说明,程序却从中猜错优先级。通俗做法是:要求模型只交 JSON(JavaScript Object Notation,轻量数据格式),再让代码验证它。Gem…

2026/10/14 17:41:07

Spring Boot超市进销存系统毕设实战:从需求拆解到答辩通关

最近带的一个学生项目组里,有A同学跑来问我:选什么毕设题目最稳妥,既能让评审老师觉得工作量够,又不会在答辩时被问到语无伦次。我第一反应就是推荐基于Spring Boot的超市仓库管理系统——也就是超市进销存系统。这个题目乍一看平…

2026/10/14 2:32:55

Flutter StatefulWidget 生命周期核心解析

很多刚开始接触 Flutter 的朋友,在看完一堆“Hello World”和基础组件之后,大概率都会撞上同一堵墙:StatefulWidget 里那堆 initState、build、dispose 方法,到底什么时候被调用?为什么顺序是那样?在里面到…

2026/10/15 0:02:22

防关联浏览器哪个好?三款产品实测差异解析

新手做多店铺,最纠结的就是防关联浏览器选哪个。飞跨、网易、站斧这三款被问得最多,先给结论:要一体化省心、长期便宜,选站斧;要网易招牌和稳,选网易;预算紧做东南亚 Lazada,选飞跨。…

2026/10/15 0:02:22

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成

影刀RPA深度实战:大模型Fine-tuning定制RPA专用Prompt与指令生成 一、技术背景 大模型(LLM)在通用场景下表现强大,但当我们将 GPT-4 或 Qwen 直接用于生成影刀RPA操作指令和 XPath 定位时,准确率通常只有 40%-60%。原因…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑