我用C语言打造了一个支持热重载Lua插件的轻量级编程助手

Reddit r/AI_Agents 工具

摘要

作者介绍了Capstan,一个具有C核心和热重载Lua插件的轻量级编程代理,旨在提升开发工作流的效率和可扩展性。

注意:英语不是我的母语,所以我使用LLM来帮助翻译这篇文章。大家好!👋 在过去的几个月里,我一直在构建Capstan——一个具有C核心和嵌入式Lua运行时的轻量级编程代理。Capstan以一个小型单一二进制文件的形式分发,适用于macOS和Linux。它支持自定义命令、模型工具、生命周期钩子、可重用技能、MCP和ACP集成,以及多种模型提供程序。我每天在自己的项目中使用它。事实上,Capstan的大部分内容都是用Capstan本身开发的:它作为不同模型的代理框架,在自己的仓库中完成任务,并帮助改进其代码库。为什么我构建另一个代理?大多数我了解的CLI代理都是用TypeScript或Python编写的。这些语言有明显的优势,尤其是当开发速度重要时,但我想探索另一种方法:如果一个代理的核心用C编写,可扩展性委托给Lua,它能变得多紧凑和资源高效?当然,这类工具大部分时间都在等待对模型的网络请求。我的目标不是证明C是“最快的”。我想最小化我能控制的部分:本地开销、分发大小和所需依赖的数量。第二个原因是个人的:我一直想将Lua用作真正的嵌入式语言,而不仅仅是配置Neovim。Capstan成为我了解更多关于代理循环、插件系统以及C和Lua之间互操作性的方式。我亲自设计和编写了核心、代理循环、TUI和插件架构。AI帮助我研究不熟悉的领域,验证决策,并加速开发。结果是什么?一个小二进制文件。主要依赖项是静态链接的;网络请求使用系统的libcurl。Lua插件。它们可以添加斜杠命令、模型工具和生命周期钩子,以及启动外部进程并与环境交互。热重载。新和修改的插件在不重启Capstan的情况下被加载。交互式和非交互式模式。除了TUI,Capstan可以从脚本和CI/CD流水线运行。技能、MCP和ACP支持。权限系统。潜在的危险操作可能需要手动确认,对于无人值守的环境有显式配置可用。一个最小的ncurses TUI。我还使用相同的模型和任务,将Capstan与OpenCode进行了36次运行的比较。Capstan在36次上游测试运行中通过了35次,而OpenCode通过了36次。在这个工作负载中,Capstan使用的本地CPU时间大约少了10倍,主进程内存少了58倍。完整的方法论和限制在基准报告中记录(链接在评论中)。我不认为这是Capstan更好的普遍证明。它是跟踪质量和资源回归的一个可复现参考点。如何尝试它?我在业余时间开发了Capstan好几个月,在向世界展示之前犹豫了很久。它现在对我的日常工作足够有用了,我想知道这种方法是否也可能对其他开发人员有用。安装和配置说明在仓库中(链接在下面的评论中)我特别希望得到以下问题的反馈:入门有多容易?极简主义和低资源使用对于编程代理来说是一个真正的卖点,还是我在优化一些并不重要的东西?Lua插件系统容易理解吗?你使用的编程代理缺少哪些功能?
查看原文

相似文章

构建一个Slack原生编码代理

Reddit r/AI_Agents

作者使用Claude Code构建了一个Slack原生编码代理,并将其开源,以帮助他人在无需重新造轮子的情况下进行集成、安全防护和系统提示。

使用本地编码代理

Hacker News Top

Sebastian Raschka 撰写的教程,讲解如何使用开源工具和开源权重的大语言模型搭建完全本地的编码代理,涵盖动机、搭建过程以及相较于专有服务的优势。