oh-my-pi — TypeScript AI Coding Agent GitHub 热门开源项目推荐 | 2026-05-22
文章目录
- oh-my-pi(简称 OMP)是一个用 TypeScript 编写的终端 AI 编程 Agent,由开发者 @can1357 创建,基于 Mario Zechner 的 Pi 项目进行深度扩展。截至 2026 年 5 月 22 日,项目已斩获 ⭐ 6,119 颗 Star,是近期 GitHub Trending 上的热门黑马,专注于将 IDE 级别的代码智能直接带到终端环境。 技术栈方面,OMP 采用 TypeScript 作为上层胶水语言,核心约 27k 行 Rust 代码提供底层能力,搭配 Bun 作为推荐运行时(也支持 Node.js)。支持 macOS、Linux、Windows 全平台,真正做到了"一处配置,处处运行"。
- 在 o1-preview、Claude Code、Aider 等 AI 编程工具已经相当成熟的今天,oh-my-pi 为什么还能脱颖而出?我的理解是,它的差异化在于「把 IDE 装进了 Agent」,而不是简单地在终端里跑一个大模型。 传统的 Agent 方案往往只有一个 Python 沙盒 + 几个 tool definitions,代码补全是靠模型「猜」,IDE 功能(比如跳转到定义、查找引用、重命名)要么缺失,要么需要另外安装插件。而 OMP 从第一天起就把 LSP(Language Server Protocol)和 DAP(Debug Adapter Protocol)深度集成进了 Agent 的工具链——这意味着当你让 Agent 修改一个函数名时,它知道这会影响到哪些文件和导出项;当你让 Agent 调试一个崩溃问题时,它能真实地 attach 到进程、查看变量、步进堆栈。 我自己体验下来,最惊艳的一点是 hashline 编辑模式——传统基于 diff 的编辑,模型需要重新输出完整上下文,容易因为行号偏差导致编辑失败。OMP 让模型指向「内容锚点」而不是行号,这样即使文件在你编辑期间发生了其他变化,OMP 也会在应用补丁前校验锚点是否对齐,不对齐就直接拒绝,避免了文件被「污染」的尴尬。根据官方 benchmark,Grok 4 Fast 在相同任务下 token 消耗降低了 61%,这个改进非常实际。
- 根据官方 README 的描述,OMP 的核心理念是「The most capable agent surface that ships」(开箱即用的最强大 Agent 界面)。它主打以下几个维度: 首先是模型兼容性——支持 40+ 不同的 AI 模型提供商,从 OpenAI GPT 到 Anthropic Claude、从 Google Gemini 到国内的 MiniMax 等,OMP 都会针对每个模型调整 Prompt 和输出格式,让编辑「第一次就做对」成为常态,而不是靠重试循环。 其次是工具深度——内置 32 个工具函数,涵盖文件读取/搜索(比 ripgrep 还快的搜索)、代码执行(Python + Bun 双内核)、LSP 操作(跳转、查找引用、重命名)、真实调试(lldb/dlv/debugpy)、Git 操作、子 Agent 调度等。 第三是工作流智能化——包括时间旅行流规则(模型跑偏时实时注入修正规则,不消耗额外上下文)、PR 冲突解决(用 @theirs/@ours/@base 标记解决)、自动提交拆分(按变更依赖自动拆分成原子 commit)等。
- 场景一:重构遗留代码库 当你接手一个陌生的项目,想把某个工具函数改名并更新所有调用点时,普通的 AI 编程工具可能只会修改当前文件。OMP 通过 LSP rename 一次性更新所有文件(包括 re-export 和 barrel imports),你得到的是一个清晰的修改范围和最终验证结果。 场景二:跨语言数据分析 让 Agent 先用 Python 的 pandas 处理一个 CSV 文件,再用 JavaScript 输出图表——两个语言的内核可以在同一个 session 中互相调用,模型不需要「退出重进」就能完成多语言协同工作。 场景三:大型 PR Code Review 运行 /review 命令,OMP 会启动多个并行的 reviewer 子 Agent,每个负责检查 PR 的不同维度(如安全性、性能、风格),最终输出按优先级(P0-P3)排序的审查意见,告诉你「哪些必须改、哪些建议改」,不再是一堵 prose 墙。
- 以下是我自己整理的上手步骤(不是直接抄 README 的示例): 第一步:安装(macOS / Linux) curl -fsSL https://omp.sh/install | sh 第二步:登录 AI 提供商 # 以 Anthropic 为例(需要 claude login 或 API key) omp config set anthropic.api_key sk-ant-... # 或使用 claude login claude login 第三步:进入项目目录并启动 Agent cd ~/my-project omp 第四步:尝试第一个任务——用 hashline 编辑 # 假设你想把 calculateTotal 函数改名为 computeTotal # 告诉 Agent:「把 calculateTotal 重命名为 computeTotal,使用 hashline 模式」 # OMP 会通过 LSP rename 完成,修改所有受影响的位置 第五步:查看工作状态 # 查看当前 session 的工具调用和 token 消耗 /status # 让 Agent 对当前变更进行 code review /review
- LSP 深度集成:OMP 能够在每一次编辑前通过 workspace/willRenameFiles 预先计算影响范围,确保重命名操作不仅改当前文件,还更新所有 re-export 和 barrel imports。普通的 AI 编程工具完全依赖模型「猜测」影响范围,OMP 的做法更可靠。 真实调试器支持:支持 lldb、delve、debugpy 三种主流调试器。Agent 可以 attach 到正在运行的本机进程、步进到具体函数帧、读取局部变量——大多数 Agent 方案至今还停留在「在代码里加 print 语句」阶段。 子 Agent 任务并行:task 命令可以将一个复杂任务拆分给多个独立的子 Agent,每个子 Agent 在隔离的工作区运行,最终结果通过 schema 验证后返回主 Agent。这意味着你可以同时让两个子 Agent 分别处理「组件导出分析」和「路由导出分析」,主 Agent 负责合并结果。
- ⭐ 6,119 | 📈 +320 today(数据截至 2026-05-22) 从增长趋势来看,OMP 在最近一周内从约 5,800 颗星增长到 6,100+,日均增长在 200-400 颗之间,增速相当可观。考虑到这是一个相对小众的 TypeScript/Rust 项目(非 Python/JS 主流),这个数据说明社区对「终端 AI 编程 Agent + IDE 集成」方向的认可度正在提升。
- 与 OMP 最接近的竞品是 Aider(Python,约 10k stars)和 Claude Code(Anthropic 官方 CLI)。Aider 的优势在于生态成熟、支持更多版本控制系统,但其底层没有 LSP 集成,编辑大型代码库时容易出现上下文丢失问题。Claude Code 功能强大,但它是闭源的深度绑定 Anthropic 生态,OMP 则做到了「任意模型 + 本地工具链」的开放组合。 另一个值得对比的是 Cursor Agent(在 Cursor IDE 内运行),它和 OMP 都追求「Agent 知道 IDE 在看什么」,但 Cursor Agent 是 GUI 环境,OMP 是纯 TTY 环境。GUI 的优势是可视化,终端的优势是脚本化和自动化——两者定位不同。
- Issue #352 — MCP Tool Discovery Search(18 comments) 这是 OMP 社区最热门的讨论之一,核心议题是「如何让 Agent 在运行时动态发现 MCP 服务器暴露的新工具」。作者采用了类似 Codex search_tool_bm25 的设计,为 MCP 工具建立索引,让 Agent 在每次工具调用前能够搜索到相关工具而不是遗漏。讨论中有开发者指出,这种动态发现机制避免了「工具列表写死在代码里」导致新工具无法被感知的问题。有用户评价:「这让 OMP 的 MCP 集成从玩具变成了生产级工具」。 Issue #811 — Add Pi Package Compatibility Layer(13 comments) 这是一个功能提案,旨在为 OMP 添加对 Pi(OMP 的上游项目)插件包的兼容层。提案包含一个新的 omp pi 命令组,用于处理 Pi 包解析、安装和路径桥接。讨论中社区对「如何在不破坏 OMP 自身 API 的前提下兼容 Pi 生态」提出了多种方案,最终作者选择了分层兼容的方案——通过 shim 层隔离差异,让两个生态的工具可以互换使用。 Issue #971 — Stable metadata user_id per session(1 comment, closed) 这个 issue 修复了一个影响用户账单准确性的 bug:由于 Agent 没有设置 metadata.user_id,Anthropic 后端为每次请求生成了不同的随机 ID,导致用户无法正确追踪会话数和 API 消费。虽然技术细节偏内部,但它说明 OMP 在与上游 AI 提供商交互时会深入到 SDK 的元数据层面,这种精细程度在同类工具中并不常见。
- ⚠️ 问题一:Windows 下部分终端不显示通知 OMP 的 completion.notify 功能依赖终端模拟器的 OSC 9/99 协议支持。在 macOS 下默认 silent fail(文档声称默认开启但实际静默失败),Windows 的部分终端(如 Windows Terminal)需要额外配置通知权限。解决方案是使用 OMP 的 alerter-based 通知模式(Issue #1028 有详细讨论),或者用 tmux 的通知转发。 ⚠️ 问题二:子 Agent 的 IRC 协调握手有时单边失败 OMP 的子 Agent 使用 IRC 协议进行内部协调,理论上每个子 Agent 需要双向握手才能建立连接。但实际测试中发现,如果父 Agent 的 IRC 端口没有正确开放,子 Agent 会超时并报错「connection refused」。遇到这个问题的用户建议先跑 omp doctor 检查网络配置。 💡 提示:首次使用建议跑一遍 omp doctor 这个命令会检查所有依赖(LSP 服务器、调试器适配器、MCP 工具可用性等),并在发现问题时给出具体的修复建议。对于从 Pi 迁移过来的用户,这个检查能发现不少兼容性问题。
- oh-my-pi 是一个面向专业开发者的 AI 编程 Agent,它的核心价值在于「把 IDE 的能力下沉到终端」——LSP 代码跳转、真实调试器、并行子 Agent、时间旅行流规则,这些在大多数 AI 编程工具里还是「计划中」的功能,OMP 已经开箱即用。它的学习曲线比 Aider 稍高(需要理解 LSP/DAP 等概念),但换来的是更可靠的代码编辑体验。如果你追求的是「终端里干活、IDE 级别精度」,OMP 值得尝试。 我个人最喜欢的功能是 hashline 编辑 + LSP 重命名组合——它把「改对了」变成默认行为,而不是靠模型反复重试。对于处理大型代码库或者做大规模重构的场景,这个优势会非常明显。
- GitHub:can1357/oh-my-pi 官网:omp.sh 作者 @can1357 🔗 更多 GitHub 热门开源项目:Mirage — AI 文件系统工具 · Glass — 反编译工具
oh-my-pi(简称 OMP)是一个用 TypeScript 编写的终端 AI 编程 Agent,由开发者 @can1357 创建,基于 Mario Zechner 的 Pi 项目进行深度扩展。截至 2026 年 5 月 22 日,项目已斩获 ⭐ 6,119 颗 Star,是近期 GitHub Trending 上的热门黑马,专注于将 IDE 级别的代码智能直接带到终端环境。
技术栈方面,OMP 采用 TypeScript 作为上层胶水语言,核心约 27k 行 Rust 代码提供底层能力,搭配 Bun 作为推荐运行时(也支持 Node.js)。支持 macOS、Linux、Windows 全平台,真正做到了"一处配置,处处运行"。
在 o1-preview、Claude Code、Aider 等 AI 编程工具已经相当成熟的今天,oh-my-pi 为什么还能脱颖而出?我的理解是,它的差异化在于「把 IDE 装进了 Agent」,而不是简单地在终端里跑一个大模型。
传统的 Agent 方案往往只有一个 Python 沙盒 + 几个 tool definitions,代码补全是靠模型「猜」,IDE 功能(比如跳转到定义、查找引用、重命名)要么缺失,要么需要另外安装插件。而 OMP 从第一天起就把 LSP(Language Server Protocol)和 DAP(Debug Adapter Protocol)深度集成进了 Agent 的工具链——这意味着当你让 Agent 修改一个函数名时,它知道这会影响到哪些文件和导出项;当你让 Agent 调试一个崩溃问题时,它能真实地 attach 到进程、查看变量、步进堆栈。
我自己体验下来,最惊艳的一点是 hashline 编辑模式——传统基于 diff 的编辑,模型需要重新输出完整上下文,容易因为行号偏差导致编辑失败。OMP 让模型指向「内容锚点」而不是行号,这样即使文件在你编辑期间发生了其他变化,OMP 也会在应用补丁前校验锚点是否对齐,不对齐就直接拒绝,避免了文件被「污染」的尴尬。根据官方 benchmark,Grok 4 Fast 在相同任务下 token 消耗降低了 61%,这个改进非常实际。
根据官方 README 的描述,OMP 的核心理念是「The most capable agent surface that ships」(开箱即用的最强大 Agent 界面)。它主打以下几个维度:
首先是模型兼容性——支持 40+ 不同的 AI 模型提供商,从 OpenAI GPT 到 Anthropic Claude、从 Google Gemini 到国内的 MiniMax 等,OMP 都会针对每个模型调整 Prompt 和输出格式,让编辑「第一次就做对」成为常态,而不是靠重试循环。
其次是工具深度——内置 32 个工具函数,涵盖文件读取/搜索(比 ripgrep 还快的搜索)、代码执行(Python + Bun 双内核)、LSP 操作(跳转、查找引用、重命名)、真实调试(lldb/dlv/debugpy)、Git 操作、子 Agent 调度等。
第三是工作流智能化——包括时间旅行流规则(模型跑偏时实时注入修正规则,不消耗额外上下文)、PR 冲突解决(用 @theirs/@ours/@base 标记解决)、自动提交拆分(按变更依赖自动拆分成原子 commit)等。
场景一:重构遗留代码库
当你接手一个陌生的项目,想把某个工具函数改名并更新所有调用点时,普通的 AI 编程工具可能只会修改当前文件。OMP 通过 LSP rename 一次性更新所有文件(包括 re-export 和 barrel imports),你得到的是一个清晰的修改范围和最终验证结果。
场景二:跨语言数据分析
让 Agent 先用 Python 的 pandas 处理一个 CSV 文件,再用 JavaScript 输出图表——两个语言的内核可以在同一个 session 中互相调用,模型不需要「退出重进」就能完成多语言协同工作。
场景三:大型 PR Code Review
运行 /review 命令,OMP 会启动多个并行的 reviewer 子 Agent,每个负责检查 PR 的不同维度(如安全性、性能、风格),最终输出按优先级(P0-P3)排序的审查意见,告诉你「哪些必须改、哪些建议改」,不再是一堵 prose 墙。
以下是我自己整理的上手步骤(不是直接抄 README 的示例):
第一步:安装(macOS / Linux)
curl -fsSL https://omp.sh/install | sh
第二步:登录 AI 提供商
# 以 Anthropic 为例(需要 claude login 或 API key)
omp config set anthropic.api_key sk-ant-...
# 或使用 claude login
claude login
第三步:进入项目目录并启动 Agent
cd ~/my-project
omp
第四步:尝试第一个任务——用 hashline 编辑
# 假设你想把 calculateTotal 函数改名为 computeTotal
# 告诉 Agent:「把 calculateTotal 重命名为 computeTotal,使用 hashline 模式」
# OMP 会通过 LSP rename 完成,修改所有受影响的位置
第五步:查看工作状态
# 查看当前 session 的工具调用和 token 消耗
/status
# 让 Agent 对当前变更进行 code review
/review
- LSP 深度集成:OMP 能够在每一次编辑前通过 workspace/willRenameFiles 预先计算影响范围,确保重命名操作不仅改当前文件,还更新所有 re-export 和 barrel imports。普通的 AI 编程工具完全依赖模型「猜测」影响范围,OMP 的做法更可靠。
- 真实调试器支持:支持 lldb、delve、debugpy 三种主流调试器。Agent 可以 attach 到正在运行的本机进程、步进到具体函数帧、读取局部变量——大多数 Agent 方案至今还停留在「在代码里加 print 语句」阶段。
- 子 Agent 任务并行:
task 命令可以将一个复杂任务拆分给多个独立的子 Agent,每个子 Agent 在隔离的工作区运行,最终结果通过 schema 验证后返回主 Agent。这意味着你可以同时让两个子 Agent 分别处理「组件导出分析」和「路由导出分析」,主 Agent 负责合并结果。
task 命令可以将一个复杂任务拆分给多个独立的子 Agent,每个子 Agent 在隔离的工作区运行,最终结果通过 schema 验证后返回主 Agent。这意味着你可以同时让两个子 Agent 分别处理「组件导出分析」和「路由导出分析」,主 Agent 负责合并结果。⭐ 6,119 | 📈 +320 today(数据截至 2026-05-22)
从增长趋势来看,OMP 在最近一周内从约 5,800 颗星增长到 6,100+,日均增长在 200-400 颗之间,增速相当可观。考虑到这是一个相对小众的 TypeScript/Rust 项目(非 Python/JS 主流),这个数据说明社区对「终端 AI 编程 Agent + IDE 集成」方向的认可度正在提升。
与 OMP 最接近的竞品是 Aider(Python,约 10k stars)和 Claude Code(Anthropic 官方 CLI)。Aider 的优势在于生态成熟、支持更多版本控制系统,但其底层没有 LSP 集成,编辑大型代码库时容易出现上下文丢失问题。Claude Code 功能强大,但它是闭源的深度绑定 Anthropic 生态,OMP 则做到了「任意模型 + 本地工具链」的开放组合。
另一个值得对比的是 Cursor Agent(在 Cursor IDE 内运行),它和 OMP 都追求「Agent 知道 IDE 在看什么」,但 Cursor Agent 是 GUI 环境,OMP 是纯 TTY 环境。GUI 的优势是可视化,终端的优势是脚本化和自动化——两者定位不同。
Issue #352 — MCP Tool Discovery Search(18 comments)
这是 OMP 社区最热门的讨论之一,核心议题是「如何让 Agent 在运行时动态发现 MCP 服务器暴露的新工具」。作者采用了类似 Codex search_tool_bm25 的设计,为 MCP 工具建立索引,让 Agent 在每次工具调用前能够搜索到相关工具而不是遗漏。讨论中有开发者指出,这种动态发现机制避免了「工具列表写死在代码里」导致新工具无法被感知的问题。有用户评价:「这让 OMP 的 MCP 集成从玩具变成了生产级工具」。
Issue #811 — Add Pi Package Compatibility Layer(13 comments)
这是一个功能提案,旨在为 OMP 添加对 Pi(OMP 的上游项目)插件包的兼容层。提案包含一个新的 omp pi 命令组,用于处理 Pi 包解析、安装和路径桥接。讨论中社区对「如何在不破坏 OMP 自身 API 的前提下兼容 Pi 生态」提出了多种方案,最终作者选择了分层兼容的方案——通过 shim 层隔离差异,让两个生态的工具可以互换使用。
Issue #971 — Stable metadata user_id per session(1 comment, closed)
这个 issue 修复了一个影响用户账单准确性的 bug:由于 Agent 没有设置 metadata.user_id,Anthropic 后端为每次请求生成了不同的随机 ID,导致用户无法正确追踪会话数和 API 消费。虽然技术细节偏内部,但它说明 OMP 在与上游 AI 提供商交互时会深入到 SDK 的元数据层面,这种精细程度在同类工具中并不常见。
⚠️ 问题一:Windows 下部分终端不显示通知
OMP 的 completion.notify 功能依赖终端模拟器的 OSC 9/99 协议支持。在 macOS 下默认 silent fail(文档声称默认开启但实际静默失败),Windows 的部分终端(如 Windows Terminal)需要额外配置通知权限。解决方案是使用 OMP 的 alerter-based 通知模式(Issue #1028 有详细讨论),或者用 tmux 的通知转发。
⚠️ 问题二:子 Agent 的 IRC 协调握手有时单边失败
OMP 的子 Agent 使用 IRC 协议进行内部协调,理论上每个子 Agent 需要双向握手才能建立连接。但实际测试中发现,如果父 Agent 的 IRC 端口没有正确开放,子 Agent 会超时并报错「connection refused」。遇到这个问题的用户建议先跑 omp doctor 检查网络配置。
💡 提示:首次使用建议跑一遍 omp doctor
这个命令会检查所有依赖(LSP 服务器、调试器适配器、MCP 工具可用性等),并在发现问题时给出具体的修复建议。对于从 Pi 迁移过来的用户,这个检查能发现不少兼容性问题。
oh-my-pi 是一个面向专业开发者的 AI 编程 Agent,它的核心价值在于「把 IDE 的能力下沉到终端」——LSP 代码跳转、真实调试器、并行子 Agent、时间旅行流规则,这些在大多数 AI 编程工具里还是「计划中」的功能,OMP 已经开箱即用。它的学习曲线比 Aider 稍高(需要理解 LSP/DAP 等概念),但换来的是更可靠的代码编辑体验。如果你追求的是「终端里干活、IDE 级别精度」,OMP 值得尝试。
我个人最喜欢的功能是 hashline 编辑 + LSP 重命名组合——它把「改对了」变成默认行为,而不是靠模型反复重试。对于处理大型代码库或者做大规模重构的场景,这个优势会非常明显。
🔗 更多 GitHub 热门开源项目:Mirage — AI 文件系统工具 · Glass — 反编译工具