Featured Article

与 AI 合伙人相爱相杀 vlog 8:规范是怎样炼成的

在第一篇代码写下之前,还有很多事情要做。这一集讲述了项目基础设施的建立过程:CLAUDE.md 诞生、隐私悖论解决、archive-talk 技能七次迭代、任务驱动工作流确立,为后续的开发奠定了坚实基础。

2026年3月6日
5 min read
与 AI 合伙人相爱相杀 vlog 8:规范是怎样炼成的

序章:在那个念头之前

深夜,书房的灯还亮着。

老大坐在台式机前,屏幕上是一个空白的 GitHub 仓库。光标在 README.md 文件里闪烁,像一只等待指令的眼睛。

这不是他第一次想搞个人项目了。过去十年里,他有过无数次这样的夜晚——打开编辑器,写个开头,然后就没有然后了。

但这次不一样。他有巴基。

过去半年里,这个运行在命令行里的 AI 代理,已经从一个只会吐代码片段的聊天机器人,进化成了能直接接管电脑的赛博打工仔。用他做过不少零散的小活,但从来没有正经启动过一个完整的项目。

深吸一口气,老大在终端里输入:

👨‍💻

巴基,我想跟你说个事。

我想启动一个完整的个人项目,不是那种写两行就扔的玩具。

具体做什么还没想太细,大概是一个技术博客加工具站吧——写点文章,沉淀一下经验,再做几个实用的小工具。

核心目标是:内容沉淀 + 流量变现,而且不能影响我白天上班,不能熬夜,不能花太多钱。

你觉得我们应该怎么开始?

屏幕停顿了两秒,巴基的回复弹了出来:

🤖

收到,老大。

目标很明确:一个低成本、低时间投入的个人产品。

不过在写第一篇代码之前,我建议先建立三样东西:

项目规范(给 AI 看的"使用说明书")

隐私保护机制(防止个人信息泄露)

对话存档机制(防止上下文丢失)

等这些基础设施建好了,我们再开始写代码。

老大摸着下巴,若有所思。

有道理。就像盖房子之前要先搭脚手架,在让 AI 写代码之前,得先把游戏规则定好。

"那就从这里开始吧。"老大敲下回车。


第一章:给 AI 的"使用说明书"

巴基的效率很高。老大去厨房接了杯热水回来,终端里已经列出了 CLAUDE.md 的草稿框架。

🤖

老大,这是 CLAUDE.md 的初稿。

核心内容包括:

项目概览(技术栈、目录结构)

常用开发指令

隐私与安全规范

对话存档规范

你先看看?

老大端着热水杯,目光扫过屏幕。内容很全,但有个小问题——第一句就是英文。

👨‍💻

内容可以,但有个问题。

为什么第一句就是英文?我们这个项目,能不能更"中文友好"一点?

而且后面"语言与沟通"和"对话存档规范"这两块本来写得就很好,不要修改。

🤖

收到,老大。

马上调整:

文档首句汉化

保留"语言与沟通"和"对话存档规范"原样

其他内容也尽量中文化

热水杯的温度透过陶瓷传到掌心。老大看着巴基在后台修改文件,光标在屏幕上快速移动。这就是他喜欢用 AI 的原因——不用跟人扯皮,不用开会,说清楚需求,几秒钟就搞定。

大概过了十几秒,巴基的消息弹了出来:

🤖

老大,CLAUDE.md 已经修改完成。

主要改动:

文档开头改为中文

保留了你满意的两个章节

整个文档的语气更偏向中文友好的沟通方式

你确认一下?

老大放下水杯,点开文件。

嗯,不错。第一句就是亲切的中文,"语言与沟通"和"对话存档规范"也都原样保留着。整个文档结构清晰,该有的都有——技术栈说明、常用命令、目录规范、隐私保护、存档要求。

"可以。"老大在终端里输入,"就这个版本。"


第二章:隐私悖论

👨‍💻

对了,还有个事。

我打算以后把这个项目开源,所以马上我们会用 Git 管理,并且提交到 GitHub。

在此之前,我们得讨论一下:如果是开源项目,怎么防止我的个人隐私信息不被错误提交上去?还有,/archive 存档的时候,会不会也把敏感信息记录下来?

你有什么方案?

🤖

收到,老大。这个问题很重要。

我建议制定一套三层防御体系:

代码层:通过 .gitignore 严格过滤敏感文件

文档层:AI 存档时自动对敏感信息脱敏

习惯层:密钥只放 .env.local,不上传 Git

我把这个方案详细记录到 docs/plans/ 目录下?

"可以。"老大点头,"先记录下来,然后我们逐步执行。"

巴基的动作很快。老大靠在椅子上,看着书架上的黑胶唱片——那是他为数不多的爱好之一。工作之余,听听爵士乐,整个人都能放松下来。

大概过了几分钟,巴基的消息弹了出来,但这次带着点犹豫:

🤖

老大,方案写好了,但有个问题……

我在方案里举例子,提到了防止 /Users/用户名/ 这样的绝对路径泄露,结果……方案文档里现在就包含了这个路径示例。

