Skip to content

Latest commit

 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Code Trim · 代码精简化 Skills

中文 | English

一个面向 Coding Agent 的代码精简 Skill,用于功能实现或缺陷修复后的轻量审查,会让Coding Agent对新增代码的模块进行消融实验,从而去除不必要的代码模块,减少防御性编程。 它帮助 Agent 识别重复校验、重叠兜底、无当前用途的抽象,以及掩盖真实错误的处理逻辑, 在保留必要行为和错误契约的前提下,选择有证据支持的简化。

快速精简 + 按需消融:一轮快速检查,必要时验证一个复杂单元,验证充分后停止。

当前仓库包含一个 Skill,内部有两种工作方式,共用同一套保护边界:

Skill / 工作方式 适用场景 主要输出
code-trim · 快速精简 新增或修改代码后,检查明显的冗余防御与抽象 有依据的代码精简,以及正常任务回复中的验证说明
code-trim · 按需消融 某个防御单元复杂度明显,必要性无法低成本判断 一次隔离实验;保留有证据的简化,恢复失败或不确定的改动

两种方式无需分别安装。普通改动先做快速检查;只有复杂单元满足消融条件时才进入实验。 如果没有明确候选,或证据不足且不值得继续验证,结束审查并保留当前实现。

目录

工作方式

当前任务的新增或修改代码
  └─ code-trim
       ├─ 复用已有上下文、diff 与验证结果
       ├─ 一轮快速检查
       │    ├─ 重复校验与重叠保护
       │    ├─ 宽泛异常、静默默认值与多层兜底
       │    └─ 无当前用途的包装、工厂与兼容分支
       ├─ 依据契约、调用路径或等价实现判断
       │    ├─ 证据明确 → 精简
       │    └─ 证据不足 → 保留
       ├─ 必要时做一次局部消融
       │    ├─ 提出一个移除假设
       │    ├─ 在隔离的本地变体中验证
       │    └─ 接受有证据的改动,恢复失败或不确定的改动
       └─ 纳入正常验证,简短收尾

快速检查负责定位候选并判断明显冗余;消融负责回答一个无法便宜地通过阅读解决的问题。 消融结果必须结合行为或不变量证据解释,不能把“测试绿了”直接当作删除依据。

每次接受删除后,后续判断都应基于更新后的实现。 例如,两层校验分别看都像重复,不能在两次独立判断中把它们全部删除。 组合改动后,每项必要保证仍需至少一个有效保护层。

仓库约定

  • 根目录的 SKILL.md 是唯一执行规则来源,保留英文指令。
  • 本页与 README.en.md 分别提供完整中文和英文使用说明。
  • 目录名和 Skill 名统一为 code-trim,便于发现与显式调用。
  • README 中的教学示例用于解释规则,不代表每次使用都要逐项检查或生成表格。
  • 后续规则调整应同步更新两种语言的说明,尤其是预算、验证与停止条件。
  • 只有出现实际需要时才增加脚本、引用资料或其他资源。
code-trim/
├── SKILL.md       # Agent 执行规则
├── README.md      # 完整中文说明
└── README.en.md   # 完整英文说明

仓库是纯 Markdown Skill,不包含代码分析引擎、数据库、自动测试服务或部署流水线。 读取、编辑和运行检查由加载 Skill 的宿主 Agent 在目标项目内完成。

功能

快速精简

  • 只检查本次任务新增或修改的代码。
  • 仅在需要回答具体问题时读取直接依赖,复用已经获取的上下文。
  • 识别所有受支持调用路径上已被保证的重复校验。
  • 检查宽泛异常捕获是否掩盖缺陷,默认值是否吞掉必要错误。
  • 检查多层 fallback 和 retry 是否承担相同职责。
  • 识别没有当前需求、也没有实际仓库作用的兼容分支、工厂、包装与扩展点。
  • 对重要候选回答:保护什么、删掉会坏什么、别处是否已有相同保证。
  • 依据明确契约或调用路径精简;缺失测试不能作为“保护无用”的证据。

按需模块级消融

  • 仅面向增加明显复杂度、必要性又无法低成本查明的模块或防御单元。
  • 每次先提出一个具体移除假设,让实验有明确问题。
  • 在隔离的本地变体中临时删除或简化目标单元。
  • 选择真正覆盖受保护行为的最小相关检查。
  • 综合运行行为、输入契约和不变量判断,不能仅凭测试套件通过。
  • 实验失败或结论不明确时恢复该实验的改动。
  • 默认每个任务最多一次;用户要求深入审查或正确性需要时才扩展。
  • 不对线上数据或不可逆副作用进行实验。

