# Agent Config Tidy

> 整理/收尾智能体配置（AGENTS.md、soul.md、SKILL.md、agent yaml 及脚本）。扫描并移除混进配置里的决策背景、会话说明、闲聊等不必要内容，只留运行时真正需要的指令；先出差异确认再改写。用于每轮 grill 迭代改完配置后的克制收尾。

- Skill: `shyxin/agent-config-tidy` (Agent Skill)
- Install (CLI): `npx skillmds@latest add shyxin/agent-config-tidy`
- Raw SKILL.md: https://api.skillmd.com/api/skills/shyxin/agent-config-tidy/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: shyxin (https://skillmd.com/u/shyxin)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/shyxin/agent-config-tidy

---


# Agent Config Tidy（配置克制收尾）

在反复用 grill-one / grilling / grill-me 等技能探讨、定决策、改写智能体配置后，配置里常常混进
「决策过程中的背景 / 说明 / 闲聊」——这些**不需要进运行时配置**，却会在用这套配置创建的智能体对话时暴露出来。
本技能把整套 agent 配置当成一个整体来审视，找出这类多余内容，只保留运行时需要的指令，做到「克制」。

## 何时使用

- 用户说「整理一下配置」「收尾配置」「配置太啰嗦了」「去掉配置里的背景说明」「配置里别暴露讨论过程」
- 每轮 grill 迭代、改写完 AGENTS.md / soul.md / SKILL.md / agent yaml / 脚本之后，做一次克制收尾
- 发布 agent 结果包前，兜底检查整套配置是否混入了讨论背景

## 输入

一个**目录**（整套 agent 配置的所在），结构无关。技能自行递归发现以下文件，不限目录层级：

- 配置文档：`AGENTS.md`、`soul.md`、`SKILL.md`（大小写不敏感）
- agent 定义：`*.yaml` / `*.yml` 中带 `interface:` / agent 定义结构的文件
- 脚本：`*.py` `*.sh` `*.ps1` `*.js` `*.ts` `*.bash` 等（查注释与运行时输出）

> 不假设固定布局（不要求一定是 result 包结构）。只要是「这个 agent 的配置」，给根目录即可。

## 判定规则（核心）

### 该删（背景 / 说明 / 闲聊）

- **决策背景 / 来龙去脉**：解释「为什么这么定」「这版相对上版改了什么」「当初讨论时考虑了 A 还是 B」的段落。
- **会话说明 / 对模型或用户的闲聊**：寒暄、铺垫、`注意：…` 式只是复述显而易见的提醒、关于「本文件/本段是干什么的」的自我说明（当这段说明对运行时无指令价值时）。
- **重复自述**：同一约束在多处用不同话重复说。
- **暂时性备注**：`暂定` `先这样` `等确认` `待定` `草稿` 之类未定稿标记。
- **脚本里的决策史注释**：`# 因为上次讨论决定改成 X` `# 历史原因：之前是 Y` 这类闲聊注释。
- **脚本里向用户泄露背景的运行时输出**：`print/log/echo` 打印「（背景）我们之所以…」「说明一下，这个 agent 是用来…」之类非真实状态/非真实错误的说明性文字。
- **点名禁止手段清单（「此地无银」）**：配置散文中逐条点名「禁止用 X / 绝不允许 Y / 不准做 Z」且 X/Y/Z 是**具体实现手段**（如某调试协议、某依赖安装命令、连接某本地端口）的写法。这类清单常有两个问题：(1) 框架或通用约束往往已经覆盖，重复点名属冗余；(2) 把本不该用的手段**点名列出**，反而给 agent 种草、暗示其存在——即「此地无银三百两」。判定为多余，建议**删除该清单**，改写成不点名具体手段的概括约束（只说「只允许走既定通道 / 只能用既定工具」，不列举禁用项）。主要适用于配置文档（AGENTS.md / soul.md / SKILL.md / yaml）；脚本注释里的点名禁用多半是正当提醒，默认不按此条处理。

### 必须留（运行时需要）

- 所有**可执行指令、约束、护栏**（`必须` / `禁止` / `应该` / `不要`）。
- **触发条件 / 何时使用**（让 agent 知道何时启用）。
- **输入/输出格式、schema、few-shot 示例**（agent 照做的范本）。
- **必要术语 / 定义**（agent 正常运作必须知道的名词）。
- **真实状态 / 真实错误输出**（用户确实需要看到的运行信息，不是背景闲聊）。
- **代码逻辑本身**（绝不改动函数体、变量、流程）。

### 不确定时

一律**标记出来交用户定夺**，不要替用户删。判定只做「明显多余」的，灰色地带留给确认环节。

## 工作流

1. 拿到配置目录；先 `Glob`/`Grep` 发现上述文件清单，回显给用户「将检查 N 个文件」。
2. 逐个文件扫描，按规则找出多余内容。
3. 产出**差异报告**（先不改文件）：
   - 每个文件下列出：被标记的文本片段 → 为什么判定为「背景/说明/闲聊」→ 建议动作（删除 / 移到决策记录 / 保留）。
   - 用 diff 风格呈现（`-` 表示将删，`+` 表示将留或替换）。
4. **等用户确认**（逐文件或整体）。用户没说删的，不动。
5. 确认后改写文件；改写前对原文件留 `.bak`（如 `AGENTS.md.bak`）。
6. 若某段背景用户想「留作记录但不进配置」，建议移到配置目录外的 `DECISIONS.md` / `rationale.md`（非发布文件），不要留在 AGENTS.md/soul.md/SKILL.md 里。
7. 啥都没发现时，明确说「未检出明显多余内容」，不强行改。

## 正反例

**反例（应删）**——配置里混进的讨论背景：

```markdown
## 背景
这版是和团队用 grill 讨论后定的。上一版我们本来想让 agent 直接读数据库，但后来考虑到
安全就改成了读 SQLite 投影；soul 里那段「保持克制」也是那轮加的。
```
> 这是决策史，运行时不需要，删；想留记录就移到 `DECISIONS.md`。

**正例（应留）**：

```markdown
## 约束
- 禁止跳过认证：查询前必须已 login 且 session.json 有效。
- 知识库路径一律来自 @ 提及选中的工作区，不要写死在 config。
```
> 这是可执行约束，必须留。

**脚本反例（应删的运行时输出）**：

```python
print("（背景说明）这个脚本之所以只推送图谱而不让服务器读路径，是因为上次讨论发现远端读不到本机知识库……")
```
> 这是对用户的闲聊，改为只输出真实状态：`print(f"pushed {n} nodes")`。

**配置散文反例（「此地无银」，应删）**：

```markdown
## 护栏
读取内部状态时，禁止用 A 协议、禁止开 B 端口、禁止手搓 C 脚本、禁止安装 D 依赖——只允许用既定的内置工具。
```
> 把本不该出现的手段逐条点名，反而给 agent 种草；且「只允许用既定内置工具」一句已覆盖全部。删掉点名清单，只留概括约束。

**配置散文正例（应留）**：

```markdown
## 护栏
读取内部状态只允许用既定的内置工具，不走其它通道。
```
> 概括约束，不点名任何具体手段，既够用又不种草。

## 护栏

- 先差异、后确认、再改写；不确定就标记，绝不静默删除。
- 改写前留 `.bak`，方便回退。
- 不改动任何代码逻辑、变量、函数体；只动注释与说明性输出。
- 克制本身：本技能的配置文档也只写必要指令，不要反过来把自己写成啰嗦样板。
- 结构无关、项目无关：不假设特定目录布局，不写死任何业务路径。

