这个项目能做什么
Gateship 是一个面向编码智能体的本地软件交付运行时。操作员定义任务后,Gateship 会为其分配一个隔离的 Git 工作树,运行选定的本地 Claude Code 或 Codex 客户端,验证任务中编写的验收命令,邀请独立的只读审查员检查变更,并通过 squash-merge 的拉取请求(PR)交付结果。该产品采用 Web 优先且本地优先的设计:Bun 在 127.0.0.1 上提供界面,SQLite 存储运行状态和活动,执行路径中不涉及终端按键或 tmux 会话。
要求与凭据处理。在需要宿主机可移植性时,建议在 Windows 和 macOS 上安装 Docker Desktop,或在 Linux 上安装带有 Compose 插件的 Docker Engine,镜像中包含提供商和 GitHub CLI。原生 macOS 和 Linux 安装需要具有订阅登录权限的 Claude Code 和/或 Codex CLI,以及通过 gh auth login --web 和 gh auth setup-git 认证的 GitHub CLI。仅在从源码运行且需要 Bun 1.2.3 或更高版本时才需要 Bun,且 Git 必须能够在目标仓库中创建分支和工作树。Gateship 执行操作员已登录的 claude 或 codex 二进制文件,向智能体子进程传递白名单环境,绝不读取提供商凭据文件且不使用 Agent SDK;GitHub 交付使用 gh 拥有的凭据存储,而非环境中的个人访问令牌。
安装与更新。安装脚本默认将 gateship 及其简写别名 gship 放置在 ~/.local/bin 中,可通过 GATESHIP_INSTALL_DIR 覆盖目标路径;重新运行脚本将原地替换现有安装,GATESHIP_VERSION 可锁定特定版本。源码构建使用 bun install --frozen-lockfile 随后执行 bun run build:release,开发时 Bun 也可以直接运行入口点。原生安装可选择开启(默认关闭)设置中的更新检查;运行进程每天最多检查一次官方发布版本,验证发布标签提交、当前平台资产、SHA256SUMS.txt 以及候选版本的版本输出,且仅在没有非终端运行或活动诊断时进行移交。未返回准确发布版本和提交的候选版本将被停止,并恢复、重启并验证之前的二进制文件。容器和源码检出版本不支持自动应用更新,并会报告原因。
快速上手。在 GitHub 克隆目录中运行 gship 将启动本地控制界面并打印 http://127.0.0.1:7777,使用 gship --port 8080 可选择其他端口。首次加载时,Web 界面仅检查本地 Git 元数据、origin URL 和本地 origin/main 引用,绝不会隐式获取或创建仓库。如果目录为空或不完整,操作界面将显示准确的恢复命令,同时设置界面仍可用于智能体订阅配置。操作员名称和 IANA 时区为可选,仅在显式保存后存储。运行中的进程无法切换其工作目录,因此更改项目路径需要从目标克隆目录重新启动 Gateship。
智能体 CLI。具备 Shell 能力的智能体可以通过版本化的机器可读接口使用运行中的服务,而无需启动另一个运行时或直接编辑 .gship 目录:例如 gship agent guide, gship agent operations, gship agent call status.get,以及带有 JSON 输入的 issues.get 等调用。每个智能体命令发出一个不含 ANSI 或进度输出的 JSON 对象,且 URL 标志指向运行在不同端口的服务。
浏览器工作流允许操作员通过调用类型化 Gateship 命令的外部智能体来描述和完善工作,维护一个持久的项目简报作为会话间的交接,然后显式授权任务。决策会中断工作并等待关注,而进度、公开智能体文本、工具名称、验证和审查则通过 SSE 跟踪;本地浏览器通知可在标签页外触达操作员。Claude 和 Codex 可以在不丢失持久运行状态的情况下切换,显式控制作为确定性回退方案。可选的 React 诊断程序针对隔离的精确 SHA 检出运行(手动或在项目闲置时按日/周计划运行);发现的问题可以被忽略或提升为未批准的任务。诊断处于交付门禁之外,绝不自动修复或批准工作,且任何诊断分数都不能阻止交付。基准测试面板将结果、人工关注、修正轮次、提供商暂停、墙钟时间、成本以及提供商或模型事实作为独立项可见,不使用评估模型或合成分数。
运行时流程。操作员任务先发送至外部对话智能体,然后转换为类型化 Gateship 命令,最后成为远程 main 分支上的待办记录。Gateship 创建隔离工作树,运行选定的实现会话,验证验收命令,通过同一提供商执行独立只读审查(若有发现则尝试一次自动修复),提交并推送,开启 PR,在 CI 通过后自动 squash 合并,刷新 origin/main,最后释放干净的管理工作树和本地分支。没有验证命令的问题将导致预检失败,且审查将作为一个具有机械只读能力的全新会话运行。
容器分发。多架构镜像通过 Windows/macOS 的 Docker Desktop 和 Linux 的 Docker Engine 运行,在同一发布标签下提供 linux/amd64 和 linux/arm64 变体,包含编译后的二进制文件、git、GitHub CLI、Claude Code CLI 和 Codex CLI。两个提供商 CLI 版本均被锁定,且子会话中禁用了 Claude Code 的自我更新,以防止运行过程在记录的工作流版本背后静默替换可执行文件。Compose 将端口仅发布到回环地址,保持镜像文件系统只读,提供临时 /tmp,防止权限提升,并删除除绑定挂载(具有不同宿主机 uid)所需之外的 Linux 能力。提供商和 GitHub 认证在容器首次启动时在内部进行并持久化在命名状态卷中;选定仓库的运行时数据库和工作树保留在项目绑定挂载的 .gship 目录中。使用相同镜像和卷重新创建容器可恢复相同的 SQLite 状态、工作树和登录信息。README 中的更新和恢复指南要求使用带有清单摘要的版本化镜像标签,停止服务,备份状态卷和 .gship 目录,并恢复之前的摘要以进行回滚;gship doctor --json 报告架构、镜像、卷权限、Git、gh、Claude、Codex、登录状态和本地连接性(不含凭据)。
安全性。HTTP 服务器默认仅绑定到 127.0.0.1,且浏览器变更额外要求同源 localhost 请求;读取路由本身不携带认证,因此回环绑定是其唯一的边界。容器镜像需要将 bind-host 变量设置为 0.0.0.0 才能让 Docker 的发布端口代理触达服务,这将边界转移到宿主机如何发布端口;在其他接口上发布将暴露所有未认证的读取路由。实现者在隔离工作树内部被有意授予写权限,在原生模式下持有运行 Gateship 用户的文件系统权限;容器模式将其限制在容器及其显式挂载中。只读解析器和审查员将 Claude 限制在 Read, Grep 和 Glob,禁用 MCP 和斜杠命令,并在禁用用户配置和 MCP 的只读沙箱中运行 Codex。智能体和 GitHub CLI 子进程接收环境白名单,而验证命令被视为受信任的项目命令并保留服务环境。Gateship 没有用于存储提供商或 GitHub 凭据的 Web 或 SQLite 字段;这是针对受信任单操作员的进程隔离,而非多租户密钥沙箱。
持久状态与恢复。运行元数据、提供商选择、事件、操作员维护的项目简报以及每个提供商的一个周期解析器会话 ID 存储在 .gship 下的 SQLite 文件中;每次运行存储其自己的提供商、原生会话 ID 和工作树路径。服务重启时,未所有权的进行中运行将变为“中断”状态,可以恢复而非丢失工作区或静默启动重复项。确认合并后,Gateship 删除干净的管理工作树、其本地分支及其过时的远程跟踪引用;失败的运行以同样方式释放,但保留包含缺失于 origin/main 提交的分支,以及脏工作树和未所有权的残留物。清理将在启动时重试。运行时源是远程 origin/main 引用,在准入运行前和合并后获取,而用户的本地 main 分支被有意保持原样。
开发、社区与许可。该项目使用 Bun 构建,提供类型检查、测试、Lint 和死代码分析命令,并在发布前运行完整集作为交付门禁。贡献遵循贡献指南、行为准则和安全策略,外部 Beta 用户可通过记录的反馈路径提交脱敏观察结果,由维护者手动分拣。Gateship 根据 MIT 许可证发布。
评论
0 评分人数达到10人后显示
登录后参与讨论。