用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/2021291696/weaver-evolve --skill file-tidy命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
| name | file-tidy |
| description | 文件系统整理师——结构感知归位,帮跑错地方的文件回到该去的子目录。支持干跑模式和自定义 YAML 辅助配置。独立使用或被 weaver-自我迭代 调用。 |
不是"把所有 .py 塞进 scripts/",而是学习项目已有的目录结构,把跑错地方的文件送回该去的地方。像一位细心的室友——先看家里怎么摆的,再帮你把跑偏的东西归位。
整理文件 / 整理目录 / 文件归类 / tidy / cleanup
.tidy-rules.yaml。存在则加载(辅助信息),不存在则纯靠结构感知使用 PowerShell 扫描目标目录下的直接子目录,为每个目录建立"指纹"。
构造 <safe_zone_pattern>:
.tidy-rules.yaml 且含 safe_zones:将每个 zone 的 glob 转为 regex(* → .*,? → .,其余字符用 [regex]::Escape() 转义),用 | 拼接.tidy-rules.yaml 或 safe_zones 为空:使用默认安全模式 ^(\.|node_modules)# 扫描一级子目录(排除安全区)
Get-ChildItem -Path <dir> -Directory -Depth 0 |
Where-Object { $_.Name -notmatch '<safe_zone_pattern>' } |
ForEach-Object {
$dir = $_.FullName
$files = Get-ChildItem -Path $dir -File -Depth 0 | Select-Object -First 20
[PSCustomObject]@{
Name = $_.Name
Path = $dir
SampleSize = @($files).Count # 采样数量(最多 20),不是目录总文件数。如需总文件数做比例计算,单独 Get-ChildItem 计数
Extensions = ($files | Group-Object Extension | Sort-Object Count -Desc | Select-Object -First 3).Name -join ','
Prefixes = ($files | ForEach-Object { ($_.BaseName -split '[-_]')[0] } | Group-Object | Sort-Object Count -Desc | Select-Object -First 3).Name -join ','
}
}
指纹字段含义:
.py,.csv,.md)movie,elm,weather)同时读取 .tidy-rules.yaml(如果存在)获取:
directories:目录别名(帮 AI 理解目录含义)safe_zones:绝对不碰的目录/文件模式(支持通配符 *)keep_at_root:必须留在根目录的文件junk:临时/垃圾文件清理规则用 .tidy-rules.yaml 的 junk 规则扫描目标目录,标记建议删除的文件。
注意:
junk 配置时跳过此层对目标目录下的所有直接文件(不含子目录内的文件),逐一计算它属于每个已有子目录的分数。
维度一:文件名 → 目录名匹配(权重 40%)
-、_、.、/)后的独立词段。如 movie_train 拆为 [movie, train],outputs/movie/ 提取 [outputs, movie]。共享词段越多分越高:2+个共享词段 = 40 分,1 个 = 30 分,无共享 = 看别名movie_train.py → 目录 outputs/movie/).tidy-rules.yaml directories 别名匹配:25 分
(如文件名含"前端"关键词 → frontend-design/ 目录)维度二:同源文件聚类(权重 30%)
以下子项取最高分,不累加。即同时满足多个条件时,只取最高的一项得分。
movie_report.md → 目录已有 movie_download.py)维度三:代码引用关系(权重 20%,仅代码文件)
维度四:语义兜底(权重 10%,仅当前三项总分 < 30 时触发)
仅对文本类文件(.py, .md, .txt, .js, .ts, .java, .json, .yaml, .xml, .csv, .html, .css 等)触发语义兜底。二进制文件(.pdf, .png, .zip, .exe, .dll 等)直接跳过此维度。
以下条件任一满足,则不加入移动建议:
keep_at_root 列表中. 开头)safe_zones 模式同分平局:当文件对多个目标目录得分相同且均为最高时,选择文件数更少的目录(避免把零散文件塞进已经很大的目录)。如果文件数也相同,选目录名与文件名关键词匹配度更高的。
按四档输出:
整理计划 — <目标目录绝对路径>
▌ 建议删除(N 项)
<文件> → [删除] <reason>
▌ 建议移动 — 高置信度(N 项)
<源文件路径> → <目标路径> (XX分)
▌ 建议移动 — 请确认(N 项)
<源文件路径> → <目标路径> (XX分 ⚠ <低分原因>)
▌ 未归类(N 项)
<文件> (<原因>)
已扫描 XX 个文件,建议删除 X 项,建议移动 X 项(其中 X 项需确认),未归类 X 项。
执行:整理文件 --confirm(执行全部建议移动 + 建议删除) 只看高置信度:整理文件 --safe(只执行高置信度移动 + 建议删除)
格式规则:
| 总分 | 动作 |
|---|---|
| ≥ 70 | 高置信度 — 直接建议移动 |
| 40-69 | 中置信度 — 建议移动,标注"请确认" |
| < 40 | 不处理,列入"未归类" |
展示计划后询问:
"执行整理(全部移动+删除)/ 安全模式(只动高置信度项)/ 只看归类(只移动高置信度,不删)/ 取消?"
# 检查目标目录是否存在(不存在则跳过,绝不创建新目录)
if (-not (Test-Path "<target>")) {
Write-Output "ERROR 目标目录 <target> 不存在,跳过"
continue
}
# 移动文件(不覆盖已存在的同名文件)
if (-not (Test-Path "<target>/<filename>")) {
Move-Item -Path "<source>" -Destination "<target>/<filename>"
Write-Output "OK <source> → <target>/<filename>"
} else {
Write-Output "SKIP <source> → <target>/<filename> 已存在"
}
执行完成后输出摘要:
整理完成 — 移动 X 项,跳过 Y 项(冲突),删除 Z 项,未处理 W 项
weaver 在全局整理时调用 file-tidy:
| 选项 | 行为 |
|---|---|
| (默认,无参数) | 干跑模式,只展示计划 |
--confirm | 执行全部建议移动 + 建议删除 |
--safe | 只执行高置信度移动 + 建议删除 |
--classify | 只移动高置信度,不执行删除(对应"只看归类"模式) |
--dry-run | 只出报告不动手 |
. 开头默认跳过movie_train.py 和 movie_report.md 共享前缀 movie_.tidy-rules.yaml 是辅助而非驱动——没有它也应该能完成归位判断基于 SOC 职业分类