@yibie: oh-my-pi:有人把 Pi 改成了最强的终端 Coding Agent --- Pi 是 Armin Ronacher(Flask 作者)做的终端 coding agent。有人 fork 了它,做了 oh-my-pi。4,796 星…

X AI KOLs Timeline 工具

摘要

oh-my-pi 是一个基于 Pi 的增强版终端编码代理,支持哈希锚编辑、双引擎、LSP 集成等特性,开源且高度可定制。

oh-my-pi:有人把 Pi 改成了最强的终端 Coding Agent --- Pi 是 Armin Ronacher(Flask 作者)做的终端 coding agent。有人 fork 了它,做了 oh-my-pi。4,796 星。 加了什么: 1. Hash-anchored edits——用内容哈希定位代码块,精准编辑 2. Python + Bun 双引擎——两个内核互调 agent 工具,读 CSV 画图不出同一个 cell 3. LSP 集成——Agent 能做语义级 rename,不是简单 grep 4. 浏览器 + 子 Agent——并行处理任务 --- Reddit 评价:「extremely hackable with sensible defaults.」 另一个用户:「the first coding agent that really empowered me to morph it to fit the way my brain works.」 和 Claude Code/Codex 思路不同。后者开箱即用,配置有限。oh-my-pi 给你四个原语,剩下的自己搭。 对本地模型(MLX、GGUF)友好。想自己折腾 Agent 工具链的,这是目前最 open 的选择。 http://github.com/can1357/oh-my-pi… 来源:oh-my-pi GitHub / Reddit / http://birkey.co #Pi #CodingAgent #Terminal #开源
查看原文
查看缓存全文

缓存时间: 2026/05/20 02:24

oh-my-pi:有人把 Pi 改成了最强的终端 Coding Agent


Pi 是 Armin Ronacher(Flask 作者)做的终端 coding agent。有人 fork 了它,做了 oh-my-pi。4,796 星。

加了什么:

  1. Hash-anchored edits——用内容哈希定位代码块,精准编辑
  2. Python + Bun 双引擎——两个内核互调 agent 工具,读 CSV 画图不出同一个 cell
  3. LSP 集成——Agent 能做语义级 rename,不是简单 grep
  4. 浏览器 + 子 Agent——并行处理任务

Reddit 评价:「extremely hackable with sensible defaults.」

另一个用户:「the first coding agent that really empowered me to morph it to fit the way my brain works.」

和 Claude Code/Codex 思路不同。后者开箱即用,配置有限。oh-my-pi 给你四个原语,剩下的自己搭。

对本地模型(MLX、GGUF)友好。想自己折腾 Agent 工具链的,这是目前最 open 的选择。

http://github.com/can1357/oh-my-pi…

来源:oh-my-pi GitHub / Reddit / http://birkey.co

#Pi #CodingAgent #Terminal #开源


can1357/oh-my-pi

Source: https://github.com/can1357/oh-my-pi

omp

A coding agent with the IDE wired in. omp.sh

npm version Changelog CI License TypeScript Rust Bun Discord

Fork of Pi by @mariozechner

The most capable agent surface that ships. Continuously tuned by real-world use — complete out of the box, open all the way down.

40+ providers · 32 built-in tools · 13 lsp ops · 27 dap ops · ~27k lines of Rust core.

Install

macOS · Linux

curl -fsSL https://omp.sh/install | sh

Bun (recommended)

bun install -g @oh-my-pi/pi-coding-agent

Windows (PowerShell)

irm https://omp.sh/install.ps1 | iex

Pinned versions (mise)

mise use -g github:can1357/oh-my-pi

macOS · Linux · Windows · bun ≥ 1.3.14

Every tool, benchmaxxed.

Edits that land on the first attempt. Reads that summarize files instead of dumping their content. Searches that return instantly. Pick any model — omp will get it right.

