每日快报!把代码库变成一张图,AI终于知道该找谁改代码了
每个团队都有这么一个人:你问他"这个函数能改吗",他能立刻告诉你——小心,请求分发器在调它,去年重构过,改成显式传上下文了,去找 David,是他做的。这段回答不在任何一个文件里,它散落在调用图、PR 历史、当初推动改动的 issue,以及参与其中的人之间。
AI 编程助手走不了这条路。它只看得见眼前的文件,也许再加一两条向量检索的结果,会话一结束,全部忘光。RepoBrain 的做法是:指向任意公开 GitHub 仓库,在 FalkorDB 里建一张知识图谱,让 agent 通过遍历这张图来回答问题、审查 PR,并且每条答案都附上它走过的路径。
【资料图】
四层结构,一次摄入
一次 ingest 把仓库拆成四层互相连接的数据。代码层是 File 定义 Function、Function 调用 Function;历史层是 Person 撰写或评审 PR、PR 修改 Function;意图层是 PR 修复 Issue;记忆层则是 Episode 使用任意节点、Note 指向 Task。
代码层来自 Python 自带的 ast 模块,函数、方法、调用和导入按名称解析。历史层来自 GitHub 的 GraphQL API:最近 200 个已合并 PR、它们的评审人、关闭的 issue,以及 diff 里的每个文件。PR 与函数的关联靠 diff 的 hunk 头和改动过的 def 行建立。意图层是多数工具漏掉的部分——一个 PR 修复的那个 issue,通常写清了代码为什么长成现在这样。
每个仓库在同一个 FalkorDB 实例里拥有独立的图,租户隔离不产生额外成本。
为什么是图
"full_dispatch_request 为什么写成这样,我该问谁"——这个问题可以写成一条 Cypher 查询:从函数出发,找到撰写过修改它的 PR 的人,再可选地连到该 PR 修复的 issue,按合并时间倒序取最近 6 条。
在 Flask 上,这条查询返回 PR #5818(由 @davidism 提交,把上下文贯穿分发方法),它修复了 Issue #5815(在内部传递上下文,而不是使用 contextvars)。两者合起来解释了设计意图:让一个 AppContext 贯穿每个分发方法,而不是读取上下文代理——这个想法最早由 @pgjones 提出,目的是加速异步视图。在关系型存储里这是四次 join,在向量存储里这是一次猜测,在图中它是一个跳转模式,在 FalkorDB Cloud 上约 0.1 秒跑完。
每个 agent 工具都是这样一条查询。LLM(跑在 Groq 上的 gpt-oss-120b)只负责选择调用哪个工具、把结果写成文字。事实来自图,所以答案自带凭据。
会过期的记忆
记忆分两种。Episode 记录每一次问答,用 USED 边连到 agent 碰过的代码、PR 和人,同一会话里追问时历史直接从图里取回。Fact 是可长期保留的结论,比如"@davidism 拥有 AppContext 设计,PR #5818",用 ABOUT 边连到它描述的对象,由 agent 通过 remember 工具保存;如果它忘了,一个整合步骤会从答案中提炼出来,完成从情节记忆到语义记忆的转换。
难点在于过期。一条关于函数的结论,只在该函数被改动之前成立。所以 ingest 时会给每个函数的 AST 存一个指纹——对 ast.dump(node) 做哈希,重新格式化不算改动。保存结论时,ABOUT 边记下当时看到的指纹。重新同步后,代码在结论脚下移动过,这条结论就是过期的。agent 被要求把过期结论当作待复核的线索,而不是可以照搬的真相;界面上它们会得到一个琥珀色的"Stale: code changed"标记。
三个 agent,一张共享的图
PR 审查由三个 agent 顺序执行,它们之间不传 Python 对象,而是通过图交接。RepoBrain 先把 PR 的 diff hunk 映射到函数的行范围,确定到底哪些函数变了,创建一个 Task 指向 Function。impact agent 走调用图,写一条 Note 指向该 Task。historian 从图里读到这条 Note,挖出改动代码背后的 PR 和 issue,标出这个 PR 可能推翻的东西。reviewer 读完两份 Note,用 experts 工具挑出人类评审人,写出 PR 评论,由 GitHub Action 发布。
在 Flask 的开放 PR #5918 上,historian 找到了 PR #5917——它刚刚修复了 provide_automatic_options 的覆盖逻辑(对应 Issue #5916),还找到了添加该配置项的 PR #5496。这正是审查这个 PR 的人需要的历史。
所有工具同时通过 MCP 提供,Claude Desktop、Cursor 或任何 MCP 客户端都能查询同一张图和同一份记忆。
几个工程细节
shortestPath 只支持有向,且必须放在 WITH 或 RETURN 里。要回答"这个人和那个函数怎么连上的",路径是之字形的,所以 connect 用无向的 [*k] 匹配一跳一跳放宽,命中即停;因为提前停止,找到的第一条就是最短路径之一。全文索引适合 agent 搜索,queryNodes("PR", "retries") 能通过词干匹配到 retry,比 CONTAINS 更适合自然语言提问。GRAPH.RO_QUERY 是一层免费的安全网,agent 的原始 cypher 工具走它,即使模型被提示注入也无法写入图。UNWIND $rows 批量写入让 ingest 保持快速:Flask 的 831 个函数、983 次调用和 200 个 PR 约 30 秒载入 FalkorDB Cloud。
还有一个客户端坑:redis-py 8 下,FalkorDB.from_url 打开的 RESP3 连接池会在传输大回复时中途断开,改用构造函数建客户端(RESP2)解决。
项目由 Sanidhya Dhangar 和 Aditya Sikarwar 构建,Claude Code 担任编码助手。
您可能也感兴趣:
为您推荐
快资讯丨安杰思:融资净偿还163.84万元,融资余额1.16亿元
半场:费哈1-1吉达国民,乌戈-莫拉,邦达连科破门 即时
丽江股份2026年三季度净利润9396.69万元 同比下降3.55%
排行
精彩推送
- 【播资讯】季报:科大讯飞亏损扩大 扣非净利润-7.6亿
- 第十五届中国创新创业大赛医疗器械专业赛总决赛海口收官 今...
- 每日快报!把代码库变成一张图,AI终于知道该找谁改代码了
- 把赛事热度转化为消费活力-重点聚焦
- 南昌品科机械设备有限公司成立 注册资本50万人民币
- 【焦点热闻】比拼法治素养 展现青春风采
- 汇源集团生产的果汁不能叫“汇源”了,这是搞哪出?
- 快资讯丨安杰思:融资净偿还163.84万元,融资余额1.16亿元
- 每日看点!记者:孔塞桑言论惹怒吉达联合高层,俱乐部考虑起诉
- 法布雷加斯:欧冠主场对曼联值得期待,我们必须全取三分-每日...
- 半场:费哈1-1吉达国民,乌戈-莫拉,邦达连科破门 即时
- 内蒙古全面打造“北方绿碳”碳汇品牌
- 2026“宿超”队服全部亮相! 新要闻
- 关注:规范先行赔付主要实施程序等 证监会公开征求意见
- 丽江股份2026年三季度净利润9396.69万元 同比下降3.55%
- 智信精密:董事长提议回购1000万元-1500万元公司股份
- 伯纳乌攻势拉满!居莱尔世界波破门,皇马大胜,为国家德比预...
- 巴萨11连胜最大功臣!2.2亿欧先生“不可阻挡”,9场19球横扫西甲
- 沪电股份Q3净利环增50%-65% 高端交换机放量驱动盈利跃升_要闻速递
- 2026年“社保服务进万家”活动走进槐荫区道德街街道
- 瑞华泰因信披违规及减值计提不审慎被责令改正,近1年仅中国银...
- 生意社石脑油10月19日均差继续正向扩大为87.50元/吨
- 法兴银行:美元兑加元跌破1.4200 关注1.4075支撑 即时看
- 国家外汇局拟推出一批增量措施支持企业参与国际市场
- 今日看点:图解财报:艾迪精密前三季归母净利润4.35亿元,同比...
- 艾迪精密(603638.SH)前三季净利润4.35亿元,同比增长37.71%
- 东方嘉盛涨停,上榜营业部合计净买入370.98万元 头条
- 要闻速递:爱婴室(603214.SH):首次回购76万股公司股份
- 美股异动|纽约梅隆银行盘前续涨超4%,Q3业绩表现稳健|焦点精选
- 图解财报:*ST联翔前三季归母净利润-2089.34万元,上年同期219.42万元
- 读者传媒(603999)龙虎榜数据(10-19)
- 孙颖莎发文:不会举办、不参与、不授权、也不鼓励任何生日应...
- 平台牵手街道办,抖音生活服务在陆家嘴找到增长新入口
- 直线拉升!300096,20cm涨停
- 把房子降到150万,好卖多了
- 每日速看!晚上8点整!CCTV5直播国足主场收官,37岁吴曦或回归...
- 苹果计划推出新款HomeView:搭载9英寸屏幕,可实现360度旋转-...
- 佳华科技中标兴能发电千万级运营订单|焦点快播
- 实时焦点:天津普林午后上演“地天板” 成交超9亿元
- 皇马4-1塞维利亚!姆巴佩双响迪奥曼德引导大胜,中场回暖很重...
- 每日热议!PriceSeek提醒:扬子巴斯夫EVA出厂价上调200元/吨
- 超跌修复+风格再平衡预期,中小盘增强策略提供中期布局工具|精选
- 人形机器人概念走强!宇树科技盘中一度涨近12% 实时焦点
- 天下玉,揭阳工——揭阳展团携高端翡翠雕作亮相2026中国国际...
- 一个连话都说不明白的人,首场直播卖了 1300 万_焦点关注
- 中国手镯之乡——平洲展团携源头翡翠臻品亮相2026中国国际珠宝展
- 聚焦:10月19日通信线缆及配套板块涨幅达3%
- 短讯!5000 万打水漂!曼联新援比 B 费更灾难!卡里克彻底看走眼
- 陈涛:广州豹的精力没完全放在比赛,这场胜利不足以太过喜悦
- 今日精选:耿直!武磊:不想成都蓉城在海港主场庆祝夺冠 要把悬...
- 每日短讯:央行今日开展800亿元7天期逆回购操作
- 谷歌(GOOGL.US)量子计算大进展!关键环节错误率降低约40倍,...
- 各项赛事6场不胜!英超:曼联1-1利兹联7轮7分 姆伯莫破门
- 中超夺冠形势:成都蓉城下轮不输就夺冠!大连英博想逆袭只有...
- 热推荐:金球奖揭晓在即, 19岁的亚马尔还在进化
- 祭蝈蝈文|海飞 当前热讯
- 博盈特焊(301468.SZ):股票10月19日停牌
- 热文:5家新设外资公募中,已有3家发行量化相关产品
- 两市融资余额减少144.05亿元 每日简讯
- 极其罕见!开发商要自掏腰包,在南翔给嘉闵高架加装声屏障!...
- 焦点报道:杜兰特回怼太阳老板:说我被逮捕酒驾了?我36岁还在巅峰
- 每日看点!瓦伦0-0毕包,阿吉雷:我天生乐观,希望下一轮能赢
- 海口秀英采琼饮品店(个体工商户)成立 注册资本3万人民币 ...
- 今日视点:封顶才预售竣工即放贷
- 当前聚焦:英超豪门征服客场:取得两连胜,大马丁重伤,被担...
- 米奇:哈珀才华横溢非常成熟 并开始建立好的习惯
- 每日焦点!V社确认正为Steam Frame头显开发全新头带:支持热...
- 杜锋:我很喜欢曾凡博 但他一直受伤 表现好的几场比赛都是打广东
- 焦点关注:医生发现:人患结直肠癌前2年,身体一般会出现5个...
- 惜败!开拓者118-128勇士,球员评分:3人亮眼,4人及格,1人低迷
- 乐东九所杨哥废品收购点(个体工商户)成立 注册资本1万人民...
- 海南湛顺贸易有限公司成立 注册资本300万人民币
- 女婿最掉价的五种行为,中一条,岳父岳母心里就凉一分! 快播报
- 报道:强烈建议:从2027年起,企退人员按工龄每月上涨100-800...
- 6个为老服务站揭牌,曹杨“一站一品”织密家门口养老服务阵地
- 今日看点:突然!恐慌指数,狂飙21.45%!
- 每日快播:我照顾抑郁丈夫3年,无意尝了他一颗药,发现药竟是...
- 运达股份:采用滚动开发的策略,继续推进新能源电站业务开发...
- 彩经前瞻:麦克阿瑟FCvs珀斯光荣,近8次交锋打进32球|每日视讯
- 日本流感病例数增加 部分地区疫苗紧缺
- 赣州彦晟化工新材料有限公司成立 注册资本20万人民币
- 每日信息:杭电股份:融资净偿还511.98万元,融资余额6.82亿元
- 焦点快报!万润股份10月16日回应固态电池话题:硫化锂中试线已...
- 欧债收益率多数上涨,德国10年期国债收益率涨1.3个基点
- 贝尼托:前场球员不履责仅靠82和楚阿梅尼去对抗强队是不够的...
- 黄仁勋谈AI市场震荡 “这一切都会过去”|今日讯
- 法兰克福1-0科隆,埃布努塔利布制胜球,比尔特造险_每日视讯
- 为津门虎喝彩,赵英杰:东方有我沧海巨浪,北望有我群山奔放|...
- 高能环境Q3利润环比承压但现金流暴增 经营质量拐点显现
- 西人主帅:西蒙尼刚来时马竞还被叫倒霉蛋,现在稳定每年欧冠
- 快消息!真金白银,又一波大手笔回购来了
- 中国工程机械工业协会:9月销售各类平地机856台同比增长35% ...
- 每日观点:德明利:前三季度预盈86.5亿元—89.5亿元 同比扭亏
- 每日速讯:科创板活跃股榜单:68股换手率超5%
- “老字号”酿出新品牌,盐城益林酱油新项目进入试生产 热资讯
- 劳塔罗谈2026世界杯决赛:全队已精疲力竭,梅西几乎跑不动 ...
- 最新资讯:两亿灵活就业,填不满社保的缺口
- [快讯]煜邦电力公布第三季度业绩预告
- 微头条丨浪潮数字企业(00596)10月16日斥资约17.73万港元回购10万股
- 恒鼎实业(01393.HK)第三季度生产原煤88.9万吨 同比减少32%-热门





营业执照公示信息