项目详情

oh-my-pi

把 IDE 接进 agent 的 coding agent:LSP 每次写入都参与,调试器真的在跑

GitHub 地址 omp.sh MIT TypeScript + ~80k 行 Rust · Bun 运行时

更新于 2026-09-23 · 数据来源:GitHub API + README/docs(采集于 2026-09-23)

← 返回汇总
项目速览

一句话定位

别的 agent 写代码,它带着整间 IDE 写代码

开源终端 coding agent(omp),fork 自 Mario Zechner 的 Pi 并「电池全配」:LSP 接进每次写入、驱动真实调试器(lldb/dlv/debugpy)、持久 Python+Bun 双内核可回调 agent 工具、原生 Rust 进程内工具链零 fork。9 个月 32.8k stars。适合想要一个「IDE 级代码理解 + 无妥协工具面」的终端 agent 重度用户。

项目速览

核心数据

32.8k
Stars(9 个月)
767
Contributors
31
内置工具
60+
模型 Provider

2025-12-31 创建 · v18.2.11 发布于 2026-09-23(采集当天,日级发版)· 14 LSP ops · 28 DAP ops · ~80k 行 Rust core · 3,023 open issues(PR 暂时全员开放的试验期)· macOS / Linux / Windows 原生(无 WSL 桥)

前世今生

Pi 的躯体,OMP 的器官

Pi(badlogic/pi-mono)

Mario Zechner 的极简 coding agent 内核:干净的事件流、TUI、可嵌入 SDK。OMP 是它的 fork——README 明确署名「Fork of Pi」,接口基因至今可辨。

OMP 加的「电池」

21 项成文特性:双内核执行、LSP/DAP、流规则、subagent 网格、advisor、collab、文件系统隐喻、哈希锚点编辑、原生工具链……把「Pi you love」做成「ships complete」。

核心卖点

Every tool, benchmaxxed:格式即命运

模型指标原因
Grok Code Fast 16.7% → 68.3%编辑格式不再吃掉模型——一次命中率十倍提升
Gemini 3 Flash+5 pphashline 超过 str_replace,胜过 Google 自家最优格式尝试
Grok 4 Fast−61% tokens坏 diff 重试循环消失后输出坍缩
MiniMax2.1×同样的权重同样的 prompt,pass rate 翻倍

方法论写在《The Harness Problem》:同一个模型,harness 的工具格式决定其能力的可见上限。OMP 的每个工具(read 摘要式读取、grep 进程内 ripgrep、per-model 调优的 prompt)都按「让弱模型也能一次做对」标准打磨。

架构 🔥

TS 交互层 + Rust 内脏 + 双解释内核

交互层 · TypeScript(Bun ≥1.3.14 运行时) TUI(agent hub / review / collab 界面)· slash 命令 · 60+ provider 路由 · 9 角色模型路由 · 流式规则引擎 · 子代理编排 · ACP 编辑器协议 Rust core · ~80k 行 进程内工具链,零 fork/exec ripgrep · glob · find 进程内链接 brush(bash 兼容 shell,会话跨调用存活) 58 个 coreutils 内建(ls/sed/sort/xargs/jq) 双解释内核 · eval 工具 持久 Python + Bun worker 内核可经 loopback bridge 回调 agent 工具 Python 里 tool.read 加载 CSV,JS 里画图 状态跨 cell 存活,不离开 cell LSP · 14 ops 诊断/导航/符号/重命名/code action/原始请求 写入走 workspace/willRenameFiles: re-export / barrel / 别名 import 连带更新 DAP · 28 ops lldb-dap(C/C++ 二进制段错误→步进读帧) dlv(Go 挂起→走 goroutine 栈)· debugpy 「多数 agent 还在撒 print」 同形跨端: 同一二进制跑 macOS / Linux / Windows——因为 shell/grep/find 都是自己的实现,不依赖系统 安装面: curl / brew / bun / nix(含 Home Manager 模块)/ mise / PowerShell shell 补全自生成,永不漂移
TypeScript 层 系统级能力 执行内核
IDE 接线