modelmetricwhat
Grok Code Fast 16.7% → 68.3%Tenfold lift the moment the edit format stops eating the model alive.
Gemini 3 Flash+5 ppOver str_replace — beats Google’s own best attempt at the format.
Grok 4 Fast−61% tokensOutput collapses once the retry loop on bad diffs disappears.
MiniMax2.1×Pass rate more than doubles. Same weights, same prompt.
  • read : summarized snippets · ideal defaults · selector hit rate
  • search : fastest in the west
  • lsp : everything your IDE knows, the agent knows
  • prompts : adjusted relentlessly for each model

Read the full post ↗

The Pi you love, with batteries included.

Originally built on Mario Zechner’s wonderful Pi, omp adds everything you’re missing.

01 · Code execution w/ tool-calling

Most harnesses give the agent a Python sandbox and call it done. Ours runs persistent Python and a Bun worker, and either kernel can call back into the agent’s own tools — read, search, task — over a loopback bridge. The agent loads a CSV with tool.read from inside Python, charts it from JavaScript, and never leaves the cell.

omp TUI: a single eval session with [1/2] pandas describe (Python) printing a real DataFrame.describe() table, followed by [2/2] top scorer (JavaScript) running a reduce. Footer: ‘Both kernels ran in one session.’

02 · LSP wired into every write

Ask for a rename and you get a rename. The call goes through workspace/willRenameFiles, so re-exports, barrel files, and aliased imports update before the file moves. Everything your IDE knows, the agent knows.

omp TUI: LSP references returns five hits across three files for the symbol formatBytes, then LSP rename applies the change with edits to format.ts/report.ts/cli.ts, then a Search formatBytes 0 matches confirmation. Final line: ‘Rename complete. Five edits across three files…’.

03 · Drives a real debugger

A C binary segfaults: the agent attaches lldb, steps to the bad pointer, reads the frame. A Go service hangs: it attaches dlv and walks the goroutines. A Python process is wedged: debugpy, pause, inspect, evaluate. Most agents are still sprinkling print statements.

omp TUI: a live lldb-dap session against a native binary at /tmp/omp-native/demo. Adapter=lldb-dap, Status=stopped, Frame=xorshift32, Instruction pointer 0x10000055C, Location demo.c:6:10. Debug scopes and Debug variables cards show locals (x = 57351) and the agent confirms the math: x went from 7 → 57351 (= 7 ^ (7<<13)).

Watch the capture ↗

04 · Time-traveling stream rules

Your rules sit dormant until the model goes off-script. A regex match aborts the stream mid-token, injects the rule as a system reminder, and retries from the same point. You get course-correction without paying context tax on every turn. Injections survive compaction, so the fix sticks.

omp TUI: agent reading src.rs and about to write Box::leak when the request aborts (red Error: Request was aborted), an amber ⚠ Injecting rule: box-leak card injects the rule body Don't reach for Box::leak in production code paths, and the agent then course-corrects by proposing Arc<str> and asking the user to confirm.

Watch the capture ↗

05 · First-class subagents

Split a job across workers and get typed results back. task fans out into isolated worktrees, each worker runs its own tool surface, and the final yield is a schema-validated object the parent reads directly. No prose to parse, no merge conflicts between siblings, no orphaned edits.

omp TUI showing task spawning two subagents ComponentsExports and RoutesExports, the constraints block requiring an IRC DM between peers, the per-subagent status cards with cost and duration, and a final Findings section listing both exports plus an honest ‘IRC coordination note’ about a one-sided handshake.

Watch the capture ↗

06 · Read a pdf on arxiv, why not?

web_search chains fourteen ranked providers and hands whatever URLs it finds straight to read. Arxiv PDFs, GitHub pages, Stack Overflow threads come back as structured markdown with anchors intact — the same tool surface you use on local files. Cite, follow, quote, never lose where you came from.

omp TUI: web_search returns 10 ranked Perplexity sources for inference-time compute scaling, the agent picks an arxiv paper, calls read https://arxiv.org/pdf/2604.10739v1, and summarizes the paper’s headline result with real numbers.

