
Beads 优先级管理完全指南掌握bd priority命令与 P0–P4 分级体系【免费下载链接】beadsBeads - A memory upgrade for your coding agent项目地址: https://gitcode.com/GitHub_Trending/beads1/beadsbd priority是 Beads 中用于设置 issue 优先级的专用命令本质上是bd update id --priority n的快捷形式。它把安全、数据丢失、构建故障这类“立即处理”事项与“将来再说”的积压想法统一映射到 0–4 五档分级体系是 Agent 与人类协作者之间就“先做什么”达成共识的核心机制。读完本文你将掌握优先级档位的语义、命令的完整用法与参数校验规则并理解其在创建、批量更新、计数过滤、审计以及 GitHub/GitLab/ADO 等外部跟踪系统映射中的底层实现。一、优先级体系五档分级默认 P2Beads 将 issue 优先级定义为 0–4 五个档位数字越小越紧急。该定义同时出现在命令文档与命令源码中见 cmd/bd/priority.go档位名称典型场景0Critical关键安全问题、数据丢失、构建损坏1High高主要功能、重要缺陷2Medium中默认常规事项3Low低打磨、优化4Backlog积压未来构想几个关键设计点默认值为 2Medium创建 issue 时若不显式指定优先级即以 P2 入库符合“常规事项优先”的直觉。0 最高紧急度这一点与“数字越大越重要”的常见直觉相反Beads 特意采用“0 highest”的约定见 cmd/bd/flags.go 中Priority (0-4 or P0-P4, 0highest)的 flag 描述使用时需特别注意。多用途语义优先级不仅用于人工排序还参与 Agent 的待办择取、bd count统计过滤、导出字段以及对外部跟踪系统的映射是整个 issue 生命周期模型中的一等公民字段。二、基本用法bd priority id n命令的完整形式为bd priority id n [flags]id目标 issue 的 ID支持bd-123这类 prefix-number 形式也支持 prefix-hash、层级 ID 等 Beads 的完整 ID 格式命令注册了issueIDCompletion补全函数可交互式补全见 cmd/bd/priority.go。n目标优先级接受0–4或P0–P4两种写法大小写不敏感。官方文档给出的两个典型示例bd priority bd-123 0 # Critical bd priority bd-123 2 # Medium执行成功后终端会输出一行反馈非 JSON 模式✓ Set priority of bd-123 to P0其中bd-123会被渲染为带标题的反馈 ID如bd-123 修复登录页面崩溃便于快速确认改动对象。命令约束参数严格为两个cobra.ExactArgs(2)多传或少传都会报用法错误。命令属于issues命令组GroupID: issues可通过bd help分组总览中定位。受全局只读保护执行前调用CheckReadonly(priority)若仓库处于只读模式会直接拒绝写操作见 cmd/bd/priority.go。三、参数校验规则数字与 P 前缀拒绝单词优先级参数并非简单透传而是经过 internal/validation/bead.go 中ParsePriority/ValidatePriority两层校验// ParsePriority extracts and validates a priority value from content. // Supports both numeric (0-4) and P-prefix format (P0-P4). func ParsePriority(content string) int { content strings.TrimSpace(content) if strings.HasPrefix(strings.ToUpper(content), P) { content content[1:] // Strip the P prefix } var p int if _, err : fmt.Sscanf(content, %d, p); err nil p 0 p 4 { return p } return -1 // Invalid }解析规则可归纳为去除首尾空白若以P或p开头剥掉前缀后按数字解析解析结果为 0–4 的整数才算合法否则返回-1ValidatePriority在解析失败时返回明确错误invalid priority ... (expected 0-4 or P0-P4, not words like high/medium/low)。因此0、3、P0、p4、P1都是合法输入而high、medium、urgent、5、-1都会被拒绝。这一设计刻意避免了自然语言二义性——同一仓库内不同协作者对 “high” 的理解可能完全不同而 0–4 的整数语义是稳定、可排序、可机器处理的。四、与bd update --priority的等价关系bd priority的定位就是bd update id --priority n的快捷写法。在 cmd/bd/update.go 中update命令对--priority短标志-p的处理路径完全一致同样先经validation.ValidatePriority校验再写入updates[priority]if cmd.Flags().Changed(priority) { priorityStr, _ : cmd.Flags().GetString(priority) priority, err : validation.ValidatePriority(priorityStr) // ... updates[priority] priority }差异在于bd priority bd-123 0只改优先级意图单一、防误操作bd update bd-123 --priority 0 --status in_progress -a agent可以一次原子地修改多个字段优先级、状态、负责人等适合批量状态流转场景。两者最终都走issueStore.UpdateIssue(ctx, id, updates, actor)这同一条持久化链路行为完全一致见 cmd/bd/priority.go。五、优先级在整个命令族中的联动优先级字段不止服务于bd priority它在创建、批量修改、统计过滤中均可被直接操纵1. 创建时指定bd create --prioritybd create与bd create --form都支持--priority/-p标志见 cmd/bd/create.go 与 cmd/bd/create_input.go可在建档时就打上档位例如bd create --title 修复生产环境数据丢失 --type bug --priority 02. 批量修改bd batchbd batch支持以字段映射方式批量设置优先级。在 cmd/bd/batch.go 中priority字段会被解析并写入更新映射case priority: // 解析并写入 updates[priority]配合 cmd/bd/batch_test.go 的用例期望结果为{status: in_progress, priority: 1}可以确认批量更新同样走优先级校验与持久化通道。3. 计数与过滤bd count --prioritybd count提供--priority/-p过滤标志帮助统计某个档位下的 issue 数量见 cmd/bd/count.go 与 cmd/bd/count.gobd count --priority 0 # 统计所有 Critical issue bd count --priority 1 --status open其 flag 帮助文本完整复述了档位语义0-4: 0critical, 1high, 2medium, 3low, 4backlog。相关过滤逻辑有 cmd/bd/count_filter_test.go 用例覆盖。4. 其他读取入口优先级还会出现在bd duplicates的重复项摘要见 cmd/bd/duplicates.go、bd export的导出字段、bd list等展示型命令中作为 issue 的一等字段贯穿全链路。六、源码实现剖析一次bd priority调用的完整旅程以 cmd/bd/priority.go 的RunE为线索命令执行流程如下只读保护与遥测CheckReadonly(priority)检查只读模式随后创建metrics.NewCommandEvent(priority)遥测事件命令结束时由metrics.Global().CloseEventAndAdd(evt)上报支持指标采集时。代理路由若启用了 proxied serverusesProxiedServer()转交runPriorityProxiedServer(rootCtx, args)实现与嵌入模式完全一致的远程/服务端语义。参数校验validation.ValidatePriority(args[1])解析档位。解析目标 issueresolveAndGetIssueForMutation(ctx, store, id)将用户输入的 ID 解析为内部 ID 并返回可写句柄解析失败或 issue 不存在会分别报错resolving %s: %v/issue %s not found。可更新性校验validateIssueUpdatable拦截已关闭、已删除等不可更新状态。写入更新构造updates : map[string]interface{}{priority: priority}调用issueStore.UpdateIssue(ctx, result.ResolvedID, updates, actor)actor 身份会随写入一并记录。嵌入式提交commitPendingIfEmbedded(...)在嵌入模式下将本次改动随 Dolt 自动提交提交元数据标注Command: priority与涉及的IssueIDs。收尾反馈SetLastTouchedID记录最近操作对象供快捷命令引用--json模式下直接输出更新后的完整 issue 对象否则打印✓ Set priority of id to Pn。整个改动会进入字段变更审计在 cmd/bd/update.go 中patch.Priority的变更会通过audit.LogFieldChange(result.ResolvedID, priority, old, new, actor, )记录旧值、新值与操作者形成可追溯的变更历史。七、与外部跟踪系统的优先级映射Beads 支持将 issue 同步到 GitHub、GitLab、Azure DevOps 等外部跟踪系统优先级在同步时通过字段映射器双向转换GitHubinternal/github/fieldmapper.go中的PriorityToBeads/PriorityToTracker负责双向转换internal/github/mapping.go#L276的priorityToLabel将 0–4 档位映射为对应 label。GitLabinternal/gitlab/fieldmapper.go提供同样的双向映射internal/gitlab/mapping.go#L214实现 label 化。Azure DevOpsinternal/ado/fieldmapper.go中PriorityToBeads(trackerPriority)/PriorityToTracker(beadsPriority)负责与 ADO 优先级字段互转SeverityForBug(beadsPriority)还能为 bug 类 issue 推导严重级别。这意味着本地设定的 P0–P4 在联邦/同步场景下会被映射为各平台原生的优先级或标签表达跨系统排序语义保持一致。八、测试验证行为有据可查仓库中的测试用例为上述行为提供了直接证据cmd/bd/cli_fast_test.go验证创建时priority字段落库为 0 与 3且通过bd update可将优先级更新为 1。cmd/bd/cli_fast_test.go验证默认优先级落库为 2。cmd/bd/field_mutation_proxied_integration_test.go以bd priority id 0在 proxied server 模式下做字段变更的端到端验证。internal/validation/bead_test.go表驱动测试覆盖ValidatePriority的合法/非法输入矩阵含 P 前缀与越界值。cmd/bd/count_filter_test.go 与 cmd/bd/batch_test.go分别覆盖计数过滤与批量更新中的优先级处理。九、最佳实践与常见误区P0 只留给真正紧急的事官方语义中 P0 对应安全、数据丢失、构建损坏滥用会稀释档位信号影响 Agent 对待办优先级的判断。记住“0 最高”这是新手最常见的误区。写脚本或做自动化时建议显式使用 P 前缀P0自文档化更强。单词输入会被拒绝不要尝试bd priority bd-123 high——校验器明确拒绝自然语言请改用1。批量调整用bd batch需要把一批 issue 同时降级到 Backlog 时bd batch的字段映射方式远比逐条执行高效。配合bd count --priority做仪表盘例如bd count --priority 0 --status open可以快速给出“当前未关闭的 Critical 数量”适合作为迭代检查项。审计留痕由于每次优先级变更都会进入字段变更审计应避免频繁无意义的档位抖动保持历史记录干净可查。十、小结bd priority虽只是一个“设置单个字段”的快捷命令但它背后承载着 Beads 完整、可校验、可排序、可同步的优先级模型五档语义清晰输入格式严格收敛0–4 或 P0–P4与bd update共用同一校验与持久化链路并能联动bd create、bd batch、bd count等命令族最终通过字段映射器接入 GitHub/GitLab/ADO 等外部系统。理解这套体系是让人类团队与编码 Agent 在“先做什么”上保持一致的第一步。官方命令文档见 docs/cli-reference/priority.md更多 issue 生命周期命令可参阅 docs/cli-reference 目录下的对应页面。【免费下载链接】beadsBeads - A memory upgrade for your coding agent项目地址: https://gitcode.com/GitHub_Trending/beads1/beads创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考