Files
harness_coding_docs/docs/gitea-mcp.md
T

91 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Gitea MCP 接入
> 可选增强:让 agent 通过 Gitea 读取共享文档、Issue、分支和 PR。Git checkout 仍是本地编辑与离线降级入口,MCP 不取代 Git。
## 适用边界
- Gitea Git 仓库保存版本化文档和代码。
- Gitea Issue / PR 保存实时协调状态。
- Gitea MCP 提供受控的远端读取和写入工具。
- `AGENTS.md`、`docs/00-ai-start-here.md` 等最小启动文件仍保留在项目 checkout 中。
## 私有配置
从根目录 [`gitea.env.example`](../gitea.env.example) 复制一份到 `$HOME/.codex/gitea.env`,替换示例值。也可用 `GITEA_ENV_FILE` 指向其他本机私有路径:
```text
GITEA_URL=【Gitea 实例根地址,不含 /api/v1】
GITEA_TOKEN=【最小权限 Personal Access Token】
# 仅当团队明确接受 HTTP 下 Token 明文传输风险时设置:
GITEA_ALLOW_INSECURE_HTTP=1
# 仅当该实例必须绕过本机代理直连时设置:
GITEA_DIRECT=1
```
规则:
- 不把 `gitea.env`、Token、Authorization header、私有实例地址提交到仓库或粘贴到 Issue。
- Token 一旦出现在聊天、日志或提交历史中,立即撤销并轮换。
- 推荐 HTTPS;如果项目长期使用 HTTP,必须在项目安全决策中记录风险接受人、网络边界和轮换策略。
- `GITEA_URL` 填实例根地址;`gitea-mcp` 会自动追加 `/api/v1`。
## Codex 配置
复制 [`../scripts/gitea-mcp.ps1`](../scripts/gitea-mcp.ps1) 到稳定的本机路径,然后在全局 `~/.codex/config.toml` 或可信项目的 `.codex/config.toml` 注册:
```toml
[mcp_servers.gitea]
command = "pwsh.exe"
args = ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "【gitea-mcp.ps1 的绝对路径】"]
default_tools_approval_mode = "writes"
startup_timeout_sec = 30
tool_timeout_sec = 60
```
包装脚本固定使用 `gitea-mcp==0.5.1`,避免 `uvx` 自动升级造成协议或工具集合漂移。升级版本时先在独立分支验证 `initialize`、`tools/list` 和一条只读 API,再更新版本号。
## 工具审批
默认策略:
- 自动允许只读:`list_repos`、`read_file`、`list_issues`、`get_issue`、`list_branches`、`list_pull_requests`。
- 写入前确认:`create_issue`、`update_issue`、`add_comment`、`create_branch`、`commit_changes`、`create_pr`。
- 破坏性动作再次确认:`merge_pr`、关闭 Issue、覆盖文件、批量操作。
如果 Codex 版本支持 `enabled_tools` / `disabled_tools`,应再用 allowlist 收窄工具,而不是只依靠提示词。
## 本地验证
只检查文件格式,不连接 Gitea、不显示 Token:
```powershell
./scripts/gitea-mcp.ps1 -CheckConfig
```
连接预检:
```powershell
./scripts/gitea-mcp.ps1 doctor
```
预检至少确认:实例可达、Token 有效、当前用户正确、MCP 版本固定。失败时查看系统临时目录中的 `gitea-mcp-<PID>.stderr.log`;日志不得复制 Token 或敏感正文。
## 降级规则
- Gitea / MCP 不可用:允许继续已领取任务的本地工作,不允许领取新任务或猜测远端状态。
- 恢复连接后:先拉取默认分支并重新读取任务 Issue,再提交或更新状态。
- MCP 读取结果与本地 checkout 冲突:以明确记录的提交 SHA 为比较基准,不静默覆盖本地未提交改动。
## 按需读取
启用 [`agent-context.json`](agent-context.json) 后,agent 不用通过 MCP 全量读取 `docs/`:
1. 获取默认分支头 SHA 作为 `context_ref`。
2. 读取清单和 `bootstrap.always_read`。
3. 按本轮任务类型读取对应 `routes`。
4. 保存 `read_file` 返回的文件 SHA;同一会话内 SHA 未变化时复用内容。
Gitea 中的文件与本地 `docs/` 是同一 Git 工件的远端与 checkout,不要再创建第三份人工同步副本。