Watch the capture ↗

07 · Unapologetically native. Even on Windows.

Other agents shell out to rg, grep, find, and bash. On many machines those binaries don’t exist, and on the ones where they do, every call costs a fork-exec round-trip. omp links the real implementations into the process. ripgrep, glob, find: in-process. brush is the bash, with sessions that survive across calls. The same omp binary runs on macOS, Linux, and Windows — no WSL bridge.

08 · Code review with priorities and a verdict

Get a clear verdict on whether the change ships, with every issue ranked P0 through P3 and scored for confidence. /review spawns dedicated reviewer subagents that sweep branches, single commits, or uncommitted work in parallel. You tackle what blocks release first; nothing important hides in a wall of prose.

09 · Hashline: edit by content hash

Perfect edits, fewer tokens. The model points at anchors instead of retyping the lines it wants to change, so whitespace battles and string-not-found loops just stop happening. Edit a stale file and the anchors diverge — we reject the patch before it corrupts anything. Grok 4 Fast spends 61% fewer output tokens on the same work.

10 · GitHub is just another filesystem

Other harnesses bolt on gh_issue_view, gh_pr_view, gh_search — each with its own parameters the agent has to learn and you have to debug. We skipped that. read already handles paths; PRs are paths. One interface to teach the model, one surface to keep correct.

11 · Hindsight: memory the agent curates

The agent remembers your codebase between sessions. It writes facts mid-run with retain, pulls them back with recall, and compresses each session into a mental model that loads on the first turn of the next one. Project-scoped by default, so what it learns about this repo stays with this repo.

12 · ACP: editor-drivable agent

Run omp inside Zed and you get the same agent you drive from the terminal — reading the buffer you’re actually looking at, writing through the editor’s save path, spawning shells in the editor’s terminal. Destructive tools pause for a permission prompt you can answer once and forget. No bridge, no plugin, no second brain to keep in sync.

13 · Inherits what your other tools already wrote

Every other agent ships an importer and expects you to convert. omp reads the eight formats already on disk in their native shape — Cursor MDC, Cline .clinerules, Codex AGENTS.md, Copilot applyTo, and the rest. No migration script, no YAML-to-TOML port, no “supported subset” footnotes. The config your team wrote last quarter still works tonight.

14 · omp commit: atomic splits, validated messages

omp reads the working tree through git-overview, git-file-diff, and git-hunk, then splits unrelated changes into atomic commits ordered by their dependencies. Cycles are rejected before anything is written. Source files score above tests, docs, and configs, so the headline commit is the one that matters. Lock files are excluded from analysis entirely.

15 · Read PRs. Walk skills. Pull JSON out of subagents.

Ten internal schemes — pr://, issue://, agent://, skill://, rule://, and the rest — resolve transparently inside every FS-shaped tool the agent already calls. read pr://1428 returns the same shape as read src/foo.ts. search walks a diff like a directory. agent://<id>/findings.0.path pulls a field out of a subagent’s output by path.

omp TUI reading pr://can1357/oh-my-pi/1063 and then /diff/1, showing hunk headers, added lines, and a [MODIFIED] (+12 -0) summary.

16 · Conflict resolution, made easy.

Each merge conflict becomes one URL. The agent writes @theirs, @ours, or @base to conflict://N and the file resolves cleanly. Bulk form: conflict://*.

omp TUI: ✓ Read src/session.ts (⚠ 1 conflict), then ✓ Write conflict://1 · 1 line with content @theirs, then a confirmation ‘Resolved.’

Watch the capture ↗

17 · Preview, then accept.

ast_edit returns a (proposed) card with the replacement count. The change is staged. The agent calls resolve with a reason; the TUI turns it into an Accept card and the disk move happens — atomic, all or nothing.

