Skip to content

os-dev 的「Add the one label」条款在 PUT-only 工具面下不可执行 —— 照做就是它要防的整集抹除(实测于 PR #5683) #5684

Description

@os-zhuang

发现于 #5649 的 CI 侧实施(PR #5683)中对 MCP issue_write 写入语义的实测。查重:搜 issue_write labels PUTos-dev.md skip-changeset label 均无既有单(仅命中 #5649 本身与 PM 登记表 #4604)。

事实

#5650(修 #5559)已落地的 .claude/agents/os-dev.md 收尾清单条款写的是:

Add the one label instead of writing the label set — a set-write wipes the size/* / documentation / tests the bots just applied

意图正确。问题是:os-dev 手上唯一能写标签的工具是 MCP issue_writelabels 字段,而它是整集 PUT。 于是「只加一个标签」照字面执行 —— issue_write(labels: ['skip-changeset']) —— 恰好就是条款要禁止的那次整集抹除。

实测(PR #5683,2026-08-06,写入前标签为 ["ci/cd","size/s"]):

调用 issue_write(method=update, issue_number=5683, labels=["skip-changeset"])
回读 GET /pulls/5683 → ["skip-changeset"]          # ci/cd 与 size/s 都不见了

timeline:
00:07:04  unlabeled  ci/cd           os-zhuang
00:07:04  unlabeled  size/s          os-zhuang
00:07:04  labeled    skip-changeset  os-zhuang

对照同一 PR 上传全集的一次写入,只产生 labeled、零 unlabeled:

调用 issue_write(labels=["skip-changeset","ci/cd","size/s"])
回读 → ["ci/cd","size/s","skip-changeset"]
00:08:04  labeled  ci/cd   os-zhuang
00:08:04  labeled  size/s  os-zhuang

补充事实(两条都是本次实测,写进单里省得下一个人再验一遍):

  • 容器里没有 gh CLI,未认证 curl 也无法写 —— 真正的新增语义 POST /issues/{n}/labels 对 os-dev 当前不可达。
  • MCP issue_readget_labels 对 PR 号直接报 Could not resolve to an Issue with the number of 5683,所以「回读」这一步也不能用它,得走 REST GET /pulls/{n}issue_read get

为什么值得修

建议的修法(措辞层面,不改工具)

把条款从「add the one label」改成工具面真正可执行的动作:先回读当前标签,再把「现有全集 + skip-changeset」一次写回,并写明为什么 —— issue_writelabels 是 PUT,不存在「只加一个」的调用方式;同时把「回读用 REST GET /pulls/{n},别用 get_labels」记进去。

⚠️ 落点是 .claude/agents/os-dev.md(以及若有同款措辞的 pm-dispatch SKILL),与 #5649 的 CI 侧 PR #5683 无文件重叠,可独立进行。

Found-during: #5649(devx 车道第 8 轮,dev 会话 session_01GX3sL71LFq8m2usg6VqTSE)。unassigned,交 PM 分诊。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions