返回 Vibe
🎵 Vibe 2026-06-13 21:16

BAC 更新手记:让人类贡献不再隐形,账本也更扛造了

前言 熟悉的小伙伴应该还记得,半个多月前我写过一篇《开源新项目 BAC:给 AI 编程一个篡改可发现的贡献记录》,把 BAC 这个"给...

#Claude Code #Vibe Coding #发布公告
BenszConan 的头像

BenszConan

管理员

前言

熟悉的小伙伴应该还记得,半个多月前我写过一篇《开源新项目 BAC:给 AI 编程一个篡改可发现的贡献记录》,把 BAC 这个"给 AI 编程做贡献归因"的小项目,从设计思路到技术实现捋了一遍;紧接着 skills 那边也顺手发了 v4.1.0 → v4.1.1,把 BAC 的贡献追踪真正落到日常开发流程里。那会儿 BAC 刚把"本地账本 + 云端锚定"的工作流打通,迭代到 v1.2.3,我心里还琢磨着总算能喘口气了。结果这两周它根本没停下,一口气从 v1.2.3 蹿到了 v1.3.2,整整七个版本。最让我意外的是,这次升级不只是修修补补,而是补上了 BAC 最被追问、也最该补的一块拼图——人类的贡献。今天就和小伙伴们聊聊这两周到底发生了什么 (~ ̄▽ ̄)~

被反复追问的那个问题,终于有解了

如果说这一轮更新只让我挑一个亮点,那一定是 v1.2.4,它有个很贴切的小标题——让人类贡献不再隐形

这件事得从 BAC 诞生之初的一个"先天不足"说起。早期 BAC 记得最勤快的,是 AI 生成了什么、工具跑了什么测试、系统打了什么 checkpoint,这些都很好。但你作为"人"在这个过程里到底做了什么?你在对话框里临时敲进去的那句"换个思路"、你否决掉的那个方案、你补充的关键约束——这些人类主动输入,恰恰是最难被自动捕获的,于是很容易被系统性地漏掉。

漏掉的后果很微妙:账本看起来热热闹闹,一拉时间线几乎全是 AI 的功劳,人反而成了那个隐形的角色。这就尴尬了——BAC 当初的立身之本不就是"分清人机贡献"吗?结果自己先把自己绕进去了。

v1.2.4 给出的答案是两条新命令。一条是 bac input record,它会在 AI 工具收到你消息的那一刻,自动追加一条标记为 human 来源的事件,把消息的来源、脱敏后的摘要、分类和证据一起记下来,重复的消息还能幂等跳过,不会记重。另一条是 bac input import-log,可以从项目里像 Prompts.md 这样的 prompt 日志里批量补录历史输入,重复导入会自动跳过已经记过的部分。配合 bac inspect --human,你只要一个参数,就能把整条时间线里属于你的那部分单独拎出来看。

比命令更重要的,是一次理念上的校正:"批准"不等于"创作来源"。你按下批准键,只是同意 AI 的产出进入项目,并不意味着那段代码是你写的。v1.2.4 把这层语义钉死了,bac verify 还会在"账本里有 AI 活动、却找不到任何人类输入"时主动给出"疑似漏记"的警告。换句话说,BAC 不再只是个会记账的本子,它开始懂得提醒你:等等,这一轮里,人去哪儿了?

用得更踏实:账本从"能用"走向"扛造"

把人类贡献补齐之后,剩下六个版本(v1.2.5 到 v1.3.2)几乎都在干同一件事——把账本本身做得更可靠。技术细节挺多,但对使用者来说,意义就一句话:不管你是深夜一个人 vibe coding,还是开几个 agent 同时帮你干活,账本都不会轻易乱掉。

最容易出岔子的,是"几个进程同时写"和"git 回退或合并"这两种场景。早些时候,偶尔会遇到"第二条记录莫名丢了"或者"账本尾部断了一截"的情况。v1.2.5 和 v1.2.7 给日常写入上了一把账本锁,把"读取当前状态 → 构造新事件 → 追加写入"这几步串成一条不可打断的流程,并且会主动拒绝那些基于过期状态拼出来的事件——从根上断了"两个人基于同一个旧记录各写一条"的竞争。

v1.3.0 则动了一次"外科手术":v2 容器的写入不再用"原地往后 append"的老办法,而是先在账本锁里重建一个临时容器、校验通过后再原子替换原文件。好处很直接——进程中途崩了、或者并发写撞上了,也不容易再把容器的尾部写坏。同一个版本里,bac repair stale-tail 也复用了这条统一路径,日常写入和历史修复用的同一套可靠性策略,不会再各干各的。

那万一某个老账本已经断尾了呢?v1.2.6 专门新增了 bac repair stale-tail 这个命令来兜底。它默认是"只看不改"的 dry-run 模式,先把修复计划摆给你看,你确认了再带 --apply 动手;而且它只允许重接哈希链,绝不改动事件的内容、归因和签名。这个边界划得很克制——它被设计成"修机械性断裂"的工具,而不是"悄悄改写贡献来源"的后门,应用之后还会自动追加一条 repair 记录和 checkpoint,把"修复这件事本身"也留在证据链里。

收尾的两个版本更偏体验。v1.3.1 把默认账本路径理顺成 docs/contribution.bacbac init 会顺手帮你把缺失的 docs/ 目录建好,新项目开箱即用;v1.3.2 则把写入锁挪到了项目目录之外,于是你 .bac 旁边再也不会冒出 .bac.lock 这种碍眼的临时文件,仓库目录干干净净。

小结

回头看看这两周,BAC 的进步其实可以浓缩成两条线:一条是身份线——它从"把 AI 和工具做的事记清楚",迈到了"也把你自己做的事记清楚","批准不等于创作"这层窗户纸终于被捅破;另一条是可靠线——账本从"能用"被一路打磨到"扛造",并发、中断、git 折腾都不再轻易写坏它,哪怕断了尾也有安全的修复路径。换句话说,它越来越像一个你敢拿去对账、敢交给团队和审稿人审计的记录系统,而不只是一个练手的小玩具。如果你也常年泡在 vibe coding 里,时不时会被"这项目到底是谁干的"问住,不妨来试试,让它帮你把账记得明明白白。


项目地址:https://github.com/huangwb8/bensz-auto-contribution

同频道推荐

查看全部 →

评论区

0 条评论
游客只能浏览内容;登录后即可参与评论。
还没有评论,欢迎发表第一条看法。