omp TUI: ✓ AST Edit: console.log($X) (proposed) 3 replacements · 1 file, then ✓ Accept: 3 replacements in 1 file (AST Edit), followed by ‘Applied 3 replacements in src/auth.ts.’

Watch the capture ↗

18 · Drives a real browser. Or your Slack?

Stealth’s on by default, so pages see a normal user instead of a headless bot. The same API drives any Electron app in place — point it at Slack and the agent reads your DMs the way it reads the web.

omp TUI driving the browser tool against DuckDuckGo

Whatever the task needs, it’s already in the box.

32 tools live in the same namespace as read and bash. Pin the active set with --tools read,edit,bash,… and the rest stay hidden but indexed — search_tool_bm25 pulls them back in mid-session when tools.discoveryMode says so.

Files & search

  • read — files, dirs, archives, SQLite, PDFs, notebooks, URLs, and internal :// schemes through one path.
  • write — create or overwrite a file, archive entry, or SQLite row.
  • edit — hashline patches with content-hash anchors and stale-anchor recovery.
  • ast_edit — structural rewrites previewed before apply, via ast-grep.
  • ast_grep — structural code queries over 50+ tree-sitter grammars.
  • search — regex over files, globs, and internal URLs.
  • find — glob-based path lookup; reach for search when you need content matches.

Runtime

  • bash — workspace shell, with optional PTY or background-job dispatch.
  • eval — persistent Python and JavaScript cells with shared prelude and tool re-entry.
  • recipe — invoke a target from a detected task runner — bun, just, make, cargo.
  • ssh — one remote command against a configured host.

Code intelligence

  • lsp — diagnostics, navigation, symbols, renames, code actions, raw requests.
  • debug — drive a DAP session — breakpoints, stepping, threads, stack, variables.

Coordination

  • task — fan out subagents in parallel, optionally workspace-isolated.
  • irc — short prose between live agents in this process.
  • todo_write — ordered mutations over the session todo list with phase tracking.
  • job — wait on or cancel background jobs.
  • ask — structured follow-up questions for interactive runs.

Outside the box

  • browser — Puppeteer tabs over headless Chromium or CDP-attached apps.
  • web_search — one query across configured providers, returning answer plus citations.
  • github — GitHub CLI ops — repo, PR, issues, code search, Actions run-watch.
  • generate_image — generate or edit raster images via Gemini image models.
  • inspect_image — vision-model analysis of a local image file.
  • render_mermaid — Mermaid source to terminal-friendly ASCII or PNG.

Memory & state

  • checkpoint — mark conversation state for a later collapse-and-report.
  • rewind — prune exploratory context, keep a concise report.
  • retain — queue durable facts into the active Hindsight bank.
  • recall — search the Hindsight bank for raw memories.
  • reflect — ask Hindsight to synthesize an answer over the bank.

Misc

  • calc — deterministic arithmetic — no model in the loop.
  • resolve — apply or discard a queued preview action.
  • search_tool_bm25 — BM25 over the hidden tool index; activates top matches mid-session.

Setting-gated, off by default: github, calc, inspect_image, render_mermaid, checkpoint, rewind, search_tool_bm25, retain, recall, reflect. Flip them on once, scoped per project.

Full reference →

Forty-plus providers, hundreds of models, one /model away.

Roles route work by intent. default for normal turns. smol for cheap subagent fan-out. slow for deep reasoning. plan for plan mode. commit for changelogs. Override at launch with --smol, --slow, or --plan; cycle through the configured models for the active role with Ctrl+P. Swap the active model mid-session with the /model slash command.

Auth tags below: oauth signs in with your provider account, plan routes through a coding-plan subscription, local runs against a local server with the key optional.

Frontier APIs

Direct APIs and gateways. Mix providers per role.

Anthropic oauth · OpenAI · OpenAI Codex oauth · Google Gemini · Google Antigravity oauth · xAI · Mistral · Groq · Cerebras · Fireworks · Together · Hugging Face · NVIDIA · OpenRouter · Synthetic · Vercel AI Gateway · Cloudflare AI Gateway · Perplexity oauth

