425 lines
10 KiB
Markdown
425 lines
10 KiB
Markdown
|
|
# gh-aw 集成方案
|
|||
|
|
|
|||
|
|
> 本文档用于为 `openwebui-extensions` 仓库设计一套安全、渐进式的 GitHub Agentic Workflows (`gh-aw`) 接入方案。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 目标
|
|||
|
|
|
|||
|
|
- 在不替换现有稳定 CI 的前提下,引入具备仓库理解能力的 AI 维护层。
|
|||
|
|
- 将 `gh-aw` 用于更适合自然语言推理的任务,而不是机械脚本执行。
|
|||
|
|
- 保留当前发布、部署、发布插件和统计工作流作为执行骨架。
|
|||
|
|
- 为仓库维护引入可观测性、自动诊断和长期记忆能力。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 为什么这个仓库适合 gh-aw
|
|||
|
|
|
|||
|
|
本仓库已经有一套很强的确定性自动化:
|
|||
|
|
|
|||
|
|
- `/.github/workflows/release.yml`
|
|||
|
|
- `/.github/workflows/plugin-version-check.yml`
|
|||
|
|
- `/.github/workflows/deploy.yml`
|
|||
|
|
- `/.github/workflows/publish_plugin.yml`
|
|||
|
|
- `/.github/workflows/community-stats.yml`
|
|||
|
|
|
|||
|
|
这些工作流擅长精确执行,但并不擅长理解仓库规范本身。
|
|||
|
|
|
|||
|
|
`gh-aw` 更适合以下任务:
|
|||
|
|
|
|||
|
|
- 联合阅读代码、文档和 PR 描述后再做判断
|
|||
|
|
- 带语义地应用仓库规范
|
|||
|
|
- 生成结构化的 review 评论
|
|||
|
|
- 自动分析失败的工作流运行
|
|||
|
|
- 在多次运行之间保存维护经验和模式
|
|||
|
|
|
|||
|
|
这与当前仓库的真实需求高度匹配:
|
|||
|
|
|
|||
|
|
- 双语文档同步
|
|||
|
|
- 插件代码、README 与 docs 一致性检查
|
|||
|
|
- 跨多个文件的发布前完整性核查
|
|||
|
|
- Issue 与 PR 的规模化维护
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 非目标
|
|||
|
|
|
|||
|
|
第一阶段不建议让 `gh-aw`:
|
|||
|
|
|
|||
|
|
- 替换 `release.yml`
|
|||
|
|
- 替换 `publish_plugin.yml`
|
|||
|
|
- 替换 MkDocs 部署
|
|||
|
|
- 默认自动合并或自动推送代码
|
|||
|
|
- 一开始就拥有过宽的写权限
|
|||
|
|
|
|||
|
|
第一阶段应把它定位为 review、诊断和 preflight 层。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 接入原则
|
|||
|
|
|
|||
|
|
### 4.1 确定性执行继续由 YAML 工作流承担
|
|||
|
|
|
|||
|
|
现有 YAML workflow 继续负责:
|
|||
|
|
|
|||
|
|
- 创建 release
|
|||
|
|
- 发布插件
|
|||
|
|
- 部署文档
|
|||
|
|
- 提取和比较版本号
|
|||
|
|
- 生成社区统计
|
|||
|
|
|
|||
|
|
### 4.2 Agentic workflow 只负责判断和总结
|
|||
|
|
|
|||
|
|
`gh-aw` workflow 优先承担:
|
|||
|
|
|
|||
|
|
- 基于规范的语义审查
|
|||
|
|
- 发布前完整性检查
|
|||
|
|
- 文档漂移巡检
|
|||
|
|
- CI 失败原因分析
|
|||
|
|
- Issue 分流与回复草稿生成
|
|||
|
|
|
|||
|
|
### 4.3 默认只读
|
|||
|
|
|
|||
|
|
优先使用最小权限,并通过 safe outputs 进行受控评论或低风险输出。
|
|||
|
|
|
|||
|
|
### 4.4 逐步扩容
|
|||
|
|
|
|||
|
|
一次只上线一个 agentic workflow,验证质量后再扩大范围。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 建议的仓库结构
|
|||
|
|
|
|||
|
|
### 5.1 新增文件和目录
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
.github/
|
|||
|
|
├── workflows/
|
|||
|
|
│ ├── release.yml
|
|||
|
|
│ ├── plugin-version-check.yml
|
|||
|
|
│ ├── deploy.yml
|
|||
|
|
│ ├── publish_plugin.yml
|
|||
|
|
│ ├── community-stats.yml
|
|||
|
|
│ ├── aw-pr-maintainer-review.md
|
|||
|
|
│ ├── aw-pr-maintainer-review.lock.yml
|
|||
|
|
│ ├── aw-release-preflight.md
|
|||
|
|
│ ├── aw-release-preflight.lock.yml
|
|||
|
|
│ ├── aw-ci-audit.md
|
|||
|
|
│ ├── aw-ci-audit.lock.yml
|
|||
|
|
│ ├── aw-docs-drift-review.md
|
|||
|
|
│ └── aw-docs-drift-review.lock.yml
|
|||
|
|
├── gh-aw/
|
|||
|
|
│ ├── prompts/
|
|||
|
|
│ │ ├── pr-review-policy.md
|
|||
|
|
│ │ ├── release-preflight-policy.md
|
|||
|
|
│ │ ├── ci-audit-policy.md
|
|||
|
|
│ │ └── docs-drift-policy.md
|
|||
|
|
│ ├── schemas/
|
|||
|
|
│ │ └── review-output-example.json
|
|||
|
|
│ └── README.md
|
|||
|
|
└── copilot-instructions.md
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5.2 命名规范
|
|||
|
|
|
|||
|
|
所有 agentic workflow 源文件统一使用 `aw-` 前缀:
|
|||
|
|
|
|||
|
|
- `aw-pr-maintainer-review.md`
|
|||
|
|
- `aw-release-preflight.md`
|
|||
|
|
- `aw-ci-audit.md`
|
|||
|
|
- `aw-docs-drift-review.md`
|
|||
|
|
|
|||
|
|
这样做的原因:
|
|||
|
|
|
|||
|
|
- 可以和现有手写 YAML 工作流明确区分
|
|||
|
|
- 便于在仓库中快速搜索和定位
|
|||
|
|
- 方便调试和发布时识别来源
|
|||
|
|
|
|||
|
|
### 5.3 为什么不直接替换 `.yml`
|
|||
|
|
|
|||
|
|
当前 `.yml` 文件承担的是生产执行逻辑。第一阶段 `gh-aw` 的角色应该是补充,而不是接管。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. 建议优先建设的 workflow 组合
|
|||
|
|
|
|||
|
|
### 6.1 第一阶段:PR 维护者语义审查
|
|||
|
|
|
|||
|
|
**文件**: `/.github/workflows/aw-pr-maintainer-review.md`
|
|||
|
|
|
|||
|
|
**作用**:
|
|||
|
|
|
|||
|
|
- 审查涉及插件、文档或开发规范的 PR
|
|||
|
|
- 对缺失的仓库标准更新给出评论
|
|||
|
|
- 作为 `plugin-version-check.yml` 之上的语义层
|
|||
|
|
|
|||
|
|
**建议检查项**:
|
|||
|
|
|
|||
|
|
- 插件代码修改后是否更新版本号
|
|||
|
|
- 是否同时更新 `README.md` 和 `README_CN.md`
|
|||
|
|
- 是否同步更新 docs 镜像页
|
|||
|
|
- 是否需要更新根 README 的日期 badge
|
|||
|
|
- 插件代码是否遵守 i18n 与 helper 规范
|
|||
|
|
- PR 标题或正文是否符合 Conventional Commits 精神
|
|||
|
|
|
|||
|
|
**建议权限**:
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
permissions:
|
|||
|
|
contents: read
|
|||
|
|
pull-requests: write
|
|||
|
|
issues: write
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**建议工具**:
|
|||
|
|
|
|||
|
|
- 只读型 `github:` 工具
|
|||
|
|
- 只开放少量只读 `bash:` 命令
|
|||
|
|
- 第一阶段不开放 `edit:`
|
|||
|
|
- `agentic-workflows:` 可在后续成熟后再启用
|
|||
|
|
|
|||
|
|
### 6.2 第一阶段:发布前预检
|
|||
|
|
|
|||
|
|
**文件**: `/.github/workflows/aw-release-preflight.md`
|
|||
|
|
|
|||
|
|
**作用**:
|
|||
|
|
|
|||
|
|
- 在 release 前或手动触发时执行
|
|||
|
|
- 在 `release.yml` 打包和发布之前,先检查发布完整性
|
|||
|
|
|
|||
|
|
**建议检查项**:
|
|||
|
|
|
|||
|
|
- 代码版本号和文档版本号是否一致
|
|||
|
|
- 双语 README 是否完整更新
|
|||
|
|
- docs 插件镜像页是否存在并匹配当前发布目标
|
|||
|
|
- release notes 来源文件是否齐全
|
|||
|
|
- commit message 与 release 草案是否连贯
|
|||
|
|
|
|||
|
|
**输出方式**:
|
|||
|
|
|
|||
|
|
- 在 PR 或 issue 中写总结评论
|
|||
|
|
- 可附带 checklist artifact
|
|||
|
|
- 不直接执行正式发布
|
|||
|
|
|
|||
|
|
### 6.3 第二阶段:CI 失败自动审计
|
|||
|
|
|
|||
|
|
**文件**: `/.github/workflows/aw-ci-audit.md`
|
|||
|
|
|
|||
|
|
**作用**:
|
|||
|
|
|
|||
|
|
- 分析 `release.yml`、`publish_plugin.yml`、`community-stats.yml` 等关键 workflow 的失败运行
|
|||
|
|
- 输出根因判断和下一步修复建议
|
|||
|
|
|
|||
|
|
**适合 gh-aw 的原因**:
|
|||
|
|
|
|||
|
|
- 可以通过 `gh aw mcp-server` 使用 `logs`、`audit` 等能力
|
|||
|
|
- 原生支持对 workflow 执行痕迹进行事后分析
|
|||
|
|
|
|||
|
|
### 6.4 第二阶段:文档漂移巡检
|
|||
|
|
|
|||
|
|
**文件**: `/.github/workflows/aw-docs-drift-review.md`
|
|||
|
|
|
|||
|
|
**作用**:
|
|||
|
|
|
|||
|
|
- 定期检查插件代码、插件目录 README、本地 docs 镜像和根索引之间是否发生漂移
|
|||
|
|
|
|||
|
|
**建议检查项**:
|
|||
|
|
|
|||
|
|
- 是否缺少 `README_CN.md`
|
|||
|
|
- README 章节顺序是否偏离规范
|
|||
|
|
- 插件更新后 docs 页面是否缺失
|
|||
|
|
- 代码和文档中的版本号是否不一致
|
|||
|
|
|
|||
|
|
### 6.5 第三阶段:Issue 维护助手
|
|||
|
|
|
|||
|
|
**候选文件**: `/.github/workflows/aw-issue-maintainer.md`
|
|||
|
|
|
|||
|
|
**作用**:
|
|||
|
|
|
|||
|
|
- 汇总长期未回复的 issue
|
|||
|
|
- 生成英文或双语回复草稿
|
|||
|
|
- 按插件归类重复问题
|
|||
|
|
|
|||
|
|
这个阶段建议在前面的 review 和 audit 流程稳定后再上线。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. 与现有 workflow 的职责映射
|
|||
|
|
|
|||
|
|
| 当前 Workflow | 是否保留 | gh-aw 搭档 | 职责划分 |
|
|||
|
|
|------|------|------|------|
|
|||
|
|
| `/.github/workflows/release.yml` | 保留 | `aw-release-preflight.md` | `release.yml` 负责执行,`gh-aw` 负责判断是否已准备好 |
|
|||
|
|
| `/.github/workflows/plugin-version-check.yml` | 保留 | `aw-pr-maintainer-review.md` | 硬性门禁 + 语义审查 |
|
|||
|
|
| `/.github/workflows/deploy.yml` | 保留 | 初期不加 | 确定性构建和部署 |
|
|||
|
|
| `/.github/workflows/publish_plugin.yml` | 保留 | `aw-ci-audit.md` | 确定性发布 + 失败诊断 |
|
|||
|
|
| `/.github/workflows/community-stats.yml` | 保留 | `aw-ci-audit.md` | 确定性统计 + 异常诊断 |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8. 工具模型建议
|
|||
|
|
|
|||
|
|
### 8.1 第一阶段建议启用的内建工具
|
|||
|
|
|
|||
|
|
建议从窄权限工具集开始:
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
tools:
|
|||
|
|
github:
|
|||
|
|
toolsets: [default]
|
|||
|
|
bash:
|
|||
|
|
- echo
|
|||
|
|
- pwd
|
|||
|
|
- ls
|
|||
|
|
- cat
|
|||
|
|
- head
|
|||
|
|
- tail
|
|||
|
|
- grep
|
|||
|
|
- wc
|
|||
|
|
- git status
|
|||
|
|
- git diff
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
第一阶段不要开放完全不受限的 shell。
|
|||
|
|
|
|||
|
|
### 8.2 MCP 使用策略
|
|||
|
|
|
|||
|
|
后续可通过 `gh aw mcp-server` 引入:
|
|||
|
|
|
|||
|
|
- workflow `status`
|
|||
|
|
- workflow `compile`
|
|||
|
|
- workflow `logs`
|
|||
|
|
- workflow `audit`
|
|||
|
|
- `mcp-inspect`
|
|||
|
|
|
|||
|
|
这对 `aw-ci-audit.md` 特别有价值。
|
|||
|
|
|
|||
|
|
### 8.3 Safe output 策略
|
|||
|
|
|
|||
|
|
第一阶段仅开放低风险 safe outputs:
|
|||
|
|
|
|||
|
|
- 给 PR 写评论
|
|||
|
|
- 给 issue 写评论
|
|||
|
|
- 在明确需要时创建低风险维护 issue
|
|||
|
|
|
|||
|
|
一开始不要让 agent 自动提交代码修改。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 9. Repo Memory 策略
|
|||
|
|
|
|||
|
|
`gh-aw` 的 repo memory 很适合本仓库,但必须加限制。
|
|||
|
|
|
|||
|
|
### 9.1 第一批适合保存的内容
|
|||
|
|
|
|||
|
|
- 重复出现的 CI 失败模式
|
|||
|
|
- 常见文档同步遗漏
|
|||
|
|
- 高频 review 提醒项
|
|||
|
|
- 按插件聚类的 issue 模式
|
|||
|
|
|
|||
|
|
### 9.2 推荐配置思路
|
|||
|
|
|
|||
|
|
- 只允许 `.md` 和 `.json`
|
|||
|
|
- 限制 patch size
|
|||
|
|
- 按主题拆成多个 memory stream
|
|||
|
|
|
|||
|
|
建议的逻辑布局:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
memory/review-notes/*.md
|
|||
|
|
memory/ci-patterns/*.md
|
|||
|
|
memory/issue-clusters/*.json
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 9.3 重要提醒
|
|||
|
|
|
|||
|
|
不要把 secret、token 或未公开敏感信息写入 repo memory。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 10. 分阶段落地顺序
|
|||
|
|
|
|||
|
|
### Phase 0: 准备阶段
|
|||
|
|
|
|||
|
|
- 维护者本地安装 `gh-aw`
|
|||
|
|
- 添加一个简短的 `/.github/gh-aw/README.md`
|
|||
|
|
- 写清楚 workflow 命名规范和 review 预期
|
|||
|
|
|
|||
|
|
### Phase 1: 只读语义审查
|
|||
|
|
|
|||
|
|
- 上线 `aw-pr-maintainer-review.md`
|
|||
|
|
- 上线 `aw-release-preflight.md`
|
|||
|
|
- 输出先限制为总结和评论
|
|||
|
|
|
|||
|
|
### Phase 2: 诊断与记忆
|
|||
|
|
|
|||
|
|
- 上线 `aw-ci-audit.md`
|
|||
|
|
- 在需要的地方启用 `agentic-workflows:`
|
|||
|
|
- 为重复失败模式加入受限 `repo-memory`
|
|||
|
|
|
|||
|
|
### Phase 3: 维护自动化
|
|||
|
|
|
|||
|
|
- 增加文档漂移巡检
|
|||
|
|
- 增加 issue 维护 workflow
|
|||
|
|
- 只有在信号质量足够稳定后,再考虑有限度的代码修改建议
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 11. 维护者本地使用建议
|
|||
|
|
|
|||
|
|
### 11.1 安装 CLI
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
curl -sL https://raw.githubusercontent.com/github/gh-aw/main/install-gh-aw.sh | bash
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 11.2 常用命令
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
gh aw version
|
|||
|
|
gh aw compile
|
|||
|
|
gh aw status
|
|||
|
|
gh aw run aw-pr-maintainer-review
|
|||
|
|
gh aw logs
|
|||
|
|
gh aw audit <run-id>
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 11.3 VS Code MCP 集成
|
|||
|
|
|
|||
|
|
后续可选增强项是把 `gh aw mcp-server` 加入本地 MCP 配置,这样编辑器内的 agent 会直接具备 workflow 自省能力。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 12. 最小可行落地建议
|
|||
|
|
|
|||
|
|
建议第一步只做这两个 workflow:
|
|||
|
|
|
|||
|
|
1. `aw-pr-maintainer-review.md`
|
|||
|
|
2. `aw-release-preflight.md`
|
|||
|
|
|
|||
|
|
这样可以以最低风险获得最高价值的增强。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 13. 成功标准
|
|||
|
|
|
|||
|
|
如果接入有效,应该看到这些结果:
|
|||
|
|
|
|||
|
|
- PR 评论更具体,更贴合仓库规范
|
|||
|
|
- 发布前能更早发现文档或版本同步遗漏
|
|||
|
|
- CI 失败后更快得到可执行的总结
|
|||
|
|
- 维护者花在重复性规范检查上的时间下降
|
|||
|
|
- 现有确定性 workflow 的核心行为保持稳定
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 14. 总结
|
|||
|
|
|
|||
|
|
对 `openwebui-extensions` 来说,`gh-aw` 最合适的定位是智能维护层。
|
|||
|
|
|
|||
|
|
- 现有 YAML workflow 继续负责执行。
|
|||
|
|
- agentic workflow 负责语义审查和诊断。
|
|||
|
|
- 第一阶段默认只读。
|
|||
|
|
- 等输出质量稳定后再逐步放权。
|
|||
|
|
|
|||
|
|
这条路径和仓库现状是匹配的:规范密度高、双语维护复杂、插件生命周期长,而且已经具备成熟的 AI 工程上下文。
|