:终端里最能打的 AI 编程 Agent)
推荐语如果你受够了「AI 改错行」和「上下文里没有 IDE 能力」omp 是当前终端编码 Agent 里最值得一试的那个——Hashline 哈希锚点编辑把改错文件变成小概率事件LSP/调试器/PythonJS 双内核/并行子 Agent 全套内置且互相咬合8 万行 Rust 让它在 macOS/Linux/Windows 上行为一致。它不是 Claude Code 的平替而是技术设计更激进的「下一代」代价是学习曲线和折腾成本。愿意投入的开发者它不会让你失望犹豫的人先读完这篇再决定。更多AI工具分享参见猫哥的博客https://blog.csdn.net/qq8864一个有趣的彩蛋DeepSeek HarnessDSH 的 LLM 层依赖 earendil-works/pi-ai而 omp 是 Pi 生态的旗舰应用——也就是说 omp 和 DSH 共享底层 LLM 运行时都是 can1357 的 pi-ai 架构但 DSH 走了事件溯源 服务化插件 Web GUI的产品路线omp 走了终端单机全能 IDE路线。二者更像是兄弟项目而非竞品。一句话定位Oh My Pi命令行简称omp是一个终端优先的开源 AI 编程 Agent不依赖 IDE、全屏 TUI 运行内置 31 个工具、完整 LSP/DAP 集成、PythonJS 双执行内核、并行子 Agent、跨会话记忆底层是约 8 万行 Rust 原生实现——搜索、shell、AST、高亮全部进程内完成零 fork/exec。它由 Can Bölük fork 自 Mario Zechner 的 Pi在 GitHub 上已有24.8k starsMIT 开源。核心理念一句话工具不应该只是「连上去」而要被打磨到极致——每个工具都经过基准测试调优编辑命中率、搜索速度、LSP 集成力求同类最优。为什么值得关注它解决的是真问题传统 Coding Agent 的痛点omp 几乎逐个给了解法痛点传统方案omp 的解法编辑频繁失败、重试烧 Tokenstr_replace 重打旧内容Hashline内容哈希锚点一次命中读文件浪费上下文全文 dump结构化摘要Tree-sitter 提取符号按需展开Agent 对代码库的理解靠猜无LSP 14 种操作重命名、跳转、诊断走协议排查 bug 全靠 print 调试无DAP 调试器lldb / dlv / debugpy数据分析弱单一 Python 沙箱Python Bun 双持久内核可回调 Agent 工具大任务串行慢无并行子 Agent隔离工作区、类型化返回模型不守规矩全靠 prompt 唠叨流规则正则命中 → 中断流 → 注入规则 → 重试每次会话失忆无Hindsight 记忆银行项目级搜索慢、依赖外部二进制shell 调 rg进程内 ripgrep / glob / bashHashline技术含量最高的编辑机制多数 Agent 用str_replace模型输出「旧内容 新内容」问题在于空白/引号错一个就拒文件被改过锚点就失效于是进入「拒绝 → 重试 → 拒绝」的 Token 燃烧循环。omp 让模型用内容哈希标识要改的行而不是重新打出那些行{a3f2} - const result compute(x) const result compute(x, options){a3f2}是目标行内容的哈希前缀。文件变了导致哈希对不上patch 会被拒绝而不是打错地方。基准数据官方实测同权重同 PromptGrok Code Fast 1编辑成功率 6.7% → 68.3%10 倍提升Gemini 3 Flash比 str_replace 高 5 个百分点超过 Google 自己对该格式的最佳实现Grok 4 Fast输出 Token 减少 61%重试循环消失MiniMax通过率提升 2.1 倍更高层还有ast_editast-grep 结构化重写先出 proposed 预览卡片、Agent 写一行理由后xd://resolve才落盘原子操作和ast_grep50 语言 Tree-sitter 结构化查询。read统一读取接口省一半 Tokenread不只是读文件——返回的是 Tree-sitter 结构化摘要函数名、类名、重要注释需要细节时 Agent 再调用read展开具体行段。而且所有东西都是路径read src/auth/login.ts # 文件 → 结构化摘要 read src/ # 目录 → 树形概览 read data/app.db # SQLite → 表/行 read https://arxiv.org/pdf/… # 论文 PDF → 结构化 Markdown read pr://can1357/oh-my-pi/1428 # GitHub PR 就是路径 read issue://can1357/oh-my-pi/142 # Issue 也是路径「GitHub 只是另一个文件系统」——不用学一堆gh_issue_view之类的专用工具参数一个接口走天下。原生 Rust搜索、shell、高亮全部进程内其他 Agent shell 出去调 rg/grep/find/bash每次都是 fork-exec 往返omp 把真实实现链接进进程ripgrep、glob、find 进程内bash是内嵌的 brush shell持久会话跨调用保留环境变量和工作目录58 个命令行工具ls、sed、sort、xargs、jq…移植进 builtins crate。同一个二进制原生跑 macOS/Linux/Windows不需要 WSL 桥。LSP 与 DAPIDE 知道的Agent 都知道14 个 LSP 操作diagnostics、hover、definition、references、rename、code_action、completion、signature_help、document_symbols、workspace_symbols、format、range_format、implementation、type_definition。重命名走workspace/willRenameFilesre-export、barrel 文件、别名导入全部同步更新——不是文本替换。28 个 DAP 操作C/C/Rust 用 lldb-dapGo 用 dlvPython 用 debugpyNode 用内置 inspector。C 程序段错误attach 调试器、看调用栈、读帧、debug.evaluate(*ptr)——不用再满代码撒 print。evalPython JavaScript 双持久内核大多数 Agent 只给一个 Python 沙箱。omp 跑两个持久内核且任一内核都能回调 Agent 自己的工具# Python 内核里调用 Agent 的 read 工具dfpd.read_csv(tool.read(data/sales.csv))print(df.describe())// 同一个 eval 会话切到 Bun 内核consttoptool.read(data/sales.csv).split(\n).slice(1).map(ll.split(,)).sort((a,b)b[2]-a[2]).slice(0,5);console.table(top);两个内核共享 preludePython 处理数据、JS 画图全程一个连续会话。子 Agent并行、隔离、类型化返回task把任务拆给并行子 Agent平台原生文件系统快照隔离工作区macOS APFS clone、Linux reflink/overlayfs、Windows projfs互不干扰、无合并冲突每个子 Agent 返回schema 校验过的结构化对象父 Agent 用路径语法直接取字段read agent://subagent-id/findings.0.path子 Agent 之间还能通过 IRC 短消息协调分工。AltA打开 Agent Hub 看每个子 Agent 的实时状态、活体转录、成本还能中途发消息或杀掉卡住的 worker。流规则模型不听话的实时纠正传统做法把所有规范塞进 System Prompt每次对话付全量 Token模型还可能无视。omp 的规则是睡着的直到触发正则监听模型的流式输出命中即中断当前流mid-token 级别把规则作为系统提醒注入上下文从同一位置重新生成注入的规则在上下文压缩后依然存活例如「禁止在 Rust 生产代码用Box::leak」模型一旦写到就触发纠正为Arcstr。用/omfg用自然语言生成规则/omfg 不要在任何地方用 any 类型要求用具体的类型定义或 unknownHindsight项目级跨会话记忆Agent 运行中主动用retain写入记忆、recall检索、reflect综合每次会话结束自动压缩成「心智模型」下次会话第一轮就加载。项目级作用域——A 项目学到的东西不泄漏到 B 项目。用一段时间后omp 自己就知道项目用什么技术栈、模块怎么分工、哪些文件是「地雷区」。模型路由60 提供商、10 个角色用角色而非模型名调度「对的任务用对的模型」。default日常、smol廉价探索、slow深度推理、plan计划模式另有 vision/designer/task/advisor/commit/tiny。启动时--smol/--slow/--plan覆盖会话中/model或CtrlP切换。支持 OAuth 一键登录Anthropic、Codex、Gemini、Perplexity、Cursor、Copilot…、Coding Plan 订阅路由、API Key、本地模型Ollama/LM Studio/vLLM还能自定义任意 OpenAI 兼容提供商、配 fallback 链429 自动切换、路径级模型绑定、多 Key 轮转。其他值得说的/collab把会话放上中继甩个链接二维码队友浏览器就能围观/协作密钥不出本机/commit读整个工作树把不相关改动拆成按依赖排序的原子 commit循环依赖直接拒绝/review专用 reviewer 子 Agent 并行扫描问题按 P0-P3 分级置信度评分配置继承自动读取.cursor/rules/*.mdc、CLAUDE.md、.clinerules、AGENTS.md、Copilot applyTo 等 8 种现有格式零迁移ACP/SDK/RPComp acp接入 ZedNode SDK 内嵌会话--mode rpcstdio 驱动插件TypeScript 模块、与内置工具同一套 API、热重载与主流工具对比维度Claude Code / 同类omp编辑格式str_replace易错Hashline内容哈希锚点文件读取全文 dump结构化摘要 按需展开LSP无或有限完整 14 操作调试器无完整 DAPlldb/dlv/debugpy代码执行Python 沙箱持久 Python Bun 双内核子 Agent无或有限并行 隔离 类型化返回搜索shell 调 ripgrep进程内 ripgrep零 fork/exec行为纠正靠 prompt流规则中断注入重试跨会话记忆无Hindsight项目级技术栈纯 JS/Python~8 万行 Rust 核心 TypeScript安装macOS / Linux推荐curl-fsSLhttps://omp.sh/install|sh脚本自动检测 Bun≥1.3.14有则用 Bun 安装否则下载预构建二进制。其他方式# Homebrewbrewinstallcan1357/tap/omp# Bun推荐最新版buninstall-goh-my-pi/pi-coding-agent# WindowsPowerShell原生运行无需 WSLirm https://omp.sh/install.ps1|iex# Nixnix profileinstallgithub:can1357/oh-my-pi# 版本锁定mise use-ggithub:can1357/oh-my-pi验证 补全omp--version# shell 补全bash → ~/.bashrceval$(omp completionsbash)# zsh → ~/.zshrceval$(omp completionszsh)# fishomp completions fish~/.config/fish/completions/omp.fish模型配置四种方式/login# 方式一OAuth 一键登录Anthropic / Codex / Gemini / Cursor / Copilot…/model# 方式二打开模型选择器直接填 API Key# 方式三Coding Plan 订阅路由/login 选对应提供商# 方式四本地模型Ollama / LM Studioollama serve /model# 选择 Ollama指向 http://localhost:11434自定义 OpenAI 兼容提供商~/.omp/agent/models.ymlproviders:spark:baseUrl:http://192.168.10.223:8000/v1api:openai-completionsapiKey:dummymodels:-id:minimax-m3name:MiniMax M3contextWindow:100000maxTokens:32000故障转移与路径绑定retry:fallbackChains:default:-anthropic/claude-sonnet-4.6-openai/gpt-4o-google/gemini-2.0-flashmodels:enabledModels:-path:~/projects/side-projectmodels:[deepseek/deepseek-coder]TUI 上手cd~/your-project omp全屏 TUI 启动工具调用渲染成卡片编辑落盘前有预览。推荐在支持 Kitty 键盘协议的终端运行Kitty、Ghostty、WezTerm、iTerm2。常用键位按键功能Enter发送消息CtrlJ / ShiftEnter消息内换行CtrlP循环切换当前角色的模型CtrlT展开/折叠 Todo 面板CtrlC中断任务Esc取消待确认操作↑ / ↓历史消息 / 选项?输入框内查看快捷键单次执行与恢复omp-p列出所有 .ts 文件里未使用的 exportgitdiffHEAD~1|omp-p给这个 diff 写一个精简的 commit messageomp--resume# 会话选择器Tab 补全omp--resumeid# 直接恢复常用斜杠命令命令功能/model切换模型/login提供商登录/review代码审查分支/commit/未提交P0-P3 分级/commit智能拆分原子提交/omfg自然语言创建流规则/collab分享实时会话/compact手动压缩上下文/reload-plugins热重载插件/hotkeys全部快捷键核心工具实操# read读文件/目录/URL/数据库/PR全部结构化readsrc/auth/login.tsreadpr://can1357/oh-my-pi/1428# search进程内 ripgrepsearchuseState\(src/ searchTODO:--typets# bash持久会话环境变量跨调用保留bash:npmtestbash:gitlog--oneline-10# evalPython JS 双内核可回调 Agent 工具eval:importpandas as pd;dfpd.read_csv(tool.read(data/sales.csv));print(df.describe())# lspIDE 级代码智能lsp:renameformatBytes → humanizeFileSize# debug真实调试器debug: attach lldb-dap看崩溃栈、读变量、评估表达式# task并行子 Agenttask(workers[{name:auth, workdir:services/auth},...])# ask结构化提问带推荐选项的选择器我的评价优点工具质量是真实的不是营销Hashline 的基准数据可复现编辑成功率提升是数量级的read 的结构化摘要省 Token 立竿见影进程内搜索在无 rg 的 Windows 上也能用——这些都在日常使用里感受得到。一站配齐调试器、LSP、双内核、子 Agent、记忆、浏览器、桌面控制……别的 Agent 要装一堆插件omp 开箱即有而且互相咬合eval 回调 read、子 Agent 类型化返回、配置零迁移继承。Rust 底子带来的一致性macOS/Linux/Windows 同一二进制不依赖外部工具链行为一致。可塑性插件与内置工具同一 API/omfg建规则、/reload-plugins热重载从配置到源码全开放。局限学习曲线TUI 斜杠命令 角色模型路由比「打开即聊」的工具要花一两天适应文档分散在 omp.sh/docs 和仓库 docs/。生态相对年轻插件数量远不如 Claude Code社区仍在成长PR 刚放开 trial。终端依赖全屏 TUI 在 SSH/无头环境体验打折有-p单次模式兜底依赖 Kitty 键盘协议老终端要降级。模型强绑定编辑格式、工具调用是针对强模型调的弱模型 复杂任务仍需人工盯。适合谁终端党、追求工具效率的资深开发者、想省 Token 的重度用户。不适合只想点两下就完事的 GUI 用户用 IDE 插件版或 Claude Code 更顺手。与 DeepSeek Harnessdsh的关系两者定位不同——omp 是「终端里打磨到极致的单体 Agent」dsh 是「一切皆插件」的可重组框架模型/工具/UI/循环都可替换。omp 开箱即用、工具质量天花板高dsh 可定制性更强、适合自组 harness。都用过之后我的建议日常写代码用 omp做自定义 Agent 平台用 dsh。参考官网https://omp.shGitHubhttps://github.com/can1357/oh-my-piMIT24.8k stars菜鸟教程入门https://www.runoob.com/vibe-coding/omp-usage.html工具文档https://omp.sh/docs/tools提供商文档https://omp.sh/docs/providersnpmhttps://www.npmjs.com/package/oh-my-pi/pi-coding-agent