每天早上那 15 分钟的手工活,我整个甩给了 AI
把每天的复制粘贴、文件整理、例行检查做成“只属于你”的自动化。附能直接复制运行的脚本,以及我亲手翻过的车里学到的安全交活法。
每天早上,在冲咖啡之前,我都在做同一套动作。
打开文件夹,瞄一眼昨天的日志,目测一下测试有没有挂,把在意的改动贴进记事本。单看每一步,也就一分钟。可全套做下来,等我忙完,咖啡都凉了。天天如此,除了周末,雷打不动。
某天早上,我忽然冒出一个念头:“这事,非得我来做吗?”
直说结论:不必。现在这套例行公事,是趁我洗脸的工夫由一段小脚本干完的。而且比我自己做得还细。今天我就把这事讲一遍,连代码一起全摆出来。
“自动化”,不是程序员的专利
一提自动化,大家脑子里冒出来的都是 CI/CD、部署流水线那种唬人的东西。但我想说的,是更不起眼的事。
你每天迷迷糊糊用手在做的那些复制粘贴,让机器替你做掉。
比如这些:从好几个文件里把数字捡出来汇成一张表;按固定格式把笔记理顺;把昨天和今天有啥变化并排看一遍;把过期的旧笔记翻出来。哪一样都不是“动脑”,全是“动眼睛和手指”的活儿。人来做,会出错,会腻,最要命的是时间就这么白白溶掉了。
这正是 AI——具体说就是 Claude Code——派上用场的地方。要点只有一个:别把所有事一股脑甩给 AI。“你看着办”是事故的开始(待会儿我用自己的翻车经历来证明)。换个做法:先把读的范围、要做的事、不准碰的东西定好,只把那段重复劳动交出去。光这一下,世界就不一样了。
顺带说一句,这里常冒出来的“harness(脚手架)”这个词。直译是马具,其实就是别让 AI 跑偏的那圈外框:喂它什么、放它做到哪、怎么留记录、出问题怎么叫停。记住这一句就行——先把这圈框搭好。
哪些交出去,哪些自己盯
交活之前,先画一道线。就一次。偷掉这步,看着是快了,回头一定吃苦头。我推荐分四档。
| 阶段 | 交给 AI | 自己盯 |
|---|---|---|
| 调查 | 把日志、改动、文件内容摘要出来 | 哪个重要、按什么顺序处理 |
| 整理 | 统一格式、汇成表、出草稿 | 内容对不对、最后点头 |
| 检查 | 指出挂掉的测试、过期笔记、可疑改动 | 采纳哪条意见 |
| 执行 | 那些一成不变的生成、复制 | 删除、发送、发布这几个按钮 |
画线的办法很简单。能后悔的,交出去;不能后悔的,自己用手指按。 删除、发送、扣费、发布——这四件,一开始全设成“先问人再说”。等哪件确认安全了,再往后升级成自动。顺序反过来,你会哭。
这套画线的思路,我在 审批与沙箱的搭法 里挖得更深,配着读会更踏实。
先跑起来:让它替你做每天早上的例行检查
废话到此为止,上真家伙。我把每天早上那套“看日志和测试,记下今天要当心啥”,原样做成一段脚本。有 Node.js 和一个 Anthropic 的 API key 就能跑。
存成 scripts/morning-check.mjs。注释我全写成中文了。
#!/usr/bin/env node
import { spawnSync } from "node:child_process";
import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs";
import { join } from "node:path";
const logDir = ".claude-logs";
const lockFile = join(logDir, "morning.lock"); // 防止重复启动的“锁”
const stamp = new Date().toISOString().replace(/[:.]/g, "-");
const logFile = join(logDir, `morning-${stamp}.log`);
function fail(message) {
console.error(message);
process.exit(1);
}
// 跑一条命令,原样把输出接回来的小帮手
function run(command, args, options = {}) {
const result = spawnSync(command, args, {
encoding: "utf8",
shell: process.platform === "win32", // 让它在 Windows 上也能跑的小咒语
...options,
});
const output = `${result.stdout || ""}${result.stderr || ""}`;
if (result.status !== 0) {
writeFileSync(logFile, output);
fail(`命令失败: ${command} ${args.join(" ")} / 详情见 ${logFile}`);
}
return output;
}
// 忘了配钥匙,就啥也不做、直接停(这点很重要)
if (!process.env.ANTHROPIC_API_KEY) {
fail("请先设置 ANTHROPIC_API_KEY。");
}
mkdirSync(logDir, { recursive: true });
if (existsSync(lockFile)) {
fail(`上一次的检查还在跑: ${lockFile}`);
}
writeFileSync(lockFile, String(process.pid));
try {
// 1. 先把现在的状态收集起来(这一步不是 AI,就是普通命令)
const status = run("git", ["status", "--short"]);
const tests = run("npm", ["test"]);
// 2. 把收集到的材料交给 AI,让它只用要点列出今天该当心的地方
const prompt = [
"你是我每天早上的检查员。",
"读下面的 git status 和测试结果,用要点列出今天该当心的地方。",
"不要改代码、不要删除、不要 commit、不要发送,只许读。",
"按 认证 / 重复执行 / 回滚 / 日志 / 需人工判断 分类。",
"",
"git status:",
status || "(无改动)",
"",
"test output(只取末尾):",
tests.slice(-12000), // 别把长日志整个塞过去,末尾就够了
].join("\n");
const report = run("claude", [
"-p", prompt,
"--max-turns", "5",
"--permission-mode", "plan", // 只读模式,不让它改东西
"--output-format", "text",
]);
writeFileSync(logFile, report);
console.log(`今天的检查备忘已写出 → ${logFile}`);
} finally {
rmSync(lockFile, { force: true }); // 跑完一定把锁解开
}
运行就这一行。
node scripts/morning-check.mjs
几十行而已,可“收集材料”“交给 AI”“限定只读”“用锁防重复启动”“保存日志”已经全在里头了。这就是自动化的骨架。要是你早上的例行公事跟我不一样,把 git status、npm test 那几句,换成你平时敲的命令就行。我特意写得不懂内部也能复制运行,等你上手了,再动手改。
这三个场景里它最管用
1. 把散落各处的文件并成一张表 账单 CSV 有 7 个,零散撒在文件夹里。每个月我都得手动一个个打开、求和。一个个贴进 Excel、相加、再核一遍,差不多 20 分钟。更糟的是上个月,我抄错一位,把一个错了一位数的数字直接报了上去,事后脸都红了。现在一句“把这个文件夹里的 CSV 全读了,求总和,再把明显偏离平均值的行单独列张表”就完事。人按计算器会按错一位,机器不会。连核对那道工序都一并省了。
2. 把昨天和今天的差异并排摆出来 有时候你只想知道配置文件或笔记跟昨天的备份比,“到底改了啥”。从头到尾一行行对着读,简直是地狱,眼睛直打滑,根本看不出哪里不一样。那就让它只把差异捡出来,至于“这是个有意义的改动,还是单纯敲错字”,由我来判断。判断不交给 AI,只把“找出变化”这步交出去。目测三分钟,缩成了五秒。
3. 把乱七八糟的笔记整成固定格式 开会时的潦草手记。日期乱、没标题、错字一堆、光剩箭头看不懂。我让它“按我定的模板整理,但内容一个字都别加”。这里的关键是——不是让它从零写,而是只让它把形状理顺。一旦说“你帮我归纳归纳”,AI 就会自作主张,把我压根没说过的东西也补进去。盯死它:只整形状。光这一下,它就不会再给我注水编瞎话了。
我亲手翻过的 3 次车
不装了,老实说。我头几回自动化,全是连环事故。
第一桩。一句“你帮我整理整理”就全甩出去了。 结果呢,AI 把删了就出大事的配置文件也一并“整理”掉了。能跑的代码倒是留着,可那天早上我是真的血往下沉。.env 没了,服务起不来,恢复花了一个钟头。打那以后,我每次必先指明“只准在这个文件夹里”“这个文件别碰”。指望 AI 自己心领神会,门儿都没有。
第二桩。把整份日志一股脑塞进 prompt。 想着体贴,几万行全递过去,结果关键那行报错被埋了,AI 指着八竿子打不着的地方说“问题在这儿”。钱和时间倒是蹭蹭涨,最后还得自己重读一遍。现在我像上面代码那样,用 slice(-12000) 只递末尾。报错都出在最后。AI 也最仔细读最后那几行。所以末尾就够了。
第三桩。同一段脚本被跑了两遍。 任务计划那儿没配好,早上的检查几乎同时启动了两次。日志互相覆盖,谁是真的都分不清了。最坑的是,如果这是“写入类”的活儿——同一份备忘生成两遍,回头还得手动去删重复。自从加了锁文件(那把“锁”),后来的那次会被“上一次还在跑”一句弹回去,一招见效。区区三行的小机关,可没有它,越是忙起来的早上越要吃亏。
要上手,从这里开始
千万别一上来就奔着全自动去。挑一件就算搞砸也不至于哭的小活儿:每天早上的检查、文件汇总、笔记整形。这个量级,刚刚好。
步骤永远是同一套。① 把让它读的范围划窄 → ② 把目标(成品长啥样)用话说清楚 → ③ 检查尽量交给命令去跑 → ④ 删除、发送、扣费、发布这几件,固定在“先问人”。等熟了、确认安全的操作,再往后升级成自动。光是守住这个顺序,事故就会少得吓你一跳。
想让它每天定点跑,就挂到 cron 或任务计划程序里。
# Linux/macOS: 工作日早上 8 点 15 执行
15 8 * * 1-5 cd /path/to/repo && /usr/bin/node scripts/morning-check.mjs >> .claude-logs/cron.log 2>&1
# Windows: 注册成每天 8:15 的计划任务
schtasks /Create /TN "MorningCheck" /SC DAILY /ST 08:15 /F /TR "powershell -NoProfile -ExecutionPolicy Bypass -Command \"cd C:\path\to\repo; node scripts\morning-check.mjs\""
卡住时该看哪儿、--permission-mode 这类细节参数啥意思,官方 CLI 参考 是一手资料。出问题先翻这儿,能少绕不少弯。要是第一步就卡壳,也可以挑着看看 Claude Code 最初的 30 分钟。
我实际试下来的结果
说句实话,头一个星期,脚本反而比手工还慢。忘配钥匙就停、日志太多答得离谱、计划任务压根没启动。我全是手动一个个修过来的。
可从第二周起,开始顶用了。现在我早上洗完脸回到桌前,.claude-logs 里整整齐齐摆着今天该看的 3 到 5 行:“测试全绿,不过这个依赖旧了”“改动里有个我没印象删过的文件,需确认”——就这种。
最让我高兴的,是每天早上那股“发懒”劲儿没了。再也不用靠惯性硬撑着做同一套动作,省下来的时间能挪去做真正动脑的活儿。与其去找一个更聪明的 AI,不如把自己那些麻烦的 5 分钟,一个一个交给机器。不起眼,但这招最顶用。
小结
自动化,不是部署那种大场面。它就是——把你每天迷迷糊糊用手做的复制粘贴,让机器替你做掉。仅此而已。
诀窍就三条:把让它读的范围划窄;把成品长啥样用话说清楚;不能后悔的操作,留着自己用手指按。先把上面那段脚本按你自己的活儿改一改跑起来,把明天早上的 5 分钟先砍掉一个。
想更成体系地学,或者想把团队的活儿成批自动化,教程一览 里备了不少能边动手边学的东西。想拿自己的具体情况来聊,从那儿招呼我一声就行。
免费 PDF: Claude Code 速查表
输入邮箱即可获取一页 PDF,整理常用命令、审查习惯和安全工作流。
我们会妥善保护你的信息,不发送垃圾邮件。
把 Claude Code 变成真正能带来结果的工作流
先领取中文说明的免费 PDF,再进入英文商品页选择合适的教材。如果你需要团队落地、流程设计或内容变现支持,也可以直接咨询。
关于作者
Masa
专注 Claude Code 实务流程、团队导入和内容转化的工程师。
相关文章
Claude Code 免费 PDF 漏斗清单:把文章流量变成注册和商品点击
用 Claude Code 检查文章如何引导读者到免费 PDF、Gumroad 教材和咨询入口。
从Obsidian到CLAUDE.md的Claude Code流程:不再反复解释上下文
把 Obsidian 工作笔记整理成 CLAUDE.md 运行说明,让 Claude Code 每次都带着正确上下文开始。
Claude Code 收入 CTA 路由:从文章分流到 PDF、Gumroad 与咨询
用 Claude Code 按读者意图把文章流量分到免费 PDF、Gumroad 教材或咨询入口。