LSP 接进每次写入,DAP 是真调试器

  • 重命名不是文本替换:调用走 workspace/willRenameFiles——文件移动前 re-export、barrel file、别名 import 全部连带更新。你的 IDE 知道的一切,agent 都知道
  • 诊断即反馈环:每次 edit 后 LSP 诊断立即可查,错误在下一 turn 被模型看到,不用等构建
  • 不只 TypeScript:Biome 等任意 language server 可配置(docs/lsp-config.md),14 种操作覆盖导航/符号/重构/code action
  • 原生二进制段错误:agent 附上 lldb-dap,步进到坏指针,读栈帧,确认数学(README 实录:xorshift32 x: 7 → 57351 = 7 ^ (7<<13))
  • 挂起的 Go 服务:dlv 附上,遍历 goroutine 栈定位死锁
  • 楔死的 Python 进程:debugpy 暂停、检查、求值——28 个 DAP 操作是完整调试器语义,不是日志美颜
核心机制 🔥

Time-traveling stream rules:规则平时零成本

规则休眠→ regex 命中偏离输出→ 流中途中断(token 级)→ 注入规则为 system reminder→ 同点重试
核心机制

subagent 网格 · advisor · collab

task 子代理

扇出到隔离 worktree,各跑各的工具面,产出 schema 校验的类型化对象——父代理直接读字段,不解析散文。兄弟间无合并冲突、无孤儿编辑。

Agent Hub(Alt+A)

运行中实时看全部子代理的活动与开销;打开读实时转录、发 steering 消息、复活停摆 worker、杀掉卡死的——不abort父会话。

advisor 副驾

第二个模型以 advisor 角色旁观每 turn,用自己的上下文和模型注入 aside / concern / hard blocker。干的模型看注记自我修正——或告诉你为什么不听。

设计哲学

一切皆路径:GitHub 是文件系统,冲突是 URL

# 十六种内部 scheme 在所有 FS 形工具里透明解析
read pr://1428            # PR 和 src/foo.ts 同一个形状
grep "pattern" issue://   # grep 像walk目录一样walk diff
read agent://7/findings.0.path   # 按路径取子代理输出的字段
write conflict://1        # 写入 @theirs / @ours / @base → 冲突即解
write conflict://*        # 批量形态
read xd://                # 列出 discoverable 工具设备
核心机制

hashline 编辑 + ast_edit 预览

  • hashline:按内容哈希锚点编辑——模型指向锚点而非重打整行,空白大战和 string-not-found 循环直接消失
  • 陈旧锚点 = 拒绝补丁:文件已被改过则锚点发散,补丁在污染任何东西之前被拒绝(stale-anchor recovery 可恢复)
  • Grok 4 Fast −61% 输出 token:不重打上下文行,只为变更付费
  • ast_edit:结构化改写(ast-grep)先出 (proposed) 卡片带替换计数,改动处于暂存态
  • 一行理由到 xd://resolve,TUI 变成 Accept 卡,磁盘落位原子化——全有或全无
  • ast_grep 查询:50+ tree-sitter 语法上的结构化代码查询
工具面

31 个内置工具:一个命名空间,按需 --tools 钉选

