GitLab 研发管理
清海接入 GitLab 的 6 大会话场景及各场景需要的能力。 角色维度的会话旅程见 角色场景,能力定义见 Skill 清单。
背景与现状
团队使用 GitLab CE 18.2(私有部署,gitlab.e-idear.com)管理代码。清海已经"认识"每个人(阶段 1 组织架构识别完成),现在需要"看懂"研发活动,让不同角色通过对话掌握项目状态。
| 维度 | 现状 |
|---|---|
| 版本 | GitLab CE 18.2.4(社区版) |
| 项目数 | ~10 个活跃项目 |
| 团队 | 开发部门(前端组 + 后端组 + 产品组,各组 5-10 人) + 运营组 |
| 分支策略 | 主要直接 push 到 main/master,MR 流程逐步推行中 |
| CI/CD | 部分项目配置了 Pipeline,多数处于 skipped/failed |
| 接入方式 | GitLab API v4,只读查询,Token 鉴权,SSL 自签名 |
场景与能力总览
GitLab 研发管理覆盖 6 大会话场景,每个场景需要特定的查询能力组合:
场景 → 能力映射表
| 场景 | 触发词示例 | 需要的查询能力 | GitLab API |
|---|---|---|---|
| 项目状态速览 | "昨天大家提交了什么"、"boss-agi 什么情况" | 列出项目 + 查询提交记录(待修复:覆盖所有活跃分支) | GET /projects + GET /projects/:id/repository/commits |
| MR 生命周期 | "有没有待审核的 MR"、"MR 改了什么" | MR 列表 + MR 变更详情 | GET /projects/:id/merge_requests + .../changes |
| Pipeline 与部署 | "CI 挂了吗"、"哪个 Job 失败了" | Pipeline 列表 + Pipeline Job 详情 | GET /projects/:id/pipelines + .../jobs |
| 团队工作量洞察 | "这周谁代码量最多"、"研发周报" | 代码贡献统计 + 查询提交记录(待修复:覆盖所有活跃分支) | GET /projects/:id/repository/contributors + commits?with_stats=true |
| 代码变更摘要 | "这个提交改了什么"、"帮我看看改动" | 提交详情与 diff + MR 变更详情 | GET /projects/:id/repository/commits/:sha + /:sha/diff |
| Issues 与文件查看 | "有哪些 bug"、"看一下 config 文件" | Issues 列表 + 文件内容 | GET /projects/:id/issues + .../files/:path/raw |
Skill 触发机制
用户消息 → 命中触发词(代码|GitLab|提交|MR|合并请求|仓库|分支|流水线|CI|CD|Issues...)
→ 渐进式加载 Skill 定义
→ AI 根据用户意图选择能力组合
→ 调用 GitLab API → 整理结果 → 回复用户场景一:项目状态速览
核心价值:不用打开 GitLab,直接问清海就知道项目动态。
典型对话
| 用户问法 | 清海应答 | 需要的能力 |
|---|---|---|
| "公司有哪些代码仓库" | 列出所有项目(名称 + 最后活跃时间) | 列出项目 |
| "昨天大家提交了什么" | 按人列出昨日 commit(项目 + 标题 + 代码增删量) | 列出项目 → 查询提交记录(遍历活跃项目) |
| "boss-agi 最近什么情况" | 近 3 天 commit 概况 + open MR 数 | 查询提交记录 + MR 列表 |
| "阿远这周写了什么代码" | 按项目列出该人本周 commit | 查询提交记录(按作者筛选) |
数据流转
关键约束
- 人名匹配通过
author_email→ PersonIndex,不依赖author_name(可能含空格如"阿 远") contributorsAPI 在 CE 18.x 中 additions/deletions 返回 0,代码量统计通过commits?with_stats=true逐条聚合- ⚠️ 多分支覆盖(待修复):当前提交查询默认只覆盖 master/main,feature / develop / hotfix 等活跃分支上的提交不被统计,数据不完整。修复方案见 Skill 清单 — 实现路线
场景二:MR 生命周期管理
核心价值:推动团队建立 MR review 流程,管理者掌握审核动态。
典型对话
| 用户问法 | 清海应答 | 需要的能力 |
|---|---|---|
| "有没有待审核的 MR" | 列出所有 open MR(标题 + 作者 + reviewer + 等待时长) | MR 列表(state=opened) |
| "王锦的 MR 什么状态" | 按作者筛选 MR 列表 | MR 列表(按作者筛选) |
| "这个 MR 改了什么" | 变更文件列表 + diff 摘要 | MR 变更详情 |
| "这周合了多少 MR" | 统计本周 merged 的 MR | MR 列表(state=merged) |
| "催一下赵成远审核" | 通过飞书消息通知 reviewer | MR 列表(定位 MR)→ 飞书消息通知 |
跨能力联动
催审场景涉及 GitLab 查询 + 飞书消息两种能力的协作:
场景三:Pipeline 与部署
核心价值:CI 红灯第一时间感知,定位失败原因。
典型对话
| 用户问法 | 清海应答 | 需要的能力 |
|---|---|---|
| "CI 状态怎么样" | 各项目最近的 pipeline 状态 | Pipeline 列表 |
| "boss-agi 最近的构建" | 最近几个 pipeline(状态 + 分支 + 触发人 + 耗时) | Pipeline 列表 |
| "哪个 Job 失败了" | Pipeline 下的 Job 列表 + 失败日志 | Pipeline 列表 → Pipeline Job 详情 |
| "最近有没有构建失败" | 筛选 failed 状态的 pipeline | Pipeline 列表(status=failed) |
两步查询流
Pipeline 场景通常需要两步调用:先定位 Pipeline → 再查 Job 详情。
场景四:团队工作量洞察
核心价值:量化研发产出,生成站会/周报素材。
典型对话
| 用户问法 | 清海应答 | 需要的能力 |
|---|---|---|
| "这周谁代码量最多" | 按人统计本周 commit 数 + 代码增删 | 代码贡献统计(since/until) |
| "王锦最近的代码活跃度" | 近 7 天每日 commit 数 + 代码量 | 代码贡献统计(按作者 + since) |
| "有没有人这周没提交" | 对比团队名单与本周有提交的作者 | 代码贡献统计 + PersonIndex 成员列表 |
| "帮我整理研发周报" | 按项目汇总 commit + MR + 关键变更 | 查询提交记录 + MR 列表 + 代码贡献统计 |
统计逻辑
场景五:代码变更摘要
核心价值:老板看不懂代码,清海用业务语言翻译代码变更。
典型对话
| 用户问法 | 清海应答 | 需要的能力 |
|---|---|---|
| "这个提交改了什么" | 读取 commit diff → 用业务语言总结 | 提交详情与 diff |
| "帮我看看这个 MR 改了什么" | 读取 MR diff → LLM 总结 | MR 变更详情 |
| "最近有没有很大的改动" | 查 commits,筛选代码变更量大的 | 查询提交记录 → 提交详情与 diff |
AI 翻译流
场景六:Issues 与文件查看
核心价值:快速查看项目 Issue 状态和文件内容,不切换到 GitLab 界面。
典型对话
| 用户问法 | 清海应答 | 需要的能力 |
|---|---|---|
| "有哪些 bug 类型的 Issue" | 按标签筛选 opened issues | Issues 列表(labels=bug) |
| "看一下 config.py 的内容" | 文件内容(自动截断超长文件) | 文件内容 |
| "develop 分支上的 README" | 指定分支查看文件 | 文件内容(ref=develop) |
角色权限与场景覆盖
不同角色在各场景中的可见范围不同,详见 角色场景。
角色 × 场景矩阵
| 场景 | 老板 | 组长 | 员工 |
|---|---|---|---|
| 项目状态速览 | 全公司所有人、所有项目 | 所有项目,人员维度仅本组 | 仅自己的提交 |
| MR 生命周期 | 全公司 MR | 本组成员 MR + 自己待审 | 仅自己的 MR |
| Pipeline 与部署 | 全部 | 全部 | 全部(项目维度不隔离) |
| 团队工作量洞察 | 全公司 | 本组成员 + 其他组汇总 | 仅自己 |
| 代码变更摘要 | 全部 | 全部 | 仅自己的提交 |
| Issues 与文件 | 全部 | 全部 | 全部(项目维度不隔离) |
越权查询引导
复用能力与全局约束
复用的现有能力、人员映射机制、全局约束详见 Skill 清单 — 复用的现有能力 和 Skill 清单 — 全局约束。