
开发者用 Rust 和 React 构建离线 GitHub 客户端 ogh,支持断网读写与同步
来源标题:I built offline GitHub (with `ogh` CLI, sync etc.) for coding with agents
开发者发布离线 GitHub 客户端 ogh,可在无网络时浏览仓库、issue 和 PR,并编写评论与草稿,联网后再同步回 GitHub。该项目用 Rust、React 和 shadcn/ui 构建,通过 SQLite 发件箱保存离线操作,支持多仓库、全文搜索和冲突处理,目前为早期版本,与 GitHub 官方无关。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
你的仓库、issue 和 pull request,在 35,000 英尺高空也能用。一个 Rust + React + shadcn/ui 的工作区:登机前下载,离线阅读和写代码,把要发出的评论和标签保存在本地,联网后再审阅并同步。GitHub 依然是唯一数据源。 🚧 早期版本。独立于 GitHub。原创项目 logo;未使用 GitHub logo。 🗂️ 支持多个仓库,issue/PR 可按文本或 #编号 搜索,可分享的本地 URL,讨论区和源码浏览。 🖼️ Pull 时下载 GitHub 托管的评论截图,离线时显示。 🌳 完整 Git 历史、分支、标签和可用的 PR head。隔离的 worktree 用于测试。 ✍️ 离线评论、issue/PR 草稿、标签变更和审阅草稿保存在持久化的 SQLite outbox 中。新建的 issue 和 PR 会立即出现在对应标签页中,并带有待处理标记;打开它们即可在 Push 前添加评论、标签和编辑。本地草稿链接在重新加载后仍然有效,GitHub 会在 Push 后分配公开编号。 🟠 本地工作旁会显示待处理、发送中、冲突、失败和不确定等可见标记。 🔄 从 GitHub 的 Pull 与审阅后的 Push 分开进行,支持冲突处理。 🧾 永久的发出历史,支持 JSON/Markdown 导出,供你或 agent 使用。 🤖 ogh:gh 风格的 CLI 读取、本地 Git 操作、排队写入,以及 Open Mercato skill 适配器。 🎨 中性黑色界面,克制的青柠色点缀,原创 MIT 许可品牌,无 CDN 资源。 🚀 快速开始 — 一条命令 在 macOS 或 Linux 上,联网时把下面这行粘贴到终端: bash <(curl -fsSL https://raw.githubusercontent.com/pkarw/offline-github/main/scripts/setup.sh) 🐙 安装程序首先会询问 GitHub 仓库。按 Enter 选择 open-mercato/open-mercato,或输入其他 OWNER/REPO 或 GitHub URL。 使用 --repo OWNER/REPO 可直接指定。 📂 在安装任何内容之前,安装程序会显示所有目标位置,并允许你编辑 项目文件夹(默认:~/Projects/open-mercato-offline)。按 Enter 保留默认值,或在命令中添加 --folder my-mercato 直接指定。 安装程序会下载/构建 ogh,启动本地浏览器应用,缓存 你选择的仓库(默认为 Open Mercato),创建你的开发 worktree,并为 Claude、Codex 和 pi 安装 open-mercato/skills,同时选中 ogh 跟踪器。 它会在你的项目中打开一个 shell。在那里运行 pi、codex 或 claude (使用你已安装并登录的任意 agent)。 浏览器会自动打开。应用通常使用 http://127.0.0.1:4173;如果端口被占用,它会选择一个空闲端口并打印实际 URL。下次进入同一项目时,使用: ~/.local/bin/ogh-work 首次运行可能会要求你登录 GitHub,下载所有 issue、PR 和 Git 历史需要几分钟。在 macOS 上,缺失的前置依赖会通过 Homebrew 安装(请先安装 Homebrew)。在 Linux 上,需要预先安装 Node.js 22+、 Git、GitHub CLI、jq、Python 3 和 C 构建工具链;安装程序会在需要时添加 Rust。Open Mercato 源码已准备好供 agent 使用;运行 ERP 及其数据库需要 Open Mercato 自己的开发环境设置。 将工作区、工具和 GitHub 登录信息保留在持久的本地 microVM 中: bash <(curl -fsSL https://raw.githubusercontent.com/pkarw/offline-github/main/scripts/sandbox.sh) 🐙 沙箱也会询问仓库,默认为 Open Mercato。 📂 它会先显示目标位置,并提示输入客户机 文件夹名称(默认:/root/Projects/open-mercato-offline)。添加 --folder my-mercato 可直接指定。两个安装程序都支持 --plan 在不安装任何内容的情况下预览路径。 相同的安装在 Microsandbox 内运行,然后打开 项目中的 shell。你的宿主机主目录和凭据不会被挂载。 应用会在 http://127.0.0.1:4183 打开。之后可通过 ~/.local/bin/ogh-sandbox 返回。详见沙箱详情。 本地评论、标签和 PR 草稿会一直排队,直到你审阅并确认 Push。 Skills 通过 ogh 使用缓存读取和排队写入;仅限实时的 claim/merge 门控在离线时停止。Agent 需单独安装/认证。不设全局 gh 别名。 保留你已有的仓库:不要删除 ~/.offline-github 或你的 项目文件夹。首先在其终端中按 Ctrl-C 停止正在运行的 ogh serve。 如果安装程序在后台启动了它,请用 ps -p PID -o pid=,command= 检查 ~/.offline-github/setup/server.pid 中的 PID,确认是你的 ogh server 后 用 kill PID 停止该特定进程。 这能确保浏览器使用更新后的后端,而不是复用旧 server。 对于默认的 Open Mercato 安装,粘贴: bash <(curl -fsSL https://raw.githubusercontent.com/pkarw/offline-github/main/scripts/setup.sh) --repo open-mercato/open-mercato --folder "$HOME/Projects/open-mercato-offline" --skip-sync --no-shell ~/.local/bin/ogh --version 📂 将 --repo 和 --folder 替换为你在安装时选择的仓库和现有受管 工作区。如果你使用了 OGH_DATA_DIR 或 OGH_SETUP_ROOT,请在升级前导出相同的值。一次运行会更新所有缓存仓库的 共享 CLI 和 UI;它还会刷新所选工作区中受管的 agent 指令,并更新 ogh-work 以便进入该工作区。 💾 缓存的 issue、PR、图片、发出历史、排队变更、本地提交 和 worktree 都会保留原地。--skip-sync 跳过仓库下载; 升级不会 Push 排队的工作。安装程序会打开更新后的浏览器 应用并打印其实际 URL。请刷新旧的浏览器标签页。当你需要最新的仓库数据时,单独使用 Pull from GitHub。 🧊 Microsandbox:用 ~/.local/bin/ogh-sandbox 进入你现有的 VM,停止 其中的 ogh server,然后在客户机内运行相同的安装命令,使用 --folder /root/Projects/open-mercato-offline(或你现有的客户机文件夹) 并在前面加上 OGH_SETUP_PORT=4174。保持相同的 VM 和持久 卷;退出并再次运行 ~/.local/bin/ogh-sandbox 以重新打开它。 🛠️ 从源码检出安装?在该检出中,运行 git pull --ff-only 然后 bash scripts/install.sh,并重启 ogh serve。这需要
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。