项目文件夹

0
2026-07-13 10:53:59 +00:00

Note

本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
English · 原始项目 · 上游 README
原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。

omp

内置 IDE 集成的编程智能体(coding agent)。 omp.sh

npm version Changelog CI License TypeScript Rust Bun Discord

Fork 自 Pi,作者 @mariozechner

目前交付的最强智能体界面。经真实使用持续打磨——开箱即用,全程开源。

40+ 个 provider · 32 个内置工具 · 14 个 LSP 操作 · 28 个 DAP 操作 · Rust 核心约 ~55k 行代码。

安装

macOS · Linux

curl -fsSL https://omp.sh/install | sh

Homebrew

brew install can1357/tap/omp

Bun(推荐)

bun install -g @oh-my-pi/pi-coding-agent

Windows (PowerShell)

irm https://omp.sh/install.ps1 | iex

固定版本(mise

mise use -g github:can1357/oh-my-pi

macOS · Linux · Windows · bun ≥ 1.3.14

Shell 补全

omp 会根据实时的命令/标志元数据自动生成适用于 bashzshfish 的补全脚本,因此永远不会与实际 CLI 脱节。子命令、标志和枚举值可静态补全;模型名称(--model--smol--slow--plan)会对照内置模型目录解析,--resume 则对照你磁盘上的会话。

# zsh — add to ~/.zshrc (or write the output into a file on your $fpath)
eval "$(omp completions zsh)"

# bash — add to ~/.bashrc
eval "$(omp completions bash)"

# fish
omp completions fish > ~/.config/fish/completions/omp.fish

每个工具,都 benchmaxxed

一次就改对。读取时总结文件内容,而不是倾倒全文。搜索瞬间返回。任选模型——omp 都能搞定。

model metric what
Grok Code Fast 1 6.7% → 68.3% 当编辑格式不再拖垮模型时,即刻实现十倍提升。
Gemini 3 Flash +5 pp 优于 str_replace——胜过 Google 自家在该格式上的最佳尝试。
Grok 4 Fast 61% tokens 错误 diff 的重试循环消失后,输出 token 骤降。
MiniMax 2.1× 通过率翻倍以上。相同权重,相同 prompt。
  • read :摘要片段 · 理想默认值 · 选择器命中率
  • search :西部最快
  • lsp IDE 所知,智能体亦所知
  • prompts :针对每个模型持续调优

阅读完整文章 ↗

你热爱的 Pi,自带全套能力(batteries included

最初基于 Mario Zechner's 出色的 Pi,,omp 补齐了你一直缺失的一切。

01 · 代码执行 + tool-calling

多数 harness 给智能体一个 Python 沙箱就完事了。我们运行持久化 Python 和 Bun worker,任一内核都能通过 loopback 桥接回调智能体自身的工具——read、search、task。智能体在 Python 内用 tool.read 加载 CSV,在 JavaScript 中绘图,全程不离开 cell。

omp TUI:单次 eval 会话中,[1/2] pandas describe(Python)打印真实的 DataFrame.describe() 表格,随后 [2/2] top scorer(JavaScript)执行 reduce。页脚:「两个内核在同一会话中运行。」

02 · 每次写入都接入 LSP

要求重命名,就能完成重命名。调用走 workspace/willRenameFiles,因此 re-export、barrel 文件和别名 import 会在文件移动前更新。IDE 所知,智能体亦所知。

omp TUI:LSP references 针对符号 formatBytes 在三个文件中返回五处命中,随后 LSP rename 应用更改,编辑 format.ts/report.ts/cli.ts,接着 Search formatBytes 0 matches 确认。最后一行:「重命名完成。三个文件共五处编辑…」。

03 · 驱动真实调试器

C 二进制 segfault:智能体附加 lldb,步进到错误指针,读取栈帧。Go 服务挂起:附加 dlv 遍历 goroutine。Python 进程卡死:debugpy,暂停,检查,求值。多数智能体还在到处撒 print。

omp TUI:针对 /tmp/omp-native/demo 原生二进制的实时 lldb-dap 会话。Adapter=lldb-dap,Status=stopped,Frame=xorshift32,Instruction pointer 0x10000055C,Location demo.c:6:10。Debug scopes 与 Debug variables 卡片显示局部变量(x = 57351),智能体确认计算:x 从 7 → 57351(= 7 ^ (7<<13))。

观看录制 ↗

04 · 时光穿越式流规则(time-traveling stream rules

规则蛰伏待机,直到模型偏离剧本。正则匹配会在 token 中途中止流,将规则作为 system reminder 注入,并从同一点重试。无需每轮都支付 context 税即可获得纠偏。注入在 compaction 后仍保留,修复得以持久。

omp TUI:智能体读取 src.rs 并即将写入 Box::leak 时请求中止(红色 Error: Request was aborted),琥珀色 ⚠ Injecting rule: box-leak 卡片注入规则正文 Don't reach for Box::leak in production code paths,随后智能体提议 Arc<str> 并请求用户确认以纠偏。

观看录制 ↗

05 · 一等公民子智能体(subagents)

将任务拆给多个 worker,拿回类型化结果。task 扇出到隔离的 worktree,每个 worker 运行自己的工具面,最终 yield 是经 schema 校验的对象,父进程直接读取。无需解析散文,兄弟任务无合并冲突,无孤立编辑。

omp TUI 显示 task 派生两个子智能体 ComponentsExports 与 RoutesExports,constraints 块要求 peer 间 IRC DM,各子智能体状态卡片含 cost 与 duration,最终 Findings 节列出两份 export 及关于单方面握手的坦率「IRC coordination note」。

观看录制 ↗

06 · 第二个模型,监视每一轮。

将 reviewer 模型配对到「advisor」角色,它会阅读主智能体每一轮操作,内联注入备注——轻声旁白、顾虑或硬性阻断。它使用独立 context 和独立模型,能捕捉执行者匆匆略过之处。主智能体看到备注后会纠偏,或告诉你为何不会。

omp TUI:/advisor status 显示 advisor 在 openai-codex/gpt-5.5 上运行;主 agent 将 catch 限定为 ENOENT、而非吞掉所有错误后,一张琥珀色的「Advisor 1 note (concern)」卡片警告该修复已不再符合用户的字面验收标准。

观看录屏 ↗

07 · 把链接发出去,对方就能加入。

/collab 会把你的实时会话放到中继上,并返回一个链接——以及一个二维码。队友可以在另一台终端用 omp join 加入,或直接在浏览器中打开。共享读写权限,与同一 agent 结对协作;或使用 /collab view 获取只读链接——任何人都能观看会话,但没人能操控 agent。帧在客户端加密封装;中继永远看不到你的密钥。

omp TUI:/collab view 输出「Collab session started!」,附带 omp join 命令、my.omp.sh 浏览器链接、提示「Anyone with this link can watch the session but cannot prompt the agent」,以及一个可扫描的大二维码。

观看录屏 ↗

08 · 读 arxiv 上的 PDF,有何不可?

web_search 串联十八个按排名排序的提供商,把找到的任何 URL 直接交给 read。Arxiv PDF、GitHub 页面、Stack Overflow 帖子会以结构化 markdown 返回,锚点完整保留——与你在本地文件上使用的同一套工具界面。引用、追踪、摘录,再也不会弄丢来源。

omp TUI:web_search 为 inference-time compute scaling 返回 10 个按排名排序的 Perplexity 来源,agent 选中一篇 arxiv 论文,调用 read https://arxiv.org/pdf/2604.10739v1, 并用真实数字总结论文的核心结果。

观看录屏 ↗

09 · 理直气壮地原生。Windows 也一样。

其他 agent 会 shell 调用 rggrepfindbash。在很多机器上这些二进制文件根本不存在;即便存在,每次调用都要付出 fork-exec 往返的开销。omp 把真实实现直接链入进程。ripgrep、glob、find:进程内执行。brush 充当 bash,会话跨调用持久存在。同一个 omp 二进制可在 macOS、Linux 和 Windows 上运行——无需 WSL 桥接。

10 · 带优先级与裁决的代码审查

明确获知变更能否发布,每个问题按 P0 到 P3 排序并标注置信度。/review 会孵化专用 reviewer 子 agent,并行扫描分支、单个提交或未提交的工作。你先处理阻碍发布的事项;重要问题不会淹没在大段文字里。

11 · Hashline:按内容哈希编辑

精准编辑,更少 token。模型用锚点指向要改的代码,而不是重打整行,于是空格之争和「字符串未找到」循环就此消失。编辑过期文件时锚点会偏离——我们会在补丁破坏任何东西之前拒绝它。Grok 4 Fast 在相同工作上输出 token 减少 61%。

12 · GitHub 只是另一种文件系统

其他 harness 会额外挂载 gh_issue_viewgh_pr_viewgh_search——各自有一套参数,agent 要学,你也要调试。我们跳过了这套。read 已经处理路径;PR 就是路径。教模型一个接口,维护一个表面。

13 · Hindsight:由 agent 策展的记忆

agent 会在会话之间记住你的代码库。运行中用 retain 写入事实,用 recall 取回,并把每个会话压缩成心理模型,在下次会话首轮加载。默认按项目作用域,因此它对本仓库所学会留在本仓库。

14 · ACP:可由编辑器驱动的 agent

在 Zed 中运行 omp,你会得到与终端里一样的 agent——读取你正在查看的缓冲区,通过编辑器的保存路径写入,在编辑器终端中启动 shell。破坏性工具会暂停等待权限提示,你可以一次答复、永久记住。无需桥接、无需插件、无需维护第二个大脑来保持同步。

15 · 继承其他工具已经写好的配置

其他 agent 都会附带导入器,指望你来转换。omp 以原生形态读取磁盘上已有的八种格式——Cursor MDC、Cline .clinerules、Codex AGENTS.md、Copilot applyTo 等。无需迁移脚本,无需 YAML 转 TOML,也没有「受支持子集」脚注。你们团队上季度写的配置,今晚依然能用。

16 · omp commit:原子拆分,校验提交信息

omp 通过 git_overviewgit_file_diffgit_hunk 读取工作树,然后把无关变更拆成按依赖排序的原子提交。有任何环会在写入前被拒绝。源文件优先于测试、文档和配置,因此 headline 提交才是重要的那个。锁文件完全不参与分析。

17 · 读取 PR。遍历 skills。 从子 agent 中抽取 JSON。

十二种内部 scheme——pr://issue://agent://skill://rule:// 等——在 agent 已调用的每个 FS 形态工具内透明解析。read pr://1428 返回与 read src/foo.ts 相同的结构。search 像目录一样遍历 diff。agent://<id>/findings.0.path 按路径从子 agent 输出中提取字段。

omp TUI 读取 pr://can1357/oh-my-pi/1063 后执行 /diff/1,显示 hunk 头、新增行以及 [MODIFIED] (+12 -0) 摘要。

18 · 冲突解决,化繁为简。

每个合并冲突对应一个 URL。agent 将 @theirs@ours@base 写入 conflict://N,文件即可干净解决。批量形式:conflict://*

omp TUI:✓ Read src/session.ts (⚠ 1 conflict),然后 ✓ Write conflict://1 · 1 line with content @theirs,接着确认「Resolved.」

观看录屏 ↗

19 · 先预览,再接受。

ast_edit 返回带替换数量的 (proposed) 卡片。变更已暂存。agent 带上 reason 调用 resolve;TUI 将其转为 Accept 卡片,磁盘操作随即执行——原子、全有或全无。

omp TUI:✓ AST Edit: console.log($X) (proposed) 3 replacements · 1 file,然后 ✓ Accept: 3 replacements in 1 file (AST Edit),随后「Applied 3 replacements in src/auth.ts.」

观看录屏 ↗

20 · 驱动_真实浏览器_。还是你的 Slack?

默认开启 Stealth,页面看到的是正常用户而非无头机器人。同一 API 可原地驱动任何 Electron 应用——指向 Slack,agent 就能像读网页一样读你的私信。

omp TUI 使用 browser 工具操作 DuckDuckGo

任务需要什么,箱子里已经有了

32 个工具与 readbash 同属一个命名空间。用 --tools read,edit,bash,… 固定活动集,其余保持隐藏但仍被索引——当 tools.discoveryMode 需要时,search_tool_bm25 可在会话中途把它们拉回来。

文件与搜索

  • read — 通过一条路径访问文件、目录、压缩包、SQLite、PDF、notebook、URL 以及内部 :// scheme。
  • write — 创建或覆盖文件、压缩包条目或 SQLite 行。
  • edit — 基于内容哈希锚点的 hashline 补丁,支持过期锚点恢复。
  • ast_edit — 通过 ast-grep 在应用前预览结构性重写。
  • ast_grep — 在 50+ 种 tree-sitter 语法上进行结构性代码查询。
  • search — 对文件、glob 和内部 URL 进行正则匹配。
  • find — 基于 glob 的路径查找;需要内容匹配时使用 search

运行时

  • bash — 工作区 shell,可选 PTY 或后台作业调度。
  • eval — 持久化 Python 与 JavaScript cell,共享 prelude 并支持工具重入。
  • ssh — 对已配置主机执行一条远程命令。

代码智能

  • lsp — 诊断、导航、符号、重命名、code action、原始请求。
  • debug — 驱动 DAP 会话——断点、单步、线程、栈、变量。

协调

  • task — 并行扇出子 agent,可选工作区隔离。
  • irc — 本进程内活跃 agent 之间的短消息。
  • todo — 对会话待办列表的有序变更,带阶段跟踪。
  • job — 等待或取消后台作业。
  • ask — 交互式运行中的结构化追问。

框外能力

  • browser — 通过 Puppeteer 在 headless Chromium 或 CDP 附加的应用上操作标签页。
  • web_search — 一次查询覆盖已配置的提供商,返回答案及引用。
  • github — GitHub CLI 操作:仓库、PR、议题、代码搜索、Actions 运行监视。
  • generate_image — 通过 Gemini、GPT 或 xAI Grok 图像模型生成或编辑光栅图像。
  • inspect_image — 对本地图像文件进行视觉模型分析。
  • tts — 通过 xAI Grok Voice 实现文字转语音:五种内置音色,支持 WAV 或 MP3。

记忆与状态

  • checkpoint — 标记对话状态,供后续折叠并生成报告。
  • rewind — 裁剪探索性上下文,保留简洁报告。
  • retain — 将持久化事实排入当前活跃的 Hindsight 记忆库。
  • recall — 在 Hindsight 记忆库中搜索原始记忆。
  • reflect — 请 Hindsight 基于记忆库综合生成答案。

杂项

  • resolve — 应用或丢弃已排队的预览操作。
  • search_tool_bm25 — 对隐藏工具索引进行 BM25 检索;在会话中途激活最佳匹配项。

受设置门控,默认关闭:githubinspect_imagettscheckpointrewindsearch_tool_bm25retainrecallreflect。每个项目只需开启一次。

完整参考 →

四十余家提供商、数百款模型,一条 /model 命令即可切换

角色(Roles)按意图路由任务。default 用于常规轮次。smol 用于低成本的子代理扇出。slow 用于深度推理。plan 用于计划模式。commit 用于变更日志。启动时可通过 --smol--slow--plan 覆盖;用 Ctrl+P 在已配置模型间循环切换当前角色的模型。会话中途可用 /model 斜杠命令更换当前模型。

下方认证标签:oauth 使用你的提供商账号登录,plan 通过编程套餐订阅路由,local 针对本地服务器运行,密钥可选。

前沿 API

直连 API 与网关。可按角色混合搭配提供商。

Anthropic oauth · OpenAI · OpenAI Codex oauth · Google Gemini · Google Antigravity oauth · xAI · Mistral · Groq · Cerebras · Fireworks · Together · Hugging Face · NVIDIA · OpenRouter · Synthetic · Vercel AI Gateway · Cloudflare AI Gateway · Wafer Serverless · Perplexity oauth

编程套餐

通过订阅路由。/login 绑定会话。

Cursor oauth · GitHub Copilot oauth · GitLab Duo · Kimi Code plan · Moonshot · MiniMax Coding Plan plan · MiniMax Coding Plan CN plan · Alibaba Coding Plan plan · Qwen Portal · Z.AI / GLM Coding Plan plan · Xiaomi MiMo · Qianfan · NanoGPT · Novita · Venice · Kilo · ZenMux · OpenCode Go · OpenCode Zen

自行部署

OpenAI 兼容的 /v1/models。本地实例可跳过密钥。

Ollama local · Ollama Cloud · LM Studio local · llama.cpp local · vLLM local · LiteLLM

让路由真正好用的四个旋钮

  • 自定义提供商 — 在 ~/.omp/agent/models.yml 中声明任何支持 openai-completionsopenai-responsesopenai-codex-responsesazure-openai-responsesanthropic-messagesgoogle-generative-aigoogle-vertex 的服务。
  • 回退链 — 在 retry.fallbackChains 下为每个角色或模型配置链。当主选抛出 429 或撞上配额墙时,下一项接管本轮剩余工作 — 冷却结束后恢复。
  • 路径作用域模型 — 将 enabledModelsdisabledProviders 条目限定到 path: 前缀,即可在单个仓库上固定不同的模型集,而无需改动全局配置。作用域条目覆盖该路径及其下所有内容。
  • 凭据轮询 — 按提供商堆叠 API 密钥,运行时在会话亲和性与单凭据退避之间轮换。当单个密钥会在中午前就耗尽配额时尤其有用。

完整提供商与路由参考见 omp.sh/docs/providers.

二十五个后端。代理早已熟悉的那款工具

web_search 是内置能力,而非事后外挂。auto 会遍历二十五家提供商链;若你已为某家付费,可按名称固定。每次命中背后,站点感知提取会把 GitHub、注册表、arXiv、Stack Overflow 和文档转为结构化 Markdown — 锚点与链接目标得以保留。

搜索提供商

二十五个后端。固定一家,或让 auto 按顺序遍历整条链。

provider auth
auto chain
perplexity PERPLEXITY_API_KEY
gemini oauth
anthropic oauth
codex oauth
xai XAI_API_KEY
zai ZAI_API_KEY
exa EXA_API_KEY (or mcp)
tinyfish TINYFISH_API_KEY
jina JINA_API_KEY
kagi KAGI_API_KEY
tavily TAVILY_API_KEY
firecrawl FIRECRAWL_API_KEY
brave BRAVE_API_KEY
kimi MOONSHOT_API_KEY
parallel PARALLEL_API_KEY
synthetic SYNTHETIC_API_KEY
searxng self-hosted
duckduckgo no key
bing no key
yahoo no key
startpage no key
google no key (browser)
ecosia no key (browser)
mojeek no key (browser)
public no key (all of the above, consolidated)

专用处理器

代理获得的是结构化内容,而非剥离后的 HTML。

  • 代码托管 — github、gitlab
  • 包注册表 — npm、PyPI、crates.io、Hex、Hackage、NuGet、Maven、RubyGems、Packagist、pub.dev、Go packages
  • 研究来源 — arxiv、semantic scholar
  • 论坛 — stack overflow、reddit、hn
  • 文档 — mdn、readthedocs、docs.rs

页面转换为 Markdown,链接结构保持完整。代理可以引用、跟进和摘录,而不会丢失锚点。

安全数据库

漏洞查询返回的是厂商数据,而非博客摘要。

  • NVD — 国家漏洞数据库(national vulnerability database
  • OSV — 开源漏洞信息流(open source vuln feed
  • CISA KEV — 已知被利用漏洞(known exploited vulns

web_search 参考 ↗

~55,000 行 Rust 代码,承担其他 harness 往往需要外包出去的工作。

四个 crate、一个按平台打标的 N-API 插件。搜索、shell、AST、高亮、PTY、图像解码、BPE 计数 — 全部在 libuv 线程池内进程内完成。热路径上不 fork/exec。

  • Cratespi-nativespi-shellpi-astpi-iso
  • Platformslinux-x64linux-arm64darwin-x64darwin-arm64win32-x64

下表按模块拆解,有意省略胶水代码与测试。

Module What it does Powered by ~LoC
shell 嵌入式 bash · 持久会话 · 超时/中止 · 自定义内建命令 brush-shell (vendored) 3,700
grep 正则搜索 · 并行/串行 · glob 与类型过滤 · 模糊查找 grep-regex · grep-searcher 1,900
keys Kitty 键盘协议,xterm 回退 · PHF 完美哈希查找 phf 1,490
text ANSI 感知宽度 · 截断 · 列切片 · 保留 SGR 的换行 unicode-width · segmentation 1,450
summary Tree-sitter 结构化源码摘要,支持省略控制 tree-sitter · ast-grep-core 1,040
ast ast-grep 模式匹配与结构化重写 ast-grep-core 1,000
fs_cache 以 mtime 为键的文件缓存,供 read · grep · lsp 共享 in-tree 840
highlight 语法高亮 · 11 个语义类别 · 30+ 别名 syntect 470
pty 原生 PTY 分配,用于 sudo · ssh 交互式提示 portable-pty 455
glob 通过 glob 发现 · 类型过滤 · mtime 排序 · 尊重 gitignore ignore · globset 410
workspace 工作区遍历器,单次遍历完成 gitignore + AGENTS.md 发现 ignore 385
appearance Mode 2031 + 通过 CoreFoundation FFI 实现原生 macOS 深色/浅色切换 core-foundation 270
power macOS 电源断言 API,防止空闲/系统/显示器休眠 IOKit FFI 270
task 在 libuv 线程池上执行阻塞工作 · 取消 · 超时 · 性能分析 tokio · napi 260
fd 文件系统遍历器,用于替代 find 工具 ignore 250
iso 工作区隔离垫片 · apfs · btrfs · zfs · reflink · overlayfs · projfs · rcopy pi-iso (PAL) 245
prof 环形缓冲区分析器,输出折叠栈与 SVG 火焰图 inferno 240
ps 跨平台进程树终止与后代进程列举 libc · libproc · CreateToolhelp32Snapshot 195
clipboard 从系统剪贴板复制文本并读取图像 · 无需 xclip/pbcopy arboard 80
tokens O200k / Cl100k BPE 词元计数 · 两张表均已内嵌 tiktoken-rs 65
sixel 终端图像渲染 · 解码 PNG · JPEG · WebP · GIF · 缩放 · SIXEL 编码 icy_sixel · image 55
html HTML 转 Markdown,可选内容清洗 html-to-markdown-rs 50

四个入口:interactive(交互式)、one-shot(单次)、RPC 与 ACP。

同一引擎,四种封装。omp 运行 TUI。omp -p 回答单个提示后退出。Node SDK 将会话嵌入你的进程。omp --mode rpcomp acp 通过 stdio 将控制权交给另一程序。

Interactive — 拿不准时,由 agent 发问

TUI 是默认界面。工具调用以卡片形式呈现,编辑在落地前可预览,歧义则经由 ask 工具处理——agent 可在对话中途调用的结构化选项选择器。其余操作由键盘完成。

同样的提示卡片也会出现在 ACP 上,因此编辑器无需自行实现选择器。

omp TUI:ask 工具渲染包含三个选项的选项选择器,第一项带有 (Recommended) 徽章,底部为「up/down navigate · enter select · esc cancel」。

SDK — 嵌入 Node

@oh-my-pi/pi-coding-agent

Node 与 TypeScript 宿主可直接拉取引擎。该包暴露 ModelRegistrySessionManagercreateAgentSessiondiscoverAuthStorage;会话会发出你可订阅的类型化事件。

import {
  ModelRegistry,
  SessionManager,
  createAgentSession,
  discoverAuthStorage,
} from "@oh-my-pi/pi-coding-agent";

const auth = await discoverAuthStorage();
const models = new ModelRegistry(auth);
await models.refresh();

const { session } = await createAgentSession({
  sessionManager: SessionManager.inMemory(),
  authStorage: auth,
  modelRegistry: models,
});
await session.prompt("list .ts files");

RPC — 通过 stdio 驱动

omp --mode rpc

适用于非 Node 嵌入方,或需要进程隔离时。输入 NDJSON 命令,输出响应与事件帧。--mode rpc-uiextension_ui_request 帧形式添加工具卡片、选择器与对话框,宿主必须予以响应。

$ omp --mode rpc --no-session
> {"id":"r1","type":"prompt","message":"list .ts files"}
< {"id":"r1","type":"response", ...}
> {"id":"r2","type":"set_model","provider":"anthropic","modelId":"sonnet-4.5"}
> {"id":"r3","type":"abort"}

ACP — 对接编辑器

omp acp

Agent Client Protocol over JSON-RPC。当编辑器声明能力时,工具 I/O 经其路由,写入由 session/request_permission 把关。

omp 工具 ACP 路由
bash terminal/create + terminal/output
read fs/read_text_file
write fs/write_text_file
edit, bash session/request_permission

完整参考:omp.sh/docs/sdk.

值得长期使用的 harness,是你 不会 很快超出的那一个。

omp.sh. 上手。

omp 是 Mario Zechner, 的 Pi 的分支,重写为以编码为先的界面:会话、子 agent、斜杠命令、扩展——全部 TypeScript、全部 MIT、全部在 GitHub. 上。可通过配置塑造、从外部挂钩,或在需要时阅读源码。

原语

扩展是一个 TypeScript 模块。与内置组件共用同一套工具 API、斜杠命令注册表、快捷键表与 TUI 原语。没有保留项。

发现

首次运行时,omp 会继承磁盘上已有的一切:来自 .claude.cursor.windsurf.gemini.codex.cline.github/copilot.vscode 的规则、技能与 MCP 服务器。无需迁移脚本。

可扩展性

让 omp 编写你缺失的那一块,然后 /reload-plugins。可保留在本地、放入 marketplace 发布,或发布到 npm。

理念

omp 是 Mario Zechner, 的 pi-mono 的分支,扩展了开箱即用的编码工作流。

核心理念:

  • 为真实编码工作保留以交互式终端为先的 UX
  • 包含实用的内置能力(工具、会话、分支、子 agent、可扩展性)
  • 让高级行为可配置,而非隐藏

开发

从源码入门

全新克隆在源码 CLI 能启动前,需要同时安装工作区依赖与本地 Rust/N-API 插件。

bun setup
bun dev

bun setup 安装 Bun 工作区并构建 @oh-my-pi/pi-natives。修改 Rust crate 或 packages/natives 后,请重新运行 bun run build:native

进行非交互式冒烟检查:

bun dev -- --version

调试命令

/debug 打开用于调试、报告与性能分析的 tools。

有关架构与贡献指南,请参阅 packages/coding-agent/DEVELOPMENT.md


Monorepo 包

说明
@oh-my-pi/collab-web 浏览器访客客户端、模拟宿主,以及用于协作实时会话的本地中继
@oh-my-pi/pi-ai 多提供商 LLM 客户端,支持流式传输与模型/提供商集成
@oh-my-pi/pi-catalog 模型目录:内置模型数据库、提供商描述符与标识
@oh-my-pi/pi-agent-core 具备工具调用与状态管理的 Agent 运行时
@oh-my-pi/pi-coding-agent 交互式编码 agent CLI 与 SDK
@oh-my-pi/pi-tui 支持差分渲染的终端 UI 库
@oh-my-pi/pi-natives 用于 grep、shell、image、text、语法高亮等的 N-API 绑定
@oh-my-pi/omp-stats 用于 AI 使用统计的本地可观测性仪表板
@oh-my-pi/pi-utils 共享工具(日志、流、目录/环境/进程辅助函数)
@oh-my-pi/pi-wire 共享的协作实时会话协议类型与中继常量
@oh-my-pi/hashline edit 工具背后的行锚定补丁语言与应用器
@oh-my-pi/pi-mnemopi Oh My Pi agent 的本地 SQLite 记忆引擎
@oh-my-pi/snapcompact 位图帧上下文压缩包与 SQuAD 评估套件
@oh-my-pi/swarm-extension Swarm 编排扩展包

Rust Crate

Crate 说明
pi-natives 核心 Rust 原生插件(N-API cdylib),由 @oh-my-pi/pi-natives 使用;聚合下列 crate
pi-shell pi-natives 拆分出的嵌入式 shell / PTY / 进程管理(封装 brush-*
pi-ast 基于 tree-sitter 的代码摘要器与 AST 工具(50+ 种语言语法)
pi-iso 任务隔离后端解析器:APFS 克隆、btrfs/zfs reflink、overlayfs、projfs、rcopy
brush-core brush-shell 的 vendored 分支,用于嵌入式 bash 执行
brush-builtins Vendored bash 内置命令(cd、echo、test、printf、read、export 等)

贡献

议题(Issues)面向所有人开放。拉取请求需要担保(vouch — 来自未担保或被否定的作者的 PR 会被自动关闭。若你尚未获得担保,请开一个 Discussion 并请维护者 !vouch 你,而不要直接开 PR(否则会被立即关闭)。完整政策见 CONTRIBUTING.md.github/VOUCHED.td


许可证

MIT。详见 LICENSE

© 2025 Mario Zechner
© 2025-2026 Can Bölük

made for terminals that stay open