news 2026/9/11 23:58:43

让 AI Agent 安全使用 bd 发号施令:Beads 项目 Agent 指令(AGENTS.md)全解析与实战

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
让 AI Agent 安全使用 bd 发号施令:Beads 项目 Agent 指令(AGENTS.md)全解析与实战

让 AI Agent 安全使用 bd 发号施令:Beads 项目 Agent 指令(AGENTS.md)全解析与实战

【免费下载链接】beadsBeads - A memory upgrade for your coding agent项目地址: https://gitcode.com/GitHub_Trending/beads1/beads

导读

Beads 是一个面向编码 Agent 的"记忆升级"工具,而cmd/bd/AGENTS.md是仓库专门写给 AI Agent(Claude Code、Codex、Gemini CLI 等)看的操作手册:它规定了 Agent 用bd命令发现工作、认领任务、更新进度、收尾提交的完整闭环,并明确划出"禁止使用交互式命令"的边界。本文以这份文档为骨架,结合仓库源码与官方 CLI 参考,逐条拆解每条命令的语义、原子性保证与正确用法,让读者(无论是人类还是 Agent)都能安全、合规地驱动 Beads 的 issue 追踪工作流。

一、这份文档在项目中的位置与作用

cmd/bd/AGENTS.md位于 CLI 命令源码目录cmd/bd/之下,是一份面向机器读者(AI Agent)的快速行为准则。它只有三个部分,却覆盖了 Agent 使用 bd 的完整生命周期:

  1. 快速参考(Quick Reference):一段可直接照抄的命令速查表;
  2. 交互式命令警告(Agent Warning):明确禁止 Agent 使用会拉起$EDITORbd edit
  3. 会话收尾(Landing the Plane):强制性的"着陆流程",以git push成功作为工作完成的唯一标志。

与面向人类的教程不同,这份文档的核心诉求是把不确定性降到最低:Agent 必须通过非交互的参数化命令完成所有写操作,并且绝不允许把工作留在本地。其理念可以从仓库中bd prime的设计得到印证——该命令专门"为 Claude Code、Gemini CLI 和 Codex SessionStart 钩子设计,防止 Agent 在上下文压缩后忘记 bd 工作流"(见 prime 命令参考)。AGENTS.md正是同一理念的静态载体:把最小必要规则固化进仓库,让任何 Agent 一进仓库就能拿到正确用法。

二、快速参考:Agent 每日工作命令全解

文档给出的速查表是 Agent 发现与推进工作的主干。以下逐一展开其真实语义(均以官方命令参考为准):

bd ready # Find available work (open, no blockers) bd blocked # Show blocked issues and what blocks them bd list # List all issues (with blocker annotations) bd show <id> # View issue details bd update <id> --claim # Claim work (atomic compare-and-swap) bd close <id> # Complete work bd dolt push # Push to Dolt remote

1.bd ready:找到"真正可以认领"的工作

按 ready 命令参考,bd ready展示的是"没有活跃 blocker 的开放 issue",并且会排除in_progressblockeddeferredhooked四类状态。它的实现依赖GetReadyWorkAPI,该 API 采用 blocker 感知语义,只返回真正可认领的工作。

  • 该命令与bd list --ready使用相同的就绪语义,二者结果一致;
  • 支持--mol过滤到某个 molecule(分子式工作流)的步骤、--gated查找门(gate)关闭后可继续派发的 molecule;
  • 支持--claim直接原子认领第一个匹配过滤器的工作(如bd ready --claim --json),适合执行 molecule 的 Agent 一步到位"看下一步 + 认领下一步";
  • 常用过滤参数:-a/--assignee-l/--label-t/--type-p/--priority--parent-n/--limit(默认 100)、--sort(priority/hybrid/oldest)等。

2.bd blocked:查看被阻塞的工作及阻塞原因

按 blocked 命令参考,bd blocked展示所有处于阻塞状态的 issue,并支持--parent过滤到某个 bead/epic 的后代。它是判断"哪些事当前无法推进"的最直接入口。

3.bd list:带 blocker 注解的全量列表

