oh-my-pi 开源终端 AI 编码代理体验
终端 AI 编码代理这个赛道已经很拥挤,Claude Code、Codex CLI、OpenCode 各有一批用户。oh-my-pi 这个开源项目选择在工具层做差异化:Hashline 补丁、LSP/DAP 集成、统一资源抽象、多模型角色路由都塞进了终端。以它为例,可以看清一个 AI CLI 工具在功能增强与配置管理上能走到哪一步。
它是什么
oh-my-pi 是一个开源的终端 AI 编码代理。安装后在项目目录执行 omp,就能让它读代码、改代码、跑命令、解释报错、生成提交说明。基础能力与同类工具相似,差异主要集中在工具层。
Hashline:给补丁加一道校验
很多 Agent 改文件仍是”old_string -> new_string”模式:模型把原文复述出来,工具拿去做匹配替换。少一个空格、缩进差一点,补丁就找不到位置;你刚手动改过文件,模型还拿旧上下文去改,新旧内容一混,现场直接乱掉。
oh-my-pi 的 edit 工具引入了 Hashline——官方描述为一种 compact、line-anchored 的补丁语言:读文件时每行附带一个内容哈希,模型改文件围绕哈希定位,少复述整段原文;文件中途被改动、哈希对不上时,补丁会被先拒掉。官方 benchmark 称 Grok 4 Fast 在同类任务中输出 token 减少 61%,这个数字未经复现,只能当项目方口径看趋势。但比省 token 更重要的是坏补丁能被尽早拦下——真实项目里,少一次乱改比少几百 token 值钱得多。
LSP 与 DAP:终端里的 IDE 能力
这是 oh-my-pi 最像 IDE 的部分,官方拆成两类工具:
lsp负责 diagnostics、navigation、symbols、renames、code actions 等,回答”代码结构是什么”:函数定义在哪、被谁引用、当前文件有哪些诊断、一次重命名会牵动哪些导入和 re-export。Agent 不再只靠 grep 硬猜符号关系,而是拿到语言服务器眼里的代码地图——在 barrel export、路径别名、重导出较多的 TypeScript 项目里,纯文本搜索和语言服务器的差距尤其明显。debug负责 DAP 会话:断点、单步、线程、调用栈、变量,回答”运行时发生了什么”。遇到 native 崩溃、服务 hang 住、进程卡住这类问题,Agent 可以像真人开发者一样先看停在哪、再看变量怎么变,最后才决定补丁怎么写,而不是只会”加日志、跑一遍、再加日志”。
当然,这不代表它一定能修好 bug,只是调试时看到的东西开始接近真人开发者会看的东西。
内置工具与统一资源抽象
omp 一共内置 32 个工具,其中几个颇有代表性:
eval:常驻的 Python 和 Bun JS 内核,不是跑完就扔的一次性沙箱;两个内核还能反过来调用 omp 自己的 read、search、task 等工具,在 Python cell 里读 CSV、切到 JavaScript cell 里处理数据,全程不离开会话。- 多 Agent 协作:
task负责派生子 Agent,每个 worker 可以用自己的工具面,也可以隔离到单独 worktree;hub用于 live Agent 间的协作与消息,todo管任务状态,ask发起结构化询问。 github:没有让模型再学一堆专用接口,而是把 PR 当文件系统路径读——read pr://1428和read src/foo.ts是同一个动作,search也能像遍历目录一样遍历 diff。这套抽象延伸出pr://、issue://、agent://、skill://、rule://、conflict://等内部 scheme。advisor:挂一个 reviewer 模型,跑自己的上下文,每轮审查主 Agent 的输出并把提醒 inline 注入回来,像旁边坐了个专职挑刺的人。
工具多的另一面是路由更复杂、权限面更大。可以用 --tools read,edit,bash,... 只暴露一部分工具;隐藏能力通过 xd:// 资源发现机制按需暴露。github、browser、ssh 这类工具建议按任务逐项启用,开之前先想清楚它能碰到什么。
多模型接入与角色路由
模型接入面很宽:OpenAI、Anthropic、Gemini 之外,Cursor、Copilot、Kimi Code、Moonshot、通义、Qwen Portal、GLM、小米 MiMo、Qianfan 等编码订阅也在列;本地模型侧有 Ollama、LM Studio、llama.cpp、vLLM、LiteLLM。
在此之上是 5 个角色路由:default 当主力,日常读代码、改代码、问问题都走它;smol 派给子 Agent 做批量查文件、扫信息这类小活,便宜快就行;slow 留给架构判断、难 bug、长上下文推理;plan 用来先想清楚改哪几个文件、步骤怎么拆;commit 处理提交说明、changelog 这类固定格式的文字活。本质是成本与质量的分流,不会让模型凭空变强。主会话里按 Ctrl+P 轮着切,也可以用 /model 手动换。务实的做法是先把 default 跑稳,再考虑 smol 和 slow——第一天就全开 fallback chain、多 key 轮询,出问题时很难判断是哪一层在抽风。
安装与配置管理
安装是一行命令的事:
curl -fsSL https://omp.sh/install | sh # macOS / Linux |
首次启动会引导 setup:先选要登录的 provider(可以同时接多个),再选 web_search 工具优先使用的搜索后端,选 Auto 时会从已配置好的后端中自动挑。
配置管理上有个细节值得说:启动时它会按顺序扫描命令行参数、models.yml、/login 保存的 key/OAuth、环境变量和几个 .env 文件,发现 DEEPSEEK_API_KEY 这类变量能匹配上,就把对应 provider 下的模型标为可用,并自动挑一个初始模型。换模型不用重启,/model 只展示已有可用凭据的模型,还能按 provider 切 tab。
迁移成本也考虑到了:它会读取磁盘上其他工具留下的 rules、skills 和 MCP servers 配置,.claude、.cursor、.windsurf、.gemini、.codex、.cline、.github/copilot、.vscode 这些目录都在扫描范围内。
小结
oh-my-pi 把开源终端 Agent 的工具层往前推了一步:Hashline 提高补丁定位的稳定性,LSP/DAP 补上代码结构与运行时状态,统一资源抽象让模型少学一堆专用接口,角色路由做成本与质量分流。它适合已经习惯终端工作流、愿意折腾模型、工具和权限配置的人;只想少配置、打开就用、求稳的话,成熟的商业工具仍然更省心。

