CodeEraser
CodeEraser 图标:橡皮扫过代码行

CodeEraser™

LLM 写的代码会堆积:重复代码块、死文件、过期文档、结构蔓延。 CodeEraser 度量它、判决它、用一个只准变好的分数把住大门。

下载安装包 Windows · Linux · macOS,SHA256 钉扎 · 其他安装方式
$ ce check --lang zh --roast
检查分数 925/1000 | 判轴 0:61 1:0 2:297 3:0 4:0 5:0 6:171 | 候选 595
棘轮:新增 0,移除 0,超限 0,动用容差 0 -> pass
注:10 块并入既有成员,335 个文件内对不入相似表
毒舌:干净得可疑。你贿赂谁了?

真实输出:CodeEraser 判决它自己的仓库;违规入基线银行,新增熵直接判负。

证据

同一个任务,跑两遍

不带 CodeEraser带 CodeEraser
文件落盘前被拒绝的写入02
残留的克隆块40
重复文档段10
仍欠的删除10
检查分数871979

同一个七步任务,两份完全相同的种子树;唯一的变量是 CodeEraser 在不在环内——写入时的守卫、Stop 审计,以及审计拒绝之后按自己的计划执行的擦除。两次都仍以红色收场——但红的不是同一件事。

种子 demo/seed/:精确到分的 Python + TypeScript 开票服务,两次运行前先由同样的门判为干净;任务是加折扣、紧凑报表、CSV 与 JSON 输出与金额格式化。

产品

看它工作

判决

判决家族

ce check

总门:七轴合成 0–1000 分,对基线银行只缩不涨的棘轮,外加 CI 硬地板。

05 · 评分与棘轮

ce dedup

winnowing 指纹的 T1/T2 克隆检测,克隆块预算只准往下棘。

01 · T1/T2 克隆

ce clone

T3 近似克隆,改名换形的拷贝一并抓,由 Haskell 核按树编辑距离判决。

02 · T3 近似克隆

ce deadcode

缓存引用图上的存活性:无保留入边、无入口声明即死;旁边的未提及声明顾问永不把门翻红。

06 · 死代码

ce docdup

文档与注释里的重复散文,活段上的精确 Jaccard 判决。

03 · 文档重复

ce structure

整仓的树尺度结构熵:布局偏离、文档陈旧、冗余、模块度诸轴。

04 · 结构判决

ce scan

逐文件逐函数的尺寸、复杂度、可读性,由核按全局表或该文件自己那条 [[rules.class]] 线分级。

认知复杂度

ce trend

主线历史上的分数轨迹,逐提交缓存、可重建、方向诚实。

10 · 趋势斜率

ce erase

确定性两段式:死文件、逐字重复的文档孪生、整单元精确克隆,先出计划、只在干净工作区应用,永不交给模型。

12 · 确定性擦除

ce churn

git 窗口内的改动热度,逐单元归属:看得出一个文件是在被重写,还是只在被追加。

07 · 三信号 join

ce join

把改动、重复与存活性折成一条判决,热的、重复的、已死的那个角落会自己报名。

07 · 三信号 join

ce similar

同角色顾问:离线、在索引的词袋上做整数 BM25,由核判定哪些候选扮演查询的角色。只当顾问。

15 · 稀疏检索

ce query · ce rules

索引自有事实上的 Datalog,核里判决、每个答案带推导链;架构约束写成断言,ce rules 就是一道门,第一条违规即退出。

16 · 代码查询与架构规则

ce flow

函数内部的死代码(到不了的语句、没人读的存储与局部量),在核的控制流图上判;盲评精度考题过门的语言才算判决,未用形参永远只是顾问。

17 · 函数内死代码

ce merge

克隆组怎样合成一个函数:不同处变参数,核答参数个数、该留的成员、省下的行、可不可行及原因。只当顾问。

18 · 克隆合并建议

ce arch

目录之间怎样依赖:分层、拆环最省的切边、文件簇与不在簇所在目录的文件、扇入、扇出、不稳定度,以及改一个点名文件波及哪些文件。只当顾问。

19 · 架构分析

守卫钩子

作为 Claude Code 插件:重复写入落笔即拦,ask 档放行的写入落地后记账,停止时审计,会话开始报健康。

11 · 守卫档位阶梯
数学

数学

对实测事实的整数或精确有理数算术;每条规则钉在实现它的源码行上。

01窗口取指纹
t = window + kgram - 1 = 26 + 25 - 1 = 50 tokens
02树编辑距离
cloneDecidesWith (num, den) t n1 n2 = (mx - t) * den >= num * mx  where mx = max n1 n2
05分数与棘轮
score   = max 0 (scoreScale - raw `div` (violCostNeutral * wTotal))
tolerated(c) = max (c * tolNum `div` tolDen) (c + tolAbs)
性能

实测 · v1.8.0

hook 探针 p50(两文件夹具)50 ms
全仓扫描 p50907 ms
增量索引 p50(暖跑,dedup_warm)650 ms
守卫误报(人裁 630 事件)每 500 次编辑 0.00 次误报
docdup 判准(冻结黄金集)范围内 17/17(100%)

每个数字由回放产生(cli/tests/it/bench.rs 与 bench_backfill.rs),单源 contracts/bench/bench.json——绝不手填。

架构

内部构造

架构图:仓库由 Rust 度量侧解析并取指纹(tree-sitter、由逐项目 daemon 保温的 SQLite 指纹索引、引用图、git 窗口),经一条十六个家族的 NDJSON wire 进入 Haskell 判决核(策略作为数据随之发布),同一批报告由五张面孔渲染(终端、GUI、MCP 服务器、Claude Code hooks、CI)
度量在 Rust,判决在 Haskell:一条 wire、每家族一份报告 schema、五张面孔。由 docs/diagrams/architecture.zh.json 渲染;每个组件都引用自己的源文件。打开原尺寸 SVG。
上手

安装

安装包 GitHub Releases:GUI + CLI + 判决核,SHA256 钉扎
Homebrew brew install skymanbp/codeeraser/codeeraser
Cargo cargo install codeeraser
Claude Code ce setup  # 手动:/plugin marketplace add skymanbp/CodeEraser@release,再 /plugin install codeeraser@codeeraser
更新 ce update --yes
平台与更新

五个平台:x86_64-windows · x86_64-linux · aarch64-macos · x86_64-macos · aarch64-linux。Windows 安装包会运行 ce setup,AppImage / dmg 用户自己跑一次;Homebrew 公式(macOS 与 Linux)由同一组 pin 生成。

ce update 拿最新 tag 对比本构建(退出码 0 / 1 / 2);--yes 在两枚 SHA256 pin 都通过后才替换 ce 与 ce-core,绝不动插件或 cargo 拥有的副本(它们各给自己的更新命令);--installer 保存经校验的 GUI 安装包。GUI 有自己的更新屏,Claude Code 里用 /codeeraser:update。

接进工作流

CI 门 ce check . --fail-under 911  # 棘轮+地板;exit 1 直接把流水线判红
pre-commit ce precommit  # 暂存区净行数 + 涉改重复块
MCP ce mcp  # 每个报告家族都是任意 agent 可读的只读工具

信任锚

全部十五个发布二进制(五平台 × ce / ce-core,再加五个 GUI 安装包)都以 SHA256 钉扎在 plugin/bin/manifest.env:信任锚是哈希链,不是代码签名(发布怎样切出)。