ORANGE BOOK · CODEX

第十五章 自学编程与做小工具

15.1 一个被压抑很久的念头

很多人心里都有过这种念头:

  • "要是我会编程,就给老婆写个简单的家庭账本网页"
  • "要是我会编程,就写个生日提醒程序,永远不忘亲友生日"
  • "要是我会编程,就把自己看过的书做成个豆瓣似的小站"
  • "要是我会编程,就给我妈做个买菜清单 App"
  • "要是我会编程,就把自己想法做出来给别人看"

然后这个念头就被压下去了——"算了,学编程要好几年呢"。

2026 年,这句话不成立了。

Codex 让"完全不会编程的人"也能做出真实可用的小工具。这一章会带你做三个:

  • 一个家庭账本网页
  • 一个生日提醒脚本
  • 一个微信文章爬虫

每个都从零开始,假设你完全没编程基础。

15.2 准备好心态

在动手前,先调整一个心态:

你不需要"学会编程"才能做小工具。 你需要的是:

  1. 会描述问题 —— 用人话把"我想做什么"说清楚
  2. 会判断结果 —— 看 Codex 给出的东西是不是对的
  3. 会问后续问题 —— 出错了能跟 Codex 描述哪里不对
  4. 有耐心试错 —— 第一次成功的概率不是 100%

具体的代码、技术栈、命令?全部 Codex 帮你处理。你的角色是"产品经理 + 测试员",不是"程序员"。

15.3 项目一:家庭账本网页

想做什么

一个简单网页,老婆和你都能用:

  • 记录每笔花销(金额、类别、备注、日期)
  • 看本月总花销
  • 按类别看占比
  • 数据存在浏览器本地(不用注册账号)

第 1 步:把需求说清楚

我想做一个家庭账本网页,给我和我老婆用。

功能:
1. 加一笔账:金额、类别(餐饮/购物/交通/其他)、备注、日期(默认今天)
2. 列表显示所有花销,按日期倒序
3. 顶部显示"本月总额"
4. 一个简单的饼图,按类别看本月占比
5. 数据存浏览器本地,不需要后端

约束:
- 我完全不会编程,请用最简单的技术栈
- 要好看,移动端能用
- 老婆也能在她的手机浏览器打开(你考虑分享方案)

请你先告诉我:
- 你打算用什么技术做
- 大概几步能完成
- 我需要装什么
- 全部跑起来后我老婆怎么打开

第 2 步:Codex 给方案

它可能回复:

推荐方案:

技术栈:
- 单一 HTML 文件 + JavaScript
- 不依赖任何后端
- 用 Chart.js 做图表(CDN 引入)
- 数据存 LocalStorage

为什么:
- 单文件部署最简单,你和老婆只需要打开一个 URL
- 无需服务器,零运维成本
- 移动端浏览器都支持

步骤(约 30 分钟):
1. 我写一个 budget.html
2. 你在浏览器打开,验证功能
3. 我们调整样式让它好看
4. 部署到免费托管(Netlify Drop / GitHub Pages),生成永久链接
5. 你和老婆各自把链接收藏到主屏幕

你需要装什么:
- 不需要装任何东西(如果有 Chrome / Safari 就行)
- 部署阶段需要免费的 Netlify 账号

下一步:我开始写 budget.html,写完你打开看一下效果?

第 3 步:让它写

开始写

它会写一份 budget.html。这个文件包含 HTML + CSS + JavaScript。

你的工作:双击这个文件,浏览器打开,试着加一笔账,看看显示是否正常。

第 4 步:迭代

第一版肯定有不满意的地方。直接说:

1. 类别按钮太小了,手机上不好按
2. 饼图的颜色太花了,能不能用低饱和度的颜色
3. 加一个"删除"按钮,每条记录后面
4. 顶部"本月总额"想加一个对比:"比上月多/少 X%"

它会改 budget.html。再打开浏览器(或刷新),看效果。

关键:每次只改一两件事。不要一次提 10 个修改,那样容易乱。

第 5 步:部署给老婆用

功能我满意了。现在帮我部署到 Netlify Drop,
生成一个公开链接,让我老婆能打开。
具体步骤是?

它会一步步引导:

  1. 注册 Netlify(免费)
  2. 打开 https://app.netlify.com/drop
  3. 把 budget.html 文件拖进去
  4. 等几秒钟,得到一个 https://random-name.netlify.app 的链接
  5. 把链接发给老婆,她在手机浏览器打开,加到主屏幕

全程你只敲了文字描述,没写一行代码。 你做出了一个"能给家人用"的真东西。

15.4 项目二:生日提醒脚本

想做什么

做一个程序,每天早上 9 点检查我的"亲友生日清单",
如果今天有人生日,自动给我发提醒(微信 / 邮件)。

