oh-my-pi (omp) · 技能详解与使用场景
A Coding Agent with the IDE Wired In · 20大核心能力 · 32内置工具 · 40+模型供应商
40+
模型供应商
32
内置工具
14
LSP 操作
28
DAP 调试操作
~55k
Rust 核心代码行
20
核心能力
一句话定位:omp 是一个把 IDE 能力直接接进 AI Agent的编程助手——不是"AI帮你写代码",而是"AI拥有你IDE的一切能力":LSP重构、DAP调试、持久化Python/JS执行、真浏览器驱动、子Agent并行、实时协作、记忆系统……
核心差异:其他Agent给AI一个沙箱就完事了;omp 把LSP/DAP/文件系统/Git/浏览器/子Agent全部作为一等工具接入,AI能做的不只是生成代码,而是像你一样操作整个开发环境
🧠 20大核心能力 · 功效 + 场景 + 用法
每个能力:解决什么问题 → 什么场景用 → 怎么用
01
🐍 双核代码执行 + 工具回调桥
持久化 Python + Bun(JavaScript) 双内核,任一内核可直接回调Agent自身的工具(read/search/task),无需离开执行单元。Agent在Python里加载CSV,在JavaScript里画图表,一个session搞定。
🎯 解决场景
数据分析:Python读CSV → pandas处理 → JS画ECharts图表,全程不离开Agent
数据处理流水线:Python清洗 → JS转换 → Agent写入文件,一条龙
科学计算:numpy/scipy计算 → Agent用read查看结果 → 写入报告
🔧 怎么用
omp > 用pandas读取data.csv并做describe统计 > 然后用JavaScript画一个柱状图 # eval工具自动选择Python/JS内核 # Python中可直接调用 tool.read("data.csv") # JS中可直接调用 tool.read("result.json")
eval
02
🔗 LSP 接入每次写入
LSP(语言服务协议)直接接入Agent的每次文件操作。重命名走workspace/willRenameFiles,re-export、barrel文件、别名import全部自动更新。你的IDE知道什么,Agent就知道什么。
🎯 解决场景
安全重命名:重命名一个导出函数,所有引用自动更新,不会漏改
跨文件重构:移动文件后import路径、re-export、barrel文件全部自动修正
类型检查:写入代码后LSP实时诊断,类型错误立即发现
🔧 怎么用
omp > 把 formatBytes 重命名为 formatSize # Agent调用 lsp references 找到5处引用 # 调用 lsp rename 自动修改3个文件 # 确认 Search formatBytes → 0 matches
lsp
03
🐛 驱动真实调试器(DAP)
Agent直接attach调试器:C/Rust二进制→lldb,Go服务→dlv,Python进程→debugpy。设断点、单步、读变量、看调用栈——不是print调试,是真正的debugger。
🎯 解决场景
段错误定位:C/Rust程序crash → Agent attach lldb → 读帧 → 定位坏指针
Go服务挂死:attach dlv → 遍历goroutine → 找到死锁
Python进程卡住:debugpy → pause → inspect → evaluate表达式
🔧 怎么用
omp > 我的C程序在demo.c第6行段错误了,帮我调试 # Agent调用 debug 工具 # adapter=lldb-dap → 设断点 → 单步执行 # 读取变量 x=57351 → 确认数学运算错误
debug
04
时间旅行流式规则(TTSR)
规则平时休眠,当模型输出匹配正则时,立即中断流式输出、注入规则作为系统提醒、从同一点重试。不占上下文税,注入在压缩后仍然存活。
🎯 解决场景
禁止危险API:模型要写Box::leak → 流式中断 → 注入规则"不要用Box::leak" → 改用Arc<str>
强制安全模式:检测到unsafe代码 → 中断 → 提醒必须review
编码规范约束:检测到console.log → 注入规则"生产代码不要留debug log"
🔧 怎么用
# 在 .omp/rules/ 下定义规则 # regex匹配流式输出 → 中断 → 注入 → 重试 # .omp/rules/no-box-leak.md --- match: "Box::leak" inject: "Don't reach for Box::leak in production" --- # Agent写到Box::leak时自动中断 # ⚠ Injecting rule: no-box-leak # Agent改用 Arc<str> 并确认
TTSR
05
🔀 一等子Agent(task)
task将工作分发到隔离的worktree,每个worker有自己的工具面,最终yield是schema验证的typed对象。不解析散文,不合并冲突,不遗留孤儿编辑。
🎯 解决场景
并行重构:同时让3个子Agent分别重构auth模块、api模块、db模块
多文件搜索:子Agent并行搜索不同目录,结果typed汇总
CI/CD流水线:子Agent并行跑测试、检查lint、生成文档
🔧 怎么用
omp > 同时重构auth、api、db三个模块 # Agent调用 task 工具 # task → 3个隔离worktree # worker-1: 重构auth (独立工具面) # worker-2: 重构api (独立工具面) # worker-3: 重构db (独立工具面) # yield → schema验证的typed结果
task
06
👁️ Advisor:第二个模型监督每轮
配对一个reviewer模型到advisor角色,它读取主Agent每轮的操作,内联注入note——轻声提醒、担忧、或硬阻断。独立上下文+独立模型,捕获主Agent匆忙略过的错误。
🎯 解决场景
代码Review:主Agent写代码 → Advisor发现catch太宽 → 注入concern
安全审计:主Agent修改权限 → Advisor硬阻断 → 必须人工确认
质量守门:主Agent赶进度 → Advisor提醒"这不符合用户的验收标准"
🔧 怎么用
omp --advisor openai-codex/gpt-5.5 > 帮我修改错误处理逻辑 # 主Agent: 修改catch为ENOENT # Advisor 1 note (concern): # "fix不再匹配用户的字面验收标准" # 主Agent: 看到note → 修正方案
advisor
07
🤝 实时协作(/collab)
/collab把你的session放到relay上,返回链接+二维码。队友用omp join加入,或直接浏览器打开。读写共享配对,/collab view只读旁观。帧在客户端密封,relay看不到你的key。
🎯 解决场景
结对编程:你驱动Agent,队友实时观看并提建议
团队Review:分享只读链接,团队围观Agent的工作过程
远程协助:发QR码给同事,对方手机扫码即看
🔧 怎么用
omp /collab # 读写共享 /collab view # 只读旁观 # 输出: # Collab session started! # omp join https://my.omp.sh/xxx # QR: [二维码] # "Anyone with this link can watch"
/collab
08
🌐 Web搜索 + PDF/论文阅读
web_search串联14个排名供应商,URL直接交给read。arxiv PDF、GitHub页面、StackOverflow线程返回结构化markdown+锚点——和本地文件一样的工具面。
🎯 解决场景
论文研读:搜索arxiv论文 → 直接read PDF → 总结核心结论
技术调研:搜索最佳实践 → read多个URL → 对比分析
问题排查:搜索报错信息 → read StackOverflow → 应用解决方案
🔧 怎么用
omp > 搜索inference-time compute scaling的最新论文 # web_search → 10个Perplexity结果 # Agent选择arxiv论文 # read https://arxiv.org/pdf/2604.10739v1 # → 总结论文核心结论+具体数字
web_searchread
09
⚙️ 原生实现,零外部依赖
其他Agent调用rg/grep/find/bash——这些二进制可能不存在,每次调用都是fork-exec开销。omp把ripgrep、glob、find链接进进程内执行。brush是内建bash。同一二进制跑在macOS/Linux/Windows,无需WSL。
🎯 解决场景
Windows原生:不需要WSL,PowerShell直接跑
性能敏感:搜索大代码库 → 进程内ripgrep比fork快10倍
最小依赖:裸机/CI环境无需安装额外工具链
🔧 怎么用
# 无需额外安装 bun install -g @oh-my-pi/pi-coding-agent omp # 直接可用 # Windows PowerShell irm https://omp.sh/install.ps1 | iex omp # 原生运行,无需WSL
native
10
📋 代码Review:优先级+裁决
/review生成明确裁决(是否可以发布),每个问题P0-P3分级+置信度评分。专用reviewer子Agent并行扫描分支/单commit/未提交工作。先处理阻塞发布的,不遗漏。
🎯 解决场景
发布前Review:/review → P0问题必须修 → P3可以后续
PR Review:扫描整个分支 → 并行review → 裁决+优先级
增量Review:只review未提交的变更 → 快速反馈
🔧 怎么用
omp /review # review未提交变更 /review --branch main # review整个分支 /review --commit HEAD # review最近commit # 输出: # Verdict: BLOCKED # P0: SQL注入风险 (confidence: 95%) # P1: 缺少错误处理 (confidence: 80%) # P3: 命名不规范 (confidence: 60%)
/review
11
📝 Hashline编辑:内容哈希锚定
模型用锚点指向要修改的位置,而不是重打整行。空格战和字符串找不到循环直接消失。编辑过期文件时锚点发散——在破坏任何东西之前拒绝patch。Grok 4 Fast同样工作少61%token。
🎯 解决场景
精确编辑:修改一行 → 只发锚点+新内容,不重打周围代码
防破坏:文件已变 → 锚点不匹配 → 拒绝patch → 不破坏
省Token:同样编辑量,输出token减少61%
🔧 怎么用
omp > 把第42行的timeout从3000改为5000 # edit工具用内容哈希锚定第42行 # 只发送锚点+新值,不重打整行 # 如果文件已变 → 锚点不匹配 → 拒绝
edit
12
📂 GitHub即文件系统
PR是路径,issue是路径。read pr://1428 和 read src/foo.ts 返回同样的结构。search遍历diff像遍历目录。agent://id/findings.0.path 从子Agent输出中按路径提取字段。一个接口教会模型,一个面保持正确。
🎯 解决场景
读PR:read pr://1428 → 和读文件一样的体验
读Issue:read issue://567 → 结构化内容
搜diff:search遍历PR diff → 像搜目录一样搜变更
🔧 怎么用
omp > 看看PR #1428改了什么 read pr://can1357/oh-my-pi/1428 read pr://can1357/oh-my-pi/1428/diff/1 search "formatBytes" in pr://1428 # 12种内部scheme: # pr:// issue:// agent:// skill:// # rule:// conflict:// ...
githubread
13
🧠 Hindsight:Agent自管的记忆系统
Agent跨session记住你的代码库。运行中用retain写入事实,用recall拉回,每个session压缩成心智模型在下次首轮加载。项目级隔离——这个repo学到的不泄漏到那个repo。
🎯 解决场景
跨session记忆:昨天学的架构决策 → 今天自动加载
项目知识积累:retain "这个项目用Zod做验证" → 下次自动遵循
经验沉淀:retain "部署前必须跑migrate" → 不再忘记
🔧 怎么用
omp > 记住:这个项目部署前必须跑 db:migrate # Agent调用 retain 写入 # 下次session自动 recall # reflect → 综合回答 # 或手动: > recall "部署流程" > reflect "这个项目的架构决策有哪些?"
retainrecallreflect
14
🖥️ ACP:编辑器内驱动Agent
在Zed编辑器里运行omp,Agent读你正在看的buffer、写通过编辑器的保存路径、在编辑器的终端里起shell。破坏性工具暂停等你授权。无桥接、无插件、无第二大脑同步。
🎯 解决场景
编辑器内编程:在Zed里直接和Agent对话,所见即所得
权限控制:破坏性操作暂停 → 你授权一次 → 后续自动
零配置:同一Agent,终端和编辑器行为一致
🔧 怎么用
# 在Zed编辑器中安装omp扩展 # Agent读取你当前buffer # 写入通过编辑器保存路径 # 破坏性操作 → 暂停 → 你授权 # 终端和编辑器同一Agent # 无需同步第二大脑
ACP
15
📦 继承其他Agent的配置
直接读取8种已有配置格式:Cursor MDC、Cline .clinerules、Codex AGENTS.md、Copilot applyTo等。无需迁移脚本、YAML→TOML转换、"支持子集"脚注。团队上季度写的配置今晚还能用。
🎯 解决场景
从Cursor迁移:已有.cursorrules → omp直接读取,零转换
混合团队:部分人用Cline、部分用Codex → omp全兼容
渐进切换:不用一次性迁移,omp读原有配置即可
🔧 怎么用
# 无需任何迁移操作 # omp自动读取: # .cursor/rules/*.mdc # .clinerules # AGENTS.md (Codex) # .github/copilot/*.md (applyTo) # 等等... 共8种格式
config
16
omp commit:原子化拆分提交
读取working tree → 按依赖排序拆分无关变更为原子commit → 循环检测拒绝 → 源码优先于测试/文档/配置 → lock文件排除分析。headline commit是最重要的那个。
🎯 解决场景
规范提交:一堆改动 → 自动拆成多个语义清晰的commit
代码Review:每个commit只做一件事 → review更容易
回滚友好:原子commit → 出问题精准回滚单个commit
🔧 怎么用
omp commit # 自动: # 1. git_overview → git_file_diff → git_hunk # 2. 拆分无关变更 # 3. 按依赖排序 # 4. 源码 > 测试 > 文档 > 配置 # 5. 循环检测 → 拒绝 # 6. 逐个commit
commit
17
🔀 12种内部URI Scheme
pr://、issue://、agent://、skill://、rule://、conflict://等12种内部scheme在所有FS形工具中透明解析。read pr://1428和read src/foo.ts返回同样结构。search遍历diff像遍历目录。
🎯 解决场景
统一接口:PR/Issue/Agent输出/技能 → 全部用read读
跨域搜索:search在PR diff里搜 → 和搜文件一样
子Agent结果提取:agent://id/findings.0.path → 按路径取字段
🔧 怎么用
read pr://1428 read issue://567 read agent://worker1/findings.0.path search "TODO" in pr://1428 read skill://my-skill read rule://no-box-leak
URI schemes
18
冲突解决:一行URL
每个merge冲突变成一个URL。Agent写@theirs/@ours/@base到conflict://N,文件干净解决。批量:conflict://*。
🎯 解决场景
合并冲突:git merge冲突 → Agent逐个选择theirs/ours
批量解决:conflict://* → 全部用同一策略
精细控制:不同冲突不同策略 → 逐个conflict://N
🔧 怎么用
omp > 解决所有合并冲突,优先用theirs # read src/session.ts (⚠ 1 conflict) # write conflict://1 → @theirs # ✓ Resolved. # 或批量: # write conflict://* → @theirs
conflict://
19
👁️‍🗨️ AST编辑:预览→接受
ast_edit返回(proposed)卡片+替换数。变更暂存。Agent调用resolve确认→TUI变成Accept卡片→磁盘写入——原子性,全有或全无。
🎯 解决场景
结构化重构:AST级替换 → 不破坏代码结构
安全确认:先预览3处替换 → 确认后才写入
批量修改:一次AST模式匹配 → 多文件替换 → 原子写入
🔧 怎么用
omp > 把所有 console.log($X) 替换为 logger.debug($X) # ast_edit: console.log($X) → logger.debug($X) # (proposed) 3 replacements · 1 file # resolve → Accept # Applied 3 replacements in src/auth.ts
ast_editast_grep
20
🌍 真浏览器驱动 + Electron应用
Stealth默认开启,页面看到正常用户而非headless bot。同一API驱动任何Electron应用——指向Slack,Agent像读网页一样读你的DM。
🎯 解决场景
网页自动化:驱动浏览器填表单、点按钮、截数据
反爬:Stealth模式 → 网站检测不到是bot
Electron应用:驱动Slack/Discord → 读消息、发消息
🔧 怎么用
omp > 打开duckduckgo搜索"Rust async runtime对比" # browser工具自动启动Chromium # Stealth模式 → 反检测 # 读取搜索结果 → 总结 # 或驱动Electron应用: > 读取Slack里最近的DM
browser
🔧 32内置工具 · 六大分类
分类工具功能典型场景
📁 文件与搜索read文件/目录/归档/SQLite/PDF/笔记本/URL/内部URI — 一个路径全搞定读代码/读PR/读论文
write创建或覆盖文件/归档条目/SQLite行写文件/写数据库
editHashline patch:内容哈希锚定 + 过期锚恢复精确修改一行/一段
ast_edit结构化重写:预览→确认→原子写入批量替换/重构
ast_grep结构化代码查询:50+ tree-sitter语法模式匹配搜索
search / find正则搜索 / glob路径查找搜代码/搜文件名
⚡ 运行时bash工作区shell,可选PTY或后台任务跑命令/起服务
eval持久Python+JS单元,共享prelude,工具回调数据分析/画图
ssh对配置主机执行远程命令远程部署/检查
🔗 代码智能lsp诊断/导航/符号/重命名/代码操作/原始请求重构/类型检查
debug驱动DAP会话:断点/单步/线程/栈/变量调试crash/死锁
🔀 协调task并行子Agent,隔离worktree,typed结果并行重构/搜索
irc进程内Agent间短消息子Agent通信
todo有序变更session todo列表+阶段追踪任务管理
job等待/取消后台任务管理异步任务
ask结构化追问:选项+推荐标签交互式选择
🌐 外部browserPuppeteer标签页:headless Chromium或CDP附加网页自动化
web_search14个供应商:查询+答案+引用技术调研
githubgh封装:repo/PR/issue/代码搜索/ActionsGitHub操作
generate_image结构化图片生成:Gemini/GPT/Grok生成图片
inspect_image视觉模型分析本地图片读截图/读UI
🧠 记忆与状态checkpoint标记对话状态用于后续折叠+汇报长任务检查点
rewind裁剪探索性上下文,保留精简报告回滚错误探索
retain向Hindsight记忆库写入持久事实记住项目知识
recall从Hindsight搜索原始记忆回忆之前学到的
reflect让Hindsight综合回答整个记忆库综合分析
🎯 典型使用场景速查
🏗️
大型项目重构
需要跨多文件安全重命名、移动文件、更新import
LSP references → LSP rename → 验证0残留 → omp commit原子提交
🐛
生产Bug调试
C/Rust段错误、Go死锁、Python卡住
debug attach → 设断点 → 单步 → 读变量 → 定位根因 → 修复
📊
数据分析报告
CSV/Excel → 统计 → 可视化 → 写报告
eval Python读CSV → pandas分析 → JS画图 → write报告
📝
代码Review流水线
PR提交前自动review+优先级裁决
/review → P0必须修 → P1建议修 → P3后续 → Verdict
🔬
技术调研
搜索论文/最佳实践 → 对比分析 → 写文档
web_search → read arxiv → read SO → 对比 → write文档
🔀
并行多模块开发
同时开发auth/api/db三个模块
task → 3个隔离worktree → 并行开发 → typed结果汇总
🤝
团队结对编程
远程协作,实时共享Agent会话
/collab → 分享链接/QR → 队友omp join → 实时协作
🛡️
安全编码守卫
防止Agent写危险代码,实时纠偏
TTSR规则 → 流式匹配 → 中断 → 注入规则 → 重试 → Advisor复核
🧠
跨Session项目知识
记住架构决策、部署流程、团队规范
retain写入 → 下次session自动recall → reflect综合回答
📦 安装方式
macOS / Linux
curl -fsSL https://omp.sh/install | sh
Bun(推荐)
bun install -g @oh-my-pi/pi-coding-agent
Homebrew
brew install can1357/tap/omp
Windows (PowerShell)
irm https://omp.sh/install.ps1 | iex