- 角色
- 个人项目
- 状态
- 私有预发布
- 快照
- 私有 origin/main
- 关键结果
- 仓库 pack 和类型化记忆,让 Agent 新开会话也能拿到对上代码的上下文。
- 技术栈
- RustMCPAgent 工具
是什么
RepoLens 会把整个仓库扫描成一份结构化、不可变的「pack」(一份给 Agent 看的仓库快照),通过 Model Context Protocol(模型上下文协议)——一套开放协议,让 AI Agent 通过统一接口发现并调用外部工具,而不必为每个工具单独写胶水代码。 服务端暴露出来,同时维护一张会随时间衰减的类型化记忆图。它不替 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 或文档页。支撑这些说法的,是真正能跑的界面:
scan、init、brief --task、
remember --file、eval list / start、
validate-plan --file、state、
compare-summaries、findings
现在都能从 CLI 和 MCP 调到,连同 26 个 MCP 工具和那张类型化记忆图。
最强的信号,是项目自带的「诚实状态」准则:一张按能力面逐条标明「已交付还是脚手架」的清单,刻意保持校准,好让日后的夸大一眼露馅。再加上一份项目自用的评估契约(五个用例,其中一个防回归锁定),一起守住上下文质量这条线。
下一步
要到 v0.1 这个里程碑,RepoLens 才真正站得住、读得清:更丰富的记忆类型——Hypothesis、
Constraint、FailedAttempt、
FrictionFinding——以及一个明确的
Confidence 枚举(TestValidated /
HumanVerified / ScanExtracted /
AgentAsserted)。后续工作在绑定公开里程碑之前,不写成已承诺计划。
它不是什么
- 不替你写代码——那是 Agent 的事。
- 不替代测试或人工复核。
- 不是通用 RAG 存储——记忆有类型、能对上代码、会衰减。
- 目前不做多仓库或组织级记忆。
- 不保证召回出来的记忆一定对。
- 私有预发布——目前不是公开源码项目。