@haiyangbg/buildbeat

中文文档
5.2.0发布于 2026/11/01MITES Module零依赖构建来源已验证

BuildBeat: Git-based project context management. Why each piece of work was done, what was decided and where it stands live in Git with the code, so any session, tool or person can pick it up; AI build-test-review loops stop for a human decision.

原始使用文档
文档目录12 节
  1. 基于 Git 的项目上下文管理
  2. 一眼看懂
  3. 解决什么问题
  4. ① 换会话、换工具,接着干
  5. ② 上下文归项目,不归某个人
  6. ③ 记录是干活时顺手留下的
  7. ④ 从一行代码查回需求
  8. ⑤ 做没做完,看证据
  9. 开始用
  10. 用起来是什么样
  11. 什么是一项工作
  12. 项目里的文件

五线谱上依次排着实现、验证、审查、修复、拍板五个音符,一条脉搏线把它们连起来,末端收进一叠写满音符的乐谱

BuildBeat

基于 Git 的项目上下文管理

每项需求为什么做、定了什么、做到哪,都跟代码一起存在 Git 里,
换会话、换工具、换人都能接着干。

npm 版本 CI 状态 Node 版本要求 MIT 许可证

中文 · English

用 AI 写代码,换个会话、换个软件、换台电脑、换个人,事情都得从头讲一遍。

BuildBeat 面向人和 AI 会话,把每项需求的来龙去脉记在项目和 Git 里,谁接手都能接着干。

一眼看懂

一个 Git 仓库里放着两样东西:代码 src/export.js 和工作记录 delivery/work/WORK-CSV-EXPORT/(work.md、decisions.jsonl、review-findings.jsonl、result.md);提交带 Work: WORK-CSV-EXPORT 标记,两头可以互查;两样都在同一段 Git 历史里

代码记录改了什么,工作记录写着为什么改、定了什么、做到哪。两样放在同一个仓库、同一段 Git 历史里,提交上带着工作编号,从哪头都能查到另一头。

解决什么问题

① 换会话、换工具,接着干

会话越聊越长,AI 开始忘事;开个新会话、换个工具,又得从头讲一遍。BuildBeat 把每项需求的进度和决定写进项目文件,新会话读一遍,就从上次停下的地方接着干。一项工作放了几周再捡起来,如果里面提到的代码已经变了,也会提醒你。

会话 A(Claude Code)做到一半,把断点写进项目文件(work.md、决定、每轮记录);会话 B(Codex)读到这些文件,从断点接着干;几周后再捡起来时,如果 work.md 提到的 src/export.js:5-8 改过了,会先提醒

② 上下文归项目,不归某个人

AI 工具自带的记忆,是围着人设计的:记在某个人的账号里、某台电脑上。同事接手你的模块时看不到这些,你离开项目,来龙去脉也跟着没了。BuildBeat 是围着项目重新设计的:上下文是项目的一部分,跟代码放在同一个 Git 仓库里,拉下代码就有;它跟代码一起进 PR 审查、一起留版本历史,用什么 AI 工具都能读。

左边围着人:工具自带的记忆记在你的账号、你的电脑、你的会话里,同事看不到,你离开项目来龙去脉也跟着没了;右边围着项目:项目仓库里有代码和 delivery/,你、同事、新会话、另一个 AI 工具都连到它,拉下代码就有、跟代码一起进 PR、有版本历史

③ 记录是干活时顺手留下的

需求文档和决定记录,大家都知道该写,但没人有空写,写了也很快过时。在 BuildBeat 里,这些是干活时顺手留下的:AI 先写一份 work.md 给你看,你点头后,决定、测试结果和审查意见都会记下来,做完再留一份结论。

交付循环:work.md 之后依次是实现、验证、审查,审查有问题就修复、重验、再审,最后停下等你拍板;work.md、决定、审查问题和每轮运行的终态记录留在 Git 里

④ 从一行代码查回需求

三个月后看到一段代码,没人记得当时为什么这么写,问 AI 它也只能猜。用 BuildBeat,指着这行代码就能查出它是为哪项需求写的、当时定了什么;也能按工单号查。

问 src/export.js 第 7 行为什么这么写:buildbeat history --repo . --path src/export.js:7 找到 WORK-CSV-EXPORT,记录里写着目标是导出当前筛选的账目、定了带逗号的字段加引号、第 1 轮审查发现没加引号已修、由你在 10-25 14:02 批准

