跳到主要内容

研发团队度量洞察 玩法指南

Rabetbase CLI 把团队所有的 SQL、BFF、数据集变成了可查询的结构化数据资产。它不只是帮开发者提效的工具——更是一套业务流程 AI 化的基础设施。当所有研发行为都沉淀在平台,AI 就能回答过去只能靠人工判断的问题:谁的代码复用率最高?谁在重复造轮子?架构债务藏在哪里?团队贡献如何量化?

本质上,这是用 AI 持续洞察团队健康度、保障架构一致性、发现协作盲区——而不是依赖主观评估或事后复盘。本手册是给 AI Agent 的执行指南,当用户提出以下类型的请求时,AI 按对应路径执行。


Case 1:分析 SQL 复用情况

用户 Prompt 示例:> "分析一下团队 SQL 复用情况""哪些 SQL 被多个 BFF 引用了""有没有孤岛 SQL"AI 执行路径:

# Step 1: 拿 SQL 清单
rabetbase sql list --format json > /tmp/sql_list.json

# Step 2: 拿 BFF 清单,遍历每个 BFF 的代码,搜索 SQL 引用
rabetbase bff list --format json | jq -r '.[].id' | while read id; do
CODE=$(rabetbase bff detail "$id" --format json | jq -r '.code // ""')
echo "=== BFF: $id ==="
for sql in $(cat /tmp/sql_list.json | jq -r '.[].sqlCode'); do
echo "$CODE" | grep -q "$sql" && echo " -> $sql"
done
done

输出格式:

SQL 复用率:
┌──────────────────┬───────┬──────────────────┐
│ SQL │ 引用数 │ 等级 │
├──────────────────┼───────┼──────────────────┤
│ get_user_profile │ 8 │ ⭐⭐⭐ 核心资产 │
│ get_order_list │ 5 │ ⭐⭐ 高复用 │
│ debug_v3 │ 1 │ ⚠️ 孤岛 │
└──────────────────┴───────┴──────────────────┘


Case 2:检测重复 BFF 代码(DRY 违规)

用户 Prompt 示例:> "有没有重复的 BFF 代码""哪几个 BFF 长得差不多""DRY 违规有哪些"AI 执行路径:

# 收集所有 BFF 代码到文件
rabetbase bff list --format json | jq -r '.[].id' | while read id; do
NAME=$(rabetbase bff detail "$id" --format json | jq -r '.name')
CODE=$(rabetbase bff detail "$id" --format json | jq -r '.code // ""')
echo "=== $NAME ===" >> /tmp/bff_all.txt
echo "$CODE" >> /tmp/bff_all.txt
echo "" >> /tmp/bff_all.txt
done

然后在 Claude Code 里用 Python 做相似度比对:

import subprocess, json, difflib

bff_list = json.loads(subprocess.run(
['rabetbase', 'bff', 'list', '--format', 'json'], capture_output=True, text=True
).stdout)

bffs = {}
for b in bff_list:
detail = json.loads(subprocess.run(
['rabetbase', 'bff', 'detail', b['id'], '--format', 'json'],
capture_output=True, text=True
).stdout)
bffs[b['name']] = detail.get('code', '')

for name_a, code_a in bffs.items():
for name_b, code_b in bffs.items():
if name_a >= name_b: continue
ratio = difflib.SequenceMatcher(None, code_a, code_b).ratio()
if ratio > 0.7:
print(f"⚠️ DRY违规: {name_a} {name_b} (相似度 {ratio:.0%})")

输出格式:

⚠️ DRY 违规:
- user/listHandler.ts user/listV2.ts (82%)
- order/priceCalc.ts order/priceCalcLegacy.ts (91%)


Case 3:看团队数据模型全貌

用户 Prompt 示例:> "团队有哪些数据集""数据集之间的关联是什么""有没有孤岛数据集"AI 执行路径:

# 数据集清单
rabetbase dataset list --format json | jq '.'

# 数据集关联图(PK/FK/JOIN)
rabetbase dataset links --format json | jq '.'

找孤岛数据集(无任何关联):

rabetbase dataset links --format json | jq '
[.datasets[] |
select(. as $ds |
[.links[] |
select(.fromDataset == $ds.name or .toDataset == $ds.name)] |
length == 0
) |
.name
]
'


Case 4:团队贡献统计(按人聚合)

用户 Prompt 示例:> "团队谁写的 SQL 最多""这周新增了多少 BFF""每个人贡献了多少代码"AI 执行路径:

# SQL 按创建者聚合
rabetbase sql list --format json | jq '
group_by(.createdBy // "未知") |
map({author: .[0].createdBy, count: length, sqlCodes: [.[]|.sqlCode]})
'

# BFF 按创建者聚合
rabetbase bff list --format json | jq '
group_by(.createdBy // "未知") |
map({author: .[0].createdBy, count: length, bffIds: [.[]|.id]})
'

输出格式:

贡献热力图:
┌──────────┬───────┬───────┐
│ 开发者 │ SQL数 │ BFF数 │
├──────────┼───────┼───────┤
│ zhangsan │ 12 │ 8 │
│ lisi │ 9 │ 5 │
│ 未标注 │ 20 │ 7 │
└──────────┴───────┴───────┘


Case 5:搜索现成方案

用户 Prompt 示例:> "有没有现成的订单 SQL""有没有用户相关的 BFF""搜索所有含 xxx 的数据集"AI 执行路径:

# 搜索 SQL
rabetbase sql list --format json | jq '
[.[] | select(.sqlCode | test("订单|order"; "i"))]
'

# 搜索 BFF
rabetbase bff list --format json | jq '
[.[] | select(.name | test("用户|user"; "i"))]
'

# 搜索数据集
rabetbase dataset list --format json | jq '
[.[] | select(.name | test("营销|campaign"; "i"))]
'


Case 6:快速摸底团队资产(新手 onboarding)

用户 Prompt 示例:> "快速了解团队研发情况""团队有哪些资产""给我一个全局概览"AI 执行路径:

# 一口气拉全量数据
rabetbase sql list --format json > /tmp/sql.json
rabetbase bff list --format json > /tmp/bff.json
rabetbase dataset list --format json > /tmp/dataset.json
rabetbase dataset links --format json > /tmp/links.json

# 统计
echo "=== 团队资产概览 ==="
echo "SQL 总数: $(jq 'length' /tmp/sql.json)"
echo "BFF 总数: $(jq 'length' /tmp/bff.json)"
echo "数据集总数: $(jq 'length' /tmp/dataset.json)"
echo "数据集关联: $(jq '[.links] | flatten | length' /tmp/links.json)"


Case 7:BFF 依赖了哪些数据集

用户 Prompt 示例:> "某个 BFF 用了哪些数据集""getUserProfile 这个 BFF 依赖什么数据"AI 执行路径:

# 先找 BFF ID
rabetbase bff list --format json | jq '.[] | {name, id}'

# 看单个 BFF 详情(包含代码内容)
rabetbase bff detail --format json | jq '{name, code}'

在代码里搜索 dataset_ 前缀或数据集名称的引用即可定位依赖。


通用前置:确认环境和登录

以上所有 Case,执行前必须先确认:

# 检查登录
rabetbase auth login 2>&1 | head -3

# 确认当前应用
rabetbase app list
rabetbase app use --appcode


本文档供 AI Agent 执行研发洞察时参考使用 | 基于 rabetbase-cli 现有命令