标签
每个在 PR 和 Issue 中使用的标签的单一参考来源。权威来源:
.github/labeler.yml:由actions/labeler使用的路径标签配置.github/label-policy.json:贡献者等级阈值- 本页:定义、行为,以及哪些是自动化的、哪些是手动的
当定义发生冲突时,请先更新源文件,然后同步此页面。
所有权边界
标签是可移植的元数据。它们应该说明这是什么类型的工作、涉及哪部分代码区域、审查的风险有多大,以及是否需要对过期策略或分类策略进行特殊处理。
项目看板自动化是规划辅助工具,不是第二个 PR 评审队列。当前的 issue-dashboard 规划器是手动且仅用于报告。看板应该回答更偏慢节奏的规划问题:哪些可以开始处理、哪些路由证据让它保持活跃、它属于哪个跟踪器或里程碑,以及哪些被阻塞。原生 GitHub PR 状态应继续回答快速变化的审查和合并问题。
根据更新频率保持拆分:
- 标签拥有持久的分类信息:工作类型、范围/组件、审查风险、已度量的 PR 规模以及过期豁免。
- 项目看板字段适用于问题规划阶段、可见的路由证据、依赖状态、过期豁免原因以及路线图分组(前提是这些字段处于积极维护状态)。
- GitHub PR 原生状态负责管理快速变化的审查状态:审查决定、必需的检查、可合并性、冲突以及过期的批准。
看板应当减少维护者的工作量。如果某个字段在每次 PR 推送或审查后都需要手动维护,建议改用标签、里程碑或 GitHub 原生状态。
标签可以提示可能的路由方向,但它们不代表归属。channel:*、provider:*、tool:*、security 或 docs 标签标识了可能需要关注的范围。贡献者可见的路由依据规则详见 Project board contract。
为正在进行的工作使用 assignees。当需要解释特殊的搁置、跟踪器或延期决策状态时,使用 issue 评论、issue 正文部分、公共字段或关联的跟踪器作为路由依据。status:blocked 采用已记录的阻塞项规则。项目看板约定定义了可接受的依据来源和路由结果。
规范拼写
作用域标签使用无空格冒号写法:provider:openai、channel:telegram、security:policy、risk:high、size:XS、type:docs 以及类似标签。无命名空间的标签保持短语形式:good first issue、help wanted、trusted contributor 和 stale-candidate。
诸如 provider: openai、channel: telegram 或 tool: shell 这类旧的重复标签是待清理项。像 risk: high、size: XS 和 type: docs 这类带空格的实时标签现在是迁移候选项,因为已批准的数据包已经创建或确认了无空格的规范标签。
某些旧标签在分阶段迁移期间可能仍会保留为有效状态。新的或手动创建的应用应使用规范的无空格标签,而现有的旧 open refs 可以保留,直到 open-reference 迁移包处理它们。删除之前,请先将 open issues/PRs 迁移到规范标签。不要删除带有 open references 的标签、不要大范围重命名标签族,也不要在没有维护者对该清理批次作出决定的情况下移除 stale-policy 标签。
自动化契约
实时 PR 标签自动化按来源拆分。pr-path-labeler.yml 会在 PR 打开、重新打开以及每次推送更新时,依据 .github/labeler.yml 运行 actions/labeler。由于该工作流使用 sync-labels: true,归属于 .github/labeler.yml 的标签会根据当前 PR 文件集重新计算:匹配的路径标签会被添加,而不再匹配的路径标签会被移除。
Dependabot 还会根据 .github/dependabot.yml 为自己创建的 PR 添加已配置的标签:Cargo 更新会获得 dependencies;GitHub Actions 和 Docker 更新会获得 ci 和 dependencies。这些标签属于 Dependabot PR 的初始元数据,而不是同步的 path-labeler 约定。
目前 .github/labeler.yml 仅管理路径和范围标签,例如 docs、ci、channel、provider:openai 和 tool:file。它不管理 risk:*、size:*、type:*、贡献者等级、状态、解决方案、过期或待领取标签。
Size 自动化可能会在每次推送 PR 更新时重新计算大小,以便标签持续描述当前正在审查的实际差异。#9345 负责单独的风险分类器发布。其风险阶段在维护者审查证据并另行启用变更功能之前,仍保持仅报告模式。仅报告模式的输出必须记录建议的风险、匹配规则证据、当前风险、risk:manual 状态以及 domain:security 状态,以便维护者审计不匹配项,以及同时漏过两个触发器的安全相关工作。任何未来的风险自动化都必须将 risk:manual 视为硬冻结:在维护者移除该覆盖之前,它不能添加、移除或替换 PR 的 risk:* 标签。
清理协议
标签清理是维护者的操作,而非常规 PR 审查的附带结果。
使用以下序列:
- 操作前请刷新实时标签使用情况。
- 将候选项划分为无历史删除、无打开项的重复删除、优先迁移的活跃标签,以及策略保留项。
- 对于带有 open refs 的标签,在已批准的清理批次创建或确认 canonical label 之后,将 canonical label 添加到每个 open issue/PR,移除 legacy label,验证 legacy label 的 open refs 为零,然后将其删除。
- 在进行模块标签清理时,请勿删除治理标签、过期策略标签、贡献者等级标签或 GitHub 默认标签。
每个实时清理批次都需要维护者对正在更改的标签和 issue/PR 引用进行明确批准。
策略回退
某些标签系列是故意不纳入机械清理的,即使它们看起来与较新的拼写或分类学偏好不一致。只有在另行作出政策决定并且有一份精确的实时操作包后,才应更改它们。
| 家庭 | 当前维护者操作支持 | 在更改实时标签之前 |
|---|---|---|
| 终端和分辨率标签 | 说明工作为何离开活动队列:未继续处理、无效、重复或明确拒绝。 | 保留历史关闭含义和贡献者期望;在修改现有标签之前,先定义任何重命名、别名、迁移或删除包。替换和取代仍然是已记录的流程,除非后续批准的包创建或映射了一个现有标签。 |
| 状态和过期标签 | 驱动问题生命周期和陈旧行为,包括已接受的工作、阻塞项、进行中的实现、status:stale、status:no-stale,以及 PR 待办中的陈旧处理。 | 将其视为 policy-first,因为自动化可能以不同方式进行保护、警告或关闭问题。不要将这些标签作为外观修正或模块标签清理来更改;请通过一个 stale/lifecycle policy packet 来处理它们,该包要考虑自动化和路由证据规则。 |
| 贡献者级别标签 | 使用 .github/label-policy.json 中的阈值来体现审阅者信任度和贡献者体验。 | 同时更新策略文件和本指南;不要仅为外观整理而删除或重命名层级,因为这些标签会影响人员和审查路由。 |
| GitHub 默认标签 | 保留熟悉的贡献者入口点,例如 bug、enhancement、documentation 和 question。 | 仅通过明确的面向贡献者的分类决策来替换或退役。默认值可用于模板、搜索、外部链接和集成。 |
保留敏感标签处于启用状态的测试是可操作的:维护者能否指出一项真实操作,一旦该启用标签消失,这项操作就会变得更难?如果可以,请有意地保留或替换它。如果不可以,请在审计包中保留历史映射,并通过批准的操作迁移或删除。
类型标签
类型标签用于标识高层次的工作类别。它们与路径标签(如 docs、ci 或 dependencies)是相互独立的。
新的或手动创建的应用程序在存在 live label 时应使用下面的规范无空格标签。现有的旧版 open refs 可继续保留带空格的标签,直到 open-reference 迁移包处理它们;请参见 Canonical spelling。
type:tracker 是用于活跃父级协调问题的规范 tracker 标记写法。不要将 roadmap、type:roadmap 或其他 tracker 标记创建或用作别名。如果当前尚不存在 type:tracker 这个 live 标签,则标签创建以及任何 tracker 标记迁移都必须仅通过单独的、完全一致的、经维护者批准的 packet 进行。
| 标签 | 目的 |
|---|---|
type:ci | CI、工作流或仓库自动化工作 |
type:dependencies | 依赖项或锁定文件维护 |
type:docs | 仅文档或以文档为主的工作 |
type:rfc | RFC 议题或提案;在活动期间免于陈旧关闭 |
type:refactor | 旨在保持用户可见行为的代码结构清理或内部重组 |
type:test | 仅用于测试或以测试为主的工作 |
type:tracker | 用于发布、路线图、RFC/设计线程、实现批次、清理或审计的活动父级协调问题。仅问题标记;本身不会创建陈旧保护、分配、接受或贡献者就绪范围。 |
路径标签
由 pr-path-labeler.yml 自动应用。Glob 模式位于 .github/labeler.yml;当本页面与该配置不一致时,请以 .github/labeler.yml 作为实际生效的来源,并更新本页面。
基础作用域标签
| 标签 | 匹配 |
|---|---|
docs | docs/**, **/*.md, **/*.mdx, LICENSE, .markdownlint-cli2.yaml |
dependencies | Cargo.toml, **/Cargo.toml, Cargo.lock, **/Cargo.lock, deny.toml, .github/dependabot.yml |
ci | .github/codeql/**、.github/workflows/**、.github/*.yaml、.github/*.yml、.github/*.json、.githooks/** |
core | src/*.rs |
cli | src/main.rs、src/lib.rs、src/commands/**、src/alias_cli/**、src/cli_input.rs、src/memory/cli.rs(zeroclaw memory 命令)、crates/zeroclaw-commands/**、crates/zeroclaw-runtime/src/cli_input.rs |
agent | src/agent/**、crates/zeroclaw-runtime/src/agent/** |
channel | src/channels/**、crates/zeroclaw-channels/src/** |
gateway | src/gateway/**、crates/zeroclaw-gateway/src/** |
config | src/config/**、crates/zeroclaw-config/src/** |
cron | src/cron/**、crates/zeroclaw-runtime/src/cron/** |
daemon | src/daemon/**、crates/zeroclaw-runtime/src/daemon/** |
doctor | src/doctor/**, crates/zeroclaw-runtime/src/doctor/** |
health | src/health/**、crates/zeroclaw-runtime/src/health/** |
heartbeat | src/heartbeat/**、crates/zeroclaw-runtime/src/heartbeat/** |
integration | src/integrations/**、crates/zeroclaw-runtime/src/integrations/** |
memory | src/memory/**、crates/zeroclaw-memory/src/** |
security | src/security/**、crates/zeroclaw-runtime/src/security/** |
runtime | src/runtime/**、crates/zeroclaw-runtime/src/** |
quickstart | crates/zeroclaw-runtime/src/quickstart/**、crates/zeroclaw-gateway/src/api_quickstart.rs、apps/zerocode/src/quickstart_pane.rs、web/src/pages/quickstart/** |
desktop | apps/tauri/** |
hardware | src/hardware/**, src/peripherals/mod.rs, crates/zeroclaw-hardware/**, crates/zeroclaw-api/src/peripherals_traits.rs, firmware/** |
web | web/** |
zerocode | apps/zerocode/** |
provider | src/providers/**、crates/zeroclaw-providers/src/** |
service | src/service/**、crates/zeroclaw-runtime/src/service/** |
skills | src/skills/**、crates/zeroclaw-runtime/src/skills/** |
tool | src/tools/**、crates/zeroclaw-tools/src/** |
tunnel | src/tunnel/**, crates/zeroclaw-runtime/src/tunnel/** |
observability | src/observability/**、crates/zeroclaw-runtime/src/observability/** |
tests | tests/** |
scripts | scripts/** |
dev | dev/** |
ci 的作用范围限定为 GitHub 自动化/配置文件,而非所有 .github/** 路径。根级别的 .github/*.json 匹配器是专门针对自动化元数据设计的(例如 .github/label-policy.json),因此 .github/assets/**、.github/ISSUE_TEMPLATE/**、.github/CODEOWNERS 和 .github/pull_request_template.md 等文件不会匹配到 ci。
附加组件标签
某些表面具有更窄范围的、由路径拥有的标签,用于维护者路由。当 PR diff 触及所列文件时,这些标签会由 .github/labeler.yml 同步。
作用域路径标签不保证具有相同前缀的基础标签。由于 pr-path-labeler.yml 以 sync-labels: true 运行,维护者应将 .github/labeler.yml 视为 PR 会接收哪些基础标签和作用域标签的事实来源。
| 标签 | 匹配 |
|---|---|
observability:log | crates/zeroclaw-log/src/**, crates/zeroclaw-runtime/src/observability/log.rs |
observability:otel | otel.rs,OTel 依赖功能回归覆盖范围 |
observability:prometheus | prometheus.rs |
runtime:wasm | 运行时 WASM 平台和第一方 WASM 插件宿主文件 |
security:bubblewrap | bubblewrap.rs |
security:docker | docker.rs |
security:leak-detector | LeakDetector 脱敏和敏感输出扫描 |
security:pairing | 配对安全性、网关配对 API、Tauri 配对命令,以及网页配对页面 |
security:policy | 运行时安全策略、IAM 策略和配置策略文件 |
security:secrets | 运行时和配置密钥处理 |
security:traits | 共享的安全 trait 和接口定义 |
memory:backend | 内存后端选择和存储实现文件 |
手动组件标签
某些作用域组件标签是手动路由标签,而不是同步路径标签。
domain:architecture 用于标识跨组件所有权、事实来源、依赖方向、接口/契约以及架构决策相关工作。不要仅因为某个问题是 RFC 就应用此标签。
domain:security 标识一个有效的身份验证、授权、凭据、机密处理、隔离、工具权限、安全策略、加密身份或不受信任输入边界。当更改后的行为跨越该边界时应用此标签,包括在规范安全路径之外的情况。不要仅因为 PR 讨论安全性、修改安全文档或测试、更新存在安全公告的依赖项,或执行通用加固但未更改信任边界,就应用此标签。由于路径匹配无法可靠地推断这一影响,该标签仍需手动应用。
domain:security 与 risk:* 相互独立。带有 risk:high 或 domain:security 的 PR 在合并前需要进行深入审查,并获得两项相互独立的 Core Team 批准。自动化审查不计作 Core Team 批准。
以下重复的域和产品界面标签已待弃用。请勿将其用于新工作。它们仅在单独的精确操作包迁移所有剩余的未关闭引用并删除这些定义之前保持有效。
| 停用标签 | 规范替代项 |
|---|---|
domain:channels | channel 加上适用的 channel:* 标签 |
domain:ci | type:ci;仅当变更文件符合其自动化契约时,才添加路径所属的 ci |
domain:code-quality | 具体的范围标签,并在适用时加上 type:refactor |
domain:deps | dependencies 和/或 type:dependencies |
domain:web-fetch | tool:web |
tauri | desktop;Tauri 在路径和标题中仍属于实现细节 |
保留的产品标签有意区分开来。cli 是面向终端用户的命令行界面,而 channel:cli 是交互式 CLI 聊天渠道。web 是浏览器仪表板和 Web 聊天产品,而 tool:web 是代理的网页抓取/搜索工具组。zerocode 是 ZeroCode 终端应用,hardware 涵盖主机集成、支持 crate 和固件树,desktop 是 Tauri 桌面产品。对于 apps/tauri/** 之外的原生计算机使用工作,请使用适用的工具或产品标签;不要手动将同步的 desktop 应用于路径不匹配的 PR。
agent:prompt 用于 provider 可见的提示、上下文和响应指导策略。当工作涉及 system prompt 内容、工具调用格式指导、prompt-cache 敏感上下文、channel 响应指导,或其他跨越基础 agent、channel、memory、provider 或 runtime 标签的模型可见指令面时使用。将它与适用的基础或作用域标签一起应用;它不能替代这些标签。不要将它应用于每个 crates/zeroclaw-runtime/src/agent/** 变更;普通的 agent 运行时变更请使用基础 agent 标签。
agent:loop 已废弃。对于 agent-loop 路由,请使用基础 agent 加上任何匹配的 runtime、provider、channel、tool 或 risk 标签。
不要将旧的 observability: runtime_trace 应用于新的 issue 或 PR。对于与 OpenTelemetry tracing 相关的工作,请使用 observability:otel;只有当 issue 或 PR 也匹配该基础范围时,才添加基础 observability,并将任何未来专用于 runtime-trace 的规范标签放在单独的 create/migrate packet 中决定。
不要将旧的 security: leak_detector 应用于新的问题或 PR。请将 security:leak-detector 用于 LeakDetector 脱敏和敏感输出扫描工作。
诸如 gateway: api、gateway: sse、gateway:local_bridge 和 gateway:webhook_ingress 的网关子区域标签仍然是在线迁移的保留项。新的路由应使用基础 gateway,直到另一个独立的包要么创建规范的无空格/带连字符的子标签并迁移引用,要么将这些标签合并到基础 gateway。
按通道标签
当更改涉及 channel crate 路径时,每个 channel 除了基础 channel 标签外,还会获得一个 channel:<name> 标签。诸如 channel:acp 之类的跨 surface channel 标签,也可以改为与匹配的基础 surface 标签配对,例如 gateway、docs 或 app/web 作用域标签。
channel:core 是共享的 channel API 和 orchestrator 标签。将其用于涉及 channel trait 契约、channel 编排、交付钩子、路由/会话行为、运行时命令处理,以及在单一 platform 标签下会产生误导的跨 channel 行为的工作。
| 标签 | 匹配 |
|---|---|
channel:acp | acp_channel.rs、acp_server.rs、zeroclaw-acp-bridge.rs、acp_session_store.rs、channels/acp.md、选定的 ACP 网关/应用/网页入口点 |
channel:core | crates/zeroclaw-api/src/channel.rs, crates/zeroclaw-channels/src/lib.rs, crates/zeroclaw-channels/src/orchestrator/**, src/channels/mod.rs |
channel:bluesky | bluesky.rs |
channel:clawdtalk | clawdtalk.rs |
channel:cli | cli.rs |
channel:dingtalk | dingtalk.rs |
channel:discord | discord.rs、discord_history.rs |
channel:email | email_channel.rs, gmail_push.rs |
channel:imessage | imessage.rs |
channel:irc | irc.rs |
channel:lark | lark.rs |
channel:line | line.rs, channels/line.md |
channel:linq | linq.rs |
channel:matrix | matrix.rs |
channel:mattermost | mattermost.rs |
channel:mochat | mochat.rs |
channel:mqtt | mqtt.rs |
channel:nextcloud-talk | nextcloud_talk.rs |
channel:nostr | nostr.rs |
channel:notion | notion.rs |
channel:qq | qq.rs |
channel:reddit | reddit.rs |
channel:signal | signal.rs |
channel:slack | slack.rs |
channel:telegram | telegram.rs |
channel:twitter | twitter.rs |
channel:wechat | crates/zeroclaw-channels/src/wechat.rs |
channel:webhook | webhook.rs |
channel:wecom | wecom.rs、wecom_ws.rs |
channel:whatsapp | whatsapp.rs, whatsapp_storage.rs, whatsapp_web.rs |
每个提供者的标签
特定于提供方的标签与专用的提供方源文件相匹配。提供方路由器有其自己的作用域标签,因为路由和模型分发工作属于共享的提供方子领域,而不是某个具体的提供方集成。共享的注册表或工厂文件只应使用基础 provider 标签;当共享文件的变更确实仅限于某一个提供方时,维护者可以手动添加特定于提供方的标签。
| 标签 | 匹配 |
|---|---|
provider:anthropic | anthropic.rs |
provider:azure-openai | azure_openai.rs |
provider:bedrock | bedrock.rs |
provider:claude-code | claude_code.rs |
provider:compatible | compatible.rs |
provider:copilot | copilot.rs |
provider:gemini | gemini.rs, gemini_cli.rs |
provider:glm | glm.rs |
provider:kilocli | kilocli.rs |
provider:ollama | ollama.rs |
provider:openai | openai.rs, openai_codex.rs |
provider:openrouter | openrouter.rs |
provider:reliable | reliable.rs |
provider:router | router.rs |
provider:telnyx | telnyx.rs |
某些提供方标签描述的是当前共享 OpenAI 兼容提供方实现、而不是使用独立源文件的提供方系列。当某个 issue 或 PR 确实涉及该系列时,维护者可以手动应用这些标签:provider:groq、provider:kimi、provider:minimax、provider:moonshot 和 provider:qwen。不要将共享工厂或兼容提供方文件添加到这些标签规则中;那样会把无关的共享更改过度打上标签。
每个工具组的标签
工具按逻辑功能分组,而非每个文件一个标签。
| 标签 | 匹配 |
|---|---|
tool:browser | browser.rs, browser_delegate.rs, browser_open.rs, text_browser.rs, screenshot.rs |
tool:cloud | cloud_ops.rs, cloud_patterns.rs |
tool:composio | composio.rs |
tool:cron | src/tools/cron_add.rs、src/tools/cron_list.rs、src/tools/cron_remove.rs、src/tools/cron_run.rs、src/tools/cron_runs.rs、src/tools/cron_update.rs、crates/zeroclaw-runtime/src/tools/cron_add.rs、crates/zeroclaw-runtime/src/tools/cron_common.rs、crates/zeroclaw-runtime/src/tools/cron_list.rs、crates/zeroclaw-runtime/src/tools/cron_remove.rs、crates/zeroclaw-runtime/src/tools/cron_run.rs、crates/zeroclaw-runtime/src/tools/cron_runs.rs、crates/zeroclaw-runtime/src/tools/cron_update.rs |
tool:delegate | crates/zeroclaw-runtime/src/tools/delegate.rs |
tool:file | src/tools/file_edit.rs、src/tools/file_read.rs、src/tools/file_write.rs、src/tools/glob_search.rs、src/tools/content_search.rs、crates/zeroclaw-tools/src/file_edit.rs、crates/zeroclaw-runtime/src/tools/file_read.rs、crates/zeroclaw-tools/src/file_write.rs、crates/zeroclaw-tools/src/glob_search.rs、crates/zeroclaw-tools/src/content_search.rs |
tool:google-workspace | google_workspace.rs |
tool:mcp | mcp_client.rs, mcp_deferred.rs, mcp_protocol.rs, mcp_tool.rs, mcp_transport.rs |
tool:memory | memory_forget.rs, memory_recall.rs, memory_store.rs |
tool:microsoft365 | microsoft365/** |
tool:pushover | pushover.rs |
tool:security | src/tools/security_ops.rs、src/tools/verifiable_intent.rs、crates/zeroclaw-runtime/src/tools/security_ops.rs、crates/zeroclaw-runtime/src/tools/verifiable_intent.rs |
tool:shell | src/tools/shell.rs、src/tools/node_tool.rs、src/tools/cli_discovery.rs、crates/zeroclaw-runtime/src/tools/shell.rs、crates/zeroclaw-gateway/src/node_tool.rs、crates/zeroclaw-tools/src/cli_discovery.rs |
tool:sop | src/tools/sop_advance.rs、src/tools/sop_approve.rs、src/tools/sop_execute.rs、src/tools/sop_list.rs、src/tools/sop_status.rs、crates/zeroclaw-runtime/src/tools/sop_advance.rs、crates/zeroclaw-runtime/src/tools/sop_approve.rs、crates/zeroclaw-runtime/src/tools/sop_execute.rs、crates/zeroclaw-runtime/src/tools/sop_list.rs、crates/zeroclaw-runtime/src/tools/sop_status.rs |
tool:web | web_fetch.rs, web_search_tool.rs, web_search_provider_routing.rs, http_request.rs |
tool:schema 是仅手动使用的标签,用于 tool-schema 序列化和清理问题。不要将广泛的 schema 文件添加到 .github/labeler.yml;许多 schema 文件是共享配置、provider 或 API 接口,这会给无关变更打上过多标签。
尺寸标签
基于有效变更行数,并针对纯文档和大量锁文件的 PR 进行了归一化处理。目前为手动应用;之前用于计算这些指标的大小自动化工具已在 CI 简化过程中被移除。未来的大小自动化工具应遵循自动化契约。
新的或手动应用应使用下面的标准无空格标签。现有的旧版 open refs 可暂时保留带空格的标签,直到 open-reference 迁移包处理它们;参见 Canonical spelling。
| 标签 | 阈值 |
|---|---|
size:XS | ≤ 80 行 |
size:S | ≤ 250 行 |
size:M | ≤ 500 行 |
size:L | ≤ 1000 行 |
size:XL | > 超过 1000 行 |
风险标签
对于 PR,风险标签描述了正在审查的实际差异:涉及的路径、行为变更、安全边界暴露以及回滚难度。对于 issue,风险标签描述了基于报告的潜在修复影响范围,有助于分流审查者的深度和贡献者的匹配度,并且可能在具体 PR 显示实际实现路径后发生变化。当前为手动应用。未来的风险自动化应遵循自动化契约。
新的或手动应用应使用下面的标准无空格标签。现有的旧版 open refs 可暂时保留带空格的标签,直到 open-reference 迁移包处理它们;参见 Canonical spelling。
| 标签 | 含义 |
|---|---|
risk:low | 不会影响生产、兼容性、构建、发布或治理的文档、本地化内容、测试夹具、生成的引用或机械元数据 |
risk:medium | 普通的行为性生产变更,包括大多数运行时、网关、提供程序、通道、工具、配置、应用程序和 CI 工作 |
risk:high | 一个具体的信任、凭据、兼容性、治理或发布授权边界,需要经过深入审查并获得 Core Team 的两项独立批准 |
risk:manual | 维护者覆盖设置,用于冻结未来的自动风险替换;不会降低审核或批准要求 |
risk:* 描述实际差异及其后果,而不是宽泛的组件位置。位于高风险边界内、对生产环境无影响的仅测试变更,如果能够证明其完整边界仅限于测试,可以标记为 risk:medium;#9530 是该例外的权威依据。
当维护者预期的风险与未来的自动化结果不一致时,请使用 risk:manual,包括 #9530 中那个可证明对生产环境不起作用、仅影响测试的降级。对于非安全变更,如果其在稳定自动规则之外会产生破坏性后果、数据丢失、默认行为破坏、治理、发布安全或其他具体的高风险后果,请同时应用 risk:high 和 risk:manual。这样可以保留已接受的手动升级路径,而不是创建另一类标签。在 review 或 PR 记录中记录其理由。
不确定时,应上调分类,并请维护者确定边界。不要仅为避免评审决策而放宽自动路径规则。
贡献者层级标签
定义在 .github/label-policy.json 中。根据从 GitHub API 查询到的作者已合并的 PR 数量。目前手动应用。
| 标签 | 最小合并的 PR |
|---|---|
受信任的贡献者 | 5 |
经验丰富的贡献者 | 10 |
主要贡献者 | 20 |
杰出贡献者 | 50 |
优先级标签
优先级标签表示维护者安排处理的紧迫程度,而非负责人归属或实现状态。请手动应用这些标签,并在问题的影响或发布上下文发生变化时重新评估。
| 标签 | 含义 |
|---|---|
priority:p0 | 需要维护者紧急关注的即时阻塞项;在该优先级仍然有效期间,不纳入问题过期处理 |
priority:p1 | 需优先于常规队列安排的高优先级工作 |
priority:p2 | 维护者明确感兴趣的中优先级工作 |
priority:p3 | 优先级较低、已跟踪且没有紧急排期承诺的工作 |
状态标签
跟踪 RFC 和跟踪工作项的生命周期状态。除非有维护中的工作流另作说明,否则手动应用。
| 标签 | 描述 |
|---|---|
status:accepted | 由团队批准的 RFC 或工作项。但这本身并不能使该问题免于过期处理。 |
status:blocked | 工作有效,但正在等待外部依赖、维护者决策或关联的前置条件。在阻塞因素被记录且未解决期间,可豁免标记为过时。请勿针对同一阻塞因素与 status:no-stale 搭配使用。 |
status:in-progress | 一个开放的 PR 正在积极处理此 issue。在过期检查时请与实时的 PR 状态进行核对;该标签在 PR 关闭后并非永久豁免。 |
status:stale | Issue 处于Issue 过期策略定义的响应窗口内 |
status:no-stale | 针对已接受或其他长期存在的工作的显式过期豁免,前提是这些工作尚未受到其他过期排除规则的保护。目标策略:仅当项目看板约定具有贡献者可见的过期豁免原因和路由证据时才使用。处于活动状态的发布跟踪器以及活动的 RFC 或设计跟踪器,在其保持活动状态期间,可将跟踪器本身用作可见原因和路由载体;当里程碑关闭、跟踪器偏离实时状态、RFC 达成决议、被取代或关闭,或该 issue 不再代表活动的项目决策载体时,应重新审视它们。对于缺失上述事实的现有豁免,应在过期清理停止承认它们之前进行审计和修复。 |
过时问题处理策略
本节是有关 issue 过时计时、符合条件的活动、排除项和重新参与的权威操作依据。其他维护者文档和技能应链接到此处,而不是复制这些规则。
- 条目窗口: 在没有符合条件的活动超过 15 天后,应用
status:stale。 - 响应窗口: 仅当自应用
status:stale起已过去 15 天或更长时间,且此后未发生符合条件的活动时,才关闭。 - 符合条件的活动: 能够证明当前相关性的实质性评论。它必须在当前版本或提交上确认该问题,说明为何该问题与版本无关,或提供有用的证据,例如复现步骤、日志或错误详情、环境信息、具体受影响的使用场景、回归确认或变通方案。泛泛的
+1、管理性评论、标签变更、机器人事件或链接事件均不符合条件。 - 排除项: 以下情况不适用过时处理:
priority:p0、type:rfc、status:no-stale、存在已开启关联 PR 的议题、开帖获得 10 个或以上 👍 反应的议题,以及在已记录的阻塞因素尚未解决期间带有status:blocked的议题。若某议题在携带status:stale标签时满足排除条件,则移除该过时标签。当排除条件结束时,从该日期重新开始计入周期。 - 重新激活: 当
status:stale标签应用后发生了符合条件的活动,或问题被重新打开时,移除该标签。从该活动或重新打开的日期重新计时。在过期关闭后,评论中出现符合条件的新证据,可作为维护者重新打开问题并移除status:stale的依据;评论者也可以改为开一个新问题,并附上更新后的背景信息。
stale-candidate 是独立的:它是用于清理休眠 PR 积压的信号,并不会取代 issue 上的 status:stale。
分辨率标签
解决方案标签用于说明某个 issue 或 PR 被关闭或移出活动队列的原因。它们代表最终结果,而非生命周期状态标签,并且应当包含足够的注释上下文,以便后续维护者理解该决策。
| 标签 | 目的 |
|---|---|
wontfix | 有效的请求,或者明确说明项目选择不予采纳的报告。请简要说明理由,不要无声关闭。 |
invalid | 无法作为缺陷、功能请求、支持事项、RFC 或跟踪的项目工作处理。请说明不匹配之处或缺失的需求。 |
duplicate | 与另一个已跟踪的问题或 PR 属于同一底层问题。在关闭或重定向讨论之前,请链接到规范的目标。 |
在维护者批准的标签迁移包明确定义具体的重命名、别名或删除计划之前,请勿创建或应用诸如 status:wont-do 或 status:wont-fix 之类的拟议终端标签。当前看板级“Won’t Do“概念使用的有效标签为 wontfix。
取代(Superseding)是一种替换流程,目前并不是一个生效的标签。在后续批准的迁移数据包创建或映射取代标签之前,请使用 Superseding PRs 中的替换规则和归属要求。
分类标签
手动应用:之前用于处理这些的自动响应自动化已在 CI 简化过程中被移除。
| 标签 | 目的 |
|---|---|
r:needs-repro | 不完整的错误报告;请求提供可复现的确定性步骤 |
r:support | 用法/帮助项应在错误积压之外更好地处理 |
needs-author-action | 在维护者继续审核或进入合并流程之前,需要作者回复。对于 PR,当审查结果为 request-changes 且下一步由作者负责时应用此标签;当作者推送实质性更新或提供所需信息后移除此标签。对于 RFC,在结果为 REVISE 后、作者准备修订期间应用此标签;当修订后的稳定提案已准备好交由 Core 处理时,移除此标签并恢复 needs-maintainer-review。此标签本身并不表示过时警告。 |
needs-maintainer-review | 维护者的决策、审查或投票操作尚未完成。在 RFC 中,当需要进行实质性的 Core 讨论或批准操作时使用此标签;决策记录完成或下一步操作转交作者或实现方后移除此标签。此标签不表示已接受、有人负责,也不会防止其被标记为过时。 |
stale-candidate | 处于休眠状态、可以考虑关闭的 PR。请遵循评审者手册 → PR 积压清理中的过期处理流程。Issue 的过期处理改用 status:stale。 |
工作流标签
手动应用,以使跨工件协调可见。这些标签不表示所有权、验收或防止过时。
| 标签 | 目的 |
|---|---|
do-not-merge | 对 PR 施加明确的维护者或治理阻塞。当 PR 因外部依赖、政策决策或 GitHub 原生评审和检查状态无法强制执行的先决条件而被暂缓时,请将其与 status:blocked 一起使用,尤其是在该 PR 看起来本来可以合并的情况下。应用此标签时,请留下 PR 评论,写明阻塞因素、移除 do-not-merge 及任何配套阻塞标签的条件,以及合并前所需的检查;评审和关联 issue 可以作为该记录的佐证,但不能替代它。对于明确转交给另一位独立 Core Team 成员审批的高风险 PR,请将其与 needs-maintainer-review 配合使用。对于必须不能进入当前活动发布线的未来版本线工作,请使用它。不要仅因 CI 待处理、草稿状态、分支落后、常规评审或当前处于 CHANGES_REQUESTED 而应用它。仅当记录的条件已满足,并且维护者重新检查当前原生评审状态、必需检查、可合并性、Definition of Done 和 merge checklist 后,才将其移除。 |
follow-up | 有意从父级 issue 或 PR 中划分出的范围;链接父级项以便显示关系 |
release-gate | 必须针对指定发布门禁协调处理的发现项或工作项 |
stacked | PR 依赖于另一个 PR;请包含明确的 Depends on #... 引用,并在其基础 PR 合并后再合并此 PR |
社区接手标签
维护者希望接受外部贡献时手动应用。
| 标签 | 目的 |
|---|---|
good first issue | 适合新贡献者的小型、独立、文档完善的 XS/S 任务,安全可控,并附有验收标准、相关代码或文档链接,以及指定的导师或联系人 |
help wanted | 维护者希望获得外部帮助、可供审查且无阻塞的可执行工作,通常存在低或中等程度的潜在问题风险 |
不要将 help wanted 作为“有效但无人认领“的通用标记。如果某个 issue 被阻塞、依赖架构、缺少验收标准、可能存在高风险,或正在等待策略决策,请暂不添加认领标签,直到阻塞因素解除或维护者补充缺失的范围说明。
维护触发器
在以下情况时更新此页面:
- 向源代码树中添加了新的通道、提供程序或工具(路径标签需要新增条目)。
- 标签策略或阈值已更改。
- 新的分诊工作流出现,或旧的被移除。
自动化状态备注(“目前手动应用”)被特意包含在内,以便未来的维护者不会误以为工作流的缺失意味着标签层级不存在。