角色
个人项目
状态
私有预发布
快照
私有 origin/main
关键结果
仓库 pack 和类型化记忆,让 Agent 新开会话也能拿到对上代码的上下文。
技术栈
RustMCPAgent 工具

是什么

RepoLens 会把整个仓库扫描成一份结构化、不可变的「pack」(一份给 Agent 看的仓库快照),通过 Model Context Protocol(模型上下文协议)——一套开放协议,让 AI Agent 通过统一接口发现并调用外部工具,而不必为每个工具单独写胶水代码。 服务端暴露出来,同时维护一张会随时间衰减的类型化记忆图。它不替 Agent 写代码,只是让每个新会话不必冷启动。目前是私有预发布;对应的快照写在下面的「证据」里。

仓库 → packs 与记忆 → MCP × 26 → Agent 仓库 packs 记忆 MCP × 26 Agent
图 3.1 — packs 与会衰减的记忆,经 26 个 MCP 工具暴露给 Agent

要解决的问题

AI 编程 Agent 写代码不差,但会话一结束,项目上下文就丢了。每个新会话都得冷启动:重新 grep 同样的文件、重新推导同样的约定、重新犯几周前就发现并回滚过的老错——没有纠正信号,Agent 就把似是而非的猜测当真。

最朴素的办法——把上下文窗口开大、把更多文件塞进提示词——只会让信号淹没在噪声里(「lost in the middle」,中段迷失)。瓶颈不在模型够不够聪明,而在它有没有一份持久、类型化、有结构的感知

约束与关键决策

给它一份类型化、有结构的感知,而不是更大的提示词。问题既然出在冷启动时的重新发现,而塞更多文件只会稀释信号, RepoLens 就把仓库扫描成不可变的类型化 pack——文件、符号、依赖图、仓库画像(profile)——再通过 26 个 MCP 工具(代码搜索、图遍历、摘要、约定提取、记忆、知识库(wiki))暴露出来,而不是去扩大上下文窗口。代价:pack 要先构建、还要持续更新;而且它不可变,要等下次扫描才刷新(pack 会过时)。

让记忆有类型、会衰减、能把记下来的事实拿去和当前代码状态核对,让不再成立的旧知识能被标记或丢弃,而不是被盲目采信。,而不是一摊扁平存储。扁平的 Retrieval-Augmented Generation(检索增强生成)——在查询时从存储里取出相关片段,喂给模型。最朴素的做法不记录新鲜度和可信度,已经回滚掉的旧事实可能又冒出来。 存储没有「过期」和「可信度」的概念,Agent 于是一错再错,犯的还是早就回滚过的老错。这里的记忆是一张类型化的图(五类节点),按指数衰减,并对照当前 pack 核对每条还站不站得住——而不是一摊扁平的 embedding 存储。代价:要维护的环节多了;而且召回出来的记忆虽然经过衰减、也对照过代码,却终究不是事实来源——它本来就可能旧、可能错。

能力还没补齐的部分,先按现状如实讲清。 Agent 工具普遍爱夸大,可工具一旦说过了头,反而会侵蚀它想建立的信任。所以已经交付到哪、边界在哪,都摊开写明: validate-plan 只给 warning(跑干净并不等于计划成立),remember 是工作区里的 markdown 交接笔记——不是那张类型化记忆图,eval(评估脚手架)不启动 Agent、也不打分,评分卡由人来填,state 是只读检查。代价:这一页读起来不如说满的版本有唬人感——因为缺口是讲出来的,而不是糊过去的。

拿一条防回归锁定的基准说话,而不是默认「上下文越多越好」。Agent 的上下文到底有没有变好,不度量就没有答案,所以 RepoLens 会输出校准过的证据(findings, Agent 可读),并维护一份评估(eval)契约:五个用例,其中一个防回归锁定。代价:这份契约要长期维护,而且 评估还是脚手架——由人打分,不是自动证明。

证据

origin/main 的私有工作快照——没有可查看的公开源码、crate 或文档页。支撑这些说法的,是真正能跑的界面: scaninitbrief --taskremember --fileeval list / startvalidate-plan --filestatecompare-summariesfindings 现在都能从 CLI 和 MCP 调到,连同 26 个 MCP 工具和那张类型化记忆图。

最强的信号,是项目自带的「诚实状态」准则:一张按能力面逐条标明「已交付还是脚手架」的清单,刻意保持校准,好让日后的夸大一眼露馅。再加上一份项目自用的评估契约(五个用例,其中一个防回归锁定),一起守住上下文质量这条线。

下一步

要到 v0.1 这个里程碑,RepoLens 才真正站得住、读得清:更丰富的记忆类型——HypothesisConstraintFailedAttemptFrictionFinding——以及一个明确的 Confidence 枚举(TestValidated / HumanVerified / ScanExtracted / AgentAsserted)。后续工作在绑定公开里程碑之前,不写成已承诺计划。

它不是什么

  • 不替你写代码——那是 Agent 的事。
  • 不替代测试或人工复核。
  • 不是通用 RAG 存储——记忆有类型、能对上代码、会衰减。
  • 目前不做多仓库或组织级记忆。
  • 不保证召回出来的记忆一定对。
  • 私有预发布——目前不是公开源码项目。