⑤ 做没做完,看证据

AI 说「改好了,测试都过了」,你不敢全信,只能自己再跑一遍、再看一遍。BuildBeat 自己去读测试结果,再让另一个只读的 AI 审查,有问题就修,修完重新测、重新审,最后停下来等你拍板,什么时候、谁同意的都有记录。

AI 说“改好了,测试都过了”不算数;BuildBeat 去核对:测试结果由 BuildBeat 自己读,跑的是项目自己的测试命令;另一个只读的 AI 审查了 2 轮,1 个问题已修并重新测过;最后你拍板,批准人和时间记进 decisions.jsonl

从代码查需求、自己读测试结果、代码变了的提醒,需要装运行时。不装运行时、只让 AI 工具读项目文件,其余部分照样能用,见只用 Skill 和项目文件。

开始用

把下面这段复制给你的 AI 编程工具(Claude Code、Codex、Cursor 都行),它会自己装好、配好:

请帮我在这个项目里用上 BuildBeat(https://github.com/HaiYangBG1/BuildBeat):

1. 检查本机有没有 Node 20 以上和 Git,缺了就告诉我怎么装。
2. 安装或升级 BuildBeat 运行时:
   npm view @haiyangbg/buildbeat@latest version
   npm install --global @haiyangbg/buildbeat@latest
   buildbeat --version
   如果本机已经装了 3.x,并且还有没跑完的工作,先用旧版跑完或取消,再升级。
3. 读一遍 npm 包里的 SKILL.md 和 docs/v2/guide/01-quickstart.md(在 $(npm root -g)/@haiyangbg/buildbeat/ 下),之后都按 SKILL.md 的方式干活。
4. 按快速开始把模板放进这个项目、补好 .gitignore。实现、审查、修复默认用本机已登录的 AI 命令行工具,拿不准就问我。
5. 弄好后用一两句话告诉我可以开始了。之后我只用平常的话跟你说要做什么,命令都由你来跑。

装好之后,就用平常的话跟它说,常见场景见下面「用起来是什么样」。

用 Claude Code?也可以装插件
/plugin marketplace add HaiYangBG1/BuildBeat
/plugin install buildbeat@buildbeat-plugins
/buildbeat:buildbeat

想自己动手一步步装,见快速开始。

不想装 Node 或运行时?只用 Skill 和项目文件也行,见只用 Skill 和项目文件。

用起来是什么样

场景对话
第一次用你:(复制上面那段)
AI:装好了,可以开始了。
开始一项工作你:给账本加个导出 CSV 的功能。
AI:写好了 work.md:导出当前筛选的账目,带逗号的字段加引号,测试全过才算完。你看行吗?
你:行,开工。
换会话、换电脑、换人你:到哪了?
AI:「导出 CSV」做完了,等你拍板。第一轮审查发现带逗号没加引号,已经修好、重新测过,第二轮通过了。
你:批准,合并吧。
想再改改你:空表也要能导出。
AI:好,我接着改,重新测、重新审,过了再叫你。
你自己动手改了你:按钮文案我改了,已经提交。
AI:看到了,我把你的改动重新测一遍、审一遍。
卡住了AI:停下来了:本地数据库没启动。这不是代码问题,我没改代码。
你:开好了,继续。
好几个仓库你:所有仓库到哪了?
AI:两个仓库一共三项工作:一项等你拍板,两项还在跑。

它会停下来找你的情况只有这几种:做完了等你拍板、预算用完、审查一直不收敛、环境出了问题。

「到哪了?」时 AI 背后看到的输出
$ buildbeat status --repo . --work WORK-CSV-EXPORT
WORK-CSV-EXPORT  MERGE_DECISION
  [P1 0b5e258117cb5602] (accept) csv: quote fields that contain commas
  work.md ✓ · runs 1
  cost: review rounds 2 · findings 1 · human waits 1 (open 33s) · worker 2s
work WORK-CSV-EXPORT:
  RUN-CSV-EXPORT-01 [final-decision] enter-wait-merge — waiting 33s
    candidate: ede20b668cb04ae30cba1676b5e031930e711c8d
    next: buildbeat decide --action approve … --candidate ede20b6… --by <you>
    next: buildbeat decide --action reject … --reason <why> --by <you>
    next: buildbeat run … --adopt <sha> --by <you>   # commit a manual repair in the run worktree …
    next: buildbeat decide … --action fix --reason <what to repair> --by <you>

什么是一项工作

是什么:BuildBeat 记东西的最小单位。一个你能看到的结果,比如「导出 CSV」,就是一项工作,对应一个文件夹。

为什么要有它:AI 记不住事,会话也随时会换。把这件事要做什么、做到哪、审出过什么问题、你拍过什么板,都收进这个文件夹,谁接手都从这里接着干,回头也能翻出来看它是怎么做成的。

项目里的文件

第一次接入时,AI 会照模板把这些文件放好:

你的项目/
├── AGENTS.md、CLAUDE.md            告诉 AI 工具:这个项目用 BuildBeat
├── .gitignore                      加上下面两行 .buildbeat/ 目录
├── delivery/                       跟着 Git 走
│   ├── envelope/
│   │   ├── worker.sh               把 AI 工具包成 BuildBeat 能调用的一步
│   │   └── prompts/                实现、审查、修复各自的提示词
│   └── work/
│       └── WORK-X/                 一项工作一个文件夹
│           ├── work.md             要做什么、做到什么算完
│           ├── run-config.yaml     用哪个 AI、跑什么测试、能改哪些目录
│           ├── decisions.jsonl     接受、批准、关闭这些决定
│           ├── review-findings.jsonl  审查挑出的问题和你的裁决
│           ├── releases.jsonl      上线后的检查记录(用到才有)
│           ├── result.md           关窗时写:做成了什么、剩下什么、写进了哪些项目文档
│           └── runs/RUN-X-01/
│               └── run-record.json 这一轮的结果、证据和成本
└── .buildbeat/
    ├── notify.yaml                 可选:等你拍板时发 webhook 或钉钉通知
    ├── runtime/                    只在本机:正在跑的台账、日志、截图
    └── worktrees/                  只在本机:AI 干活用的隔离副本
  • delivery/ 进 Git:换会话、换软件、换电脑、换人,拉下代码就能接着干;不要在 .gitignore 或 .git/info/exclude 里排除它。里面的截图、压缩包和日志只留本机,不进 Git
  • .buildbeat/runtime/、.buildbeat/worktrees/ 只在本机:正在跑的那一轮不跟着 Git 走,要在原来那台机器上跑完或停掉
  • 没装 BuildBeat 的人和 AI 也能读这些文件、起草 work.md

参与贡献看贡献指南,代码以 MIT 许可证开源。

名字的由来:每一步是一个音符,Agent 按节拍把它们演奏出来;演奏过的乐谱——上下文、决定和结论——留在 Git 里,随时翻阅。

版本与发布记录

@haiyangbg/buildbeat 共发布 27 个版本,首次发布于 2026/08/25;过去 12 个月发布了 27 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
5.2.0latest2026/11/012 天前
5.1.02026/10/312 天前
5.0.0next2026/10/259 天前
4.2.32026/10/1122 天前
4.2.22026/10/0726 天前
4.2.12026/10/0727 天前

其他发布通道:bootstrap → 0.0.0,next → 5.0.0。

关于 @haiyangbg/buildbeat 的常见问题

@haiyangbg/buildbeat 是什么?

BuildBeat:基于git的项目上下文管理。为什么每一项工作都要完成,决定了什么以及它在Git中的位置与代码一起保存,所以任何会话、工具或个人都可以获取它;AI构建-测试-审查循环停止于人类决策。

如何安装 @haiyangbg/buildbeat?

在项目目录运行 npm install @haiyangbg/buildbeat,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 buildbeat,可以用 npx buildbeat 直接运行。

@haiyangbg/buildbeat 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/haiyangbg__buildbeat 是否存在。

@haiyangbg/buildbeat 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@haiyangbg/buildbeat 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@haiyangbg/buildbeat 可以商用吗?

@haiyangbg/buildbeat 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@haiyangbg/buildbeat 还在维护吗?

最新版本 5.2.0 发布于 2026/11/01(2 天前);至今共发布 27 个版本,其中过去 12 个月发布了 27 个;首次发布于 2026/08/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。