10 KiB
重复 Issue 检测 — 端到端工作流示例与验证记录
配套文档:
../SKILL.md本文记录一次真实跑通的完整工作流(只读分析 + 写动作计划),含真实命令输出,作为「使用示例 + Agent 平台验证结果」交付物。
验证环境
| 项 | 值 |
|---|---|
| Agent 平台 | Claude Code |
| gitlink-cli | local-build(本仓库源码编译产物,非 npm 发布版 v0.1.13) |
| 登录用户 | z2_cc(auth status ✓) |
| 测试目标 | Gitlink/gitlink-cli(19 条开放 Issue) |
| 验证日期 | 2026-06-17 |
选
Gitlink/gitlink-cli是因其开放 Issue 较多、含真实重复/测试 Issue;写动作未在该他人仓库执行,仅做只读分析 + 命令语法已--help验证。
步骤 1:拉取全部开放 Issue
gitlink-cli issue +list --owner Gitlink --repo gitlink-cli --state open --limit 50 --format json
解析 data.issues[],取 number(Web编号) / subject / comment_journals_count / tags / created_at:
all_count: 19
#21 [3评论] 2026-06-14 dataset 快捷命令需要的后端 API 支持
#20 [1评论] 2026-06-12 bug: api 命令单次调用不替换 :owner/:repo 占位符(0.2.0)
#6 [3评论] 2026-04-25 只要创建Iusse就让Agent开始干活
#1 [1评论] 2026-04-01 CLI测试Issue - 已更新标题
#18 [0评论] 2026-05-22 giklink-cli issue +update后issue状态框变红色
#17 [0评论] 2026-05-21 API是否支持自动读取仓库内文件(README等)?
#16 [5评论] 2026-05-19 [Bug] Windows 平台完全不可用:Release 缺少 Windows 二进制…
#14 [1评论] 2026-05-16 pr +view 的返回中缺少PR关闭时间
#4 [4评论] 2026-04-18 PR使用gd login无法自动完成
#5 [1评论] 2026-04-24 通过这个skill认领任务,描述信息消失
#7 [1评论] 2026-04-25 目前看Gitlink-skill返回的PR ID和实际的不符
#15 [1评论] 2026-05-19 issue +view 返回的数据与网页显示不一致
#11 [0评论] 2026-05-13 [test] batch-close 测试 issue 1
#12 [0评论] 2026-05-13 [test] batch-close 测试 issue 2
#9 [2评论] 2026-05-12 feat(api): 希望 Issue API 支持按项目内序号查询
#8 [1评论] 2026-05-12 Test: PR#7 标题已修改
#10 [1评论] 2026-05-12 [test] PR#11 v1 API 测试 - 已更新
#2 [4评论] 2026-04-03 gitlink-cli 使用讨论与反馈收集
#3 [1评论] 2026-04-04 Skill测试Issue-0404 (已更新)
步骤 2:粗筛候选对
标题信号已显出两个簇:
- 簇 A:
#11/#12——[test] batch-close 测试 issue 1/2,同作者同时间,强重复嫌疑。 - 簇 B(主题「
+view/+update返回数据异常」):#5/#14/#15/#18—— 需看正文区分「重复」还是「相关」。
步骤 3:取正文做相似度比对
gitlink-cli issue +view --owner Gitlink --repo gitlink-cli --number 11 --format json
gitlink-cli issue +view --owner Gitlink --repo gitlink-cli --number 12 --format json
| 编号 | 作者 | 创建时间 | 正文(节选) |
|---|---|---|---|
| #11 | wbtiger | 2026-05-13 19:06 | PR #12 测试用,验证后关闭 |
| #12 | wbtiger | 2026-05-13 19:06 | PR #12 测试用,验证后关闭 |
→ 正文逐字相同、同作者、同一分钟提交,相似度 0.98,判为高度疑似重复。
簇 B 正文各异(#5「描述丢失」、#14「关闭时间缺失」、#15「返回旧数据」、#18「状态框变红」),相似度 0.40–0.55 → 相关但非重复,不合并。
步骤 4:幂等检查(写动作前)
gitlink-cli issue +comments --owner Gitlink --repo gitlink-cli --number 12 --format json
实测输出(节选)—— 注意 +comments 返回的是活动日志,需区分:
[
{ "is_journal_detail": true, "operate_content": "创建了<b>疑修</b>", "notes": "", "user": {"login":"wbtiger"} },
{ "is_journal_detail": true, "operate_content": "…", "notes": "" },
{ "is_journal_detail": true, "operate_content": "…", "notes": "" }
]
判定规则:仅当某条 notes 非空且含标记串(duplicate-of / 重复,指向 #)才视为已处理。此处 3 条均为系统日志(notes 空)→ 未处理,可执行写动作。
真实文字评论才会带
notes(如 #21 的「新建声明: 我来解决」)。comment_journals_count与+comments条数口径不同(后者含系统日志),幂等一律以notes内容为准。
另查 issue +list 的 tags:#12 为空 → 未打「重复」标签 → 双重确认未处理。
步骤 5:输出报告(dry-run,默认产物)
# 重复 Issue 收敛报告 — Gitlink/gitlink-cli
扫描:开放 Issue 19 条 | 模式:dry-run(只读) | 2026-06-17
## 🔴 重复簇 1(高度疑似)
- 主 Issue:#11 `[test] batch-close 测试 issue 1`(wbtiger,2026-05-13,正文"PR #12 测试用,验证后关闭")
- 重复项:
- #12 `[test] batch-close 测试 issue 2` — 相似度 0.98(正文逐字一致、同作者同时间)
- 幂等:#12 无 duplicate 标记评论、无「重复」标签 → 待处理
- 建议动作:评论关联 #11 → 打「重复」标签 → 关闭 #12
## 🟡 相关但非重复(仅提示,不合并)
主题「+view/+update 返回数据异常」:#5 / #14 / #15 / #18,症状各异(相似度 0.40–0.55),分别处理。
## ✅ 待确认写动作
| 重复项 | 动作 | 命令 |
|--------|------|------|
| #12 | 评论+打标+关闭 | 见步骤 6 |
步骤 6:写动作计划(需用户逐条确认,未在他人仓库执行)
# 6.1 取「重复」标签 ID(已确认存在:id=298661,描述"表示已存在类似的疑修")
gitlink-cli label +list --owner Gitlink --repo gitlink-cli --format json
# 6.2 关联评论
gitlink-cli issue +comment --owner Gitlink --repo gitlink-cli --number 12 \
--body "🔁 疑似重复 Issue:本 Issue 与 #11 高度相似(正文逐字一致,相似度 0.98)。主 Issue → https://www.gitlink.org.cn/Gitlink/gitlink-cli/issues/11"
# 6.3 打「重复」标签做幂等标记
gitlink-cli issue +update --owner Gitlink --repo gitlink-cli --number 12 --label 298661
# 6.4 关闭重复项
gitlink-cli issue +close --owner Gitlink --repo gitlink-cli --number 12 \
--comment "关闭:与 #11 重复,后续讨论请移步主 Issue。"
以上命令语法均经
--help验证可用;因Gitlink/gitlink-cli非登录用户所有,未实际执行写动作。如需完整写链路验证,请在z2_cc自有仓库上重跑(可先issue +create造两条重复 Issue)。
关键验证结论
| 能力 | 命令 | 状态 |
|---|---|---|
| 批量拉取(含 Web 编号/标签/评论数/时间) | issue +list --state --limit --format json |
✅ 真实返回 |
| 关键词预筛 | issue +list --keyword Windows → 命中 1 条 |
✅ |
| 取正文 | issue +view --number 11/12 → description |
✅ |
| 读评论(幂等) | issue +comments --number 12 → 含 notes/is_journal_detail |
✅ |
| 标签管理 | label +list → 「重复」标签 id=298661 |
✅ |
| 评论/关闭 | issue +comment / +close --number |
✅ 实际执行成功(见附录) |
| 打标签 | issue +update --label |
⚠️ 返回 ok 但未生效(见附录) |
⚠️ 版本前提:以上能力依赖含
+comments/label/--keyword的 gitlink-cli(本仓库源码已具备;npm 发布版 v0.1.13 不具备)。参赛验证基于本地源码编译产物。
附:写链路实测验证(z2_cc/gitlink_help_center)
为验证写动作,在 z2_cc 拥有 Owner 权限的复刻仓 z2_cc/gitlink_help_center 实跑全链路(该仓已自带「重复」标签 id=315565、「测试」标签 id=315564)。
A. 造两条高度相似的测试 Issue
gitlink-cli issue +create --owner z2_cc --repo gitlink_help_center -t "【dup-test】登录按钮点击无反应" -b "## 复现步骤 ..." # → id=144589, Web #22
gitlink-cli issue +create --owner z2_cc --repo gitlink_help_center -t "【dup-test】登录按钮点了没反应" -b "## 复现步骤 ..." # → id=144590, Web #23
(正文几乎逐字一致、标题同义 → 相似度 ~0.95,构造为重复对)
B. 幂等检查(只读)
gitlink-cli issue +comments --owner z2_cc --repo gitlink_help_center --number 23 --format json
→ data.journals[] 仅 1 条系统动态(is_journal_detail=true,notes 空),无 duplicate 标记 → 可执行写动作。
C. 写动作执行结果
| 动作 | 命令 | 结果 |
|---|---|---|
| 关联评论 | issue +comment --number 23 --body "🔁 疑似重复…指向 #22" |
✅ 发布成功(journal id=476901) |
| 打「重复」标签 | issue +update --number 23 --label 315565 |
⚠️ 返回 ok,但 +list/+view 的 tags=[],未生效 |
| 关闭重复项 | issue +close --number 23 --comment "关闭:与 #22 重复…" |
✅ 关闭成功 |
D. 验证写动作落地
gitlink-cli issue +comments --owner z2_cc --repo gitlink_help_center --number 23 --format json
实测 data.journals[](5 条):
[0] is_journal_detail=true operate_content="创建了<b>疑修</b>" notes=""
[1] is_journal_detail=false operate_content="" notes="🔁 疑似重复 Issue:本 Issue 与 #22 高度相似…"
[2] is_journal_detail=true operate_content="将状态由<b>新增</b>更改为<b>关闭</b>" notes=""
[3] is_journal_detail=true operate_content="将结束日期设置为<b>2026-06-17</b>" notes=""
[4] is_journal_detail=false operate_content="" notes="关闭:与 #22 重复,后续讨论请移步主 Issue #22。"
gitlink-cli issue +list --owner z2_cc --repo gitlink_help_center --state closed --format json
→ #23 status=关闭,#22 status=新增(主 Issue 保持开放)。✅
E. 结论
- 评论 + 关闭链路完全可用,且
+comments能可靠回读评论(is_journal_detail=false的notes)→ 评论幂等成立。 +update --label不可靠(返回 ok 但标签未生效)→ 幂等不依赖标签,仅用评论标记。- 验证后已清理测试 Issue(
issue +delete/ 关闭清理),不在帮助中心仓留痕。