按 list 命令参考,bd list默认以树形层级展示 issue(--flat可退回平面列表),并带有状态/优先级符号(--pretty)。其过滤器极其丰富,Agent 常用的有:

  • --status按状态过滤(open, in_progress, blocked, deferred, closed,多状态必须用逗号分隔形式,重复-s会静默覆盖前值);
  • -t/--type按类型过滤(bug, feature, task, epic, chore, decision, merge-request, molecule, gate, convoy,支持mr→merge-requestmol→molecule等别名);
  • --readybd ready同语义,只显示无活跃 blocker 的 issue;
  • --sort可按priority, created, updated, closed, status, id, title, type, assignee排序;
  • --id支持一次性查看多个指定 ID(如bd-1,bd-5,bd-10)。

4.bd show <id>:查看 issue 详情

按 show 命令参考,bd show支持一次查看多个 ID,别名view。关键参数:--long展示全部扩展字段(元数据、Agent 身份、gate 字段等)、--refs反向查找引用该 issue 的其他 issue、--children只看子 issue、--current直接显示当前活跃 issue(in-progress、hooked 或最近触达的)、--include-comments/--include-dependents在 JSON 输出中流式包含完整评论/依赖项。

5.bd update <id> --claim:原子认领(compare-and-swap)

认领是 Agent 并发协作的基石,文档特意标注"atomic compare-and-swap"。这一点有源码背书:在 issueops/claimer.go 中,ClaimRequest被定义为"一次原子 compare-and-set 认领",Claimer是独立的守卫角色,"验证并提交完整请求作为一次原子操作"。bd update --claim的语义为:将 assignee 设为你、状态置为in_progress,且若已由你认领则幂等(见 update 命令参考 的--claim说明)。这种设计确保了多个 Agent 同时抢同一工作时,只有一个能成功,避免重复认领。

6.bd close <id>:完成任务

按 close 命令参考,bd close别名done。若不传 ID,则关闭"最近触达"的 issue。支持批量关闭,多个--reason按位置与 ID 一一对应。Agent 场景常用参数:

  • -r/--reason:必填关闭原因;
  • --claim-next:关闭后自动认领下一个最高优先级可用工作,适合流水线式 Agent;
  • --continue:自动前进到 molecule 的下一步;--suggest-next:显示关闭后新解除阻塞的 issue。

7.bd dolt push:把本地数据库推送到远程

Beads 使用 Dolt(Git 风格版本化数据库)作为存储层,bd dolt push将本地数据提交推送至远程,是 Agent 协作时数据同步的关键一步,也是下文"着陆流程"中git push之前/之后的数据层配套操作。

依赖状态的权威来源

文档特别强调:判断工作是否被阻塞,bd readybd blocked才是权威来源bd list会展示活跃的 blocker 注解,但如果要精确判断阻塞状态,必须用前两者。这一点与bd ready文档中"该命令使用 blocker 感知语义找到真正可认领的工作"(ready 命令参考)相呼应——bd list的注解只是展示,bd ready/bd blocked才执行真正的状态计算。

三、Agent 红线:为什么绝对不能用bd edit

文档用大写强调DO NOT usebd edit。原因在 edit 命令参考 中写得很清楚:bd edit会"使用你配置的$EDITOR编辑 issue 字段"——它会在终端里拉起交互式编辑器,AI Agent 无法(也不应)操作这样的交互界面,命令会挂起或失败。

正确做法是全部改用bd update的参数化旗标(每个字段对应一个 flag,来自 update 命令参考):

bd update <id> --description "new description" bd update <id> --title "new title" bd update <id> --design "design notes" bd update <id> --notes "additional notes" bd update <id> --acceptance "acceptance criteria"

除文档列出的五个字段外,bd update还提供大量 Agent 可用的结构化参数,这里补充几个高频项:

  • -a/--assignee:指派人员;
  • -s/--status:设置新状态(openin_progressblockedclosed等);
  • -p/--priority:优先级(0-4 或 P0-P4,0 最高);
  • -e/--estimate:耗时估算(分钟);
  • --add-label/--remove-label/--set-labels:标签增删改;
  • --defer:延后到期时间(格式如+6h+1d+2wtomorrow2025-01-15),延后期间该 issue 不会出现在bd ready中;
  • --body-file/--stdin:从文件或标准输入读取描述(用-表示 stdin),配合--allow-empty-description可处理空描述场景;
  • --metadata/--set-metadata/--unset-metadata:读写自定义元数据,适合跨 Agent 传递结构化信息;
  • --parent:变更父 issue(重新挂到另一个 epic 之下)。

这条红线的本质是保持 Agent 操作的全自动化:所有写操作都必须是非交互、可重放、可审计的单一命令,而bd update --claim的原子性(见 issueops/claimer.go 与 issueops/issueops.go 中"Claim 原子地将 issue 认领给 Actor,先设置 Assignee 再置状态"的说明)正是这一要求的底层保障。

四、Landing the Plane:Agent 会话收尾强制流程

文档把会话收尾比作"降落飞机",并声明git push成功之前,工作都不算完成。整套强制工作流如下:

  1. 为剩余工作建档(File issues):任何需要跟进的事都必须先创建 issue,避免上下文丢失;
  2. 运行质量门(Run quality gates):若改动过代码,必须跑测试、linter、构建;
  3. 更新 issue 状态(Update issue status):关闭已完成的工作,更新进行中的条目;
  4. 推送到远端(PUSH TO REMOTE,强制)
    git pull --rebase git push git status # MUST show "up to date with origin"
  5. 清理(Clean up):清空 stash、清理远端多余分支;
  6. 验证(Verify):所有改动都已提交且推送;
  7. 交接(Hand off):为下一个会话提供上下文。

三条不可逾越的规则:

  • 只有git push成功,工作才算完成;
  • 绝不允许在推送前停下——那会让工作滞留本地;
  • 绝不允许说"准备好了,你随时可以推"——必须由 Agent 自己推送;若推送失败,解决后重试直到成功。

这套流程与bd prime的定位形成呼应:prime 命令参考 提到它输出"AI 优化的会话上下文",并可通过no-git-ops配置切换"隐身模式"(不输出 git 命令的会话收尾协议),说明默认的收尾协议本身就包含上述 git 步骤——AGENTS.md把其中最关键的步骤显式固化成了强制 checklist。

对 Agent 而言,这套流程的价值在于:

  • 可验证的完成定义git status必须显示 "up to date with origin",把"完成"从模糊感觉变成可执行检查;
  • 防止工作滞留git pull --rebase保证基于最新远端状态合入,git push保证成果同步,避免"本地改了一堆、远端一无所知"的协作事故;
  • 上下文连续性:第 1、7 步把"下一步该做什么"和"这个会话做了什么"落成持久化记录(issue 与交接说明),正好发挥 Beads 作为"编码 Agent 记忆升级"的核心价值。

五、从 AGENTS.md 到完整 Agent 工作流

把文档的速查表、红线和着陆流程串联起来,就得到了一个完整的 Agent 工作循环:

  1. 入场:读取AGENTS.md(本文件),如需完整工作流上下文运行bd prime(见 prime 命令参考,它按 MCP/CLI 模式自适应输出 ~50 tokens 的精简提醒或 1-2k tokens 的完整命令参考,专为 SessionStart 钩子设计);
  2. 找活bd ready发现可认领工作(必要时用--type--label--priority过滤,或--mol进入 molecule 步骤);
  3. 认领bd update <id> --claim原子抢占(bd ready --claim可合并 2、3 两步);
  4. 干活bd show <id>查看详情,代码改动期间用bd update <id> --notes/--design/--acceptance持续记录,绝不触碰bd edit
  5. 卡住:遇到依赖未就绪时用bd blocked判断阻塞原因;解除后用bd ready重新确认可推进性;
  6. 完成bd close <id> -r "reason"关闭(可用--claim-next自动进入下一项);
  7. 着陆:严格走"Landing the Plane"七步——补 issue、跑质量门、更新状态、git pull --rebase && git push && git status确认同步、清理、验证、交接。

