一个PostgreSQL数据库里塞了400张表,字段名全是FLG_Z_99这种加密风。新接手的工程师想问问AI这表怎么关联,结果Claude当场编了条根本不存在的JOIN语句——这种幻觉,比老板画的饼还离谱。
这就是Legacy Lens诞生的现场:不是AI不够聪明,是它根本看不见你的数据库长什么样。
开发者@hanneswidrig在GitHub上甩出这个开源工具时,附了句挺扎心的观察:「我们活在"AI套壳"泛滥的时代,却忘了真正的瓶颈从来不是模型智商,而是喂给它的上下文够不够准。」他花了三天,造了双让AI能"看"进数据库的眼睛。
MCP协议:给AI装个数据库内窥镜
Legacy Lens的核心是Model Context Protocol(模型上下文协议),简称MCP。你可以把它理解为AI和外部世界的USB-C接口——统一、双向、即插即用。
以前让AI理解数据库结构,得手动导出DDL、复制粘贴表结构、再口头解释外键关系。整个过程像给盲人描述一幅画:你说"左边有个红色的圆",AI可能理解成太阳,也可能是交通灯。Legacy Lens的做法更直接——它不做翻译,直接把数据库的语义地图塞进AI的上下文窗口。
具体能看什么?表结构、字段类型、外键关联、索引信息,还有每表最多10行的采样数据。注意是"看",不是"改"——工具明确锁死了只读权限,防止AI一时兴起帮你DROP TABLE。
目前支持PostgreSQL、MySQL/MariaDB、SQLite、Microsoft SQL Server四大家族。Oracle?作者原话是"Only if I'm feeling particularly brave"(除非我哪天特别想不开)。
双包架构:把内窥镜拆成镜片和手柄
作者在产品经理时期养成的毛病——或者说习惯——是极度厌恶单体巨石。Legacy Lens被拆成两个NPM包:@legacy-lens/core负责数据库方言适配和元数据抓取,@legacy-lens/mcp-server负责和Cursor/Claude Desktop等宿主对话。
这种拆分不是炫技。如果你只想拿核心逻辑写个CLI工具,不用拖整个MCP服务器的依赖;反过来,如果想换个协议(比如LSP),核心层能复用。用作者的话说:「我关心的是模块化,不是一次性脚本。」
安装也极简。Node.js 20+环境下,一行命令:
npx @legacy-lens/mcp-server
之后去Cursor的设置里配一下stdio模式的路径,AI就能在聊天窗口直接问你:"这400张表里,哪些存了用户敏感信息?"——然后真的得到答案,而不是一段自信满满的胡编。
采样策略:在信息量和Token之间走钢丝
Legacy Lens有个反直觉的设计:默认只返回5行采样数据,硬上限10行。不是不能多,是作者刻意卡死的。
他的算盘很清楚:AI的上下文窗口是有限的奢侈品。塞100行数据进去,可能挤掉关键的表结构描述;反过来,5行足够判断字段的业务含义,又不至于让Token账单爆炸。这种克制,和市面上那些"一键导出全表让AI分析"的粗暴方案形成对比。
另一个细节是安全白名单。工具会明确拒绝任何写操作请求,包括看似无害的SELECT INTO。作者的原话是:「这是为了理解旧系统,不是为了让模型随便读你的生产库。」
换句话说,Legacy Lens的定位是考古铲,不是挖掘机。
项目开源一周,GitHub上已经有人在问:能支持ClickHouse吗?Snowflake呢?作者开了个讨论区收集反馈,Oracle的投票目前领先——虽然他自己还在犹豫要不要接这个烫手山芋。
如果你现在正对着一个字段命名像密码、文档像传说的 legacy 数据库,会想试试这套AI透视眼,还是宁愿继续手写DDL注释?
热门跟贴