Coding plans

Subscription-routed. /login attaches the session.

Cursor oauth · GitHub Copilot oauth · GitLab Duo · Kimi Code plan · Moonshot · MiniMax Coding Plan plan · MiniMax Coding Plan CN plan · Alibaba Coding Plan plan · Qwen Portal · Z.AI / GLM Coding Plan plan · Xiaomi MiMo · Qianfan · NanoGPT · Venice · Kilo · ZenMux · OpenCode Go · OpenCode Zen

Run it yourself

OpenAI-compatible /v1/models. Local instances skip the key.

Ollama local · Ollama Cloud · LM Studio local · llama.cpp local · vLLM local · LiteLLM

Four knobs that make routing useful

  • Custom providers — Declare anything that speaks openai-completions, openai-responses, openai-codex-responses, azure-openai-responses, anthropic-messages, google-generative-ai, or google-vertex in ~/.omp/agent/models.yml.
  • Fallback chains — Per-role chains under retry.fallbackChains. When the primary throws 429s or hits a quota wall, the next entry takes the rest of the turn — restored on cooldown.
  • Path-scoped roles — Nest paths: under modelRoles to pin a heavier default on one repo without touching the global config. Closest path wins.
  • Round-robin credentials — Stack API keys per provider and the runtime rotates with session affinity and per-credential backoff. Useful when one key would burn its quota by lunch.

Full provider & routing reference at omp.sh/docs/providers.

Fourteen backends. One tool the agent already knows.

web_search is built in, not bolted on. auto walks a fourteen-provider chain; pin one by name if you already pay for it. Behind every hit, site-aware extraction turns GitHub, registries, arXiv, Stack Overflow, and docs into structured markdown — anchors and link targets survive.

Search providers

Fourteen backends. Pin one, or let auto walk the chain in order.

providerauth
autochain
exaEXA_API_KEY (or mcp)
braveBRAVE_API_KEY
jinaJINA_API_KEY
kimiMOONSHOT_API_KEY
zaiZAI_API_KEY
anthropicoauth
perplexityPERPLEXITY_API_KEY
geminioauth
codexoauth
tavilyTAVILY_API_KEY
parallelPARALLEL_API_KEY
kagiKAGI_API_KEY
syntheticSYNTHETIC_API_KEY
searxngself-hosted

Specialised handlers

The agent gets structured content, not stripped HTML.

  • Code hosts — github, gitlab
  • Package registries — npm, PyPI, crates.io, Hex, Hackage, NuGet, Maven, RubyGems, Packagist, pub.dev, Go packages
  • Research sources — arxiv, semantic scholar
  • Forums — stack overflow, reddit, hn
  • Docs — mdn, readthedocs, docs.rs

Pages convert to markdown with link structure intact. The agent can cite, follow, and quote without losing anchors.

Security databases

Vuln lookups answer with vendor data, not blog summaries.

  • NVD — national vulnerability database
  • OSV — open source vuln feed
  • CISA KEV — known exploited vulns

web_search reference ↗

Roughly ~27,000 lines of Rust, doing the work other harnesses shell out for.

Three crates, one platform-tagged N-API addon. Search, shell, AST, highlight, PTY, image decode, BPE counting — all in-process on the libuv pool. No fork/exec on the hot path.

  • Crates: pi-natives, pi-shell, pi-ast
  • Platforms: linux-x64, linux-arm64, darwin-x64, darwin-arm64, win32-x64

The table below is a per-module breakdown that intentionally omits glue and tests.