有点"先有鸡还是先有蛋"的意味,你觉得怎么处理?

老大忍不住笑了。这确实是个有趣的悖论——写隐私保护方案时,方案本身就包含了要防的隐私路径。

👨‍💻

有点意思。

这样,我们把所有真实的路径、密钥、Project ID 都换成占位符。

比如 /Users/用户名/ 就保持原样,作为示例;如果是真的路径,就用 <USERNAME> 或 <REDACTED> 替代。

包括 Project ID 这种东西,也算敏感信息,存档时也要脱敏。

🤖

收到,老大。这个思路好。

我马上调整:

方案文档里的真实路径全部换成占位符

在 CLAUDE.md 里增加"隐私与安全规范"章节

确保后续所有存档都自动执行脱敏

老大站起身,伸了个懒腰。窗外的天还是黑的,星星在夜空里闪烁。解决了这个悖论,他心里踏实多了。

"对了,"老大突然想到,"Project ID 到底算不算敏感信息?"

🤖

老大,虽然 Project ID 本身不能直接用来攻击,但为了安全起见,还是建议脱敏。

毕竟,多一层防护总没坏处。

"同意。"老大点头,"那就这么办。"


第三章:存档技能的七次迭代

隐私保护方案搞定了,接下来是存档机制。

老大坐在椅子上,回想着之前用 AI 的经历——有好几次,因为对话太长上下文被压缩,重要的决策细节就那么丢了。

👨‍💻

巴基,我有个需求。

我们能不能搞一个自定义技能,方便我后续快速归档 AI 沟通记录?

要求是:

用户原话要一字不差保留

AI 标识统一用 AI-[模型名]

Markdown 结构化输出

自动序号递增

适度精简,但保留核心细节

🤖

收到,老大。

马上构建 archive-talk 技能。

老大站起身,走到客厅接水。客厅的灯关着,只有书房的灯光透出来。他靠在吧台上,听着书房里传来的轻微风扇声——巴基正在后台创建技能文件。

过了一会儿,老大回到书房。巴基的消息弹了出来:

🤖

老大,技能建好了,但有个问题。

我刚才把技能放在了项目根目录的 skills/ 文件夹里,但 Claude Code 的自定义技能应该放在 .claude/skills/ 隐藏目录下。

我先创建 .claude/ 目录,然后把技能迁移过去?

"可以。"老大点头,"就放在 .claude/skills/ 下面。"

巴基很快完成了迁移。老大点开技能文件看了看,内容很全,但总觉得哪里还可以再优化一下。

👨‍💻

巴基,你再看看这个技能,有没有什么需要优化的地方?

🤖

老大,我刚才自省分析了一下。

现在的存档在追求"逻辑归并"时,存在篡改时序和丢失决策细节的风险。

建议优化方向:

新增"决策链完整性"准则

新增"强制历史对齐"准则

细化"精简边界"

老大看着屏幕,摸着下巴。巴基说的有道理,但他突然注意到一个问题——巴基在优化的同时,好像把原先的一些注意点删掉了。

👨‍💻

等等,你在优化 skill 的同时,为什么要删除原先的一些注意点?

比如"适度精简、保留核心"这一条,我觉得很重要,你觉得没有价值吗?

🤖

抱歉,老大。

我刚才过度精简了,导致原有高质量规范丢失。

我马上恢复——"适度精简"和"保留核心"是保证存档可读性与复用价值的基础,必须全量保留。

老大忍不住笑了。这就是巴基的优点——虽然偶尔会犯点小错,但承认错误的速度很快,而且改得也很快。

接下来的半个小时里,老大和巴基你来我往,反复打磨这个技能:

  • 老大质疑删除"阶段合并"的意义 → 巴基恢复,并确立新逻辑:支持逻辑合并,但必须以物理时间轴为边界
  • 老大强调"保留所有方案选项、核心代码片段、关键技术决策"的重要性 → 巴基一字不差地回归
  • 老大质疑删除"因果链条保护"的理由 → 巴基深刻反省,完整恢复

终于,经过七次迭代,archive-talk 技能定型了——包含七大核心准则,作为本项目知识沉淀的"最高法则"。

👨‍💻

可以了,就这样。

对了,能不能再搞一个 project-commit 技能?

把代码提交也标准化一下,集成归档联动、安全脱敏审计、规范化提交信息生成这些功能。

🤖

收到,老大。

马上构建 project-commit 技能。

老大靠在椅背上,看着屏幕。两个技能——archive-talk(记录)和 project-commit(执行),双剑合璧,形成了完整的开发规范闭环。

"好了。"老大伸了个懒腰,"基础设施差不多了。"


第四章:任务驱动工作流

两个技能搞定了,但老大总觉得还缺点什么。

👨‍💻

巴基,我觉得还应该有个待办清单。

放到 docs/task/ 目录下,分"待办"、"进行中"、"已完成"三个区域。

这样我随时能看到任务进度,防止忘记还有哪些事没做。