其中第 3 步的原子认领是整个并发安全模型的关键:源码中ReadyClaimer被定义为"一次就绪工作的原子获取:即bd ready --claim操作"(见 issueops/readyclaimer.go),多个 Agent 并行抢活时由数据库层保证只成功一个,从而避免重复劳动。

六、给 Agent 作者的落地建议

基于这份文档与仓库实现,若你正在为自己的仓库编写同类 Agent 指令,以下几点值得借鉴:

  • 用速查表 + 权威来源声明:像文档那样先给 5-7 条最高频命令,再明确指出"哪个命令才是状态判断的权威来源"(bd ready/bd blocked),避免 Agent 误用展示型命令做决策;
  • 显式划出交互红线:凡是会拉起$EDITOR、进入 pager、要求人工确认的命令,一律列入黑名单,并给出参数化替代方案;
  • 把"完成"定义成可执行检查git push成功 +git status显示 up to date,这样的完成标准可以让 Agent 自检,而不是嘴上说"完成了";
  • 流程编号化、规则加粗:编号步骤和 CRITICAL RULES 的写法,让 Agent 在上下文被压缩后仍能快速重建行为约束——这与bd prime防止 Agent "在上下文压缩后忘记工作流"的设计目标完全一致。

结语

cmd/bd/AGENTS.md虽然只有数十行,却浓缩了 Beads 团队对"机器协作"的完整设计:以bd ready/bd blocked作为事实源、以bd update --claim的原子 compare-and-swap 保证并发安全、以bd edit禁令守住全自动化底线、以 "Landing the Plane" 七步流程确保每次会话都以远端同步收尾。对照 ready、blocked、list、update、close、prime 等官方命令参考以及 issueops/claimer.go、issueops/readyclaimer.go 的源码实现,文档中的每一条规则都能找到落点。对任何打算让 AI Agent 长期、稳定、安全地参与 issue 追踪与代码交付的团队,这份文件本身就是一份值得直接复用的范本。

【免费下载链接】beadsBeads - A memory upgrade for your coding agent项目地址: https://gitcode.com/GitHub_Trending/beads1/beads

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/11 23:58:18

Matlab在新能源电力系统协同优化中的应用与实践

1. 项目概述&#xff1a;新能源时代的电力系统优化挑战 电力系统正在经历从传统化石能源向风光等可再生能源的转型&#xff0c;但新能源发电的间歇性和波动性给电网运行带来了全新挑战。我在参与某省级电网调度系统升级时&#xff0c;曾遇到光伏电站出力在10分钟内波动超过30%的…

作者头像 李华
网站建设 2026/9/11 23:58:01

南非展会设计搭建公司怎么选?中国企业赴非参展筛选指南

南非是非洲经济与会展中心&#xff0c;约翰内斯堡、开普敦聚集了工业、建材、新能源、汽车、消费品等各类国际展会&#xff0c;是国内企业深耕非洲市场、辐射全非贸易渠道的核心枢纽。非洲展会市场环境特殊&#xff0c;施工资源参差不齐、物料配套不完善、场馆规则多变&#xf…

作者头像 李华
网站建设 2026/9/11 23:55:24

TradingAgents-CN 周末/节假日交易数据获取失败问题修复实战:分析日期传递、最近交易日回退与多数据源降级

TradingAgents-CN 周末/节假日交易数据获取失败问题修复实战&#xff1a;分析日期传递、最近交易日回退与多数据源降级 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/T…

作者头像 李华
网站建设 2026/9/11 23:54:01

PCSX2实用手册:从BIOS准备到图形问题排查的完整流程

PCSX2实用手册&#xff1a;从BIOS准备到图形问题排查的完整流程 【免费下载链接】pcsx2 PCSX2 - The Playstation 2 Emulator 项目地址: https://gitcode.com/GitHub_Trending/pc/pcsx2 PCSX2 是一个开源的 PlayStation 2 模拟器&#xff0c;通过 MIPS 解释器、动态重编…

作者头像 李华