这里的“消融”指移除一个单元以观察其必要性,不是反复删代码直到测试失败。 如果直接阅读已足够判断,就不必创建实验。

必要保障与执行预算

维度 默认规则
身份与权限 保留认证、授权;仅按任务要求或直接不变量证据调整
数据与执行 保留完整性、并发、幂等、资源清理保护
输入边界 根据真实外部输入风险保留适量验证
运行时保证 类型标注不能代替运行时验证;上游保证必须持续有效到使用点
读取 不为泛化审查重扫仓库或无理由重读文件
测试 复用已有结果,仅为具体未解决风险补充检查
输出 不生成审查文档、风险表或逐单元报告
停止 无明确候选、证据不足或验证已经充分时停止

安装

获取仓库

git clone https://github.com/XIIRUAN/code-trim.git
cd code-trim

Skill 本身没有运行时依赖。使用 Git 克隆需要本机已安装 Git; 目标项目自己的测试、编译器或包管理器按该项目的要求准备。

Codex:用户级安装

以下命令将仓库直接克隆到用户技能目录,适合希望在多个项目使用的情况。 它与上面的普通克隆是两种选择,选择一种即可。

macOS / Linux:

mkdir -p "$HOME/.agents/skills"
git clone https://github.com/XIIRUAN/code-trim.git \
  "$HOME/.agents/skills/code-trim"

Windows PowerShell:

$skillRoot = Join-Path $HOME '.agents\skills'
New-Item -ItemType Directory -Force -Path $skillRoot | Out-Null
git clone https://github.com/XIIRUAN/code-trim.git `
  (Join-Path $skillRoot 'code-trim')

Codex 的用户级技能目录为 ~/.agents/skills/,项目级技能可放入 .agents/skills/。 目录说明见 OpenAI 官方 Skills 文档。

项目级安装与其他宿主

仅在一个项目中使用时,在目标项目根目录创建 .agents/skills/code-trim/,把本仓库的 SKILL.md 复制进去。 README 可一并复制供团队阅读;无需把本仓库的 .git 目录复制进去。

其他宿主请使用其文档规定的发现目录与调用方式。 无论放在哪个目录,最终应有 code-trim/SKILL.md 这一层级。

更新与发现检查

使用克隆安装时,在安装目录运行:

git pull --ff-only

手动复制安装时,更新对应的 SKILL.md,并同步需要保留的说明文件。 如果宿主没有发现 Skill,检查目录层级、文件名与技能列表,必要时重新开启会话。 安装使 Skill 可被发现;它没有注册“每次代码修改后必跑”的执行钩子。

使用示例

功能完成后快速精简

自然语言请求:

功能已经实现,请快速检查本次新增代码里有没有重复校验、重叠兜底,
或者没有当前用途的包装层。保留必需的错误行为,不要扩展成全仓库审查。

显式调用:

使用 $code-trim 检查本次任务的代码改动。
复用现有上下文和测试结果,只做一轮快速精简。
没有明确候选就停止,把有意义的精简放进正常任务总结。

对复杂防御单元做按需消融

使用 $code-trim 检查本次新增的重试包装层。
先确定底层客户端是否已经覆盖相同的失败模式和错误契约。
如果阅读不能低成本得出结论,且该包装层确实增加明显复杂度,
在隔离的本地变体中对它做一次消融,运行覆盖重试行为的最小检查。
证据不充分就恢复,不要操作线上服务或真实业务数据。

与修复任务一起使用

修复当前解析错误,保留既有错误类型和对外接口。
完成后使用 $code-trim 做一轮精简,
将接受的调整纳入本次修复的正常验证,并说明未能执行的检查。

“本次任务”指当前需求涉及的改动,不自动等于分支全部历史、整个仓库或其他人的修改。 如果只提供 diff 而无法访问依赖,Agent 应根据已有证据工作并说明判断限制。

本地快速开始

1. 在目标项目明确改动范围

以下是可选的人工定位命令。Agent 已有相同信息时应直接复用。

git status --short
git diff --stat
git diff --cached --stat

在输出中选择当前任务的文件,再查看其具体差异。 未跟踪的新文件不会出现在普通 git diff 中,需要结合任务上下文读取。

