2026年6月26日 2 分钟阅读

Topos 实战教程:用代码质量度量让 AI Agent 写出可维护的代码

tinyash 0 条评论

AI 编码 Agent(Claude Code、Cursor、Codex 等)写代码的速度越来越快,但一个尴尬的问题也随之浮现:代码能跑,但能维护吗?

单元测试通过只证明代码”工作”,不证明它”健康”。当 AI 生成的代码进入生产环境,技术债务的累积速度往往超出预期。Krv Labs 开源的 Topos(BSD-3-Clause,Python)正是为解决这个问题而生——它是一个面向 AI Agent 的结构化代码质量度量工具,给 Agent 一个可以优化和迭代的具体目标。

快速安装

Topos 的安装非常简单,一条命令即可:

curl -fsSL https://docs.krv.ai/topos/install.sh | sh
topos --version          # 验证安装成功
topos --help             # 查看完整命令列表

安装完成后,topos 就在你的 PATH 中了。

60 秒快速上手

Topos 的使用非常直观,核心就是 evaluate 命令:

topos evaluate path/to/file.py

topos evaluate src/ -r

topos evaluate src/ -r --json

topos inspect path/to/file.py

topos compare before.py after.py

运行 evaluate 后,Topos 会为每个文件颁发一个”代码质量奖牌”——稍后会详细介绍。

三大质量支柱

Topos 从三个独立维度衡量代码质量,每个维度称为一个”支柱”(Pillar):

支柱含义测量方法
SIMPLE避免不必要的复杂度AST 熵 + CFG 圈复杂度
COMPOSABLE模块间低耦合模块依赖图(Martin Instability)
SECURE无危险 API 可达和污点路径代码属性图(CPG)分析

这三个支柱相互独立、不可比较。一个文件可以独立达成任意子集。

奖牌系统

Topos 根据三个支柱的通过情况颁发四种奖牌:

🥇 GOLD   — 三项全部通过(SIMPLE + COMPOSABLE + SECURE)
🥈 SILVER — 通过两项
🥉 BRONZE — 通过一项
❌ SLOP   — 全部未通过(或解析失败)

你可以通过 --preferences 参数设置优先级,告诉 AI Agent 在有限的 Token 和时间内优先优化哪些维度:

topos evaluate src/ -r --preferences simple,composable,secure

MCP Server 集成:让 AI Agent 自动优化代码

Topos 最有价值的功能是内置的 MCP Server。任何支持 MCP 协议的 AI 编码 Agent(Claude Code、Cursor、Gemini CLI、Windsurf)都可以接入 Topos,在编码过程中实时获取质量反馈并自动迭代。

第一步:构建依赖图(可选但推荐)

npm install -g gitnexus
cd /path/to/your/repo
topos depgraph generate    # 生成 .gitnexus/ 目录

没有依赖图时,COMPOSABLE 支柱不可达,但这不影响 SIMPLE 和 SECURE。

第二步:注册 MCP Server

Claude Code:

claude mcp add topos topos mcp

Cursor:.cursor/mcp.json 中添加:

{ "mcpServers": { "topos": { "command": "topos mcp" } } }

其他工具(Gemini CLI、Windsurf 等): 同样的 JSON 配置。

第三步:让 Agent 使用 Topos

启动后,你可以直接告诉 Agent:

“Use topos to find the worst-scoring file in src/, propose a refactor, and verify with topos_assess_improvement.”

Agent 会自动调用 Topos 的 MCP 工具,评估代码质量,提出重构方案,然后验证改进效果。整个过程不离开编辑器会话。

代码覆盖率测量

Topos 提供一种独特的双重覆盖率测量,区分声明覆盖(结构层面)和 ECT 覆盖(语义层面):

topos coverage --tests tests/test_foo.py topos/foo.py

topos coverage --tests tests/test_foo.py topos/foo.py --coverage-threshold 0.8 --json

这比传统的行覆盖率更精确——它能判断测试是否覆盖了代码的”形状”和”模式”,而不仅仅是逐行执行。

实战场景:用 Topos 重构 AI 生成的代码

假设你刚用 Claude Code 生成了一个 Python 模块 src/data_processor.py,代码能跑但感觉有点”乱”。以下是完整的 Topos 工作流:

topos evaluate src/data_processor.py


topos inspect src/data_processor.py

topos evaluate src/data_processor.py

总结

Topos 解决了一个很现实的问题:AI 生成的代码”能用但不健康”。通过三大质量支柱 + 奖牌系统 + MCP 集成,它让 AI Agent 有了明确的优化目标,不再盲目生成代码。9 个 GitHub Stars 虽然不多,但 BSD-3-Clause 的开源许可和清晰的架构设计,使其值得在生产流程中一试。

如果你也在用 AI 编码 Agent 写生产代码,Topos 可以作为 CI 流水线的一个质检关卡——在合并之前,确保新代码不只是”通过测试”,更是”值得维护”。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。