域工具
文件与搜索read(文件/目录/归档/SQLite/PDF/URL/ssh://)· write · edit(hashline)· ast_edit · ast_grep · grep · glob
运行时bash(46 内建 coreutils + PTY + 后台作业)· eval(持久 Python/JS cell + 工具回调)
代码智能lsp · debug(DAP)· security_scan(原生安全审查 / Codex Security 云扫)
协调task(并行子代理)· hub(消息/等待/取消/监督)· todo · ask
桌面与 Webbrowser(Puppeteer tab,默认隐身,可收编已开 Chrome)· computer(真桌面:窗口/截图/原生输入/AX 树/剪贴板)· web_search(23 provider 链)· github · generate_image · tts
记忆与技能checkpoint/rewind(上下文修剪+摘要)· retain/recall/reflect/memory_edit · learn/manage_skill

魔法词 ultrathink / orchestrate / workflowz 只在散文触发(不进代码 span/围栏/标识符/路径)。九个模型角色:default / smol / slow / plan / commit / vision / task / advisor / tiny,Ctrl+P 循环,/model 中途换。

生态兼容

记忆自策展,别人的配置直接读

在线体验

亲手装一条流规则,看它掐灭一次跑偏

Playground 复刻 time-traveling stream rules:定义规则(regex + 注入文本 + 修正后缀)→ 播放模拟模型输出流 → 命中瞬间红色中断、琥珀色注入卡、同点重试 → 输出修正。右侧实时对比 always-on 规则的 context 税:规则命中率为零时省 100%,命中率畸形时如实显示更贵。环形 rewrite 会触发 max-retries 保护。

打开 Playground

纯前端实现,零网络依赖 · 匹配顺序 / 事件序列 / 链式规则 / 重试上限 / 成本模型 200 组随机不变式全验证

适用场景 + 风险

适合谁,警惕什么

适合
  • 终端 agent 重度用户:从 Claude Code/Codex CLI 迁来想要更强工具面(LSP/DAP/双内核)且不想付订阅的人
  • 系统/原生开发者:C/C++/Rust/Go 调试场景——真调试器步进是独一档
  • agent harness 研究者:hashline / 流规则 / FS 韵律 / advisor 都是可借鉴的 harness 层原创
风险
  • 节奏剧烈:9 个月 v18、日级发版、3,023 open issues——追新要付出升级注意力
  • 治理未稳:PR vouch 制度「暂时开放」;单核维护者 + 庞大 Rust core 的巴士系数待观察
  • 能力面过宽:computer 桌面控制、browser、collab 中继都是攻击面——默认关闭的闸门要自己核对(设置门控清单见 README)
  • 上游分叉税:Pi 上游演进与 OMP 的 21 特性补丁长期并行,rebase 成本是结构性风险
生态位

终端 agent 竞争格局的「内脏位」

路线代表与 OMP 的差异
商业官方 CLIClaude Code、Codex CLI 等与自家模型/订阅深度绑定;工具面相对保守。OMP provider 中立、60+ 家、按模型调 prompt
极简内核Pi(上游)等哲学是「够小可审计」;OMP 反向押注「完整开箱」——同一躯体的两种进化策略
开源复刻系OpenCode、Aider 等编辑格式与工具面各异;OMP 用基准数据把「格式决定模型上限」打成公开牌,并以 LSP/DAP/原生工具链构成差异化内脏

OMP 占的位置是「harness 工程极致派」:不比模型比内脏——编辑格式、进程内工具链、IDE 协议接线、流式断路器,全部自己写。《The Harness Problem》把这类工作上升成论点:模型能力的天花板,一半在 harness 手里。

潜力评估

未来空间

评分 9.0:9 个月 32.8k stars / 767 贡献者 / 日级发版,是终端 agent 开源侧最猛的加速度;而它真正值钱的是把「harness 工程」做成了可学习的范本——hashline 编辑格式、流式规则断路器、一切皆路径的内部 scheme、LSP/DAP 全面接线,每一项都在回答「同一模型为什么在这里更强」。benchmaxxed 文化(拿数据说话)+ 八格式兼容(降低迁移成本)是聪明的生态打法。扣分:治理未稳(vouch 试验)、3k issues 的维护压力、能力面过宽带来的安全与质量摊薄、上游 fork 税。看点:若 vouch 恢复收紧贡献面、ACP 被 Zed 之外的编辑器采纳、或 hashline 编辑格式被其他 harness 借走成为事实标准,就是它从「极客利器」跨进「工程默认」的信号。


上一个
Univer
下一个
stable-diffusion.cpp
1 / 17