三种主题
Día 读起来像一张地形测绘图;Noche 让地面保持黑暗、只点亮窗户;Neón 打开辉光,干活时毫无用处,放在演示现场非常好看。
openclaw/openclaw 的 Neón 主题:578 座建筑,评级 C。菱形标记是可能的密钥;该仓库在 15.000 个文件处被截断。
Code Maps 只有一个想法:把你本来就在收集的那些代码库指标,全部放到一个你能用手指出来的地方。下面是这样做能得到什么。
一个仓库,画一次。每个含代码的文件夹变成一座建筑;路径中第一个有意义的片段变成一个街区,带自己的底板、颜色和名字。没有任何东西是随机摆放的:同一个仓库永远生成同一座城市,所以你会记住它的天际线。
把指针移到每个元素上,在城市里看它的效果。这和应用绘制的是同一座城市。
Día 读起来像一张地形测绘图;Noche 让地面保持黑暗、只点亮窗户;Neón 打开辉光,干活时毫无用处,放在演示现场非常好看。
openclaw/openclaw 的 Neón 主题:578 座建筑,评级 C。菱形标记是可能的密钥;该仓库在 15.000 个文件处被截断。
外墙颜色一次只回答一个问题。切换透镜时每座建筑都停在原地,这正是重点:你是在比较关于同一个地方的四个答案。
把指针移到每个元素上,在城市里看它的效果。这和应用绘制的是同一座城市。
每座建筑把自己的数值辐射到地面上,每块街区底板按站在上面的建筑的均值和峰值着色。风险不再是清单里的一个数字,而是一片你能看着它扩散的污渍。
按下 2D,镜头直接升到正上方。天际线消失,热力读起来就是一张干净的仓库热力图,是做幻灯片或截图最快的视角。
同一个仓库,从正上方看。天际线消失之后,热力层就变成了一张“风险集中在哪里”的热力图。
建筑上的每一样东西,要么来自真正跑过的工具,要么来自一条写明了的启发式规则。没有任何模型在猜严重度。
Trivy 扫描清单文件和 lockfile(npm、yarn、pnpm、pip、poetry、go.mod、Cargo、pom、gradle),以及 Dockerfile、compose、Kubernetes 和 Terraform。Java 项目没有 lockfile 时,还会扫描 build/libs 里的 jar。
gitleaks 使用默认规则,排除 build、logs、node_modules、target、dist、.gradle 和 .git。只保留规则名和文件:行号,匹配到的值永远不会离开扫描器。
TODO FIXME HACK XXX 记为低;超过 500 行的文件记为中;50 行以上的文件中每行分支数超过 0,25 记为中。工时:中等 1 小时,高 4 小时。
提交次数 × 复杂度进入全仓库前 5%,记为高。这是最值得立刻处理的一项指标:改动频率和理解难度正好在这里相遇。
每条问题都带文件和行号,还有模块的行数、文件数、复杂度和提交次数,它引用的模块和引用它的模块以可点击的标签呈现,以及在 GitHub、Finder 或编辑器里按精确行号打开的按钮。
最后改动于 2026/9/18。 依赖 1 个被 1 个使用
12 严重 48 高
单击打开 · 双击进入packages/react-reconciler/src:47,019 行,复杂度 7,473,是热点;每条问题都链到具体的文件和行号。
Code Maps 不与你的扫描器竞争:它给它们一张地图。除了自己运行的扫描,它还会读取你已在使用的工具的报告,把每个发现放到对应的建筑上。
自动在本地运行,无需任何配置。
现已可用。把工具导出的 .sarif 放进 .codemap/ 再重新分析。带 security-severity 的算安全问题,不带的算技术债。
snyk code test --sarif-file-output=.codemap/snyk.sarif
semgrep scan --sarif -o .codemap/semgrep.sarif
直接对接,无需文件中转。目前尚不存在。
已用一份 SARIF 2.1.0 示例报告做过端到端测试。密钥的值从不读取:来自密钥扫描器的发现只保留规则名和文件:行号。
现已可用
Trivy 和 gitleaks 的默认规则,加上技术债启发式。其他任何工具的规则,则通过其 SARIF 报告进入。
即将推出
你的 .gitleaks.toml、Semgrep 规则包和抑制清单,从一处应用到所有仓库。
即将推出
基于地图已有度量的自定义规则:“复杂度超过 40 的建筑必须有测试”、“billing/ 不得从 web/ 导入”。
* 需要 Code Maps Cloud 付费方案,该方案目前尚不存在。 价格 →
一个模块一个节点,一条仓库内解析成功的 import 一条边,外部包不计入。节点按街区聚成区域。悬停时用箭头显示每条关系的方向;节点大小可以跟随复杂度、行数或风险;连线可以全显示、只显示跨街区的,或者全部隐藏。点街区名称拉近,双击进入。
langchain-ai/langchain 的星座图:鼠标停在 runnables 上,橙色是它引用的 13 个模块,蓝色是引用它的 99 个。
一个面板,为整个仓库或你当前正在看的那一块打分。按严重度分列的数量、估算的债务工时、带各自问题数的街区列表,以及热点列表。点某一行严重度可以只保留那些建筑;所有问题都能导出成 CSV。
从 100 开始。按 4 × 严重 + 1.5 × 高 + 0.3 × 中 最多扣 50 分,按 0.2 × 密钥数 最多扣 20 分,按 3 × 每千行债务工时 最多扣 30 分。设上限是为了避免某一类灾难性问题把其他所有信息都盖住。它是用来一眼对比仓库的启发式,不是合规标准。
点击某一行,只保留这些建筑。
react/react 的巡检报告:47 分,评级 D,主因是 215 个未修复的严重漏洞。
对话通过 Anthropic API 运行,带五个工具:get_findings、get_module、read_file、search_code 和 highlight_buildings。AI 会先读真实代码和真实问题,再下结论。
我该先修哪个?
先啃依赖这堵墙。tomcat-embed-core 10.1.52 带着两个认证绕过 CVE,升到 10.1.58 就都消掉了。
然后是 Thymeleaf:任何用户可控模板都能触发的 SSTI,声明在 pom.xml:64。
接着是 src/main/resources/application.yml:14 里的两个密钥——动别的之前,先把它们轮换掉。
(root) · pom.xmlweb/templatesmain/resources
AI 讲解 react/react 的分层,一路点名它真正读过的包和行数。
?repo=…&view=…&lens=…&scope=…&sel=…&cam=…&theme=…:刷新或把链接发给别人,看到的视角一模一样。.repos/,一个仓库一个目录,分析结果和问题清单就放在旁边。看过的仓库秒开;点重新分析会从头重建。