oh-my-pi - 把 IDE 焊死在终端里的 AI 编程代理
约 2537 字大约 8 分钟
AI AgentCoding AssistantTerminalLSP
2026-05-28
简介
oh-my-pi(命令行简称 omp)是由荷兰安全研究员 Can Bölük(@can1357) 在 Mario Zechner 的 pi-mono 基础上 fork 并大幅扩展的 终端 AI 编程代理。它的官方一句话定位极具技术派色彩:"A coding agent with the IDE wired in."(一个把 IDE 能力直接焊死在里面的 AI 代理)。
不同于 Claude Code / Cursor / aider 等已有方案,omp 把 LSP、DAP 调试器、tree-sitter AST、嵌入式 bash、ast-grep、并行 regex、PTY、APFS/btrfs/zfs 隔离文件系统 等 IDE 级能力用 ~27,000 行 Rust 链接进同一进程,跨平台一致工作,无需任何外挂二进制。同时它接入了 40+ LLM Provider、14 个搜索源,并兼容 8 种已有 Agent 规则格式(Cursor MDC / Cline / Codex / Copilot / Claude / Windsurf / Gemini / VS Code),让你不必为切换工具而迁移配置。
截至本文发布时(2026 年 5 月),项目自 2025 年底创建至今约 5 个月,已在 GitHub 收获 8K+ Stars / 648+ Forks,处于密集迭代期,官方 Discord 社区活跃。官方哲学:"a harness worth keeping is one you don't outgrow."(值得长期保留的 Agent 框架,是那个你不会用腻的)。
解决什么问题?
omp 针对当下主流 AI 编程代理的几个根本性痛点给出了系统性答案:
- 工具链外挂、跨平台体验差:传统 Agent 通过 shell 调用 ripgrep、find、glob 等外部二进制,依赖环境配置,且在 Windows 上往往需要 WSL
- 基于行号的编辑容易因为漂移而损坏文件:长上下文里行号会漂、被修改后会错位,导致 patch 失败甚至改坏代码
- 流式生成"刹不住车":模型一旦走偏只能等输出完了再修,浪费 token 和等待时间
- 多 Provider 接入碎片化:每家 LLM 一套 SDK / 一套配置,切模型要重写一堆样板
- 多 Agent 之间无法协同:subagent 都是孤岛,无法互相通信,无法并行解决复杂任务
- 生态规则文件孤岛:已有的
.cursor/.clinerules/AGENTS.md/.claude等规则格式各自为政,切工具就要全部重写
omp 用 "Rust 内核 + Hashline 编辑 + Time-Traveling Stream Rules + Subagent IRC + 多格式规则继承" 一揽子化解这些问题。
核心概念
| 概念 | 说明 |
|---|---|
| Hashline Editing | 基于内容哈希的锚点定位,替代行号编辑,号称把编辑 token 占用降低 61% |
| Time-Traveling Stream Rules | 流中正则触发规则,可以中途打断 token 输出、注入指令、原位重试,无需额外 context |
| Subagent IRC | subagent 之间通过内置 IRC 通道互发消息,配合独立 worktree 隔离与 typed schema 实现并行任务协同 |
| Hindsight Memory | 跨 session 的事实保留机制,自动压缩为 project-scoped mental model |
| Path-Scoped Model Roles | 不同仓库自动用不同模型,按 default / smol / slow / plan / commit 角色路由 |
| URL Scheme | pr:// / issue:// / agent:// / skill:// / rule:// / conflict://N 把外部资源当文件用 |
| Preview-Then-Accept | ast_edit 返回 staged 改动,需经 resolve 显式确认才落盘 |
| ACP | Agent Client Protocol,作为 Zed 等编辑器内的原生 agent 工作 |
关键差异化亮点
- IDE wired in:13 种 LSP 操作(重命名、重构、诊断)+ 27 种 DAP 操作(lldb / dlv / debugpy)原生驱动真实调试会话,不再依赖
print调试 - 持久 Python / Bun 内核 + 工具反向调用:Agent 自己 spawn 的代码可通过 loopback 桥回调宿主工具
- 嵌入式 bash:基于 brush 的纯 Rust 实现,Windows 也能跑同一份 shell 脚本
- 轮询凭据:同一 provider 多个 API Key 自动轮转,规避单 key 限流
- 原子提交:
omp commit自动把无关变更拆分成依赖顺序的多个 commit,发现循环依赖则拒绝
内置工具目录(32 个)
文件 & 搜索 read / write / edit / ast_edit / ast_grep / search / find
运行时 bash / eval (Python/JS) / recipe / ssh
代码智能 lsp / debug
协同 task / irc / todo_write / job / ask
外部 browser / web_search / github / generate_image / inspect_image / render_mermaid
记忆/状态 checkpoint / rewind / retain / recall / reflect
工具类 calc / resolve / search_tool_bm25部分工具(github / calc / inspect_image / render_mermaid / checkpoint / rewind / search_tool_bm25 / retain / recall / reflect)默认关闭,需要在设置中显式开启。
安装与配置
前置要求
- macOS / Linux / Windows 均支持(无 WSL 依赖)
- 推荐使用 Bun 作为 runtime(一行流安装会自动处理)
- 至少配置一种 LLM Provider 的 API Key(Anthropic / OpenAI / Gemini / xAI / OpenRouter 等任选)
安装方式
curl -fsSL https://omp.sh/install | shirm https://omp.sh/install.ps1 | iexbun install -g @oh-my-pi/pi-coding-agentmise use -g github:can1357/oh-my-pi自定义 Provider
在 ~/.omp/agent/models.yml 中可以接入私有端点,支持 openai-completions、anthropic-messages 等标准协议,可直接对接 Ollama / LM Studio / vLLM / LiteLLM 等本地推理网关。
使用方式
基础流程
# 启动交互式 TUI(默认模式)
omp
# 一次性问答(One-shot)
omp -p "list .ts files modified this week"
# 切换模型角色
omp --smol # 用便宜模型跑子任务
omp --slow # 切到深度推理模型
omp --plan # 进入计划模式
# 生成原子化的多个 commit
omp commit运行时通过 Ctrl+P 循环切换角色,或用 /model 命令热换。
作为 Node SDK 嵌入
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 模式(NDJSON over stdin/stdout)
omp --mode rpc --no-session
> {"id":"r1","type":"prompt","message":"list .ts files"}
< {"id":"r1","type":"response", ...}ACP 模式(嵌入 Zed 等编辑器)
omp acp工具 IO 透传给编辑器,破坏性操作通过 session/request_permission 申请权限。
实际示例
场景:自动 review 一个 PR,并行修复所有 P0/P1 问题,最后拆分成多个原子提交。
# 启动交互模式
omp
# 在 TUI 中下达任务
> Review pr://1462 with parallel subagents, fix all P0 and P1 issues,
resolve any merge conflicts in favor of theirs, then split fixes
into atomic commits.omp 内部执行流程:
- 解析
pr://1462:把 PR 当作虚拟文件系统暴露给read/search工具 - 派出 reviewer subagents:并行评审,给每条 finding 自动打 P0–P3 优先级
- 修复:用
ast_edit返回 staged 变更 → 经resolve显式接受后落盘;编辑全部使用 hashline 锚点避免行号漂移 - 冲突处理:若出现
conflict://N,主 agent 直接写@theirs/@ours/@base解决 - LSP 校验:通过 13 种 LSP 操作做重命名 / 诊断检查
- 测试执行:在持久 Python / Bun 内核里跑测试,
bash工具使用内嵌 brush,Windows 上同样工作 omp commit:分析工作区,按依赖顺序拆成多个原子 commit- Hindsight Memory 沉淀本次会话产出的项目知识,供下次会话直接 recall
整个过程不需要切终端、不需要手动复制 PR diff、不需要 babysit agent 输出——Stream Rules 在 token 中途就能纠偏,错误不会蔓延到最后。
如何更好地利用
适用场景
- 需要跨平台一致体验(特别是 Windows 用户,不想再被迫装 WSL)
- 重度依赖 LSP / 调试器:写 Rust / Go / C++ / TypeScript 这类强类型语言,print 调试不够用
- 想同时混用多家 LLM(Anthropic + OpenAI + Gemini + xAI + 自部署 vLLM),统一在一个 Agent 内调度
- 已有
.cursor/.clinerules/AGENTS.md规则文件,不想为切工具而迁移 - 追求 token 效率:hashline 编辑、stream rules 中途纠偏都能省下大量 token
- 希望把 Agent 嵌入到自己的工具链:SDK / RPC / ACP 三种模式按需选择
最佳实践建议
- 善用模型角色路由:把
smol设成便宜模型跑搜索 / 简单读文件,slow设成深度推理模型跑设计 / 重构,commit设成快模型跑提交信息,可显著降本 - 打开
retry.fallbackChains:按角色配置回退链,单家 provider 故障时自动切到备份 - 配置轮询凭据:同一 provider 配多个 API Key 自动轮转,规避单 key 限流
- 保留 Hindsight Memory:跨 session 的项目知识沉淀,重启后还能 recall,避免每次重新喂 context
- 复用既有规则文件:
.cursor/rules/、AGENTS.md、.claude/CLAUDE.mdomp 都会自动读取,不必重复维护 - 优先用
ast_edit而非edit:基于 AST 的编辑对 refactor 类任务更稳,结合resolve的 staged 模式可避免误改 - subagent + IRC 协同跑评审 / 重构:让多个 reviewer 并行打优先级,主 agent 再统筹修复,比串行快数倍
- 关键调试场景用
debug工具:通过 DAP 真实 step-through,比让模型读 print 输出靠谱得多 - Windows 用户优先体验:嵌入式 bash 让你不需要 WSL 就能在 Windows 上跑
bash工具,这是 omp 相对其他 Agent 的独特卖点
License
项目采用 MIT License,含原作者 Mario Zechner(2025)与 Can Bölük(2025–2026)双重署名,企业 / 个人使用均无限制。
技术栈
| 层 | 技术 |
|---|---|
| 主体语言 | TypeScript(~16.5 MB) |
| 性能内核 | Rust(~27,000 LoC,~1.96 MB),包含嵌入式 bash / 并行 regex / tree-sitter / ast-grep / 隔离文件系统 / PTY / BPE 计数 |
| 脚本 / 工具 | Python(~1.5 MB)、Shell、PowerShell、Dockerfile |
| Runtime | Bun |
| Monorepo 包 | pi-ai / pi-agent-core / pi-coding-agent / pi-tui / pi-natives / omp-stats / pi-utils / swarm-extension |
| Rust Crates | pi-natives / pi-shell / pi-ast / pi-iso / brush 系列 |
| 入口形态 | 交互式 TUI / one-shot / Node SDK / RPC / ACP |
| 协议 | MCP / LSP / DAP / ACP |
GitHub Topics:bun / cli / typescript / ai-agent / coding-assistant / llm / ai-coding-agent / anthropic / claude / mcp / multi-provider / openai / rust / terminal / tui。
相关链接
- GitHub 仓库:can1357/oh-my-pi
- 官网:omp.sh
- npm 包:@oh-my-pi/pi-coding-agent
- Discord 社区:discord.gg/4NMW9cdXZa
- 原项目 fork 自:badlogic/pi-mono
- 作者博客:can.ac