ModuleWhat it doesPowered by~LoC
shellEmbedded bash · persistent sessions · timeout/abort · custom builtinsbrush-shell (vendored)3,700
grepRegex search · parallel/sequential · glob & type filters · fuzzy findgrep-regex · grep-searcher1,900
keysKitty keyboard protocol with xterm fallback · PHF perfect-hash lookupphf1,490
textANSI-aware width · truncation · column slicing · SGR-preserving wrapunicode-width · segmentation1,450
summarizeTree-sitter structural source summaries with elision controlstree-sitter · ast-grep-core1,040
astast-grep pattern matching and structural rewritesast-grep-core1,000
fs_cacheMtime-keyed file cache shared by read · grep · lspin-tree840
highlightSyntax highlighting · 11 semantic categories · 30+ aliasessyntect470
ptyNative PTY allocation for sudo · ssh interactive promptsportable-pty455
globDiscovery with glob · type filters · mtime sort · gitignore respectignore · globset410
workspaceWorkspace walker with gitignore + AGENTS.md discovery in one passignore · git2385
appearanceMode 2031 + native macOS dark/light via CoreFoundation FFIcore-foundation270
powermacOS power-assertion API for idle/system/display-sleep preventionIOKit FFI270
taskBlocking work on libuv thread pool · cancellation · timeout · profilingtokio · napi260
fdFilesystem walker for find-tool replacementignore250
isoWorkspace isolation shim · apfs · btrfs · zfs · reflink · overlayfs · projfs · rcopypi-iso (PAL)245
profCircular buffer profiler with folded-stack and SVG flamegraph outputinferno240
psCross-platform process-tree kill and descendant listinglibc · libproc · CreateToolhelp32Snapshot195
imageDecode/encode PNG · JPEG · WebP · GIF · resize with 5 filtersimage190
clipboardText copy and image read from system clipboard · no xclip/pbcopyarboard80
tokensO200k / Cl100k BPE token counting · both tables embeddedtiktoken-rs65
htmlHTML to Markdown with optional content cleaninghtml-to-markdown-rs50

Four entry points: interactive, one-shot, RPC, and ACP.

Same engine, four wrappers. omp runs the TUI. omp -p answers a single prompt and exits. The Node SDK embeds the session in your process. omp --mode rpc and omp acp hand the wheel to another program over stdio.

Interactive — when in doubt, the agent asks

The TUI is the default surface. Tool calls render as cards, edits preview before they land, and ambiguity routes through the ask tool — a structured option picker the agent can call mid-turn. The keyboard handles the rest.

The same prompt cards surface over ACP, so editors get the picker without writing one.

omp TUI: the ask tool renders an option picker with three choices, a (Recommended) badge on the first, and ‘up/down navigate · enter select · esc cancel’ footer.

SDK — embed in Node

@oh-my-pi/pi-coding-agent

Node and TypeScript hosts pull the engine in directly. The package exposes ModelRegistry, SessionManager, createAgentSession, and discoverAuthStorage; the session emits typed events you subscribe to.

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 — drive over stdio

omp --mode rpc

For non-Node embedders, or when you want process isolation. NDJSON commands in, response and event frames out. --mode rpc-ui adds tool cards, selectors, and dialogs as extension_ui_request frames the host must answer.

$ omp --mode rpc --no-session
> {"id":"r1","type":"prompt","message":"list .ts files"}
< {"id":"r1","type":"response", ...}
> {"id":"r2","type":"set_model","provider":"anthropic","modelId":"sonnet-4.5"}
> {"id":"r3","type":"abort"}

ACP — speak to editors

omp acp

The Agent Client Protocol over JSON-RPC. When the editor advertises capabilities, tool I/O routes through it and writes are gated by session/request_permission.

omp toolACP route
bashterminal/create + terminal/output
readfs/read_text_file
writefs/write_text_file
edit, ast_edit, write, bashsession/request_permission

Full reference: omp.sh/docs/sdk.

A harness worth keeping is one you don’t outgrow.

Pick it up at omp.sh.

omp is a fork of Pi by Mario Zechner, rewritten as a coding-first surface: sessions, subagents, slash commands, extensions — all TypeScript, all MIT, all on GitHub. Shape it from config, hook it from outside, or read the source when you need to.

