目标
实现独立 GitHub broker,将 GitHub 写凭证从 Agent 进程中完全隔离。
实现要点
GitHub broker (
src/plugin/github-broker.ts新增)typescriptclass GitHubBroker { constructor(config: { token: string; owner: string; repo: string }) async createPR(params: CreatePRParams): Promise<PRResult> async updatePR(prNumber: number, body: string): Promise<void> async mergePR(prNumber: number, options: MergeOptions): Promise<MergeResult> async addComment(issueNumber: number, body: string): Promise<void> }- 独立持有 GitHub API token(不从环境变量读取)
- 所有 GitHub 写操作统一经此类执行
- 根据 agent/session/FlowRun/Task 状态授权
Broker 集成 (
src/plugin/broker.ts扩展)FlowBroker集成GitHubBrokerexecutePrCreate(parentIssueNumber, taskId, params)→ 通过 GitHubBroker 执行executePrMerge(parentIssueNumber, taskId)→ 通过 GitHubBroker 执行- 权限检查:只能操作所属 FlowRun 的 PR
凭证隔离验证
- 启动时验证 broker token 不泄漏到 Agent shell
ps aux+/proc/self/environ检查子进程环境变量- 测试覆盖:Worker 尝试
gh pr create→ broker token 不可用 → 操作被拒绝 - 测试覆盖:Reviewer 尝试任何写操作 → 被拒绝
验收标准
- [ ] Broker token 隔离测试:Agent shell 中无 token
- [ ] Worker 写操作拒绝测试
- [ ] Reviewer 写操作拒绝测试
- [ ] Broker 授权逻辑测试:不同 agent/session 不同权限
Worktree
- 路径:
.worktree/tdd-d4b-broker-github/ - 分支:
feat/tdd-d4b-broker-github