字节 Trae Agent 的 rust 版本讨论
第一次发贴,前几天字节开源了Trae Agent,原本的是 python 版本的,我 fork 了一个分支,迁移到了rust,还是个半成品,但是框架和逻辑基本完成了,现在就是要完善细节了,为什么没完成就发出来呢,因为社区关于重构有不同的观点,看看这个 issue,有人支持 rust ,有人支持 go ,我想继续完善,看大家有没有好的建议。
我不认为这类工具需要多强的性能,相反,我觉得随着 AI 模型的变化这类工具应该有快速迭代(甚至更换架构)的能力。
这类工具的核心功能其实就两个:
- 调用工具
- 与 LLM 通信
这两个功能随便用什么语言都可以快速实现,难的是在这套方案之上抽象出来的工程化能力:如何给 agent 编写提示词?如何管理上下文?如何管理多 agent 之间的交互?这些是需要花大精力去优化调试的。
在一个复杂任务中调用工具快那么几秒在 LLM 推理的耗时面前不值一提,更不用说像 python 、node.js 这类语言仍然可以调用 rust/c 写的库来提升性能。
这个 trae agent 感觉在蹭 trae 的热度,其实这个 agent 实现的能力非常基础,不知道为啥能有这么高的 star
支持! 多一个选择, 总比没有好
难道功能才是最重要的么,语言只是工具而已。
go
看了你的回复,感觉你的想要用 Rust 的理由站不住脚,本身就是一个命令行执行脚本,你用 Rust 的内存安全来说事
Issue 里提到用 Go 重写,大概率是 ByteDance 的 KPI 了,毕竟 ByteDance 是全面拥抱 Go 的
当然 OP 为爱发电的精神是值得鼓励的,期待你的实现
没必要 rust 吧,agent 这个东西就是快速迭代的,经常不同模型升个级你就要跟住模型的变化。你用 rust 显得有点重了,甚至我觉得 go 都没必要,你 fork 出来 Python 继续写多好。而且很多 ai 相关的人只会写 python ,他们不可能为了贡献你的项目专门学其他语言。
codex 也用 rust 重构,这有个讨论 github.com/openai/codex/discussions/1174 你看一下
不仅仅是内存安全,codex 也用 rust 重构,这有几个讨论 github.com/openai/codex/discussions/1174 www.reddit.com/r/rust/comments/1lkdu2m/openai_is_ditching_typescript_to_rebuild_codex/
Agent 功能其实比较简单,使用什么语言都很快就能完成,使用 rust 重构我就花了两天时间,我想过可以编译成 WebAssembly ,打开浏览器就能用
codex 把大量时间花在了这种换语言的重构任务而不是对 Agent 的优化上,这也是目前还无法追上 claude code 的原因之一
#10 反驳你说的“Agent 功能其实比较简单”,实现一个看起来可用的 Agent 是很简单的,正如我在#1 中说的,难的是对任务的分解和调优,你可以尝试用 rust 实现达到claude code
类似的效果(仅仅是最终结果的效果,不考虑其他非必要的功能)对 Agent 的调试得花多大精力
我是非常赞同你的,之前看过 claude code 反编译的源码,确实很复杂,我肯定也达不到 claude code 的效果,一是 prompt 设计、二是任务处理逻辑、三是 claude 模型,除非是他开源了。所以目的不是做一个好用的 Agent ,而是迁移到 rust ,能力上限在于 python 版的上限,理性角度看必要性不高,除非社区提一些新的需求。
简单就说明鲁棒性强,也更容易学习思路
claude code 反编译的源码哪里看?学习一下
你就是想写 rust ,然后大声说:快看我快看我,我在用 rust
我想写 rust 是显而易见的,像 Python 、C++、前端我也写了不少( github 也可以看到),我只是在合适与喜欢之间选择一个平衡
我自己备份了一下,怕没了 git.lsh.pub/agentx/anon-kode
完全赞同一楼的想法。
目前决定这类 cli 工具是否好用的关键因素是模型+工具+上下文管理,也就是 agent 的开发范式,性能完全不是阻塞点。
而且这类工具虽然是以 cli 的形式在工作,但又有很多需要 UI 交互的地方,比如 diff 的展示;在这方面基于 node 生态有很大优势,这也可能是 claude code/codex/gemini-cli 都是选择 node 的原因之一?
另外 codex 是这里面做的最差的,bug 满天飞,提示词和工具也非常简陋,感觉他们的精力不在这个上,反而云端的 codex 要好一些。
agent 用 rust 纯粹折磨自己折磨用户
Gemini-CLI 使用的是 react+ink, 能用前端那一套
个人认为这是一个挺不错的从C语言到Linux系统开发的教程,这本是两个网上的文档。 其中 一本是《How To Think Like A Computer Scientist…
曾几何时,EMQX 是 MQTT 世界里的一股清流。 你只需一句 docker run emqx/emqx,就能召唤出一个开源高性能 MQTT Broker ,撑起数十万 Io…
接手一个数据拷贝的任务,在老代码里看到大量 def xxx_fn(*args, **kwargs) 真的血压升高。这两兄弟里面“什么都有,又什么都没有“,反正全靠猜。没有注释,…