标签
每个在 PR 和 Issue 中使用的标签的单一参考来源。权威来源:
.github/labeler.yml— 由actions/labeler使用的路径标签配置.github/label-policy.json— 贡献者层级阈值- 本页面——定义、行为以及自动化与手动操作的内容
当定义发生冲突时,请先更新源文件,然后同步此页面。
Ownership boundaries
Labels are portable metadata. They should answer what kind of work this is, what code area it touches, how risky it is to review, and whether stale policy or triage policy needs special handling.
When Project board automation is added, use it as an automated planning board, not as a second PR review queue. The board should answer slower-moving planning questions: what is ready to pick up, who owns it, what tracker or milestone it belongs to, and what is blocked. Native GitHub PR state should continue to answer fast-moving review and merge questions.
Keep the split based on update frequency:
- Labels own durable classification: work type, scope/component, review risk, measured PR size, and stale exemption.
- Project board fields are appropriate for issue planning stage, active owner, dependency state, and roadmap grouping when those fields are actively maintained.
- Native GitHub PR state owns fast-changing review state: review decision, required checks, mergeability, conflicts, and stale approvals.
The board should reduce maintainer work. If a field would need manual upkeep after every PR push or review, prefer labels, milestones, or native GitHub state instead.
Canonical spelling
Use the live no-space module spelling for scoped module labels: provider:openai, channel:telegram, tool:shell, security:policy, and similar labels. The size and risk families intentionally keep a space after the colon: size: XS, risk: low, risk: medium, risk: high.
Legacy duplicate labels such as provider: openai, channel: telegram, or tool: shell are cleanup candidates. Migrate open issues/PRs to the canonical no-space spelling before deletion. Do not delete labels with open references, broadly rename label families, or remove stale-policy labels without a maintainer decision for that cleanup batch.
Cleanup protocol
Label cleanup is a maintainer action, not a side effect of normal PR review.
Use this sequence:
- Refresh live label usage before acting.
- Split candidates into zero-history deletes, zero-open duplicate deletes, migrate-first active labels, and policy holdbacks.
- For labels with open refs, add the canonical label to each open issue/PR, remove the legacy label, verify the legacy label has zero open refs, then delete it.
- Do not delete governance labels, stale-policy labels, contributor-tier labels, or default GitHub labels as part of module-label cleanup.
Every live cleanup batch needs exact maintainer approval for the labels and issue/PR refs being changed.
Type labels
Type labels capture the high-level work class. They are separate from path labels such as docs, ci, or dependencies.
| 标签 | 目的 |
|---|---|
type: ci | CI, workflow, or repository automation work |
type: dependencies | Dependency or lockfile maintenance |
type: docs | Documentation-only or docs-primary work |
类型:RFC | RFC issue or proposal; protected from stale closure |
路径标签
由 pr-path-labeler.yml 自动应用(目前唯一启用的标签自动化工具)。Globs 位于 .github/labeler.yml 中。
基础作用域标签
| 标签 | 匹配 |
|---|---|
docs | docs/**, **/*.md, **/*.mdx, LICENSE, .markdownlint-cli2.yaml |
dependencies | Cargo.toml, Cargo.lock, deny.toml, .github/dependabot.yml |
ci | .github/codeql/**, .github/workflows/**, .github/*.yaml, .github/*.yml, .github/*.json, .githooks/** |
核心 | src/*.rs |
agent | src/agent/** |
channel | src/channels/** |
网关 | src/gateway/** |
config | src/config/** |
cron | src/cron/** |
daemon | src/daemon/** |
doctor | src/doctor/** |
health | src/health/** |
| 心跳 | src/heartbeat/** |
integration | src/integrations/** |
memory | src/memory/** |
security | src/security/** |
运行时 | src/runtime/** |
onboard | src/onboard/** |
provider | src/providers/** |
服务 | src/service/** |
skillforge | src/skillforge/** |
技能 | src/skills/** |
工具 | src/tools/** |
| 隧道 | src/tunnel/** |
| 可观测性 | src/observability/** |
tests | tests/** |
scripts | scripts/** |
dev | dev/** |
ci is scoped to GitHub automation/config files, not all .github/** paths. The root .github/*.json matcher is intentional for automation metadata (for example .github/label-policy.json), so files like .github/assets/**, .github/ISSUE_TEMPLATE/**, .github/CODEOWNERS, and .github/pull_request_template.md do not match ci.
按通道标签
每个通道除了基础的 channel 标签外,还会获得一个 channel:<name> 标签。
| 标签 | 匹配 |
|---|---|
channel:bluesky | bluesky.rs |
channel:clawdtalk | clawdtalk.rs |
channel:cli | cli.rs |
channel:dingtalk | dingtalk.rs |
channel:discord | discord.rs |
channel:email | email_channel.rs, gmail_push.rs |
channel:imessage | imessage.rs |
channel:irc | irc.rs |
channel:lark | lark.rs |
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:wati | wati.rs |
channel:webhook | webhook.rs |
channel:wecom | wecom.rs |
channel:whatsapp | whatsapp.rs, whatsapp_storage.rs, whatsapp_web.rs |
每个提供者的标签
| 标签 | 匹配 |
|---|---|
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:telnyx | telnyx.rs |
每个工具组的标签
工具按逻辑功能分组,而非每个文件一个标签。
| 标签 | 匹配 |
|---|---|
工具:浏览器 | browser.rs, browser_delegate.rs, browser_open.rs, text_browser.rs, screenshot.rs |
工具:云 | cloud_ops.rs, cloud_patterns.rs |
工具:composio | composio.rs |
工具:cron | cron_add.rs, cron_list.rs, cron_remove.rs, cron_run.rs, cron_runs.rs, cron_update.rs |
工具:文件 | file_edit.rs, file_read.rs, file_write.rs, glob_search.rs, content_search.rs |
工具:google-workspace | google_workspace.rs |
工具:mcp | mcp_client.rs, mcp_deferred.rs, mcp_protocol.rs, mcp_tool.rs, mcp_transport.rs |
工具:内存 | memory_forget.rs, memory_recall.rs, memory_store.rs |
工具:microsoft365 | microsoft365/** |
工具:安全 | security_ops.rs, verifiable_intent.rs |
工具:shell | shell.rs、node_tool.rs、cli_discovery.rs |
工具:标准操作程序 | sop_advance.rs, sop_approve.rs, sop_execute.rs, sop_list.rs, sop_status.rs |
工具:web | web_fetch.rs, web_search_tool.rs, web_search_provider_routing.rs, http_request.rs |
尺寸标签
基于有效变更行数(针对仅涉及文档或大量锁文件的 PR 进行归一化处理)。目前手动应用——此前用于计算这些数据的规模自动化功能已在 CI 简化过程中被移除。
| 标签 | 阈值 |
|---|---|
size: XS | ≤ 80 行 |
size: S | ≤ 250 行 |
size: M | ≤ 500 行 |
size: L | ≤ 1000 行 |
size: XL | > 超过 1000 行 |
风险标签
For PRs, risk labels describe the actual diff under review: touched paths, behavior change, security boundary exposure, and rollback difficulty. For issues, risk labels describe the likely fix blast radius based on the report, help triage reviewer depth and contributor fit, and may change once a concrete PR shows the actual implementation path. Currently applied manually.
| 标签 | 含义 |
|---|---|
风险:低 | 未触及高风险路径,属于小改动 |
风险:中等 | 对 crates/*/src/** 进行行为变更,但不影响边界或安全性 |
风险:高 | 触及高风险路径,或进行大型安全相关变更 |
风险:手动 | 维护者覆盖,用于冻结自动风险重新计算 |
高风险路径:crates/zeroclaw-runtime/src/**、crates/zeroclaw-gateway/src/**、crates/zeroclaw-tools/src/**、crates/zeroclaw-runtime/src/security/**、.github/workflows/**。
当不确定时,视为高风险。
贡献者层级标签
定义在 .github/label-policy.json 中。根据从 GitHub API 查询到的作者已合并的 PR 数量。目前手动应用。
| 标签 | 最小合并的 PR |
|---|---|
受信任的贡献者 | 5 |
经验丰富的贡献者 | 10 |
主要贡献者 | 20 |
杰出贡献者 | 50 |
状态标签
Track lifecycle state of RFCs and tracked work items. Applied manually unless a maintained workflow says otherwise.
| 标签 | 描述 |
|---|---|
status:accepted | RFC or work item ratified by the team. This does not exempt the issue from stale handling by itself. |
状态:已阻止 | Work is valid but waiting on an external dependency, maintainer decision, or linked prerequisite. Exempt from stale while the blocker is recorded and unresolved. Do not pair with status:no-stale for the same blocker. |
status:in-progress | An open PR is actively targeting this issue. Reconcile against live PR state during stale passes; the label is not a permanent exemption after the PR closes. |
status:stale | No author activity for the stale window; may close if not refreshed |
status:no-stale | Explicit stale exemption for accepted or otherwise long-lived work that is not already protected by another stale exclusion. Use only when a maintainer comment, issue body, or tracker entry records why the issue should stay open. |
Resolution labels
Resolution labels explain why an issue or PR is being closed or removed from the active queue. They are terminal outcomes, not lifecycle status labels, and should include enough comment context for a future maintainer to understand the decision.
| 标签 | 目的 |
|---|---|
wontfix | Valid request or report that the project is explicitly choosing not to pursue. Use a brief rationale; do not silently close. |
无效 | Not actionable as a bug, feature request, support item, RFC, or tracked project work. Explain the mismatch or missing requirement. |
duplicate | Same underlying issue as another tracked issue or PR. Link the canonical target before closing or redirecting discussion. |
Do not create or apply proposed terminal labels such as status:wont-do or status:wont-fix until a maintainer-approved label migration packet defines the exact rename, alias, or deletion plan. The current live label for the board-level “Won’t Do” concept is wontfix.
Superseding is a replacement process, not currently a live label. Use Superseding PRs for replacement rules and attribution requirements until a later approved migration packet creates or maps a superseding label.
分类标签
已手动应用——此前用于处理这些问题的自动响应自动化功能在 CI 简化过程中已被移除。
| 标签 | 目的 |
|---|---|
r:需要复现 | 不完整的错误报告;请求提供可复现的确定性步骤 |
r:support | 用法/帮助项应在错误积压之外更好地处理 |
stale-candidate | 休眠的 PR 或问题;适合关闭 |
Community pickup labels
Applied manually when maintainers want outside contribution.
| 标签 | 目的 |
|---|---|
good first issue | Small, self-contained, well-documented XS/S work that is safe for a new contributor and has acceptance criteria, relevant code or docs links, and a named mentor or contact |
help wanted | Actionable, unblocked work that maintainers want external help on and can review, usually low or medium likely issue risk |
Do not use help wanted as a generic marker for “valid but unstaffed.” If an issue is blocked, architecture-dependent, missing acceptance criteria, likely high-risk, or waiting on a policy decision, leave it without pickup labels until the blocker is resolved or a maintainer writes the missing scope.
维护触发器
在以下情况时更新此页面:
- 向源代码树中添加了新的通道、提供程序或工具(路径标签需要新增条目)。
- 标签策略或阈值已更改。
- 新的分诊工作流出现,或旧的被移除。
自动化状态备注(“目前手动应用”)被特意包含在内,以便未来的维护者不会误以为工作流的缺失意味着标签层级不存在。