ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

oh-my-pi 用户面向包全景指南:从 robomp 自动分诊到本地记忆,10 个可直接上手的 CLI 与库

oh-my-pi 用户面向包全景指南:从 robomp 自动分诊到本地记忆,10 个可直接上手的 CLI 与库 oh-my-pi 用户面向包全景指南从 robomp 自动分诊到本地记忆10 个可直接上手的 CLI 与库【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi本文是 oh-my-piomp仓库面向终端用户的包级索引指南覆盖python/robomp自托管 GitHub 分诊机器人、omp stats本地用量仪表盘、omptype模式校验库、metaharness统一基准管理器、browser-relay浏览器中继、collab-web协作客户端、snapcompact位图压缩、mnemopi本地记忆 CLI 等全部用户可直接运行的包与命令。读完本文你将掌握每个包的安装方式、核心 CLI 命令、关键配置项、数据存储位置与安全边界并能依据哪些是用户面向、哪些是内部实现的原则快速定位对应文档与源码。文档归属策略哪些包值得根级文档覆盖docs/user-facing-packages.md首先定义了一套根文档root docs策略用于区分用户可直接运行与内部实现两类包纳入根文档覆盖包级 CLI、扩展功能、仪表盘、基准运行器等用户可以直接运行或通过omp调用的功能明确排除仅作内部实现的包或 crate交由对应的架构文档负责单一事实来源包 README 与 manifest 仍然是包级安装与参数说明的权威来源根文档的作用是让这些功能可被发现并链接到准确的源码路径内部 Rust crate 的处理目前crates/*下的每个条目都是oh-my-pi/pi-natives与内嵌 shell 的内部实现统一由 natives-architecture.md 及周边 native 文档负责贡献者视角的完整映射见 native-crates.md。这一策略保证了 README 级细节安装、flags与根级可发现性做什么、入口在哪各司其职也为你阅读下文各包条目提供了组织框架。python/robomp— 自托管 GitHub 分诊与修复服务定位与工作流robomp是一个 Python 包Python 3.11可执行命令为robomp提供serve、triage、replay、status、cleanup五个子命令。它接收白名单仓库的 GitHub webhook对 issue 分类并为每个 issue 恢复一个omp --mode rpc会话在按 issue 隔离的 git worktree 中运行随后评论或直接开启修复 PR并持续跟进 issue 与 PR 的后续对话。详细说明见 python/robomp/README.md。按 issue 类型分支处理bug/documentation→ 复现、在新分支上修复、开启 PRPR 正文包含## Repro/## Cause/## Fix/## Verification与Fixes #Nquestion→ 仅一条评论并附带 以保持打开的提示若 issue 作者在ROBOMP_QUESTION_AUTOCLOSE_HOURS默认 4 小时内未回应 issue 以state_reasoncompleted自动关闭后续评论或外部关闭会同步取消该计划enhancement/proposal→ 一条评论不开 PRinvalid/duplicate→ 一条简短评论。后续的 issue 评论与 PR 评审评论会通过--continue恢复同一份 JSONL 转录所对应的 omp 会话编排器重启后进行中的事件会重新入队并同样恢复。双容器架构与信任边界部署采用两个容器、单一信任边界详见 python/robomp/docker-compose.ymlrobomp— FastAPI SQLite 事件队列 WorkerPool在/data/workspaces/下的按 issue worktree 中运行omp。它持有 HMAC 密钥从不持有 PATgh-proxy— 位于internal: true网络上的兄弟容器持有GITHUB_TOKEN校验来自 robomp 的 HMAC 签名请求执行 REST 调用与git push且只允许向api.github.com出站。事件流为webhook → HMAC 校验 →github_events.route→ SQLiteevents表按X-GitHub-Delivery去重→WorkerPool在BEGIN IMMEDIATE下认领任务进程内_inflight集合按(owner, repo, n)串行化→sandbox.ensure_workspace在farm/8hex/slug生成 worktree →worker.run_task以cwdworktree启动omp --mode rpc模型从ROBOMP_MODELCSV随机选取中抽取。对应模块见 python/robomp/src 下的server.py、queue.py、worker.py、host_tools.py、sandbox.py、proxy_client.py、db.py与config.py。代理端的所有 GitHub 写操作都通过src/host_tools.py暴露每次 host-tool 调用都会以凭证脱敏的参数与结果审计进tool_calls表。配置与部署配置来源为python/robomp/.env复制自 python/robomp/.env.example与挂载的~/.omp/agent/models.container.yml容器内为models.yml。Compose 部署将数据库、按 issue worktree、会话转录与日志持久化在robomp_data卷的/data下。核心变量包括变量说明GITHUB_WEBHOOK_SECRET校验 webhook 签名的共享密钥openssl rand -hex 32生成ROBOMP_GH_PROXY_HMAC_KEY编排器与 gh-proxy 之间的 HMAC 密钥openssl rand -hex 32生成ROBOMP_GH_PROXY_URL默认http://gh-proxy:8081ROBOMP_REPO_ALLOWLIST逗号分隔的owner/repo白名单ROBOMP_BOT_LOGIN机器人账号的提及句柄如roboompROBOMP_GIT_AUTHOR_NAME/EMAIL机器人提交的作者身份gh_push_branch强制校验ROBOMP_MODEL单个模型或逗号分隔模型池如anthropic/claude-sonnet-4-6ROBOMP_THINKINGoff\|low\|medium\|highROBOMP_RELEASE_SENTINEL_ENABLED发布哨兵开关默认false模式互斥config.py会拒绝同时配置 PAT 与 gh-proxy 的.env。推荐默认的 gh-proxy 模式将 PAT 只放进 gh-proxy 容器直接运行编排器宿主 CLI、测试时则需保持GITHUB_TOKEN未设置并直接配置 PAT。启动流程cp .env.example .env $EDITOR .env openssl rand -hex 32 # ROBOMP_GH_PROXY_HMAC_KEY openssl rand -hex 32 # GITHUB_WEBHOOK_SECRET bun run pi:image # 构建 oh-my-pi/pi:dev一次性 / pi 变更后 bun run robomp:build bun run robomp:up curl -fsS http://localhost:8080/healthz前提条件Docker Compose v2、宿主可访问的 LiteLLM 风格模型代理、容器模型配置、GitHub webhook 端点以及对所有白名单仓库具有写权限的机器人 PAT。机器人账号需要对每个仓库具备Write权限建议使用包含 Contents / Issues / Pull requests RW Metadata R 的细粒度 PAT启用发布哨兵还需Actions: Read。仪表盘、CLI 与运维FastAPI 在/提供操作员仪表盘同时有 health、event、issue、replay 端点Compose 部署将其发布在http://localhost:6543/。仪表盘前端为 Vite Solid源码在 python/robomp/webbun run robomp:web:dev以开发模式运行bun run robomp:web:build重建静态产物。根级package.json脚本package.json覆盖完整生命周期robomp:install宿主开发安装、robomp:serve宿主运行、robomp:build/robomp:rebuild、robomp:up、robomp:down、robomp:restart、robomp:logs、robomp:dev、robomp:reset。容器内直接执行命令docker compose exec robomp robomp triage owner/repo#123 # 合成一个 issues.opened 并等待 docker compose exec robomp robomp replay delivery_id # 重新入队已存事件并等待 docker compose exec robomp robomp status # 转储 issue release 表 docker compose exec robomp robomp cleanup owner/repo#123 # 强制移除 workspacestateabandoned本地仅可访问的检查端点GET /events?limitN、GET /issues?limitN、GET /releases?limitN、GET /healthz、GET /readyz。webhook 的推荐入口规则是把公网主机名严格限制在/webhook/github其余端点保持 localhost-onlywebhook 事件需订阅 Issues、Issue comments、Pull requests、Pull request reviews、Pull request review comments以及仅发布哨兵需要Workflow runs。发布哨兵Release sentinel默认关闭的workflow_run事件驱动功能在可复用的mainworktree 中诊断失败的发布 CI原子地推送修复提交与既有发布标签然后在下一轮 verdict 恢复同一会话直到所有 run 与 GitHub Release 全部变绿。关键变量包括ROBOMP_RELEASE_COMMIT_PREFIX默认chore: bump version to、ROBOMP_RELEASE_MAX_ROUNDS默认 5、ROBOMP_RELEASE_TASK_TIMEOUT_SECONDS与可选的ROBOMP_RELEASE_MODEL。持久化状态为awaiting_ci、fixing、green、failed、superseded终态在 GitHub 上保持静默需通过仪表盘 Releases 表或robomp status查看。安全要点GITHUB_TOKEN只存在于 gh-proxy 容器编排器在自己的环境中看到GITHUB_TOKEN会拒绝启动。编排器 → gh-proxy 使用 HMAC-SHA256 签名±30s 偏差窗口 常量时间比较。git push通过git -c http.extraheader…以临时进程环境变量传递 token.git/config中的 remote URL 保持无 token。agent 子进程环境通过worker._SCRUBBED_ENV_KEYS剔除凭证。PR 前有bun run fix→bun check→bun run test1 小时预算三道门skip_checkstrue可绕过并记录在tool_callsgh_open_pr还会校验## Repro等四个标题与Fixes/Closes/Resolves #N引用。packages/stats— 本地 AI 用量仪表盘oh-my-pi/omp-stats是本地可观测性仪表盘从会话 JSONL 日志解析 AI 用量统计。bin 为omp-stats主用户路径是omp stats实现见 packages/coding-agent/src/cli/stats-cli.ts包细节见 packages/stats/README.md。CLI 模式omp stats # 启动仪表盘服务器打开 http://localhost:3847 并持续运行 omp stats --port 8080 # 自定义端口 omp stats --summary # 打印控制台摘要 omp stats --json # 输出 JSON 并退出从 stats-cli.ts 的实现看命令先调用syncAllSessions()同步会话文件TTY 下显示约 30fps 的进度条非 TTY 静默随后按--json→--summary→ 启动服务器分支服务器模式调用startServer(port, host)并打开浏览器注册SIGINT处理器在退出时closeDb()关闭统计数据库——对应文档中长驻仪表盘在CtrlC时停止并关闭 stats 数据库的副作用说明。数据输入与存储读取~/.omp/agent/sessions/聚合结果存于~/.omp/stats.dbSQLite。程序化 API 导出syncAllSessions()与getDashboardStats()等辅助函数便于嵌入import { getDashboardStats, syncAllSessions } from oh-my-pi/omp-stats; const { processed, files } await syncAllSessions(); const stats await getDashboardStats(); console.log(stats.overall.totalCost); console.log(stats.byModel[0].avgTokensPerSecond);仪表盘与 API 端点包括GET /api/stats整体统计、GET /api/stats/models按模型、GET /api/stats/folders按文件夹/项目、GET /api/stats/timeseries小时级时间序列、GET /api/sync触发同步并返回计数。追踪指标含 Tokens/s、Cache Rate、Cache Savings、Error Rate、API 等值估算订阅制模型使用匹配的公网价目表估算而非用户账单、平均延迟与 TTFT。packages/omptype— ArkType 兼容的模式校验库公开包oh-my-pi/omptypebun add oh-my-pi/omptype安装要求 Bun 1.3.14。核心特性可调用的 ArkType 兼容 schema——以小型解释器启动构造成本低热路径上惰性编译保证高频校验速度并提供校验错误、默认值与 morphs、JSON Schema 输出。详见 packages/omptype/README.md。公开入口oh-my-pi/omptype原生编写、/typebox与/zod兼容构建器、/ark无别名的 ArkType 兼容门面。运行时行为schema 调用返回校验后的值或type.errors.assert()返回值或抛错.allows()做布尔检查import { type } from oh-my-pi/omptype; const Config type({ name: string, retries?: number.integer 0, enabled: boolean true, }); const config Config.assert({ name: worker }); // { name: worker, enabled: true } const result Config({ name: 42 }); if (result instanceof type.errors) console.error(result.summary);内置关键词模块包括type.string.email、type.string.uuid.v4、type.string.date.iso.parse、type.string.normalize.NFKC、type.number.integer与type.parse下的解析器。命名与递归 schema 通过type.scope({...}).export()支持别名惰性解析、可含环type.module()直接导出 scopetype.define()保留字面定义type.generic(value, definition)构建参数化运行时 schema。校验失败返回OmpErrors每条含code、path、expected、actual、problem、message聚合对象暴露summary与byPath.configure()支持字符串或回调覆盖错误文案.toJsonSchema()接受target、dialect、fallback选项。注意这是有意的聚焦兼容面而非对 ArkType / TypeBox / Zod 全部 API 的完整实现本地基准可用bun packages/omptype/bench/bench.ts复现。packages/typescript-edit-benchmark— TypeScript 编辑 fixture 引擎私有包oh-my-pi/typescript-edit-benchmark无独立 bin作为支持库服务于 metaharness 的 edit 适配器负责生成、加载、格式化与校验 TypeScript 变异 fixture。详见 packages/typescript-edit-benchmark/package.json 与 src/generate.ts。Fixture 生成从仓库根目录执行bun packages/typescript-edit-benchmark/src/generate.ts --typescript-dir path [generator options]从 generate.ts 的注释可以确认其设计目标测的是编辑精度而非找 bug 能力——变异可以微不足道关键是模型能否在困难上下文中外科手术式地应用补丁包括重复行、300 行的大文件、结构相似的多函数、密集代码与深嵌套。难度模式同时决定文件选择与提示词详细度easy短文件、唯一行给出精确行号medium中等文件给出所在函数hard含相似块的长文件无位置提示nightmare近乎相同的区域反复出现的长文件无位置提示。基准执行方式bun run --cwd packages/metaharness bench:edit -- --model provider/model [options]也可从 metaharness 仪表盘/API 启动一次editrun。Runner 输入包括 provider/model、thinking level、每任务 run 数、超时、并发、任务 ID、fixture 目录或.tar.gz、编辑策略、guided 模式、重试/轮次上限、输出路径/格式与 fixture 校验/列表演示解析逻辑见 packages/metaharness/adapters/edit/cli.ts该文件对 thinking level、正整数、fuzzy 阈值等参数均有严格校验格式支持 markdown 与 json。fixture 包含任务元数据、提示词、输入文件与期望文件runner 将每个 fixture 复制到隔离 worktree可选记录对话转储并写出 Markdown 或 JSON 结果。packages/metaharness— 统一基准管理器私有包oh-my-pi/pi-metaharnessbin 为metaharness。它以一套标准化的experiment → run → trace模型、SQLite 存储、REST/SSE API 和统一仪表盘管理 Harbor 数据集默认terminal-bench2.0、TypeScript edit 与 SnapCompact 三类基准。详见 packages/metaharness/README.md。仪表盘与 APIbun run --cwd packages/metaharness serve -- --port 4700 # 仪表盘 API 于 :4700启动表单与POST /api/runs支持全部三个基准适配器POST /api/runs的请求体示例{ benchmark: edit, model: anthropic/claude-opus-4-8, tasks: 20, concurrency: 4, attempts: 2, jobName: edit-baseline, role: baseline, goal: compare edit strategies }benchmark取harbor、edit或snapcompactHarbor 额外使用dataset、include、timeoutMultiplier、prewalkedit 用include作任务 IDSnapCompact 用conditions并把tasks视作 passage 上限。直连 runnerbun packages/metaharness/src/runner.ts --model provider/model [Harbor options] bun run --cwd packages/metaharness bench:edit -- --model provider/model [edit options]Harbor source 模式将仓库与缓存的 Linux 依赖树只读 bind-mount 进任务容器--install sourceprovider 凭证则留在宿主、位于 auth gateway 之后另有--install local每次运行打包 tarball、--install publishednpm 包与--binary预构建二进制等安装模式以及--environment docker|apple-container后端选择。存储方面归一化状态位于jobs-dir/_manager/metaharness.sqlite基准原生产物仍以文件系统为事实来源历史 CLI 运行会被自动发现。输出包括 Harbor 试运行目录、_bench/jobName/report.md、每次运行的日志、edit 报告、归一化 trace、仪表盘指标与 REST/SSE 更新。删除 experiment 或 run 会连同其 job 目录一并删除且目标运行中时拒绝删除Harbor 需要 Docker 或 Apple Container 及 Harbor CLI网络与挂载约束详见包 README。此外 README 还记录了绕过 Harbor 的原生 Terminal-Bench 2.1 runnerbench:tb基于 KVM 微VM与 trace 报告脚本scripts/trace-report.ts将单次运行 trace 转为带 Turn Log 与 Story Arc 的叙述性 markdown。packages/browser-relay— 驱动你现有的 Chrome 标签页私有包oh-my-pi/browser-relay用户命令为omp browser-relay。它通过 Chrome 扩展让 omp 的 EvalbrowserAPI 驱动你已登录的现有 Chrome 标签页无需用--remote-debugging-port重启 ChromeChrome 136 在默认 profile 下已拒绝该参数。配套 relay 服务器位于 omp CLI 内见 packages/coding-agent/src/tools/browser/relay/。详见 packages/browser-relay/README.md。设置步骤omp browser-relay install— 将内置扩展写入~/.omp/browser-relay/extension再到chrome://extensions→ 开发者模式 →加载已解压的扩展程序两种方式开启 opt-in按次开启在 Eval 中给browser.open(...)传app: { relay: true }不改变任何全局设置设为默认omp config set browser.relay true使其成为该 profile 在所有项目中的默认行为项目级设置、PI_BROWSER_RELAY与显式app选择优先级更高。relay 服务器在 omp 全局 daemon broker 下自动启动消费方持 broker 租约最后一个消费者退出后服务器停止扩展徽章在连接时点亮。app.target按 URL/标题子串选择具体标签页否则采纳当前可见标签页不抢焦点被驱动的标签会归入每窗口的 omp 标签组青色可用omp browser-relay --no-group关闭分组。安全与限制relay 只绑定 loopback本地进程不可信时使用omp browser-relay --token secret在扩展选项中镜像配置。chrome://内部页、DevTools、Web Store、其他扩展页面以及已打开 DevTools 的标签页无法附加。packages/collab-web— 协作会话的浏览器客户端私有包oh-my-pi/collab-web是/collab协作会话的浏览器端访客 UI生产客户端为https://my.omp.sh/提供流式转录、工具卡片、子代理视图、提示词输入与宿主中断。协议细节见 docs/collab.md。本地路径均在packages/collab-web下bun run dev # 开发服务器端口 3000 bun run mock-host # 离线演示本地 relay 脚本化 mock host打印 ws://localhost 链接 bun run build # 构建静态 SPA 到 dist/约束非本地部署需要 HTTPS房间密钥用 WebCrypto 解包浏览器只在https://或localhost暴露crypto.subtle与可达的安全 WebSocket relay非 localhost 用wss://默认 relay 为wss://my.omp.sh。房间密钥始终留在 URL fragment 中不会发送给 relay 或任何服务器。架构上包有意保持独立——运行时与类型层都不依赖oh-my-pi/pi-coding-agent与宿主共享oh-my-pi/pi-wire协议契约以防 wire shape 漂移见 src/lib 的 codec/link/socket/client 与 test/codec.test.ts。packages/snapcompact— 位图上下文压缩 API公开包oh-my-pi/snapcompactbun add oh-my-pi/snapcompact安装要求 Bun 1.3.14。特性对将要被丢弃的对话历史做确定性的本地序列化与 PNG 渲染供视觉模型上下文压缩读取——全程本地、确定无需模型调用与 API key。公开入口包括compact、render、renderMany、frames、shape 选择、文本归一化/序列化、图像预算与文件操作辅助栅格化与 PNG 编码依赖oh-my-pi/pi-natives运行时约束。详见 packages/snapcompact/README.md。工作流历史序列化为紧凑文本serializeConversation带每工具结果与每参数字符上限→ 按所选原生字体归一化normalize剥离 ANSI、折叠空白、方框制表符转 ASCII、语义 emoji 转 ASCII 标签、装饰性 emoji 丢弃、CJK/Kana/Hangul 全宽渲染→ 渲染为 PNG 帧render/renderMany帧宽按 shape 固定、高度贴合实际行数→ 帧持久化进压缩条目的preserveData每次上下文重建时重新附加到摘要消息。Frame shape 按 provider 感知选择Reader默认 shape备注Anthropic11on16-bwX.org 8x13 字形、11px advance高分辨率 Claude 行得到 1932px 帧Google8on22-bw2048Gemini 按固定每图预算计费更大的帧等于更多免费字符OpenAI8on22-bw以detail: original发送UnknownAnthropic shape按 provider 的每图数量预算防止 gateway 静默丢帧resolveShape({ api, id })匹配模型 id 而非仅 wire API——经 Vertex 或 OpenRouter 路由的 Claude 仍保持 Claude shape。API 面详见 packages/snapcompact/src/index.ts。packages/mnemopi— 独立本地记忆 CLI公开包oh-my-pi/pi-mnemopibin 为mnemopi要求 Bun 1.3.14。全局安装后直接运行mnemopi command源码检出环境下bun packages/mnemopi/src/cli.ts command运行同一入口。这是 Mnemosyne 记忆引擎的 Bun/TypeScript 移植版本地 SQLite 记忆引擎详见 packages/mnemopi/README.md 与 packages/mnemopi/src/cli.ts。bun add --global oh-my-pi/pi-mnemopi mnemopi remember Use stable-cluster for production deploys mnemopi recall production deploy target命令分组存储与检索store/remember、recall/search、update/edit、delete/forget检查与维护stats、sleep/consolidate、diagnose/doctor、JSONexport与import、scratchpad/sp含read、write、clear、bank含list、create、delete集成mcp启动包的 MCP 服务器。独立 CLI 直接操作 Mnemopi 存储若要将记忆集成进 OMP 会话应按后端指南选择memory.backend: mnemopi见 docs/mnemosyne-memory-backend.md。mnemopi --help列出主要命令形式未知命令与非法参数打印简洁错误并以非零退出码返回从 cli.ts 可见CliError默认退出码为 2所有参数解析都有严格校验。可选本地 ONNX embeddingsfastembed与 OpenAI 兼容 embedding/LLM 端点常用环境回退包括MNEMOPI_DATA_DIR/MNEMOPI_DB_PATH、MNEMOPI_NO_EMBEDDINGS1、MNEMOPI_EMBEDDING_MODEL默认BAAI/bge-small-en-v1.5、MNEMOPI_LLM_ENABLED1与MNEMOPI_LLM_BASE_URL等。如何选择与进一步探索以上 9 个条目构成 oh-my-pi 的用户面向包矩阵可按用途速查想要自动化 GitHub 分诊/修复→python/robomppython/robomp/README.md想观察 AI 用量→omp statspackages/stats/README.md、stats-cli.ts想要快而兼容的模式校验→oh-my-pi/omptypepackages/omptype/README.md想统一跑基准→metaharnesspackages/metaharness/README.md与其 edit fixture 引擎packages/typescript-edit-benchmark想驱动真实浏览器标签→omp browser-relaypackages/browser-relay/README.md想托管协作会话客户端→packages/collab-webpackages/collab-web/README.md想无模型调用地压缩上下文→oh-my-pi/snapcompactpackages/snapcompact/README.md想要独立本地记忆→mnemopipackages/mnemopi/README.md。各包 README 与 manifest 始终是包级安装与参数的第一手权威根文档含本文对应的 docs/user-facing-packages.md负责可发现性与入口索引。内部 Rust crate 与 native 机制不在此列统一由 docs/natives-architecture.md 与 docs/native-crates.md 承接。【免费下载链接】oh-my-pi⌥ Coding agent with the IDE wired in项目地址: https://gitcode.com/GitHub_Trending/oh/oh-my-pi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表