第 1 步:先聊清楚

我想做一个生日提醒程序:
- 我有一份亲友清单,里面有每个人的姓名和生日
- 每天早上 9 点检查,如果今天有人过生日,发提醒给我
- 提醒方式:发到我的邮箱(QQ 邮箱)

我不会编程。请告诉我:
- 用什么方式做最简单
- 亲友清单怎么维护(让我自己改方便)
- 怎么让它"自动每天 9 点跑"

第 2 步:Codex 给方案

推荐方案:

1. 亲友清单:用一个简单的 friends.csv 文件
   - 你用 Excel 打开就能改
   - 字段:姓名、生日(YYYY-MM-DD)、关系(家人/朋友/同事)

2. 程序:一个 Python 脚本 check_birthdays.py
   - 读 friends.csv
   - 找出今天生日的人
   - 给你的 QQ 邮箱发邮件

3. 自动每天跑:
   - macOS:用 launchd
   - Windows:用任务计划程序
   - 我帮你配置

你需要的:
- Python 3 环境(我教你装)
- QQ 邮箱开通"SMTP 授权码"(我教你怎么开)
- friends.csv 文件(我给你模板)

整体大约 1 小时完成。要开始吗?

第 3 步:动手

开始

它会带着你:

  1. 检查 Python 是否装好(python --version
  2. 创建 friends.csv 模板
  3. check_birthdays.py
  4. 教你拿 QQ 邮箱授权码(一步步截图说明)
  5. 把授权码填到脚本里
  6. 测试发送
  7. 配置定时任务

每一步遇到问题你就说:"这一步报错了,错误信息是 X",它会帮你解决。

第 4 步:维护

亲友清单变了?打开 friends.csv 改就行(用 Excel 或记事本)。

想加新功能?比如"提前 3 天提醒"、"附上送礼建议",再跟 Codex 说一次:

现在的脚本只在生日当天提醒,能不能改成提前 3 天就提醒?
另外,对于"家人"关系的,附上一句送礼建议(比如"该考虑买礼物了")。

15.5 项目三:微信公众号文章爬虫

想做什么

订阅了 30 个公众号,但微信不是按时间线显示,老错过更新。想做一个:

  • 每天扫一遍这 30 个公众号
  • 把昨天发的新文章列出来,标题 + 链接
  • 整理成一份 Markdown 文件

第 1 步:场景化沟通

我想做一个公众号文章监控程序。

背景:
- 我订阅了 30 个公众号
- 微信里它们的更新不按时间排序,我老错过
- 我想每天看一份"昨天这 30 个号都发了什么"的清单

需求:
1. 我提供一份公众号清单(账号名 + 公众号 ID 或链接)
2. 程序每天检查这些号过去 24 小时的新文章
3. 输出一份 Markdown 文件:今天日期 + 每个号的新文章标题列表

挑战:
- 我知道微信公众号的爬虫不太好做(反爬严格)
- 你建议什么方案?

我可以接受方案:
- 通过 RSS 服务转换(如 RSSHub)
- 通过第三方公众号聚合服务的 API
- 其他你能想到的合规方案

第 2 步:Codex 给方案

你说对了:直接爬微信公众号反爬严格,且违反协议。

推荐合规方案:用 RSSHub。

RSSHub 是一个开源服务,把公众号转成 RSS。然后你的程序订阅 RSS 即可。

步骤:
1. 你拿 30 个公众号的 ID(公众号详情页能看到)
2. 用 RSSHub 公共实例(或自部署)生成 RSS 链接
3. 我写一个 Python 脚本:
   - 订阅这 30 个 RSS
   - 取昨天到现在的新条目
   - 输出 Markdown 报告
4. 配 Automation 每天 10:00 跑

整体大约 1 小时。

注意:
- 公共实例可能不稳定,可以考虑自部署 RSSHub(用 Docker,半小时)
- 不要高频抓取(每天 1-2 次合理)

要开始吗?

第 3 步:动手

跟着 Codex 一步步做:

  1. 它写脚本 wechat-monitor.py
  2. 你提供公众号 ID 列表
  3. 它生成对应的 RSS 链接
  4. 测试运行
  5. 调试(可能某些公众号 ID 错了)
  6. 配置每天自动跑

第 4 步:扩展

用了一周后,你可能想加:

  • "标题里有'AI'关键词的高亮显示"
  • "只列出阅读量 >1 万的文章"(如果数据可拿)
  • "自动给我邮件汇总"

每个扩展都是 5-10 分钟的事,跟 Codex 说一句即可。

15.6 学到的"模式"

做完这三个项目,你会发现一个通用模式:

描述你想做什么(用户视角)
        ↓
让 Codex 推荐技术方案
        ↓
你审核方案(不懂就问)
        ↓
让 Codex 写代码
        ↓
你测试效果(按用户视角)
        ↓
迭代(提具体改进)
        ↓
让 Codex 帮你部署 / 自动化

这个模式适用于几乎所有"个人小工具"项目。你不需要懂任何技术名词,只需要:

  • 能描述你想要什么
  • 能判断结果对不对
  • 能跟 Codex 沟通

15.7 推荐的"自学编程路径"

如果你做完几个小工具后,对编程产生了兴趣,想系统学一下,这里给一份"AI 时代的学习路径":

阶段 1(1 个月):会"读"代码

不是会写,是会读。当 Codex 给你代码时,你能看懂大致在做什么。

学法:

  • 找一本入门书(Python 推荐《Python Crash Course》)
  • 每章读完,让 Codex 出测试题考你
  • 不要自己写完整项目,只做习题

阶段 2(2 个月):会"改"代码

Codex 给你一份代码,你能在它基础上做修改。

学法:

  • 拿一个开源小项目(GitHub 上找)
  • 让 Codex 给你出"改进任务"(加个按钮、改个样式)
  • 你尝试改,Codex 当导师

阶段 3(3 个月):会"设计"程序

不是会写每一行代码,是能设计程序结构。

学法:

  • 找一个你想做的中型项目
  • 自己画结构图、流程图
  • 让 Codex 评价你的设计
  • 大部分代码让 Codex 写,你审核

阶段 4(6 个月):会"主导"项目

能独立完成"想法 → 设计 → 实现 → 部署 → 运维"。

学法:

  • 自己接小项目(朋友的需求、自己的痛点)
  • 用 Codex 提速但不依赖
  • 重点学:调试、性能、安全

关键认知:AI 时代的"会编程"标准变了。你不需要把每行代码默写下来,你需要能"指挥 AI 写出对的代码、判断它对不对、出问题能修"

15.8 适合零基础做的"第一个项目"清单

按难度排序,挑一个开始:

项目 难度 时间 满足感
计算器网页 1 30 分钟
Todo 清单网页 2 1 小时
番茄钟 2 1 小时
简易日记本 3 2 小时
个人书单管理 3 3 小时
家庭账本(本章项目一) 4 4 小时 极高
生日提醒(本章项目二) 5 1 小时
RSS 阅读器 6 1 天
个人博客 6 1 天
微信文章监控(本章项目三) 7 1 天
简单的小程序后端 8 1 周

强烈建议:从难度 2-3 的开始。第一个就挑难度 8 的,会被打击得放弃。

15.9 一些"非编程也要懂"的最低限度知识

你不用学完,但有概念会让 Codex 沟通顺很多:

文件与目录

  • ~ = 你的用户目录
  • . = 当前目录
  • .. = 上级目录
  • / = 根目录(Linux/macOS)/ 路径分隔符
  • * = 通配符

命令行基础

  • cd = 换目录
  • ls = 列文件
  • mkdir = 建目录
  • rm = 删(危险!)
  • cp = 复制
  • mv = 移动 / 重命名

Git 基础

  • git status = 看当前状态
  • git add = 暂存改动
  • git commit -m "信息" = 提交
  • git push = 推到远程

常见报错

  • "command not found" = 命令不存在 / PATH 没配
  • "permission denied" = 没权限
  • "no such file or directory" = 文件不存在
  • "syntax error" = 代码语法错了

不用记完,遇到了再问 Codex"这个报错什么意思"。

15.10 一个鼓励

我见过最励志的故事:

一个 50 岁的退休老师,从来没碰过编程。她想给小区做一个"独居老人互助平台"——简单网页,能登记需要帮忙的事、能对应志愿者。

她用 Codex 用了 3 个月。第一个月她连"什么是浏览器"都搞不太清。第三个月她做出来一个能用的网站,部署在 Netlify 上,小区 200 多户都在用。

她说:"我没学会编程,但我学会了怎么让 AI 帮我做想做的事。"

这就是 Codex 时代的"编程"。它不是技能,是一种新的表达自己的方式——你想做什么,就能做什么。

15.11 本章小结

  • 心态:你不需要"学会编程",需要会描述、会判断、会沟通
  • 三个零基础可做的项目:家庭账本、生日提醒、微信文章监控
  • 通用模式:描述 → 方案 → 写 → 测 → 迭代 → 部署
  • 真想系统学:4 阶段路径(读 → 改 → 设计 → 主导)
  • 第一个项目挑难度 2-3 的(Todo / 番茄钟),不要从难度 8 开始
  • 命令行、Git、常见报错有概念就行,不用精通

下一章讲"团队场景"——把个人玩法扩展到团队级流程。第十六章 · 团队协作与流程复用