2. 提供已有验证结果

把实际执行过的检查及结果交给 Agent,例如“解析器相关测试已通过,尚未运行集成测试”。 不要把示例命令当成所有项目通用的测试入口;优先采用目标仓库已有约定。

3. 调用 Skill

使用 $code-trim。
范围是刚刚完成的解析器修改及回答具体问题所需的直接依赖。
复用本轮已有验证,只为未解决的回归风险增加检查。

4. 根据证据接受或保留

示例情况 决策要点
私有辅助函数重复检查同一输入 确认所有受支持调用路径、可变状态及错误契约后再判断
公共函数可被其他调用者直接使用 不能仅凭一个已校验的调用路径删除边界校验
上下两层都重试同一请求 检查重试次数、可重试错误、幂等性与最终错误行为
finally 中只有一行清理 短小不等于多余,资源释放仍可能是必要保证

此表用于教学,不要求实际任务输出对应清单。默认结果仍是代码改动和简短说明。

验证

文档与 Skill 结构

本仓库没有需要安装或运行的应用程序,也没有 tests/verify-all.sh。 维护文档时,可从仓库根目录运行:

git diff --check

它检查差异中的空白问题,不验证 Skill 的行为效果。 还应确认 README 链接、安装路径和 SKILL.md 的名称与描述对应。 当前 SKILL.md 已通过创建环境提供的结构校验;该校验器不随仓库分发。

行为验证

  • 将接受的精简纳入原任务的正常最终验证。
  • 只有未解决的具体回归风险才需要补充针对性检查。
  • 多项删除组合后,重新确认必要保证仍有有效实现。
  • 保留仓库要求的必需检查;不能执行时如实说明限制。

如何判断结束

必要行为已有足够验证,且没有新的明确风险时即可停止。 没有删除也可以是有效结果;无需为了证明 Skill 有用而寻找额外改动。 示例中的预期行为用于说明决策标准,不代表已完成跨项目基准测试或效果评测。

GitHub Pages

本项目的文档入口是 GitHub 仓库。 当前未配置 GitHub Pages 站点,也没有自动生成或发布审查报告的功能。

内容 当前位置 / 行为
中文使用说明 main:README.md
英文使用说明 main:README.en.md
Agent 执行规则 main:SKILL.md
审查结果 目标项目中的代码改动与正常任务回复
Pages 部署 未配置,无已发布的站点地址

若以后需要静态文档站,可以另行配置页面与部署流程。 文档网站属于仓库展示功能,不应改变 Skill 默认不生成额外报告的约定。

数据与操作边界

  • 审查范围限定在当前任务及解决具体问题所需的直接依赖。
  • 消融只在隔离的本地变体中进行,不对生产数据或不可逆副作用实验。
  • 恢复实验改动时保留用户原有工作,不能覆盖无关修改。
  • 默认保留认证、授权、数据完整性、并发、幂等及资源清理保护。
  • 对外部输入和错误处理保留与实际风险相称的保障。
  • 缺少测试、测试通过、类型标注和代码短小,都不能独立证明防御冗余。

常见问题

Q. 为什么 README 很详细,执行流程却要精简?

A. README 面向安装和理解 Skill 的人;SKILL.md 面向执行任务的 Agent。 详细说明不意味着每轮都要读取整份 README、逐条打分或生成报告。

Q. 会自动删除所有防御式代码吗?

A. 不会。它要求识别具体需求和失败模式,只接受有依据的简化。 对于必要保障和证据不足的候选,默认保留。

Q. 每次都会运行消融或补充测试吗?

A. 不会。消融有复杂度和证据门槛;补充测试应对应未解决的回归风险。 没有触发条件时,一轮快速检查加正常验证即可。

Q. 支持哪些语言,能保证节省多少成本?

A. 规则不绑定编程语言,但实际分析能力依赖宿主 Agent、项目上下文和可用工具。 仓库没有发布语言覆盖矩阵,也没有量化的 token、耗时或代码行数收益承诺。

Q. 如何反馈问题?

A. 通过 Issues 提供最小可分享的示例: 当前需求、改动范围、错误精简或过度保留的表现,以及能说明问题的验证结果。 改进应围绕真实失败案例,保持“快速精简 + 按需消融”的核心边界。

About

Lightweight code simplification for coding agents: one quick pass, targeted ablation only when needed. 代码精简化Skills。

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors