agent-gear: LLM Tools 开发的瑞士军刀
agent-gear: LLM Tools 开发的瑞士军刀
#LLM# #Agent# #AI# #Rust# #Python#
背景
最近在开发minicc , 在为minicc提供tools时, 发现一件怪事. 整个项目的有效代码 2千行, tools的实现竟然占了快一半.
为什么? 有一半的代码是在处理 filesystem
今天在查看deepagents的源码, 实现的也相当丑陋. 大量的使用了 os / shutil / glob这些标准库. 总给人一种裸奔的感觉.
直觉上觉得: 现在需要一个成熟的包库, 用来给Agnet System提供基本能力. 而不是让每个Agent系统都要手动写一遍tools, 这简直是一种折磨.
Tools
LLM 或者说 Agent, 至少要有哪些工具?
- TODO
- AskUserQuestions
- SubAgent
- Net: WebSearch / WebFetch
- FileSystem: Read / Write / Edit / Search(Grep) / Glob / List
- …
先列到这里, 这里我觉得应该能够看出来, 对于一个Agent, 或者说对于一个典型的Coding Agent系统来说.
FileSystem是最基本而且最重要的操作, 那我们就从这里开始
架构
如果追求简单, 我们可以直接放在一个python中, 糊上500行代码, 然后直接push pypi就好了
但是既然做这件事情, 不如做的出色一点, 比如说把性能做的好一些.
怎么把性能做的好呢? 别烧脑了, 问问gemini吧
最后我的解决思路是:
- Pyo3 + Maturin: Rust 写核心代码, python封装
- 内存文件树 + FS Notify: 把list/glob操作变成纯内存查找, 不经过OS
- ripgrep + globset: 直接使用性能出色稳定的三方库
- Batch: 提供batch操作, 少次多量的获取文件.
思路非常棒, 唯一的问题是: 我不会写Rust, 上一次写还是3年前, WTF?!
但是不要紧, 我们有伟大的Vibe Coding!
实现
- 在Plan模式下, 把完整的需求发给Claude Code, 生成一份计划书.
- Review Plan: 不错
- 开始写: 撒泡尿, 回来review代码 (你又看不懂你Review你🐴呢)
- 到Context限制了, 保存下进度, 保留TODO, 已实现的内容. 记录到
llmdoc - /clear, 继续写
- Claude code写完了, 写单元测试, 开始改bug
- bug改完, 写benchmark, 开始提升性能
- 性能不错, 找codex + gemini 开始review实现, 然后狂改
- 好, 提交到Pypi, 配置CICD
- CI改了他妈的10轮, 终于跑通了, 我草这个世界.
- 完成
最后性能平均只是提升了 2 -3 倍左右, 感觉有点低于预期, 不是说用Rust之后就秒天秒地吗? 我觉得至少应该有个数量级的提升吧. ☺️
python标准库的实现性能相当可以, 而且考虑到LLM的特性, Filesystem的交互并不是性能瓶颈, 但是无所谓, 写都已经写完了
一共用了多久呢? 写代码只用了30分钟, 调试/Debug/Perf 用来1个小时, 修复傻逼的github CI 用了一个半小时!
总结
- 最底层的包库写完了, 接下来给minicc来个瘦身计划, 把tools的实现用agent-gear改一遍 , minicc的核心功能实现已经OK了, 接下里把边角料的 slash command / file import / TUI 美化 这些功能实现, 一个教学用的claude code基本就差不多了
- 已经到了这样一个时代了: 你有点子, 那就意味着你实现了它, 想象力和视野可能是最重要的事情
- 优化最核心的性能, 而不是优化边缘的性能, 除了带来虚假的满足感之外, 没有解决任何问题.