一个B2B SaaS定价计算器,做了几个小时,作者问了自己一句话:我会主动用这个产品吗?答案是不会。于是他把界面删了。
![]()
删除命令写得很干脆:git rm -rf ui/ components/ deal_calculator.py,提交信息是"pivot: delete pricing sliders, embrace the void"。这个项目后来叫Banana,名字是随手起的。
转向的原因来自另一个观察:AI编程代理在反复犯同样的错——忘记架构决策、打破依赖边界、为了理解一个代码库消耗掉大量上下文。Banana要解决的就是这件事,它是一个面向编程代理的图驱动记忆与上下文引擎,帮Claude Code、Cursor这类工具检索代码关系、记住架构决策、通过MCP检查显式规则。
作者第一次看到FalkorDB时的判断很直接:这大概是个套着Redis外壳的廉价仿制品,或者一个光启动就要吃掉4GB内存的Neo4j。他预期这是个键值对上的笨重包装,一旦要求多跳AST依赖遍历就会散架。
翻完文档后他改了看法。FalkorDB底层由GraphBLAS驱动,把节点和关系表示成用优化过的C实现的稀疏线性代数矩阵。用Cypher查一次3跳依赖遍历,执行的是稀疏矩阵乘法,而不是传统图引擎那种在内存里递归追指针。
他们在FalkorDB Cloud上测出的数字:
- 3跳多边遍历:17.4 ms
- 架构决策召回:1.37 ms
- AST边界检查:0.28 ms
作者的说法是,它返回查询结果的速度比Python序列化响应JSON还快。他由此认为这不是营销话术,而是在为低延迟的代理循环解决一个真实的系统工程问题。
测试进行到一半,Gemini API配额用完了。但在此之前,他们已经把代码库索引进了FalkorDB:39个文件、42个类、84个函数、275条导入与调用关系。
这让局面完全不同。Banana可以直接查图来取依赖、看代码结构、召回已存的决策,这些操作不消耗LLM的token。图成了他们的记忆,也成了模型不可用时的退路。
上下文膨胀的解法分两步。第一步是索引结构而不只是文本:不把原始字符串丢进向量库碰运气,而是把仓库索引成AST图,:File、:Class、:Function由IMPORTS和CALLS连接,Cypher查询把这些关系当作稀疏矩阵乘法来遍历。
第二步借用了Edmonds-Karp最大流算法。作者打了个比方:这个算法计算的是在撞上瓶颈之前,你能往管道网络里推多少液体。在Banana里,"液体"是代码token,"管道"是依赖关系。
源头是你正在编辑的那个文件或函数;管网是与之相连的每个类、辅助函数和导入模块,每根管道的容量由PageRank和架构相关性加权;瓶颈是严格的LLM上下文预算,比如950或2000个token。
Edmonds-Karp用广度优先搜索在依赖图里找增广路径,把最大体积的关键架构上下文泵过管道,直到撞上预算瓶颈。结果是拿到完整、不中断的接口和直接依赖,既不撑爆token上限,也不会把函数从中间切开。目标只有一句:给代理它需要的东西,而不是你拥有的全部。
代理想推演假设性改动时——测试一次假想重构、模拟一个会破坏依赖的变更、问一句"如果我改这个接口会怎样"——你不会希望它直接写进持久化的代码库图。因为FalkorDB建立在内存中的GraphBLAS线性代数之上,建图和拆图是毫秒级,不是分钟级。
Banana据此做了临时草稿图:代理一进入推演模拟模式,就在5毫秒以内拉起一个隔离的微图(banana_scratch_);代理在完全隔离的环境里模拟AST差异、测试场景策略、检查循环依赖;模拟结束,一条命令丢掉草稿图。没有磁盘残留,没有持久内存被污染,也不存在代理的幻觉思考混进事实来源的风险。
护栏也不必每次都调LLM。假设一个代理想把底层数据库驱动直接导入UI组件,如果这个依赖违反了明确的架构规则,Banana可以检查相关图关系并标记违规,不需要请LLM来审一遍。他们还为硬编码凭证、不安全代码原语这类模式做了确定性检查。测得的AST安全与边界检查延迟是0.28 ms。作者也承认,不是所有安全问题都能靠简单规则抓住,但显式约束不该每次都消耗一次LLM调用。
架构上,Banana把编程代理连到一个MCP服务器,对外暴露代码索引、上下文组装、护栏和持久记忆这几类工具。背后FalkorDB管理三层图:banana_knowledge存代码结构、依赖和架构决策;banana_demand存架构规则、不变量和约束;banana_scratch_*是用于隔离推理和策略模拟的临时微图。服务部署在AWS Lambda上,后端是FalkorDB Cloud。
作者总结了四条:代码是图,不只是文本,导入、调用和类关系在检索上下文时都算数;不是每个问题都需要LLM,确定性检查执行显式规则更快也更可预测;记忆只有在被检索时才有价值,存下决策有用,在正确的时机把它取回来才让它变得值钱;临时图解锁了安全的代理推演,给代理一个即时、可丢弃的图沙箱,能避免真实代码库被污染。
技术栈是FalkorDB、AWS Lambda、Python,以及数量惊人的水。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.