Top Goose
Top Goose 把 GitHub issue、pull request 和私有的智能体对话放进同一个桌面应用。选中一个 issue 或 PR,就能在阅读公开讨论的同时,让智能体在你的本地克隆上工作。
基于 goose over ACP 构建:这是一个 Electron 应用,以子进程方式运行 goose acp。
巧妙之处
对话属于具体的工作,而不属于碰巧打开着的某个聊天窗口。每个 issue 或 pull request 对应一个持久的 goose 会话。切换视图不会取消其他会话正在运行的轮次,应用重启后再回来,也会加载已有的对话。
应用负责 GitHub 上下文和界面;goose 负责智能体的对话历史和工具执行。独立的 git worktree 让各个会话可以并发工作,而不必共用同一个检出目录。
应用提供的 MCP 工具可以把回复草稿放进输入框供你审阅,让智能体能够参与到界面中,而不只是返回聊天文字。
工作方式
- 从 GitHub 读取 issue 和 PR,并在应用中显示它们的讨论。
- 第一次发送提示词时,创建 goose 会话;如已启用,同时创建对应的 worktree。
- 把公开讨论作为不受信任的上下文提供给智能体。
- 把流式更新路由到对应的对话。用户回来时加载已保存的会话。
会话管理器 恢复一个已映射的会话,并把回放应用到界面上:
const cwd = await sessionCwd(mapping);
const replay = await acp.loadSession(mapping.sessionId, cwd, []);
applyReplay(live, replay);
live.currentAgent = undefined;
await attachDraftServer(mapping.sessionId, issueNodeId, cwd);
await applyInstructions(mapping.sessionId, mapping.kind ?? "issue");
集成的其余部分请参阅 ACP 传输层、 上下文同步 和草稿回复 MCP 服务器。
自己运行
你需要 Node.js 22.12 或更高版本、一份本地仓库克隆、一个 GitHub classic 个人访问令牌,以及 1.41 或更高版本且已配置提供商的 goose。该项目在 macOS 上开发和测试。
git clone https://github.com/DOsinga/top-goose.git
cd top-goose
npm install
npm run dev
首次运行时,设置界面会引导你完成 GitHub 认证、定位 goose 和选择本地克隆。令牌权限范围和可选的 Projects 集成,请按 安装说明操作。
智能体的访问权限
Top Goose 以自动模式运行会话,并会批准工具请求。worktree 只是隔离 git 状态,并不是安全沙箱。请使用与这种访问级别相匹配的仓库和凭据。