跳转至

用 git-rg 检索代码仓库

需要了解仓库、Issue 或 PR/MR 时,优先使用 glab(GitLab)或 gh(GitHub)。需要查找远端代码中的函数、配置项或错误文本时,使用 git-rg Skill 和同名命令行工具;它按指定分支、标签或提交搜索代码,无需克隆仓库历史。

为 Agent 启用 git-rg Skill 后,在任务中给出仓库地址、分支和搜索目标。例如:

使用 git-rg,在 https://gitlab.example.com/team/service.git 的 main 分支查找请求超时配置,列出文件路径、行号和相关代码。

在 obscli 中可输入 $ 选择 git-rg Skill,再发送任务。公开仓库通常可匿名读取;私有仓库需要 Agent 运行环境中可用的仓库凭证。

优先复用 gh 或 glab 登录

Agent 实际使用的运行账号和环境 中安装并登录对应 CLI:

# GitHub
gh auth login --hostname github.com

# GitLab;替换为实际站点
glab auth login --hostname gitlab.example.com

git-rg v0.4.0 起默认使用 --auth auto:先读取环境变量中的 Token,没有时再复用目标站点的 gh/glab 登录。它没有单独的 git-rg login 命令。

个人终端里的登录不会自动提供给另一账号运行的 Agent 或容器。主机安装目前没有标准的仓库 Token 环境变量注入入口,本手册不提供主机 ENV 配置步骤;优先使用 Agent 运行账号已有的 CLI 登录。默认 Agent 镜像包含 git-rg,但未预装 gh/glab,容器可使用下面的 ENV 方式。

为容器配置 Token

使用能够读取目标仓库的 Token。GitLab 建议使用带 read_api 的只读身份;GitHub 建议使用仅授权目标仓库、具有 Contents: read 的细粒度 Token。不要把 Token 放进聊天消息、仓库 URL 或提交到 Git。

Docker

在现有 obs-agent.env 文件中添加:

GITRG_TOKEN=replace-with-repository-read-token

限制文件读取权限:

chmod 600 obs-agent.env

按照容器安装手册,沿用原有三个持久化卷和 --env-file ./obs-agent.env 重新创建容器。只修改宿主机 env 文件或执行 docker restart 不会更新已有容器的环境变量。

Kubernetes / Helm

GITRG_TOKEN 添加到现有 obs-agent-secret Secret,保留 AGENT_IDAGENT_API_KEY 和其他已有键。Helm values 中同时声明需要注入的键:

secret:
  existingSecret: obs-agent-secret
  keys:
    - AGENT_API_KEY
    - AGENT_ID
    - GITRG_TOKEN

在原有 Helm 安装或升级命令中加载这份 values;如果已有额外的 secret.keys,也要一并保留。直接使用 Kubernetes YAML 时,在 Agent 容器的 env 中用 secretKeyRef 引用该键。更新 Secret 后需重新创建或滚动重启 Pod,已有进程不会自动获得新的环境变量。

GITRG_TOKEN 适用于 GitHub、GitLab 和自建站点,并优先于 CLI 登录。它不是按站点隔离的凭证配置;同一 Agent 访问多个使用不同身份的站点时,优先分别配置对应站点的 gh/glab 登录。

最小命令示例

以下命令在 Agent 运行环境内执行,将示例仓库和分支替换为实际值。所有选项放在搜索文本和仓库地址之前。

# 列出自建 GitLab 仓库的分支和标签
git-rg refs --provider gitlab https://gitlab.example.com/team/service.git

# 在指定分支搜索字面量,显示文件、行号和两行上下文
git-rg --provider gitlab --ref main --format text -F -C 2 \
  'request_timeout' https://gitlab.example.com/team/service.git

# 搜索 GitHub 仓库中的 Go 文件
git-rg --ref main --glob '*.go' --format text -F \
  'request_timeout' github:OWNER/REPO

需要明确只使用容器 ENV 凭证时,添加 --auth env。需要确认完整搜索结果时,使用默认 NDJSON 输出并检查末尾的 summary.complete;达到结果上限或只用索引搜索时,“未找到”不能证明仓库中不存在匹配内容。

出现 auth_unavailable 或私有仓库访问失败时,检查运行账号的 CLI 登录或容器 Token 是否可用、站点是否正确以及仓库读取权限。自建 GitLab 使用 --provider gitlab;SSH 风格仓库地址不代表支持 SSH 密钥认证。

完整选项见 git-rg 使用说明

文档评价

文档内容是否对您有帮助?