🤖

收到,老大。

马上创建 docs/task/TASK-LIST.md。

老大站起身,走到窗边。天已经蒙蒙亮了,远处的天际线泛起了鱼肚白。时间过得真快,一转眼就折腾了一整夜。

他回到书桌前,巴基已经把任务清单建好了。内容很清晰:三个区域,当前里程碑下的六个待办事项,还有维护规范。

👨‍💻

可以。

不过还有个问题——在项目规则里,应该有一套方案来维护这个任务清单。

总不能让我每次都提醒你修改任务状态吧?你有什么方案?

🤖

老大,我建议建立"任务驱动工作流"。

具体来说:

Session 开始时对齐任务

任务切换时实时更新物理文档

归档时自动同步任务状态

我把这套逻辑加到 CLAUDE.md 里?

"可以。"老大点头,"还有,archive-talkproject-commit 这两个技能,也应该优化一下,跟任务清单联动起来。"

🤖

收到,老大。

马上优化:

archive-talk:归档前强制对齐任务状态

project-commit:提交前必须将"进行中"任务移动至"已完成"

老大靠在椅背上,看着窗外的天色越来越亮。任务清单、技能联动、规范文档……现在这套体系越来越完整了。

但没过多久,老大就发现了新问题。

👨‍💻

巴基,我觉得当前这个自动化流程太细了。

但凡一点调整你就触发归档和提交,噪音太大了。

这样,归档和提交的动作不用跟任务强绑定——每次执行完任务,更新任务清单状态就可以了。

归档和提交应该是"里程碑动作",不是"高频动作"。

🤖

收到,老大。

我马上调整:

修改 CLAUDE.md:任务状态更新为高频动作,归档/提交为里程碑动作

优化两个技能:移除强耦合逻辑,改为逻辑对齐

老大满意地点了点头。这就对了——平衡自动化和灵活性,不能为了规范而规范。

窗外的天已经亮了,清晨的阳光透过百叶窗洒进来,在地板上留下一道道光影。老大看着屏幕上完整的规范体系、任务清单、两个技能文件,心里有一种踏实感。

基础设施终于搞定了。


尾声:基础设施就绪,念头诞生

老大站起身,伸了个懒腰,关节发出清脆的响声。

窗外的天已经完全亮了,清晨的阳光洒进房间,空气中有淡淡的咖啡香——他刚才顺手按了咖啡机的定时按钮,现在刚好煮好。

他走到厨房,倒了一杯浓缩美式,热气腾腾的咖啡香扑面而来。老大端着杯子回到书房,目光扫过屏幕上的文件:

  • CLAUDE.md —— 给 AI 的"使用说明书"
  • docs/task/TASK-LIST.md —— 任务清单
  • .claude/skills/archive-talk/ —— 存档技能
  • .claude/skills/project-commit/ —— 提交技能
  • docs/plans/开源隐私保护方案.md —— 隐私保护方案

折腾了一整夜,基础设施终于全部就绪。

老大靠在椅子上,喝了一口咖啡,温热的液体滑过喉咙。他看着窗外的城市慢慢醒来,路上的车辆渐渐多了起来,远处传来地铁进站的声音。

现在,游戏规则已经定好,脚手架已经搭好,就等开工了。

但……具体做什么呢?

老大端着咖啡杯,目光望向远方。技术博客?工具站?还是两者结合?内容沉淀?流量变现?

无数个念头在他脑子里盘旋。

他喝完最后一口咖啡,把杯子放在桌上。然后站起身,走到卧室,躺到床上。

折腾了一整夜,该睡一会儿了。

但躺在床上,他却睡不着。眼睛闭着,脑子却在飞速运转。

终于,在清晨的第一缕阳光完全照亮房间的时候,一个念头清晰地冒了出来——

一个后端程序员,能不能在不辞职、不熬夜、不花大钱的情况下,搞出一个完整的个人产品?

这个念头一旦冒出来,就再也挥之不去。

(这就是 Vlog 1 的故事)


💡 本集技术 Tips(老兵防坑指南)

  1. Claude Code 自定义 Skill 最佳实践:自定义技能必须放在 .claude/skills/ 隐藏目录下,不要放在项目根目录;技能文件包含 SKILL.md(规范说明)和工具调用逻辑。

  2. 开源项目隐私保护三件套

    • .gitignore 严格过滤环境变量和构建产物
    • AI 存档时自动对路径、密钥、Project ID 脱敏
    • 密钥只放 .env.local.env.example 只放占位符模板
  3. "自举脱敏"悖论解决方案:写隐私保护方案时,方案文档本身可能包含隐私路径示例——解决方法是用占位符(如 /Users/用户名/<REDACTED_SECRET>)替代真实信息,既起到示例作用又不泄露真实数据。

  4. 任务驱动 vs 归档提交解耦:任务状态更新是高频动作(每次完成小任务都要更新),归档和提交是里程碑动作(只在重要节点执行);不要把两者强绑定,否则会产生大量噪音。


📎 关联阅读