Primitives

An extension is a TypeScript module. Same tool API, same slash-command registry, same hotkey table, same TUI primitives the built-ins use. Nothing is reserved.

Discovery

On first run omp inherits whatever is already on disk: rules, skills, and MCP servers from .claude, .cursor, .windsurf, .gemini, .codex, .cline, .github/copilot, and .vscode. No migration script.

Extensibility

Ask omp to write the piece you’re missing, then /reload-plugins. Keep it local, ship it in a marketplace, or publish it to npm.

Philosophy

omp is a fork of pi-mono by Mario Zechner, extended with a batteries-included coding workflow.

Key ideas:

  • Keep interactive terminal-first UX for real coding work
  • Include practical built-ins (tools, sessions, branching, subagents, extensibility)
  • Make advanced behavior configurable rather than hidden

Development

Debug Command

/debug opens tools for debugging, reporting, and profiling.

For architecture and contribution guidelines, see packages/coding-agent/DEVELOPMENT.md.


Monorepo Packages

PackageDescription
@oh-my-pi/pi-aiMulti-provider LLM client with streaming and model/provider integration
@oh-my-pi/pi-agent-coreAgent runtime with tool calling and state management
@oh-my-pi/pi-coding-agentInteractive coding agent CLI and SDK
@oh-my-pi/pi-tuiTerminal UI library with differential rendering
@oh-my-pi/pi-nativesN-API bindings for grep, shell, image, text, syntax highlighting, and more
@oh-my-pi/omp-statsLocal observability dashboard for AI usage statistics
@oh-my-pi/pi-utilsShared utilities (logging, streams, dirs/env/process helpers)
@oh-my-pi/swarm-extensionSwarm orchestration extension package

Rust Crates

CrateDescription
pi-nativesCore Rust native addon (N-API cdylib) used by @oh-my-pi/pi-natives; aggregates the crates below
pi-shellEmbedded shell / PTY / process management split out of pi-natives (wraps brush-*)
pi-asttree-sitter-based code summarizer and AST utilities (50+ language grammars)
pi-isoTask isolation backend resolver: APFS clones, btrfs/zfs reflinks, overlayfs, projfs, rcopy
brush-core-vendoredVendored fork of brush-shell for embedded bash execution
brush-builtins-vendoredVendored bash builtins (cd, echo, test, printf, read, export, etc.)

License

MIT. See LICENSE.

© 2025 Mario Zechner
© 2025-2026 Can Bölük

made for terminals that stay open

相似文章

@WWTLitee: 现在很多 coding agent 一碰编辑器、浏览器、LSP 这些真实工程环境,很容易卡住 oh-my-pi 走的是另一条路。它不满足于让 agent 待在终端里聊天,直接把哈希锚点编辑、LSP、Python、浏览器、subagents…

X AI KOLs Timeline

oh-my-pi 是一个开源的 coding agent,将哈希锚点编辑、LSP、Python、浏览器、subagents 等多种能力集成到同一工作台中,提供开箱即用的完整 IDE 接入,目前已有 5.8k stars。

can1357/oh-my-pi

GitHub Trending (daily)

Oh My Pi 是一个基于 Pi 构建的开源编码代理,提供集成的 IDE,支持 40 多个提供商,内置工具,以及在多种模型上的显著性能提升。

@GitHub_Daily: 今天在 GitHub Trending 榜上看到 oh-my-pi 这个开源编码 Agent,把 IDE 的核心能力直接搬进了终端,挺有意思的。 内置 32 个工具,可对接编辑器的语言服务和调试器,重命名、跳转引用、断点调试这些操作,AI…

X AI KOLs Timeline

oh-my-pi 是一个开源的编码 Agent,将 IDE 的核心能力(如语言服务、调试器)集成到终端中,内置 32 个工具,支持多子智能体并行处理和 40 多家模型供应商。