Merge branch 'master' of https://www.gitlink.org.cn/zzx-coder/gitlink-cli
This commit is contained in:
commit
d17b4f0383
|
|
@ -2,6 +2,8 @@
|
|||
|
||||
## 2026-05-31 新增 `wiki +lint` 文档质量检查命令
|
||||
|
||||
> **注意:`+lint` 命令当前仅在本地编译版本中可用**(全局安装的 `gitlink-cli` 暂未包含)。需先 `go build -o gitlink-cli.exe .` 然后使用 `./gitlink-cli.exe wiki +lint`。
|
||||
|
||||
### 使用方法
|
||||
|
||||
```bash
|
||||
|
|
|
|||
|
|
@ -97,6 +97,8 @@ gitlink-cli release +update --id <version_id> --body "<更新后的 Notes>"
|
|||
**完整变更日志**: https://www.gitlink.org.cn/{OWNER}/{REPO}/compare/{PREV}...{VERSION}
|
||||
```
|
||||
|
||||
> **条目格式要求**:每个变更条目必须在末尾标注作者,格式为 `- 变更描述 (#编号) (@作者)`。commit 无 PR 编号时格式为 `- 变更描述 (作者名)`。
|
||||
|
||||
### 简化模板
|
||||
|
||||
```markdown
|
||||
|
|
|
|||
|
|
@ -62,17 +62,17 @@ AI 根据 [分类规则](../references/classify-rules.md) 对收集到的数据
|
|||
|
||||
```
|
||||
新功能:
|
||||
- 支持批量 Issue 操作 (#12)
|
||||
- 新增 uninstall 命令 (#11)
|
||||
- 支持批量 Issue 操作 (#12) (@zhangsan)
|
||||
- 新增 uninstall 命令 (#11) (@lisi)
|
||||
|
||||
Bug 修复:
|
||||
- 修复 URL 解析异常 (#10)
|
||||
- 修复 URL 解析异常 (#10) (@wangwu)
|
||||
|
||||
功能改进:
|
||||
- 重构自动部署配置
|
||||
- 重构自动部署配置 (camelliamc)
|
||||
|
||||
文档:
|
||||
- 更新分支映射说明
|
||||
- 更新分支映射说明 (camelliamc)
|
||||
```
|
||||
|
||||
### 第六步:生成 Notes 并确认
|
||||
|
|
@ -89,14 +89,14 @@ AI 套用标准模板生成草稿并展示给用户:
|
|||
- **破坏性变更**: 0 个
|
||||
|
||||
## ✨ 新功能
|
||||
- 支持批量 Issue 操作 (#12)
|
||||
- 新增 uninstall 命令 (#11)
|
||||
- 支持批量 Issue 操作 (#12) (@zhangsan)
|
||||
- 新增 uninstall 命令 (#11) (@lisi)
|
||||
|
||||
## 🐛 Bug 修复
|
||||
- 修复 URL 解析异常 (#10)
|
||||
- 修复 URL 解析异常 (#10) (@wangwu)
|
||||
|
||||
## 🔧 功能改进
|
||||
- 重构自动部署配置
|
||||
- 重构自动部署配置 (camelliamc)
|
||||
|
||||
## 🙏 贡献者
|
||||
zzx-coder, camelliamc
|
||||
|
|
@ -120,17 +120,17 @@ gitlink-cli release +create \
|
|||
- **破坏性变更**: 0 个
|
||||
|
||||
## ✨ 新功能
|
||||
- 支持批量 Issue 操作 (#12)
|
||||
- 新增 uninstall 命令 (#11)
|
||||
- 支持批量 Issue 操作 (#12) (@zhangsan)
|
||||
- 新增 uninstall 命令 (#11) (@lisi)
|
||||
|
||||
## 🐛 Bug 修复
|
||||
- 修复 URL 解析异常 (#10)
|
||||
- 修复 URL 解析异常 (#10) (@wangwu)
|
||||
|
||||
## 🔧 功能改进
|
||||
- 重构自动部署配置
|
||||
- 重构自动部署配置 (camelliamc)
|
||||
|
||||
## 🙏 贡献者
|
||||
zzx-coder, camelliamc
|
||||
zhangsan, lisi, wangwu, camelliamc
|
||||
|
||||
---
|
||||
**完整变更日志**: https://www.gitlink.org.cn/zzx-coder/gitlink-cli/compare/v1.0.0...v1.1.0"
|
||||
|
|
|
|||
|
|
@ -64,9 +64,9 @@ gitlink-cli issue +list --state closed --format json
|
|||
|
||||
收集完成后,AI 整合三类数据:
|
||||
|
||||
1. **Commits** → 提取 commit message 第一行作为变更摘要
|
||||
2. **PRs** → 用 `title` 和 `number` 生成条目:`- 功能描述 (#PR编号)`
|
||||
3. **Issues** → 用 `subject` 和 `project_issues_index` 生成条目:`- Issue 描述 (#编号)`
|
||||
1. **Commits** → 提取 commit message 第一行作为变更摘要,附作者名
|
||||
2. **PRs** → 用 `title`、`number`、`author.login` 生成条目:`- 功能描述 (#PR编号) (@作者)`
|
||||
3. **Issues** → 用 `subject`、`project_issues_index`、`author.login` 生成条目:`- Issue 描述 (#编号) (@作者)`
|
||||
|
||||
时间筛选逻辑:从 `release +list` 获取上一个版本的发布时间,只取该时间之后的 PR/Issue。
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@
|
|||
| `{OWNER}` | 仓库所有者,从 git remote 解析 |
|
||||
| `{REPO}` | 仓库名称,从 git remote 解析 |
|
||||
| `{FEATURE_COUNT}` 等 | 分类后的各类变更数量 |
|
||||
| `{FEATURES}` 等 | 分类后的各类变更条目,每条一行 `- 描述 (#编号)` |
|
||||
| `{FEATURES}` 等 | 分类后的各类变更条目,每条一行 `- 描述 (#编号) (@作者)` |
|
||||
| `{CONTRIBUTORS}` | 从 commits/PRs 去重后的贡献者列表 |
|
||||
|
||||
## 命令
|
||||
|
|
|
|||
|
|
@ -0,0 +1,345 @@
|
|||
---
|
||||
name: gitlink-faq
|
||||
version: 1.3.0
|
||||
description: "Issue 知识库:从项目 Issue 自动分类(Bug/功能请求/使用问题),按类型归纳聚类,生成结构化知识库发布到 Wiki;增量更新已有知识库;检测新 Issue 是否与已有问题重复。当用户需要整理 Issue、归纳 Issue、总结常见问题/Bug、建立知识库、更新知识库、检查重复 Issue、查重时触发。通用 Issue 操作(创建/查看/更新/关闭/评论等)请使用 gitlink-issue skill。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
cliHelp: "gitlink-cli issue --help"
|
||||
---
|
||||
|
||||
# gitlink-faq(Issue 知识库)
|
||||
|
||||
**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。**
|
||||
**CRITICAL — 写入/删除操作前,务必先确认用户意图。默认 dry-run 预览,用户确认后再执行。**
|
||||
**CRITICAL — 只读操作(`issue +list`、`issue +view`、`wiki +view`)自动连续执行,不要逐个请求用户确认。数据采集和分析阶段一气呵成,仅在最终写入步骤前暂停确认。**
|
||||
**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`(GitHub CLI)操作 GitLink 资源。**
|
||||
|
||||
> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)
|
||||
|
||||
## 运行模式
|
||||
|
||||
| 模式 | 说明 | 典型触发语 | 需要认证 |
|
||||
|------|------|------------|----------|
|
||||
| **模式 A:Issue 归纳** | 采集全部 Issue → 按类型分类 → 主题聚类 → 生成结构化知识库发布到 Wiki | "整理 Issue""归纳关闭的 Issue""总结项目问题""建立知识库""分析 Issue" | 是(发布 Wiki 需写入) |
|
||||
| **模式 B:重复检测** | 对指定 Issue,在知识库和历史 Issue 中查找相似项,判断是否重复 | "查重""有没有类似的 Issue""这个是不是有人报过" | 否(仅读取;评论需认证) |
|
||||
| **模式 C:Wiki 增量更新** | 读取已有 Wiki 页面 → 拉取新 Issue → 分类合并到现有知识库结构 → 更新 Wiki | "把这个 Issue 加到知识库""更新 Wiki 页面""补充到知识库里""同步最新 Issue 到 Wiki" | 是(读取+写入 Wiki) |
|
||||
|
||||
---
|
||||
|
||||
## 模式 A:Issue 归纳(6 步)
|
||||
|
||||
当用户说 **"整理 Issue"、"归纳已关闭 Issue"、"总结项目问题"、"建立知识库"** 等时,执行以下流程。
|
||||
|
||||
### 第 1 步:采集全部 Issue
|
||||
|
||||
**CRITICAL**:不要仅采集 `--state closed`。GitLink 平台很多已解决的 Issue 不会被及时设置为"关闭"状态,只看 closed 会漏掉大量有分析价值的 Issue。
|
||||
|
||||
```bash
|
||||
# 同时采集 open 和 closed,覆盖所有 Issue
|
||||
gitlink-cli issue +list --state open --limit 100 --format json
|
||||
gitlink-cli issue +list --state closed --limit 100 --format json
|
||||
```
|
||||
|
||||
将两份列表合并去重,得到完整 Issue 集合。
|
||||
|
||||
采集量策略参见 [`references/gitlink-faq-collect.md`](references/gitlink-faq-collect.md)。
|
||||
|
||||
### 第 2 步:筛选 + 读取详情(依靠 description)
|
||||
|
||||
先按标题粗筛,仅排除:
|
||||
- 标题含 `[test]` / `测试` 的纯测试 Issue
|
||||
- 标题为空或仅有占位符的 Issue
|
||||
|
||||
其余 Issue **一律保留**,逐个读详情:
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +view --number N --format json
|
||||
```
|
||||
|
||||
提取字段:`subject`(标题)、`description`(描述)。
|
||||
|
||||
**description 是核心分析源**:
|
||||
- 部分 Issue 的 description 非常详细(含复现步骤、环境信息、修复建议)
|
||||
- description 的质量直接决定分析深度
|
||||
- `comment_journals_count` 数值可参考(表示讨论热度),但实际评论内容无法通过 API 获取(见下方 API 限制)
|
||||
|
||||
每批 20-30 个,尽量覆盖所有非测试 Issue。
|
||||
|
||||
### 第 3 步:Issue 类型分类
|
||||
|
||||
对每条 Issue,AI 根据 (subject + description) 判断类型。**不要因为"缺少 journals"或"状态未关闭"而排除 Issue**——是否有分析价值取决于内容本身,不是状态。
|
||||
|
||||
| 类型 | 判断依据 | 纳入条件 | 分析价值 |
|
||||
|------|----------|----------|----------|
|
||||
| **Bug 报告** | 描述异常行为、报错、与预期不符 | description 非空 或 subject 明确描述症状 | 高频 Bug = 模块质量信号 |
|
||||
| **功能请求** | 建议新增能力、改进体验 | 保留。高频请求反映用户需求 | 用户需求优先级 |
|
||||
| **使用问题** | 不知道怎么用、配置不清楚 | 保留。即使未回复也是需求信号 | 文档/体验改进方向 |
|
||||
| **其他** | 不属于以上三类 | 标题无实质内容则忽略 | 低 |
|
||||
|
||||
**输出**:每条 Issue 带上类型标签。
|
||||
|
||||
**宽松原则**:宁可多留一条低价值的,也别漏掉一条有洞察的。不确定类型的归入"其他"而非丢弃。
|
||||
|
||||
### 第 4 步:按类型分别聚类
|
||||
|
||||
将同类型的 Issue 按语义相似度聚类。不同类型聚类维度不同:
|
||||
|
||||
| 类型 | 聚类维度 | 聚类目标 |
|
||||
|------|----------|----------|
|
||||
| Bug 报告 | 按**出问题的模块/功能**归类 | 找出"哪个模块 Bug 最多"、"同类 Bug 的共同根因" |
|
||||
| 功能请求 | 按**请求的功能领域**归类 | 找出"用户最想要什么能力"、"哪些增强呼声最高" |
|
||||
| 使用问题 | 按**操作场景**归类 | 传统 Q&A:提炼"问题 → 答案" |
|
||||
|
||||
**Bug 聚类输出**:
|
||||
|
||||
```json
|
||||
{
|
||||
"module": "Issue 数据显示",
|
||||
"bug_count": 4,
|
||||
"pattern": "CLI 返回数据与网页端不一致、字段缺失",
|
||||
"affected_issues": [5, 7, 15, 18],
|
||||
"typical_symptom": "issue +view / pr +view 返回结果缺少关键字段或与网页端不一致"
|
||||
}
|
||||
```
|
||||
|
||||
**功能请求聚类输出**:
|
||||
|
||||
```json
|
||||
{
|
||||
"feature_area": "API 能力增强",
|
||||
"request_count": 3,
|
||||
"pattern": "希望 API 支持更多查询/操作能力",
|
||||
"affected_issues": [9, 14, 21],
|
||||
"common_ask": "支持按序号查询 Issue、读取仓库文件、返回完整时间字段"
|
||||
}
|
||||
```
|
||||
|
||||
**使用问题聚类输出**(仅当同类 ≥2 条时生成 Q&A):
|
||||
|
||||
```json
|
||||
{
|
||||
"topic": "安装配置",
|
||||
"question": "gitlink-cli 安装后无法运行怎么办?",
|
||||
"answer": "检查 PATH、确认平台支持,详见安装文档",
|
||||
"source_issues": [16, 20]
|
||||
}
|
||||
```
|
||||
|
||||
### 第 5 步:生成知识库文档
|
||||
|
||||
按以下结构组织 Markdown:
|
||||
|
||||
```markdown
|
||||
# 📊 Issue 知识库
|
||||
|
||||
> 自动生成 | 数据来源:已关闭 Issue({N} 条)
|
||||
> 更新时间:{DATE}
|
||||
|
||||
## 🐛 Bug 高频模块
|
||||
|
||||
### {模块名}({N} 个 Bug)
|
||||
- **典型症状**: ...
|
||||
- **涉及 Issue**: #A, #B, #C
|
||||
- **已知修复**: ...(如有)
|
||||
|
||||
## 💡 功能请求热度
|
||||
|
||||
### {功能领域}({N} 个请求)
|
||||
- **用户期望**: ...
|
||||
- **涉及 Issue**: #D, #E, #F
|
||||
|
||||
## 📖 常见使用问题
|
||||
|
||||
### Q: {问题}?
|
||||
**A:** {答案}
|
||||
> 来源: #G, #H
|
||||
```
|
||||
|
||||
根据实际数据量,若某类型 Issue 过少(<2 条),该章节可省略或合并到"其他"。
|
||||
|
||||
文档模板参见 [`examples/faq-template.md`](examples/faq-template.md)。
|
||||
|
||||
完成后保存为 `./issue-knowledge-base.md`,展示给用户预览。
|
||||
|
||||
### 第 6 步:发布到 Wiki
|
||||
|
||||
用户确认后:
|
||||
|
||||
```bash
|
||||
# 首次创建
|
||||
gitlink-cli wiki +create --title "Issue-知识库" --file ./issue-knowledge-base.md
|
||||
|
||||
# 后续更新
|
||||
gitlink-cli wiki +update --title "Issue-知识库" --file ./issue-knowledge-base.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 模式 B:Issue 查找与查重
|
||||
|
||||
当用户说 **"查重"、"检查重复"、"有没有类似的 Issue"、"找一下关于 xx 的 Issue"、"这个是不是有人报过"、"有没有和 xx 相关的"** 时执行。
|
||||
|
||||
**CRITICAL**:本模式下,匹配到候选 Issue 后**必须自动读取其详情和 journals**,不要问用户"需要我读详情吗"。一次性完成搜索→读详情→给出分析结论。
|
||||
|
||||
### 第 1 步:确定搜索目标
|
||||
|
||||
- 用户指定了 Issue 编号 → `issue +view --number N` 获取目标内容
|
||||
- 用户描述了主题/关键词(如"与创建 Issue 有关的")→ 进入关键词搜索模式
|
||||
|
||||
### 第 2 步:拉取 Issue 列表
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +list --state open --limit 100 --format json
|
||||
gitlink-cli issue +list --state closed --limit 100 --format json
|
||||
```
|
||||
|
||||
提取全部 Issue 的 `subject`(标题),按用户主题进行标题匹配。
|
||||
|
||||
### 第 3 步:自动读取候选 Issue 详情(关键步骤)
|
||||
|
||||
筛选出候选 Issue 后,**立即逐个读取详情,不需询问用户**:
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +view --number N --format json
|
||||
```
|
||||
|
||||
提取:标题、描述、journals(评论讨论历史)。
|
||||
|
||||
### 第 4 步:给出分析结论
|
||||
|
||||
综合标题+描述+journals,给用户完整分析:
|
||||
|
||||
- **直接匹配**:Issue 的核心讨论内容、维护者回复中有无解决方案
|
||||
- **间接相关**:Issue 涉及同一模块/功能但由于不同原因
|
||||
- **不相关**:标题含关键词但内容无关
|
||||
|
||||
对每条匹配的 Issue 输出:
|
||||
- 标题 + 编号
|
||||
- 一句话摘要(从描述和 journals 提取)
|
||||
- 维护者有无回复/解决方案
|
||||
- 相关度判定
|
||||
|
||||
### 第 5 步:执行操作(仅查重+用户确认后)
|
||||
|
||||
如果是查重场景且判定高度重复,用户确认后执行:
|
||||
|
||||
```bash
|
||||
# 添加评论(使用 Issue ID,参见 gitlink-issue skill)
|
||||
gitlink-cli issue +comment --number N --body "此 Issue 与 #M 内容重复,建议..."
|
||||
|
||||
# 打重复标签(使用项目内编号,批量操作)
|
||||
gitlink-cli issue +batch-label --label duplicate --numbers N,M
|
||||
```
|
||||
|
||||
> 通用 Issue 操作(创建、查看、更新、关闭、评论等)参见 [`../gitlink-issue/SKILL.md`](../gitlink-issue/SKILL.md)。
|
||||
|
||||
---
|
||||
|
||||
## 模式 C:Wiki 增量更新
|
||||
|
||||
当用户说 **"把这个 Issue 加到知识库里"、"更新 Wiki 页面"、"补充到知识库"、"同步最新 Issue 到 Wiki"** 等时执行。
|
||||
|
||||
**核心思路**:不是重新生成整个知识库,而是读取现有 Wiki 内容 → 拉取新 Issue → 分类合并 → 更新 Wiki。
|
||||
|
||||
### 第 1 步:读取现有 Wiki
|
||||
|
||||
```bash
|
||||
gitlink-cli wiki +view --title "Issue-知识库" --format json
|
||||
```
|
||||
|
||||
从返回的 JSON 中提取内容(CLI 自动处理 base64 解码)。
|
||||
|
||||
如果 Wiki 不存在(404),回退到**模式 A**——首次创建知识库。
|
||||
|
||||
### 第 2 步:拉取用户指定的 Issue
|
||||
|
||||
根据用户指示直接读 Issue 详情,**用户说哪个就拉哪个**,不要自己去拉全量列表做差集对比。
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +view --number N --format json
|
||||
```
|
||||
|
||||
| 用户意图 | 操作 |
|
||||
|----------|------|
|
||||
| "把 Issue #N 加到知识库" | 只读 #N:`issue +view --number N` |
|
||||
| "把这几个 Issue 加进去:#A, #B, #C" | 逐个读 #A, #B, #C |
|
||||
| "把关于 XX 的 Issue 补充进去" | 先按关键词搜索(同模式 B 第 2-3 步),找到匹配 Issue 后逐个读详情 |
|
||||
| "把最近新增的 Issue 同步到 Wiki" | 用户未指定具体编号时,才拉全量列表,对比 Wiki 中已有的编号做差集 |
|
||||
|
||||
### 第 3 步:分类新 Issue
|
||||
|
||||
### 第 4 步:合并到现有知识库结构
|
||||
|
||||
将新 Issue 按类型归入现有章节:
|
||||
|
||||
- **Bug**:归入"Bug 高频模块",若属于已有模块则追加,否则新建模块条目
|
||||
- **功能请求**:归入"功能请求热度",若属于已有领域则合并,否则新建领域条目
|
||||
- **使用问题**:归入"常见使用问题",新建 Q&A 条目
|
||||
|
||||
合并时更新:
|
||||
- Issue 计数(总数、各类型数量)
|
||||
- 更新时间
|
||||
- 受影响的 `-- 涉及 Issue` 列表
|
||||
|
||||
### 第 5 步:生成合并后的文档并预览
|
||||
|
||||
将合并后的完整 Markdown 展示给用户预览,标注新增/变更的部分(可用 `[NEW]` 标记)。
|
||||
|
||||
### 第 6 步:更新 Wiki
|
||||
|
||||
用户确认后:
|
||||
|
||||
```bash
|
||||
gitlink-cli wiki +update --title "Issue-知识库" --file ./issue-knowledge-base.md
|
||||
```
|
||||
|
||||
**CRITICAL**:必须用 `wiki +update`(不是 `+create`),因为页面已存在。
|
||||
|
||||
---
|
||||
|
||||
## 命令速查
|
||||
|
||||
本 skill 只涉及知识库分析相关的命令。通用 Issue 操作(创建、查看、更新、关闭、批量操作等)统一使用 [`gitlink-issue`](../gitlink-issue/SKILL.md) skill。
|
||||
|
||||
| 命令 | 用途 | 模式 |
|
||||
|------|------|------|
|
||||
| `issue +list --state open --limit 100 --format json` | 获取 open Issue 列表 | A / C |
|
||||
| `issue +list --state closed --limit 100 --format json` | 获取 closed Issue 列表 | A / C |
|
||||
| `issue +view --number N --format json` | 读取单个 Issue 详情 | A / B / C |
|
||||
| `issue +comment --number N --body "..."` | 查重时添加评论引导用户 | B |
|
||||
| `issue +batch-label --label duplicate --numbers N,M` | 查重时批量标记重复 | B |
|
||||
| `wiki +view --title "Issue-知识库" --format json` | 查看已有知识库内容 | C |
|
||||
| `wiki +create --title "Issue-知识库" --file ./xxx.md` | 首次创建知识库 Wiki 页面 | A |
|
||||
| `wiki +update --title "Issue-知识库" --file ./xxx.md` | 增量更新知识库 Wiki 页面 | A / C |
|
||||
|
||||
---
|
||||
|
||||
## API 注意事项
|
||||
|
||||
- `issue +list` 的 `--state` 参数**不可靠**(与 PR 列表同款问题),返回列表可能包含所有状态。因此必须同时拉 open + closed 两份列表合并去重。
|
||||
- **`issue +view` 不返回 journals 内容**:只有 `comment_journals_count`(评论数量),无法通过 API 读取实际评论。`GET /v1/.../issues/{N}/journals` 返回 HTML 而非 JSON。分析只能依靠 `subject` + `description`。
|
||||
- **`issue +label-add` API 返回 404**:GitLink 平台 `POST /v1/.../issues/{N}/labels` 端点不可用。打标签请改用 `issue +batch-label`(走 `updateIssueField` 而非 labels API)。
|
||||
- `wiki +view` Gateway API 可能返回 404(已知问题),但 `wiki +create` / `wiki +update` 写入正常。
|
||||
|
||||
---
|
||||
|
||||
## 注意事项
|
||||
|
||||
- **先分类再聚类**:不同 Issue 类型不能混在一起聚类(Bug 和功能请求本质不同)
|
||||
- **所有结论必须有来源**:Bug 模式、功能热度、Q&A 答案都必须来自实际 Issue,不编造
|
||||
- **数据不足时如实说明**:某类型 < 2 条时不强行归纳,标注"暂无足够数据"
|
||||
- **评论语气友好**:重复检测是帮助用户,不是指责
|
||||
- **用户确认优先**:所有写入操作前先预览
|
||||
|
||||
## References
|
||||
|
||||
- [gitlink-faq-collect](references/gitlink-faq-collect.md) — Issue 数据采集
|
||||
- [gitlink-faq-cluster](references/gitlink-faq-cluster.md) — 分类+聚类算法
|
||||
- [gitlink-faq-generate](references/gitlink-faq-generate.md) — 知识库文档生成
|
||||
- [gitlink-faq-detect](references/gitlink-faq-detect.md) — 重复检测逻辑
|
||||
- [gitlink-faq-publish](references/gitlink-faq-publish.md) — Wiki 发布
|
||||
- [weekly-faq-refresh-workflow](examples/weekly-faq-refresh-workflow.md) — 定期刷新示例
|
||||
- [duplicate-detection-demo](examples/duplicate-detection-demo.md) — 重复检测示例
|
||||
- [faq-template](examples/faq-template.md) — 文档模板
|
||||
- [gitlink-shared](../gitlink-shared/SKILL.md) — 认证和全局参数
|
||||
|
|
@ -0,0 +1,105 @@
|
|||
# 重复检测完整示例
|
||||
|
||||
> 演示对新 Issue 进行查重检测的端到端流程。
|
||||
|
||||
## 场景
|
||||
|
||||
有用户提交了一个新 Issue #312,标题是"登录的时候一直转圈"。维护者想确认这是不是之前已经被问过的问题。
|
||||
|
||||
## 执行流程
|
||||
|
||||
### Step 1: 用户发起查重请求
|
||||
|
||||
```
|
||||
用户: 帮我看看 Issue #312 是不是重复了
|
||||
|
||||
AI: 好的,先看一下这个 Issue 的详情。
|
||||
```
|
||||
|
||||
### Step 2: 获取目标 Issue
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +view --number 312 --format json
|
||||
```
|
||||
|
||||
返回:
|
||||
```json
|
||||
{
|
||||
"subject": "登录的时候一直转圈",
|
||||
"description": "打开登录页面,输入账号密码点击登录,页面一直转圈不跳转,换了浏览器也不行"
|
||||
}
|
||||
```
|
||||
|
||||
### Step 3: 获取对比数据
|
||||
|
||||
```bash
|
||||
# 获取 FAQ
|
||||
gitlink-cli wiki +view --title "FAQ" --format json
|
||||
|
||||
# 获取已关闭 Issue
|
||||
gitlink-cli issue +list --state closed --limit 100 --format json
|
||||
```
|
||||
|
||||
### Step 4: AI 匹配分析
|
||||
|
||||
```
|
||||
AI 对比分析中...
|
||||
```
|
||||
|
||||
返回匹配结果:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 🔍 Issue #312 查重结果 │
|
||||
│ │
|
||||
│ 标题: "登录的时候一直转圈" │
|
||||
│ │
|
||||
│ 高度重复 (≥0.85): │
|
||||
│ ┌──────────────────────────────────────────────┐ │
|
||||
│ │ 📖 FAQ Q3: 登录失败或提示 401 错误 │ │
|
||||
│ │ 相似度: 0.91 │ │
|
||||
│ │ 答案: Token 过期或网络问题,尝试重新登录 │ │
|
||||
│ ├──────────────────────────────────────────────┤ │
|
||||
│ │ 🔗 Issue #142: 登录页面显示空白 │ │
|
||||
│ │ 相似度: 0.88 │ │
|
||||
│ │ 已解决: 浏览器缓存问题 │ │
|
||||
│ ├──────────────────────────────────────────────┤ │
|
||||
│ │ 🔗 Issue #205: 无法登录,页面无响应 │ │
|
||||
│ │ 相似度: 0.86 │ │
|
||||
│ │ 已解决: DNS 解析问题 │ │
|
||||
│ └──────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ 判定: 高度重复 (top_match: 0.91) │
|
||||
│ 建议: 添加引导评论 + duplicate 标签 │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### Step 5: 用户确认
|
||||
|
||||
```
|
||||
AI: 检测到 3 个高度相似的匹配。建议:
|
||||
A. 添加引导评论(推荐用户查看 FAQ Q3 和 #142)
|
||||
B. 添加 duplicate 标签后关闭
|
||||
C. 仅查看,不操作
|
||||
|
||||
用户: 选 A
|
||||
```
|
||||
|
||||
### Step 6: 执行操作
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +comment --number 312 --body "你好!检测到你的问题与已有内容高度相似:
|
||||
|
||||
- 📖 [FAQ - Q3: 登录失败或提示 401 错误](wiki/FAQ)
|
||||
- 🔗 Issue #142: 登录页面显示空白(浏览器缓存问题)
|
||||
- 🔗 Issue #205: 无法登录,页面无响应(DNS 解析问题)
|
||||
|
||||
建议先查看以上内容。常见原因包括:浏览器缓存、DNS 解析、Token 过期。
|
||||
如果以上方案无法解决,请补充错误截图或浏览器控制台日志,我们会进一步排查。"
|
||||
```
|
||||
|
||||
### Step 7: 完成
|
||||
|
||||
```
|
||||
AI: 已为 Issue #312 添加引导评论。用户将收到通知,看到参考链接。
|
||||
```
|
||||
|
|
@ -0,0 +1,88 @@
|
|||
# 📊 Issue 知识库
|
||||
|
||||
> 自动生成 | 数据来源:已关闭 Issue({N} 条有效)
|
||||
> 更新时间:{DATE}
|
||||
> 项目:{OWNER}/{REPO}
|
||||
|
||||
---
|
||||
|
||||
## 📂 概览
|
||||
|
||||
| 类型 | 数量 | 聚类数 |
|
||||
|------|------|--------|
|
||||
| 🐛 Bug 报告 | {BUG_COUNT} | {BUG_CLUSTER_COUNT} 个模块 |
|
||||
| 💡 功能请求 | {FEATURE_COUNT} | {FEATURE_CLUSTER_COUNT} 个领域 |
|
||||
| 📖 使用问题 | {QUESTION_COUNT} | {QUESTION_CLUSTER_COUNT} 个主题 |
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Bug 高频模块
|
||||
|
||||
### {模块名}({N} 个 Bug)🔥🔥
|
||||
|
||||
**典型症状**: {一句话描述这类 Bug 的共同表现}
|
||||
|
||||
**涉及 Issue**: [#{编号}]({链接}), [#{编号}]({链接})
|
||||
|
||||
**已知修复**: {如有统一修复方案则写,无则写"部分已单独修复,详见表中 Issue"}
|
||||
|
||||
---
|
||||
|
||||
### {模块名}({N} 个 Bug)🔥
|
||||
|
||||
**典型症状**: ...
|
||||
|
||||
**涉及 Issue**: ...
|
||||
|
||||
**已知修复**: ...
|
||||
|
||||
---
|
||||
|
||||
> 如无高频 Bug(均 < 2 条),本章标注"暂无高频 Bug 模式,Bug 报告较分散"。
|
||||
|
||||
---
|
||||
|
||||
## 💡 功能请求热度
|
||||
|
||||
### {功能领域}({N} 个请求)🔥🔥🔥
|
||||
|
||||
**用户期望**: {一句话总结用户想要什么}
|
||||
|
||||
**涉及 Issue**: [#{编号}]({链接}), [#{编号}]({链接})
|
||||
|
||||
---
|
||||
|
||||
### {功能领域}({N} 个请求)🔥
|
||||
|
||||
**用户期望**: ...
|
||||
|
||||
**涉及 Issue**: ...
|
||||
|
||||
---
|
||||
|
||||
> 如无热门功能请求,本章标注"暂无集中的功能请求"。
|
||||
|
||||
---
|
||||
|
||||
## 📖 常见使用问题
|
||||
|
||||
### Q{N}: {问题}?
|
||||
|
||||
**A:** {答案}
|
||||
|
||||
> 📎 来源 Issue: [#{编号}]({链接}), [#{编号}]({链接})
|
||||
|
||||
### Q{N}: {问题}?
|
||||
|
||||
**A:** {答案}
|
||||
|
||||
> 📎 来源 Issue: [#{编号}]({链接})
|
||||
|
||||
---
|
||||
|
||||
> 如无常见使用问题,本章标注"暂无常见使用问题"。
|
||||
|
||||
---
|
||||
|
||||
> 💡 本文档由 gitlink-faq 自动生成,建议每 1-2 周更新。
|
||||
> 🔗 提交新 Issue?请先确认是否已被收录。
|
||||
|
|
@ -0,0 +1,85 @@
|
|||
# 每周刷新 Issue 知识库示例
|
||||
|
||||
> 端到端演示:定期归纳已关闭 Issue,更新知识库 Wiki。
|
||||
|
||||
## 场景
|
||||
|
||||
gitlink-cli 项目维护者,本周关闭了 20 个 Issue,想更新知识库。
|
||||
|
||||
## 完整对话流程
|
||||
|
||||
### 触发
|
||||
|
||||
```
|
||||
用户: 帮我整理这周关闭的 Issue,更新知识库
|
||||
|
||||
AI: 好的,先采集最近关闭的 Issue。
|
||||
```
|
||||
|
||||
### Step 1-2: 采集 + 筛选
|
||||
|
||||
```bash
|
||||
gitlink-cli issue +list --state closed --limit 100 --format json
|
||||
```
|
||||
|
||||
```
|
||||
AI 采集到 20 个已关闭 Issue:
|
||||
- 排除 5 个测试 Issue
|
||||
- 剩余 15 个有效 Issue,读取详情中...
|
||||
```
|
||||
|
||||
### Step 3-4: 分类 + 聚类
|
||||
|
||||
```
|
||||
AI 展示分析结果:
|
||||
|
||||
📊 Issue 分类结果(共 15 条有效)
|
||||
|
||||
类型分布:
|
||||
| 类型 | 数量 | 占比 |
|
||||
|------|------|------|
|
||||
| 🐛 Bug 报告 | 8 | 53% |
|
||||
| 💡 功能请求 | 5 | 33% |
|
||||
| 📖 使用问题 | 2 | 13% |
|
||||
|
||||
───────────────
|
||||
|
||||
🐛 Bug 高频模块:
|
||||
| 模块 | Bug 数 | 典型症状 |
|
||||
|------|--------|----------|
|
||||
| Issue/PR 数据展示 | 4 | view 命令返回字段与网页不一致 |
|
||||
| 命令执行 | 2 | 特定参数下命令静默失败 |
|
||||
| 平台兼容 | 2 | Windows 下行为异常 |
|
||||
|
||||
💡 功能请求热度:
|
||||
| 领域 | 请求数 | 用户期望 |
|
||||
|------|--------|----------|
|
||||
| API 查询增强 | 3 | 支持更丰富的查询和字段返回 |
|
||||
|
||||
📖 使用问题(2 条):
|
||||
- 安装后如何配置环境变量?
|
||||
- API 命令占位符怎么用?
|
||||
```
|
||||
|
||||
### Step 5: 生成并确认
|
||||
|
||||
```
|
||||
AI 生成知识库 Markdown,展示前几段预览...
|
||||
|
||||
用户: 可以,发布到 Wiki
|
||||
|
||||
AI: 好的,更新 Wiki 页面...
|
||||
```
|
||||
|
||||
### Step 6: 发布
|
||||
|
||||
```bash
|
||||
gitlink-cli wiki +update --title "Issue-知识库" --file ./issue-knowledge-base.md
|
||||
```
|
||||
|
||||
```
|
||||
AI: ✅ 知识库已更新!
|
||||
- Wiki 页面: Issue-知识库
|
||||
- 本次新增: 15 条 Issue → 6 个聚类
|
||||
- 下次建议: 2 周后刷新
|
||||
```
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
# gitlink-faq 分类与聚类
|
||||
|
||||
> 本文档说明 AI 如何对 Issue 先分类(Bug/功能请求/使用问题),再在同一类型内聚类。
|
||||
|
||||
## 分析前提
|
||||
|
||||
**聚类仅基于 `subject` + `description` 两个字段**。GitLink API 不支持读取 Issue 评论(journals),无法获取讨论/解决方案。但优秀的 description 往往包含:复现步骤、环境信息、修复建议、详细场景描述——这些都是高质量聚类的基础。
|
||||
|
||||
## 两步流程
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ Step 1: 类型分类 │
|
||||
│ 每条 Issue → AI 判断类型 │
|
||||
│ Bug / Feature Request / Usage Question │
|
||||
│ 不确定的归入"其他"但保留,不丢弃 │
|
||||
└──────────────────┬──────────────────────┘
|
||||
▼
|
||||
┌─────────────────────────────────────────┐
|
||||
│ Step 2: 类型内聚类 │
|
||||
│ Bug → 按出问题的模块分类 │
|
||||
│ Feature → 按功能领域分类 │
|
||||
│ Usage → 按操作场景分类 │
|
||||
└─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Step 1: 类型分类
|
||||
|
||||
### 分类 Prompt
|
||||
|
||||
```
|
||||
你正在分析一个项目的已关闭 Issue。请对每条 Issue 判断它属于以下哪种类型:
|
||||
|
||||
类型定义:
|
||||
- bug: 描述异常行为、报错、行为与预期不符、数据缺失/错误
|
||||
- feature: 建议新增功能、增强现有能力、改进体验
|
||||
- question: 不知道如何使用、配置不清楚、询问是否支持某能力
|
||||
- other: 不属于以上三类(如测试、讨论、公告)
|
||||
|
||||
返回 JSON 数组:
|
||||
[{
|
||||
"issue_number": N,
|
||||
"subject": "标题",
|
||||
"type": "bug|feature|question|other",
|
||||
"reason": "一句话判断依据"
|
||||
}]
|
||||
```
|
||||
|
||||
### 分类规则
|
||||
|
||||
| 类型 | 判断信号 | 反例(容易误判) |
|
||||
|------|----------|-----------------|
|
||||
| **bug** | 含"报错""不生效""异常""不一致""缺失""无法"等 | "希望能 xx"是 feature 不是 bug |
|
||||
| **feature** | 含"希望""建议""能否支持""加一个""要是能"等 | "xx 不支持"可能是 question |
|
||||
| **question** | 含"怎么""如何""能不能""是否支持"等,且是咨询性质 | "xx 报错怎么办"→ 先确认是不是 bug |
|
||||
| **other** | 标题含"test""测试""讨论""收集"等 | 不确定时归为 other |
|
||||
|
||||
## Step 2: 类型内聚类
|
||||
|
||||
### Bug 聚类
|
||||
|
||||
按**出问题的模块/组件/功能**归类,找出高频 Bug 模式。
|
||||
|
||||
聚类维度:
|
||||
- 影响的是哪个命令/接口(如 `issue +view`、`pr +list`、`api` 命令)
|
||||
- 问题类型是否相同(数据显示错误 ×4 / 命令执行失败 ×2 / 平台兼容 ×1)
|
||||
- Bug 之间是否存在共同根因
|
||||
|
||||
输出格式:
|
||||
|
||||
```json
|
||||
{
|
||||
"module": "Issue/PR 数据展示",
|
||||
"bug_count": 4,
|
||||
"pattern": "CLI 返回数据字段与网页端不一致或字段缺失",
|
||||
"affected_issues": [5, 7, 15, 18],
|
||||
"typical_symptom": "使用 view 命令查看详情时,部分字段(如关闭时间、描述等)缺失或与网页端不一致"
|
||||
}
|
||||
```
|
||||
|
||||
### 功能请求聚类
|
||||
|
||||
按**请求的功能领域**归类,找出用户需求热度。
|
||||
|
||||
聚类维度:
|
||||
- 请求的是哪个能力方向(API 增强 / 命令扩展 / 平台支持)
|
||||
- 是否指向同一个需求的不同表述
|
||||
- 是否有用户点赞/讨论热度叠加
|
||||
|
||||
输出格式:
|
||||
|
||||
```json
|
||||
{
|
||||
"feature_area": "API 查询能力增强",
|
||||
"request_count": 3,
|
||||
"pattern": "用户希望 API 支持更丰富的查询和操作",
|
||||
"affected_issues": [9, 14, 21],
|
||||
"common_ask": "支持按序号查询、返回完整时间字段、读取仓库文件"
|
||||
}
|
||||
```
|
||||
|
||||
### 使用问题聚类(传统 Q&A)
|
||||
|
||||
与传统 FAQ 一致:按操作场景归类,提炼"问题 → 答案"。
|
||||
|
||||
仅当同类 ≥ 2 条时生成 Q&A 条目。
|
||||
|
||||
## 批次合并
|
||||
|
||||
多批次处理后的合并规则:
|
||||
|
||||
1. 同类型的相同模块/领域 → 合并,更新 issue_count
|
||||
2. 跨类型的关联 Issue 标注引用(如一个 Bug 可能由某个 Feature Request 修复)
|
||||
3. 最终按 `bug_count` / `request_count` 降序排列
|
||||
|
|
@ -0,0 +1,81 @@
|
|||
# gitlink-faq 数据采集
|
||||
|
||||
> 本文档详细说明 FAQ 生成时 Issue 数据的采集策略和参数。
|
||||
|
||||
## 数据源
|
||||
|
||||
| 数据 | 命令 | 说明 |
|
||||
|------|------|------|
|
||||
| Issue 列表(open) | `issue +list --state open --limit 100 --format json` | 仍开放的 Issue |
|
||||
| Issue 列表(closed) | `issue +list --state closed --limit 100 --format json` | 已关闭的 Issue |
|
||||
| Issue 详情 | `issue +view --number N --format json` | 含标题、描述、journals(评论历史) |
|
||||
|
||||
> **关键认知**:GitLink 平台很多已解决的 Issue 不会被及时设为"关闭"状态,存在延迟甚至从未更改状态。因此必须**同时采集 open 和 closed 两份列表**,合并去重后才能得到完整的可分析 Issue 集合。用 `issue +view` 读取的 `journals`(评论讨论历史)比 `status` 字段更能判断一个 Issue 是否"已解决"。
|
||||
|
||||
## 筛选策略
|
||||
|
||||
### 有价值 vs 无价值 Issue
|
||||
|
||||
采集后需筛选。注意:GitLink API **不支持读取 Issue 评论(journals)**,筛选只能基于 subject + description。
|
||||
|
||||
**宽松筛选原则**(只排除明确无价值的):
|
||||
|
||||
| 类型 | 是否纳入 | 原因 |
|
||||
|------|----------|------|
|
||||
| 有 description 的 Issue | ✅ 纳入 | description 可能非常详细 |
|
||||
| 仅有标题无 description | ✅ 纳入 | 标题本身有价值信息 |
|
||||
| 功能请求 | ✅ 纳入 | 反映用户需求优先级 |
|
||||
| 标题含 `[test]`/`测试` | ❌ 排除 | 纯测试数据 |
|
||||
| 标题为空或纯占位符 | ❌ 排除 | 无有效信息 |
|
||||
|
||||
> 不再排除"功能请求"和"仅有标题"的 Issue。没有评论数据的情况下,最大化保留所有可分析的 Issue。
|
||||
|
||||
### 分批采集
|
||||
|
||||
```
|
||||
Issue 总量 采集策略
|
||||
───────── ─────────
|
||||
< 20 全部采集,逐个读详情(含 journals)
|
||||
20-50 全部采集,按标题粗筛后读重点 Issue 详情
|
||||
50-100 分批采集(每批50),先按标题粗筛
|
||||
> 100 取最近活跃的 100 个,优先高参与度的
|
||||
```
|
||||
|
||||
### 参与度筛选
|
||||
|
||||
优先采集"高参与度"的 Issue(更有分析价值):
|
||||
- **journals 非空**(有人讨论过)——这是最重要的筛选信号,空 journals 的 Issue 分析价值极低
|
||||
- journals 中包含维护者回复(优先提取作为答案/修复方案)
|
||||
- 评论数量 ≥ 2
|
||||
|
||||
### API 限制:无法读取评论
|
||||
|
||||
`issue +view` 只返回 `comment_journals_count`(评论数),不返回评论内容。`GET /v1/.../issues/{N}/journals` 端点返回 HTML 而非 JSON,无法通过 API 获取评论正文。
|
||||
|
||||
因此分析只能基于 `subject` + `description` 两个字段。这也是筛选规则放宽的原因——没有评论作为补充信息,凭标题和描述能分析到的内容更有限,需要尽可能保留更多 Issue 来保证覆盖度。
|
||||
|
||||
## 输出数据格式
|
||||
|
||||
采集后整理为以下结构供聚类使用:
|
||||
|
||||
```json
|
||||
[
|
||||
{
|
||||
"number": 142,
|
||||
"subject": "安装后运行报 command not found",
|
||||
"description": "按照 README 安装后,终端输入 gitlink-cli 提示...",
|
||||
"labels": ["bug", "installation"],
|
||||
"journal_count": 5,
|
||||
"last_comment_author": "maintainer",
|
||||
"resolution": "需要将 ~/.local/bin 加入 PATH"
|
||||
}
|
||||
]
|
||||
```
|
||||
|
||||
## API 注意事项
|
||||
|
||||
- `issue +list` 的 `--limit` 最大 200,超出需分页(`--page` 参数)
|
||||
- **`--state` 参数不可靠**:与 PR 列表类似,`--state` 参数可能不严格过滤列表(返回数据中 `closed_count` 才是真实统计)。必须同时拉取 open 和 closed 两份列表并合并去重。
|
||||
- `issue +view` 的 `journals` 字段包含完整评论历史,是判断解决过程的关键
|
||||
- `journals` 中的 `body` 字段是评论的纯文本内容,`author.login` 是评论者
|
||||
- 大量请求时建议用 `--debug` 查看实际请求 URL,确认分页参数正确
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
# gitlink-faq 重复检测
|
||||
|
||||
> 本文档说明如何处理新 Issue 的重复检测——对比已有 FAQ 和历史 Issue。
|
||||
|
||||
## 检测流程
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────┐
|
||||
│ Step 1: 确定搜索目标 │
|
||||
│ 编号 → issue +view 获取目标 │
|
||||
│ 关键词 → 进入全量搜索模式 │
|
||||
└────────────────┬───────────────────────────┘
|
||||
▼
|
||||
┌────────────────────────────────────────────┐
|
||||
│ Step 2: 拉取全量列表 │
|
||||
│ issue +list --state open │
|
||||
│ issue +list --state closed │
|
||||
│ 标题匹配筛选候选 Issue │
|
||||
└────────────────┬───────────────────────────┘
|
||||
▼
|
||||
┌────────────────────────────────────────────┐
|
||||
│ Step 3: 自动读详情(不需等用户确认) │
|
||||
│ 对每条候选 → issue +view --number N │
|
||||
│ 提取: subject + description + journals │
|
||||
└────────────────┬───────────────────────────┘
|
||||
▼
|
||||
┌────────────────────────────────────────────┐
|
||||
│ Step 4: 分析 & 输出结论 │
|
||||
│ 综合标题+描述+journals 给出: │
|
||||
│ - 核心讨论内容摘要 │
|
||||
│ - 维护者是否有回复/方案 │
|
||||
│ - 相关度判定 │
|
||||
└────────────────┬───────────────────────────┘
|
||||
▼
|
||||
┌────────────────────────────────────────────┐
|
||||
│ Step 5: 用户确认后执行写操作(可选) │
|
||||
│ > 0.85 → comment + label │
|
||||
│ 0.6-0.85 → comment only │
|
||||
│ < 0.6 → 无需操作 │
|
||||
└────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 相似度匹配 Prompt
|
||||
|
||||
```
|
||||
你正在判断一个新提交的 Issue 是否与已有问题重复。
|
||||
|
||||
## 新 Issue
|
||||
标题: {subject}
|
||||
描述: {description}
|
||||
|
||||
## 候选匹配列表
|
||||
{候选列表,每条含: 来源、标题、摘要}
|
||||
|
||||
请对每个候选给出 0-1 的相似度评分:
|
||||
- > 0.85: 问的是同一个问题(只是表述不同)
|
||||
- 0.6-0.85: 有关联但不是同一个问题(如"登录报 401"
|
||||
和"Token 配置")
|
||||
- < 0.6: 无关
|
||||
|
||||
返回 JSON 数组,按相似度降序排列。
|
||||
```
|
||||
|
||||
## 输出 JSON
|
||||
|
||||
```json
|
||||
{
|
||||
"target_issue": {
|
||||
"number": 245,
|
||||
"title": "登录页面打不开",
|
||||
"description": "点击登录按钮后页面白屏..."
|
||||
},
|
||||
"matches": [
|
||||
{
|
||||
"source": "FAQ",
|
||||
"entry": "Q3: 登录失败或提示 401 错误怎么处理?",
|
||||
"similarity": 0.92,
|
||||
"level": "high_duplicate"
|
||||
},
|
||||
{
|
||||
"source": "issue",
|
||||
"number": 142,
|
||||
"title": "登录页面显示空白",
|
||||
"summary": "用户反馈登录页白屏,最终确认是浏览器缓存问题",
|
||||
"similarity": 0.88,
|
||||
"level": "high_duplicate"
|
||||
},
|
||||
{
|
||||
"source": "issue",
|
||||
"number": 178,
|
||||
"title": "Token 刷新机制咨询",
|
||||
"summary": "询问 Token 有效期和刷新策略",
|
||||
"similarity": 0.65,
|
||||
"level": "related"
|
||||
}
|
||||
],
|
||||
"recommendation": "high_duplicate",
|
||||
"top_match_similarity": 0.92
|
||||
}
|
||||
```
|
||||
|
||||
## 评论模板
|
||||
|
||||
### 高度重复(similarity > 0.85)
|
||||
|
||||
```
|
||||
你好!检测到你的问题与已有内容高度相似:
|
||||
|
||||
- 📖 [FAQ - {条目名}]({FAQ 链接})
|
||||
- 🔗 相关 Issue: #{编号} - {标题}
|
||||
|
||||
建议先查看以上内容。如果无法解决你的问题,请补充更多细节(如错误日志、操作步骤),我们会进一步排查。
|
||||
```
|
||||
|
||||
### 可能相关(0.6 ~ 0.85)
|
||||
|
||||
```
|
||||
你好!你的问题可能与以下内容相关,供参考:
|
||||
|
||||
- {匹配条目列表}
|
||||
|
||||
如果这些不解决你的问题,请提供更多上下文。
|
||||
```
|
||||
|
||||
## 注意事项
|
||||
|
||||
- **不要误判**:问题表述相似但根因不同(如"打不开"可能是网络问题也可能是代码 bug),相似度 < 0.85 时只建议参考不打标签
|
||||
- **同一用户的多条 Issue**:如果同一用户就同一问题连续发 Issue,先合并讨论再判断
|
||||
- **对事不对人**:评论始终友好,引导用户找到答案而非指责
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
# gitlink-faq 文档生成
|
||||
|
||||
> 如何将分类+聚类结果组织为结构化知识库 Markdown。
|
||||
|
||||
## 生成原则
|
||||
|
||||
- **按类型分章节**:Bug → 功能请求 → 使用问题,每章独立
|
||||
- **按热度排序**:同类内 Issue 数量多的排在前面
|
||||
- **数据不足时省略**:某类型 < 2 条时标注"暂无足够数据",不强行展开
|
||||
- **来源可追溯**:每条结论后附来源 Issue 编号
|
||||
|
||||
## 文档结构
|
||||
|
||||
参考 [`examples/faq-template.md`](../examples/faq-template.md)。
|
||||
|
||||
```markdown
|
||||
# 📊 Issue 知识库
|
||||
|
||||
> 自动生成 | 数据来源:已关闭 Issue({N} 条有效)
|
||||
> 更新时间:{DATE}
|
||||
> 项目:{OWNER}/{REPO}
|
||||
|
||||
## 📂 概览
|
||||
|
||||
| 类型 | 数量 | 聚类数 |
|
||||
|------|------|--------|
|
||||
| 🐛 Bug 报告 | {N} | {M} 个模块 |
|
||||
| 💡 功能请求 | {N} | {M} 个领域 |
|
||||
| 📖 使用问题 | {N} | {M} 个主题 |
|
||||
|
||||
---
|
||||
|
||||
## 🐛 Bug 高频模块
|
||||
|
||||
### {模块名}({N} 个 Bug)
|
||||
|
||||
**典型症状**: {描述}
|
||||
**涉及 Issue**: [#{编号}]({链接}), [#{编号}]({链接})
|
||||
**已知修复**: {如有则写,无则写"暂未统一修复"}
|
||||
|
||||
### {模块名}({N} 个 Bug)
|
||||
|
||||
...
|
||||
|
||||
> 如该类 < 2 条,标注"暂无高频 Bug 模式"。
|
||||
|
||||
---
|
||||
|
||||
## 💡 功能请求热度
|
||||
|
||||
### {功能领域}({N} 个请求)🔥
|
||||
|
||||
**用户期望**: {一句话总结}
|
||||
**涉及 Issue**: [#{编号}]({链接}), [#{编号}]({链接})
|
||||
|
||||
### {功能领域}({N} 个请求)
|
||||
|
||||
...
|
||||
|
||||
> 如该类 < 2 条,标注"暂无热门功能请求"。
|
||||
|
||||
---
|
||||
|
||||
## 📖 常见使用问题
|
||||
|
||||
### Q{N}: {问题}?
|
||||
|
||||
**A:** {答案}
|
||||
|
||||
> 📎 来源 Issue: [#{编号}]({链接}), [#{编号}]({链接})
|
||||
|
||||
...
|
||||
|
||||
> 如该类 < 2 条,标注"暂无常见使用问题"。
|
||||
|
||||
---
|
||||
|
||||
> 💡 本文档由 gitlink-faq 自动生成,建议每 1-2 周更新一次。
|
||||
```
|
||||
|
||||
## 热度标注
|
||||
|
||||
| Issue 数 | 热度 |
|
||||
|----------|------|
|
||||
| ≥ 5 | 🔥🔥🔥 高频 |
|
||||
| 3-4 | 🔥🔥 常见 |
|
||||
| 2 | 🔥 偶发 |
|
||||
| 1 | 不纳入(标注为单次事件) |
|
||||
|
||||
## 答案/解决状态标注
|
||||
|
||||
对于 Bug 和功能请求,标注其当前状态:
|
||||
|
||||
| 状态 | 标注 | 条件 |
|
||||
|------|------|------|
|
||||
| ✅ 已修复/已实现 | 绿色标记 | Issue 关闭且 journals 中有修复记录 |
|
||||
| 🔧 部分修复 | 黄色标记 | 有修复但不完整 |
|
||||
| ❓ 状态不明 | 无标记 | journals 为空或无明确解决记录 |
|
||||
|
|
@ -0,0 +1,58 @@
|
|||
# gitlink-faq Wiki 发布
|
||||
|
||||
> 本文档说明如何将生成的 FAQ 内容发布到 GitLink 项目 Wiki。
|
||||
|
||||
## 发布命令
|
||||
|
||||
### 首次创建知识库页面
|
||||
|
||||
```bash
|
||||
gitlink-cli wiki +create \
|
||||
--title "Issue-知识库" \
|
||||
--file ./issue-knowledge-base.md \
|
||||
--message "自动生成:从已关闭 Issue 归纳分类"
|
||||
```
|
||||
|
||||
### 更新已有知识库页面
|
||||
|
||||
```bash
|
||||
# 预览变更
|
||||
gitlink-cli wiki +update --title "Issue-知识库" --file ./issue-knowledge-base.md --dry-run
|
||||
|
||||
# 覆盖更新
|
||||
gitlink-cli wiki +update --title "Issue-知识库" --file ./issue-knowledge-base.md
|
||||
```
|
||||
|
||||
### 检查知识库是否存在
|
||||
|
||||
```bash
|
||||
# 列出所有 Wiki 页面
|
||||
gitlink-cli wiki +list --format json
|
||||
|
||||
# 查看知识库内容
|
||||
gitlink-cli wiki +view --title "Issue-知识库" --format json
|
||||
```
|
||||
|
||||
## 发布检查清单
|
||||
|
||||
在 `wiki +create` 或 `wiki +update` 之前:
|
||||
|
||||
- [ ] FAQ 内容已展示给用户并获得确认
|
||||
- [ ] `--dry-run` 已通过
|
||||
- [ ] Markdown 格式正确(代码块、链接、表格)
|
||||
- [ ] 来源 Issue 链接有效
|
||||
- [ ] 不存在敏感信息(Token、密码等)
|
||||
|
||||
## Wiki API 注意事项
|
||||
|
||||
- Wiki 使用独立的 **Gateway API**(`https://gateway.gitlink.org.cn/api`),不走主 API
|
||||
- 内容自动 base64 编码,CLI 已处理
|
||||
- `project_id` 会自动解析并缓存
|
||||
- 如果更新失败(页面不存在),改用 `wiki +create`
|
||||
|
||||
## 发布后
|
||||
|
||||
发布完成后告知用户:
|
||||
- Wiki 页面链接
|
||||
- FAQ 条目数量统计
|
||||
- 建议的刷新频率(每 1-2 周)
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: gitlink-issue
|
||||
version: 2.0.0
|
||||
description: "Issue 管理:创建、查看、更新、关闭/批量关闭 Issue,添加评论。当用户需要操作 GitLink Issue 时触发。"
|
||||
version: 3.0.0
|
||||
description: "Issue 全生命周期管理:创建/查看/更新/关闭/重开 Issue、添加评论、标签操作(添加/移除/查看)、批量操作(创建/关闭/标签/状态/优先级/负责人)。当用户需要操作 GitLink Issue 时触发。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
|
|
@ -18,42 +18,75 @@ metadata:
|
|||
|
||||
## Shortcuts
|
||||
|
||||
### 查询
|
||||
|
||||
| Shortcut | 说明 | 需要认证 |
|
||||
|----------|------|----------|
|
||||
| `issue +list` | Issue 列表 | 否(公开项目) |
|
||||
| `issue +create` | 创建 Issue | 是 |
|
||||
| `issue +view` | Issue 详情 | 否(公开项目) |
|
||||
| `issue +update` | 更新 Issue | 是 |
|
||||
| `issue +list` | Issue 列表(支持 `--state open/closed`、`--limit`、`--page`) | 否(公开项目) |
|
||||
| `issue +view` | Issue 详情(含 description、状态、优先级等) | 否(公开项目) |
|
||||
| `issue +label-list` | 查看 Issue 上的标签 | 否(公开项目) |
|
||||
|
||||
### 单个操作
|
||||
|
||||
| Shortcut | 说明 | 需要认证 |
|
||||
|----------|------|----------|
|
||||
| `issue +create` | 创建 Issue(`--title` + `--body`) | 是 |
|
||||
| `issue +update` | 更新 Issue 标题/描述 | 是 |
|
||||
| `issue +close` | 关闭 Issue | 是 |
|
||||
| `issue +batch-close` | 批量关闭 Issue,支持 `--dry-run` 预览 | 是(dry-run 不写入) |
|
||||
| `issue +reopen` | 重新打开已关闭的 Issue | 是 |
|
||||
| `issue +comment` | 添加评论 | 是 |
|
||||
| `issue +label-add` | 添加标签(⚠️ API 可能 404,建议用 `+batch-label`) | 是 |
|
||||
| `issue +label-remove` | 移除标签 | 是 |
|
||||
|
||||
### 批量操作
|
||||
|
||||
| Shortcut | 说明 | 支持 dry-run |
|
||||
|----------|------|-------------|
|
||||
| `issue +batch-create` | 批量创建 Issue(`--titles` 逗号分隔 或 `--from CSV`) | ✅ |
|
||||
| `issue +batch-close` | 批量关闭 Issue | ✅ |
|
||||
| `issue +batch-label` | 批量修改标签:bug, feature, support, doc, test, duplicate, question | ✅ |
|
||||
| `issue +batch-status` | 批量修改状态:new, in-progress, resolved, closed, rejected | ✅ |
|
||||
| `issue +batch-priority` | 批量修改优先级:low, normal, high, urgent | ✅ |
|
||||
| `issue +batch-assign` | 批量修改负责人(`--assignee` 登录名或用户 ID) | ✅ |
|
||||
|
||||
> 批量操作均支持 `--numbers 1,2,3` 或 `--from file.csv` 指定目标 Issue。
|
||||
|
||||
## 使用示例
|
||||
|
||||
```bash
|
||||
# === 查询 ===
|
||||
# 列出 Issue
|
||||
gitlink-cli issue +list --owner Gitlink --repo forgeplus --state open
|
||||
|
||||
# 创建 Issue
|
||||
gitlink-cli issue +create --owner myuser --repo myrepo --title "Bug: 登录失败" --body "复现步骤:..."
|
||||
|
||||
# 查看 Issue 详情(使用网页可见的 Issue 编号)
|
||||
# 分页拉取
|
||||
gitlink-cli issue +list --owner Gitlink --repo forgeplus --state open --limit 20 --page 2
|
||||
# 查看详情(使用网页 URL 中的 Issue 编号)
|
||||
gitlink-cli issue +view --owner Gitlink --repo forgeplus --number 4
|
||||
|
||||
# === 单个操作 ===
|
||||
# 创建 Issue
|
||||
gitlink-cli issue +create --owner myuser --repo myrepo --title "Bug: 登录失败" --body "复现步骤:..."
|
||||
# 更新 Issue
|
||||
gitlink-cli issue +update --number 4 --title "新标题" --body "更新描述"
|
||||
|
||||
# 关闭 Issue
|
||||
# 关闭 / 重开
|
||||
gitlink-cli issue +close --number 4
|
||||
|
||||
# 预览批量关闭 Issue,不修改数据
|
||||
gitlink-cli issue +batch-close --owner myuser --repo myrepo --numbers 123,124 --dry-run
|
||||
|
||||
# 从 CSV 文件批量关闭 Issue
|
||||
gitlink-cli issue +batch-close --owner myuser --repo myrepo --from issues.csv
|
||||
|
||||
gitlink-cli issue +reopen --number 4
|
||||
# 添加评论
|
||||
gitlink-cli issue +comment --number 4 --body "已修复,请验证"
|
||||
|
||||
# === 批量操作 ===
|
||||
# 批量创建
|
||||
gitlink-cli issue +batch-create --titles "修复登录Bug,新增导出功能,优化首页加载"
|
||||
# 批量关闭(先 dry-run 预览)
|
||||
gitlink-cli issue +batch-close --numbers 1,2,3 --dry-run
|
||||
gitlink-cli issue +batch-close --numbers 1,2,3
|
||||
# 批量打标签
|
||||
gitlink-cli issue +batch-label --label duplicate --numbers 3,4
|
||||
# 批量改状态
|
||||
gitlink-cli issue +batch-status --state resolved --numbers 1,2,3
|
||||
# 批量改优先级
|
||||
gitlink-cli issue +batch-priority --priority high --numbers 5,6
|
||||
# 批量分配
|
||||
gitlink-cli issue +batch-assign --assignee zzx-coder --numbers 7,8
|
||||
```
|
||||
|
||||
## Raw API 补充
|
||||
|
|
@ -80,17 +113,31 @@ gitlink-cli api POST /:owner/:repo/issues/series_update --body '{"ids":[1,2,3],"
|
|||
## API 注意事项
|
||||
|
||||
- **Issue 编号(`--number`)是网页 URL 中看到的序号**(如 `issues/4` 中的 `4`),不是数据库内部 ID
|
||||
- **批量关闭使用 `--numbers`,同样传网页 URL 中的 Issue 编号**,不是数据库内部 ID
|
||||
- **批量操作使用 `--numbers`,同样传网页 URL 中的 Issue 编号**,不是数据库内部 ID
|
||||
- Issue 操作使用 v1 API(`/api/v1/`),支持按 Issue 编号查询和操作
|
||||
- **创建 Issue 时 CLI 会自动设置 `status_id: 1`(新增)和 `priority_id: 2`(正常)**
|
||||
- **更新/关闭 Issue 时必须保留当前 `subject` 和 `description`**,即使只修改状态(CLI 会先读取当前 Issue 并自动带回)
|
||||
- v1 API 写操作必须使用 `access_token`(非 `token`)认证,CLI 已自动处理
|
||||
- **`issue +label-add` / `+label-remove` / `+label-list` 的 labels API(`POST /v1/.../issues/{N}/labels`)可能返回 404**。打标签请优先使用 `issue +batch-label`,它走 `updateIssueField` 而非 labels API
|
||||
|
||||
## Issue 状态映射(status_id)
|
||||
|
||||
| status_id | 名称 | 说明 |
|
||||
|-----------|------|------|
|
||||
| 1 | 新增 | 新建 Issue 的默认状态 |
|
||||
| 2 | 正在解决 | 处理中 |
|
||||
| 3 | 已解决 | 已修复 |
|
||||
| 5 | 关闭 | 关闭(`+close` 命令使用此值) |
|
||||
| status_id | 名称 | `+batch-status --state` 对应值 |
|
||||
|-----------|------|-------------------------------|
|
||||
| 1 | 新增 | `new` |
|
||||
| 2 | 正在解决 | `in-progress` |
|
||||
| 3 | 已解决 | `resolved` |
|
||||
| 5 | 关闭 | `closed` |
|
||||
| 6 | 已拒绝 | `rejected` |
|
||||
|
||||
## Issue 标签映射(tracker_id)
|
||||
|
||||
| 标签 | `+batch-label --label` 对应值 |
|
||||
|------|------------------------------|
|
||||
| Bug | `bug` |
|
||||
| 功能 | `feature` |
|
||||
| 支持 | `support` |
|
||||
| 文档 | `doc` |
|
||||
| 测试 | `test` |
|
||||
| 重复 | `duplicate` |
|
||||
| 问题 | `question` |
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: gitlink-repo
|
||||
version: 1.0.0
|
||||
description: "仓库管理:创建、查看、Fork、删除仓库,查看分支、提交、贡献者等。当用户需要操作 GitLink 仓库时触发。"
|
||||
version: 2.0.0
|
||||
description: "仓库全生命周期管理:创建/查看/Fork/删除/更新仓库、成员管理(邀请/移除/查看)、批量操作(创建/更新/邀请/移除)。当用户需要操作 GitLink 仓库时触发。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
|
|
@ -18,35 +18,72 @@ metadata:
|
|||
|
||||
## Shortcuts
|
||||
|
||||
### 查询
|
||||
|
||||
| Shortcut | 说明 | 需要认证 |
|
||||
|----------|------|----------|
|
||||
| `repo +list` | 仓库列表 | 否(公开项目) |
|
||||
| `repo +list` | 仓库列表(`--user` 指定用户) | 否(公开项目) |
|
||||
| `repo +info` | 仓库详情 | 否(公开项目) |
|
||||
| `repo +create` | 创建仓库 | 是 |
|
||||
| `repo +members` | 仓库成员列表(`--page`、`--limit` 分页) | 否(公开项目) |
|
||||
|
||||
### 单个操作
|
||||
|
||||
| Shortcut | 说明 | 需要认证 |
|
||||
|----------|------|----------|
|
||||
| `repo +create` | 创建仓库(`--name`、`--description`、`--private`) | 是 |
|
||||
| `repo +fork` | Fork 仓库 | 是 |
|
||||
| `repo +delete` | 删除仓库 | 是 |
|
||||
| `repo +delete` | 删除仓库(⚠️ 不可逆) | 是 |
|
||||
| `repo +update` | 更新仓库设置(`--description`、`--private`) | 是 |
|
||||
| `repo +invite` | 邀请成员(`--user-id`) | 是 |
|
||||
| `repo +remove-member` | 移除成员(`--user-id`) | 是 |
|
||||
|
||||
### 批量操作
|
||||
|
||||
| Shortcut | 说明 | 支持 dry-run |
|
||||
|----------|------|-------------|
|
||||
| `repo +batch-create` | 批量创建仓库(`--names` 逗号分隔 或 `--from CSV`) | ✅ |
|
||||
| `repo +batch-update` | 批量更新仓库设置(`--description`、`--private`/`--public`) | ✅ |
|
||||
| `repo +batch-invite` | 批量邀请成员(`--users` 逗号分隔 或 `--from CSV`) | ✅ |
|
||||
| `repo +batch-remove` | 批量移除成员(`--users` 逗号分隔 或 `--from CSV`) | ✅ |
|
||||
|
||||
> 批量操作均支持 `--names repo-a,repo-b` 或 `--users 1,2,3` 或 `--from file.csv` 三种输入方式。
|
||||
|
||||
## 使用示例
|
||||
|
||||
```bash
|
||||
# === 查询 ===
|
||||
# 查看仓库信息
|
||||
gitlink-cli repo +info --owner Gitlink --repo forgeplus
|
||||
|
||||
# 在 git 仓库目录下自动解析
|
||||
cd ~/my-project
|
||||
gitlink-cli repo +info
|
||||
|
||||
# 列出用户的仓库
|
||||
# 列出用户仓库
|
||||
gitlink-cli repo +list --user zhangsan
|
||||
# 查看成员
|
||||
gitlink-cli repo +members --owner myuser --repo myrepo
|
||||
|
||||
# === 单个操作 ===
|
||||
# 创建仓库
|
||||
gitlink-cli repo +create --name my-project --description "项目描述"
|
||||
|
||||
# 创建私有仓库
|
||||
gitlink-cli repo +create --name my-project --private
|
||||
# Fork 仓库
|
||||
gitlink-cli repo +fork --owner Gitlink --repo forgeplus
|
||||
|
||||
# 删除仓库(⚠️ 危险操作)
|
||||
# 更新仓库设置
|
||||
gitlink-cli repo +update --owner myuser --repo myrepo --description "新描述"
|
||||
gitlink-cli repo +update --owner myuser --repo myrepo --private true
|
||||
# 邀请/移除成员
|
||||
gitlink-cli repo +invite --owner myuser --repo myrepo --user-id 12345
|
||||
gitlink-cli repo +remove-member --owner myuser --repo myrepo --user-id 12345
|
||||
# 删除仓库(⚠️ 不可逆,务必确认)
|
||||
gitlink-cli repo +delete --owner myuser --repo old-project
|
||||
|
||||
# === 批量操作 ===
|
||||
# 批量创建
|
||||
gitlink-cli repo +batch-create --names repo-a,repo-b,repo-c --private
|
||||
# 批量更新(先 dry-run 预览)
|
||||
gitlink-cli repo +batch-update --names repo-a,repo-b --description "批量更新描述" --dry-run
|
||||
gitlink-cli repo +batch-update --names repo-a,repo-b --description "批量更新描述"
|
||||
# 批量管理成员
|
||||
gitlink-cli repo +batch-invite --users 111,222,333 --dry-run
|
||||
gitlink-cli repo +batch-remove --users 111,222 --dry-run
|
||||
```
|
||||
|
||||
## Raw API 补充
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
name: gitlink-wiki
|
||||
version: 1.0.0
|
||||
description: "Wiki 管理:查看、创建、更新、删除 Wiki 页面。当用户需要操作 GitLink Wiki 时触发。"
|
||||
version: 1.1.0
|
||||
description: "Wiki 管理:查看、创建、更新、删除 Wiki 页面、质量检查(lint)。当用户需要操作 GitLink Wiki 时触发。"
|
||||
metadata:
|
||||
requires:
|
||||
bins: ["gitlink-cli"]
|
||||
|
|
@ -13,6 +13,7 @@ metadata:
|
|||
**CRITICAL — 开始前必须先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md),其中包含认证、权限处理和 API 注意事项。**
|
||||
**CRITICAL — 所有 Shortcuts 在执行写入/删除操作前,务必先确认用户意图。**
|
||||
**CRITICAL — GitLink 操作只能用 `gitlink-cli`。禁止用 `gh`(GitHub CLI)操作 GitLink 资源。`gh` 仅适用于 GitHub 平台。**
|
||||
**注意:`wiki +lint` 当前仅在本地编译版本中可用,需 `go build -o gitlink-cli.exe .` 后使用 `./gitlink-cli.exe`。**
|
||||
|
||||
> **前置条件:** 先阅读 [`../gitlink-shared/SKILL.md`](../gitlink-shared/SKILL.md)
|
||||
|
||||
|
|
@ -25,6 +26,7 @@ metadata:
|
|||
| `wiki +create` | 创建 Wiki 页面,支持 `--dry-run` 预览 | 是 |
|
||||
| `wiki +update` | 更新 Wiki 页面,支持 `--dry-run` 预览 | 是 |
|
||||
| `wiki +delete` | 删除 Wiki 页面,支持 `--dry-run` 预览 | 是 |
|
||||
| `wiki +lint` | 检查 Wiki 页面质量问题(链接、标题、图片、空白页) | 否 |
|
||||
|
||||
## 使用示例
|
||||
|
||||
|
|
@ -64,6 +66,12 @@ gitlink-cli wiki +delete --owner myuser --repo myrepo --title "废弃页面"
|
|||
|
||||
# 预览删除操作
|
||||
gitlink-cli wiki +delete --owner myuser --repo myrepo --title "废弃页面" --dry-run
|
||||
|
||||
# 检查 Wiki 页面质量问题(全部检查)
|
||||
gitlink-cli wiki +lint --owner myuser --repo myrepo
|
||||
|
||||
# 只检查链接和空白页
|
||||
gitlink-cli wiki +lint --owner myuser --repo myrepo --check links,empty
|
||||
```
|
||||
|
||||
## Wiki 页面内容格式
|
||||
|
|
|
|||
Loading…
Reference in New Issue