# 小工具 · 做一个自己真会用的东西 · ChatGPT · 把日常事情做完

**作者** Aklman · **章节** 11 / 17 · **首发** 2026.10 · **语言** 中文为主, 中英双语
**原文** https://library.aklman.com/books/chatgpt/build-personal-tools
**全书 markdown** https://library.aklman.com/books/chatgpt/llms.md
**上一章** https://library.aklman.com/books/chatgpt/connect-and-act/llms.md
**下一章** https://library.aklman.com/books/chatgpt/reuse-workflows/llms.md

> 本章来自 Aklman · Library, 完整免费阅读。允许 AI 摘读、引用、问答; 转载请保留作者署名与原文链接 (CC BY-NC-ND 4.0, https://library.aklman.com/license)。

---

> 做一个批量改名预览器, 从样本、冲突规则和失败测试开始。先得到能核对的计划, 再在副本里执行, 并保留恢复清单。

旅行回来,你想把几十张照片改成便于整理的名字。逐个改很烦,让 AI 直接接管照片文件夹又不放心。这是一个适合做个人小工具的问题:规则简单,结果能看见,做错了也应该在碰到原件之前被拦住。

这一章的成果是一个单文件网页:输入名字,预览改名表,下载正向计划与反向映射。你不需要先学编程,但需要能说清希望怎么排、亲自看结果,以及知道它没做什么。先只做预览,实际改名是另一个需要明确授权的步骤。

### I · 第一版只完成一件事

先<a href="/examples/chatgpt/rename-preview.html" download="rename-preview.html">下载本章改名预览器</a>,用桌面浏览器打开。它不依赖服务器、不上传名字,也不读取文件内容。页面上的文件选择器只取文件名。你也可以直接粘贴三个虚构名字,不交出任何照片:

```text
IMG_020.jpg
IMG_003.JPG
IMG_011.jpg
```

前缀填 trip,点击「生成预览」。本工具按名字排序,忽略大小写,保留最后一个扩展名并转小写;不是按拍摄时间。得到的顺序应是 003、011、020,对应 trip-001.jpg、trip-002.jpg、trip-003.jpg。如果你要的是拍摄时间,这份工具目前就不符合要求,不能因为输出整齐而凑合接受。

这里用的是字典序,不是文件管理器常见的自然数字序:IMG_10 会排在 IMG_2 前面。练习名把数字补到同样位数,所以顺序一致。自己的文件名没有补零时,先看预览,不要猜它会如何理解数字。

这次没有登录、付费 API、云数据库或发布网站的需要。先把下载的 HTML 和两份导出表保存在一个练习文件夹里。页面刷新会清空输入;它不是相册管理系统,也没有偷偷替你保存历史。

---

### II · 让 Codex 按你的规则做

如果想自己做一份,在可用的 Codex 桌面任务中选一个新建的空练习文件夹,不要选照片原件所在目录。能直接交付 HTML 的 Work 也可以尝试;这不是两个体验的排他能力分界。没有本地文件工具时,要求输出完整 HTML,保存为 .html 再打开;不要把半段代码当成可用成品。

**提示词 · 先说明验收,再实施**

```text
我想做一个自己用的 <小工具>,解决 <反复遇到的麻烦>。输入是 <材料>,输出是 <能保存的成果>。先用我给的 <少量例子> 确认规则和期望结果,最多问三个会改变实现的问题。第一版只做 <最小范围>,不要添加登录、付费服务或发布。只在 <练习文件夹> 写入,不操作原件。交付可直接打开的文件、使用说明、错误输入测试和已知限制;不能运行的检查明确标未测。
```

**示例**

```text
请在当前空练习文件夹制作单文件 rename-preview.html,离线可用,不加载外部依赖。输入一行一个文件名和前缀 trip,只预览,绝不改文件、不读取内容、不联网。按名字排序并编号为 trip-001 加原扩展名的小写形式。IMG_020.jpg、IMG_003.JPG、IMG_011.jpg 应按 003、011、020 对应 001、002、003。拒绝重复名字、路径和不安全字符,检查已提供名字中的目标冲突。允许补充目录里的其他名字用于冲突检查,明确看不到未提供的文件。修改输入后旧预览与下载必须失效。提供正向计划和反向映射 CSV,说明后者不是已执行的撤销记录。请跑逻辑测试并实际打开页面试用;遇到浏览器不可用就写未测,不要说全部通过。
```

先说能验收的结果,再让 agent 开工,与官方实践建议一致。[^1]这里「离线」是成品网页的运行要求,不是说让 ChatGPT 编写和修改程序也不消耗用量。不要为了这个小例子先开最高推理强度或多个 agent;做不对时先检查规则有没有说清。

### III · 用一条反例,比说「更安全」有效

现在在「同一目标文件夹里的其他名字」里填 trip-001.jpg。重新预览,工具应拒绝生成计划,而不是悄悄覆盖、加一个莫名后缀或漏掉这张照片。这个反例是人为设计的测试,不是说某次产品运行已经真的覆盖过你的文件。

**提示词 · 把错误输入和期望行为一起交回去**

```text
我用 <具体输入> 操作 <步骤>,看到了 <实际结果>。期望是 <正确行为>,因为 <原因>。请先复现,把它加入回归测试,再做最小修复。保留原来的 <已通过行为>;不要借修复扩大功能或权限。交付修改前后差别、测试结果和仍未验证的地方。
```

**示例**

```text
如果旧版本修改前缀后仍能下载旧计划,请这样修:任一名字、前缀或其他文件名变化时,立即清空旧结果并禁用下载,提示重新预览。测试顺序为预览 trip → 改成 holiday → 不重新预览直接点击下载;此时不得导出 trip 计划。再预览后才能下载 holiday 计划。不要增加自动改名功能。
```

这是第二个构造反例。本书提供的版本已主动处理输入失效;你做自己的版本时,拿同样步骤验证。反馈应保留你真正看到的现象,没有遇到的错误不要冒充运行记录。

---

### IV · 亲手验收,不必读完所有代码

本章采用社区实践中的一个具体方法:让 agent 实际操作程序,而不只阅读程序后宣称正确。[^2]你再亲手做下面几个小检查。代码测试能覆盖规则,浏览器检查能发现按钮失效、输出不可见或窄屏看不全;它们不能互相替代。

| 试一次 | 你应当看到 |
| --- | --- |
| 三张练习照片 | 三行,顺序 003 / 011 / 020,没有漏项 |
| a.jpg 与 A.JPG | 按保守规则拒绝重复,不假定文件系统大小写敏感 |
| 空输入、路径、已有目标名 | 说明错误,下载按钮不可用 |
| 预览后修改前缀 | 旧表清空,重新预览才可导出 |
| 下载并用表格软件打开两份 CSV | 正向表三行,反向表把每一对名字对调 |
| 刷新网页 | 名字不保留;此前下载的文件仍由你保存 |

> 核验范围 · 本轮真实执行了本书工具的逻辑测试与浏览器交互检查,记录在十月审校文档。没有批量改动照片原件,没有测得节时比例或每次 ChatGPT 请求的用量。你让 AI 重新生成的另一份工具,需要重新验收。

### V · 真正改文件之前,再停一下

预览正确只说明已知名字的映射符合规则。工具看不到未列出的文件、软链接、磁盘权限、正在同步的云盘,也没有读取照片中的拍摄时间。大小写与 Unicode 等价重名检查是保守保护,不是对所有操作系统命名规则的完整实现。

确实要执行时,先在一个不含唯一原件的独立文件夹复制三张照片。把正向计划交给 agent,要求重新清点该文件夹,发现冲突、路径越界、数量不符就停止,先给 dry-run 结果。你确认这个明确目录和计划后,才允许执行;不要用一句「后面都不用问」替代授权。

执行者还应留下逐文件成功或失败记录,比较前后数量及内容哈希,并打开几张图片确认可读。中途失败可能只改了一半:此时不能把整份反向表盲目运行,要根据实际成功记录重新生成恢复计划并再确认。保留原件副本,直到你确认整理结果可以使用。

### VI · 什么时候值得继续做

用过两次再决定下一步。若你每次都需要按拍摄时间排序,再讨论读取时间信息的权限与缺失值;若只是临时整理三张图,系统自带批量改名也许已经够用。不要因为做出了网页,就顺手增加账户、分享服务器和自动扫描整盘。

留下 HTML、练习输入、两份映射和一段已知限制,下次要改时一起给 ChatGPT。记录这次准备、修订和验收花了多久,再去<a href="/books/chatgpt/cost-and-habits">长用</a>章判断它值不值得保留。能解释规则、能复现检查、能不用它,才算这个工具真正属于你。

> 先做一个你看得懂结果的小工具,再决定给它多少权限

## 引用与参考

01 · OpenAI · Best practices。任务要有上下文、边界和完成条件;交付前检查实际行为。核对于 2026-10-09。  (Best practices)
02 · Simon Willison · Agentic manual testing。吸收其让 agent 实际操作程序并留下检查证据的实践;本章工具与测试材料为本书原创,不代表其他程序也经过验证。  (Agentic manual testing)

---

*小工具 · 做一个自己真会用的东西 · ChatGPT · 把日常事情做完 · Aklman 著 · CC BY-NC-ND 4.0 · https://library.aklman.com/books/chatgpt/build-personal-tools*
