Files
reverse-skills-max/vendor-new/xbsReverseSkill/web-js-env-patcher/references/cleanup.md

6.0 KiB
Raw Blame History

临时产物清理规范

当创建临时文件、测试文件、浏览器产物、缓存文件、中间产物或 case 目录时,使用本文件约束清理行为。

总原则

  • 测试完成立即清理:每次脚本测试、功能验证、浏览器取证小步骤完成后,第一时间清理本步骤产生的测试文件、临时文件、缓存文件、中间产物和空目录,不要等整个项目结束。
  • 产物先沉淀再删除:删除前先把有价值结论写入 notes/、result/ 或最终报告;确认无价值的原始临时文件再清理。
  • 临时内容集中存放:测试文件必须放入系统临时目录或 case/tmp/ / case/.tmp/ / case/cache/ 等可清理目录;不要把 throwaway 文件散落在项目根目录。
  • 脚本测试使用 finally:编写测试命令时使用 try/finally 或等价逻辑,确保失败时也删除临时目录。
  • 每次交付前复查:最终回复用户前,必须执行一次清理 dry-run 或说明未执行原因;若 dry-run 发现普通临时产物,应立即 --force 清理并再次 dry-run。最终交付还必须运行 check_env_realism.js 和 check_final_artifact.js,确认补环境真实性 / RuyiTrace 证据完整,且 result/ 是规范项目目录、只有一个执行入口、没有多余测试文件、临时文件或自动化代码。
  • 敏感材料例外:登录态 Profile、Cookie、localStorage、IndexedDB、Authorization 等敏感材料不自动删除或交付;删除前必须确认用户意图。

目录约定

建议 case 结构:

case/
├── js/
│   ├── original/
│   ├── pretty/
│   └── extracted/
├── requests/
├── fixtures/
├── notes/
└── tmp/

默认 tmp/、.tmp/、temp/、.temp/、cache/、.cache/、browser-temp/、downloads/failed/、__pycache__/、.pytest_cache/ 等都是可清理目录。最终产物应尽量简洁,只保留必要内容。

最终 result/ 目录应是规范项目目录,可以包含必要源码模块和配置模板,但只能有一个执行入口:

result/
├── final.js
├── package.json
├── config.example.json
└── src/

或用户明确选择 Python 请求客户端时:

result/
├── final.py
├── requirements.txt
├── config.example.json
└── src/

不要把临时 runner、测试脚本、trace、HAR、hook、截图、浏览器 Profile、server.js、bridge.py 留在最终交付目录。env、signer、request 等代码可以作为 src/ 下的被调用模块保留,但不得成为第二执行入口。

应清理的临时文件

类型 清理时机
测试用输入 / 输出文件 单个测试命令完成后立即清理
失败的 JS 下载文件 JS 文件收集阶段结束后立即清理
临时格式化文件 正式 pretty 文件生成后立即清理
hook 脚本 / 指纹采样 Hook 调用栈或指纹终端 API 返回值确认并沉淀到 notes / fixtures 后立即清理
临时 trace / JSONL / 调试日志 关键结论写入 notes 后立即清理
临时 runner / scratch 脚本 正式 runner 生成或测试完成后立即清理
重复样本副本 fixtures 整理完成后立即清理
cache / .cache / __pycache__ / .pytest_cache 对应测试或脚本执行后立即清理
空文件 / 空目录 每个测试或阶段结束时立即清理
无登录态浏览器 Profile 浏览器取证阶段结束后清理

敏感文件

以下文件按敏感材料处理:

  • 包含登录态的浏览器 Profile。
  • Cookie / localStorage / sessionStorage 导出。
  • Authorization 请求头。
  • 含真实 Cookie 或账号标识的 HAR。
  • 包含隐私账号信息的截图。

默认不要把这些内容放入最终交付物,除非用户明确要求。优先做脱敏处理。

清理检查表

## 清理检查

- [ ] 本次测试是否使用系统临时目录或 `case/tmp/`?
- [ ] 单个测试完成后是否立即清理测试文件?
- [ ] 是否删除临时失败下载文件?
- [ ] 是否删除临时 hook 脚本?
- [ ] 是否删除指纹采样 Hook,且只保留必要 fingerprint fixture?
- [ ] 是否删除无用日志?
- [ ] 是否删除缓存目录和中间产物?
- [ ] 是否删除空目录?
- [ ] 是否只保留必要请求样本?
- [ ] 是否只保留必要 JS 文件?
- [ ] 是否已将关键结论写入 notes?
- [ ] 是否确认登录态 Profile 的处理方式?
- [ ] 是否避免 Cookie / token 明文进入最终报告?
- [ ] `result/` 是否是规范项目目录,且只有 `final.js` 或 `final.py` 一个执行入口?
- [ ] 最终项目所有源码是否不包含 ruyiPage / Playwright / Puppeteer / Selenium / CloakBrowser 等自动化代码?
- [ ] 最终请求是否由 Node.js / Python HTTP 客户端实现?
- [ ] 是否已运行 `check_env_realism.js` 检查补环境真实性和 RuyiTrace 证据?
- [ ] 是否已运行 `check_final_artifact.js`?
- [ ] 最终回复前是否重新运行 dry-run 确认无普通临时产物残留?

脚本用法

先预览:

node scripts/clean_case.js --case-dir case --dry-run --markdown

清理普通临时文件:

node scripts/clean_case.js --case-dir case --force --markdown

只有用户明确确认后,才删除 Profile:

node scripts/clean_case.js --case-dir case --force --include-profiles --markdown

清理后复查:

node scripts/clean_case.js --case-dir case --dry-run --json

期望 remainingTempLike 为空;如果不为空,说明仍有普通临时 / 缓存 / 中间产物残留,需要继续处理。

补环境真实性复查:

node scripts/check_env_realism.js --case-dir case --markdown

最终产物复查:

node scripts/check_final_artifact.js --case-dir case --markdown