pi là gì? Coding agent terminal cho developer không muốn bị lock-in
Nếu bạn đã dùng hoặc nghe nhiều về Claude Code, cách dễ nhất để hình dung pi là thế này:
Claude Code giống một căn hộ đã có đủ nội thất. Mở ra là dùng được ngay.
pigiống một xưởng đồ nghề trong terminal. Ít đồ built-in hơn, nhưng bạn có thể tự lắp workflow theo ý mình.
Cả hai đều là coding agent: bạn chat với AI, nó đọc file, sửa code, chạy lệnh, search codebase, rồi lặp lại cho đến khi hoàn thành task.
Nhưng triết lý rất khác nhau.
Claude Code ưu tiên trải nghiệm đóng gói, ổn định, ít phải nghĩ về cấu hình. pi ưu tiên quyền kiểm soát: chọn provider nào cũng được, sửa workflow bằng extension, quản lý context sâu hơn, và thậm chí fork một session thành nhiều nhánh để thử nhiều hướng giải quyết.
Bài này giải thích pi thật dễ hiểu, so sánh với Claude Code, OpenCode và Cursor Agent để bạn biết nó hợp với ai, mạnh ở đâu, và còn lấn cấn chỗ nào.
Nói ngắn gọn: pi là gì?
pi là một terminal coding agent harness mã nguồn mở, viết bằng TypeScript.
Nói đơn giản hơn: pi là một công cụ chạy trong terminal, cho phép bạn điều khiển AI coding agent bằng ngôn ngữ tự nhiên.
Bạn có thể bảo nó:
Đọc module auth hiện tại, tìm vì sao test expired token fail,
sửa tối thiểu, rồi chạy đúng test liên quan.
Sau đó agent có thể:
- đọc file
- search codebase
- sửa code
- tạo file mới
- chạy bash command
- đọc lỗi test/build
- tiếp tục sửa cho đến khi task xong
Về mặt trải nghiệm, pi nằm cùng nhóm với Claude Code, OpenCode, Cursor Agent hoặc GitHub Copilot coding agent. Nhưng pi chạy terminal-first và được thiết kế như một harness có thể mở rộng, không phải một sản phẩm đóng kín.
Từ “harness” quan trọng ở đây.
Một app coding agent thường cho bạn một workflow có sẵn. Một harness cho bạn cái khung để tự định nghĩa workflow: model nào, tool nào, context nào, command nào, extension nào, cách compact ra sao, UI hiển thị thế nào.
Vì sao pi đáng chú ý nếu bạn đã biết Claude Code?
Claude Code nổi tiếng vì dùng rất sướng: gõ task, agent đọc repo, sửa code, chạy test. Với nhiều developer, Claude Code là chuẩn mực hiện tại của coding agent trong terminal.
pi không cố copy Claude Code theo kiểu “làm y chang nhưng open-source”. Nó chọn hướng khác:
- Claude Code: trải nghiệm trọn gói, phụ thuộc Anthropic, ít phải cấu hình.
pi: open-source, provider linh hoạt, core tối giản, tùy biến mạnh.- OpenCode: cũng open-source và multi-provider, nhưng định hướng gần hơn với một AI coding assistant hoàn chỉnh.
- Cursor Agent: mạnh trong IDE, phù hợp người sống trong editor hơn terminal.
Nếu dùng hình ảnh đời thường:
| Công cụ | Hình dung đơn giản |
|---|---|
| Claude Code | Căn hộ đầy đủ nội thất, đẹp, vào ở ngay |
| Cursor Agent | Coding agent sống trong IDE |
| OpenCode | Bộ toolkit open-source cho AI coding workflow thực tế |
pi | Xưởng terminal để tự lắp agent theo ý mình |
Vì vậy, pi đáng chú ý không phải vì nó “dễ hơn Claude Code”. Thật ra với người mới, Claude Code dễ hơn.
pi đáng chú ý vì nó cho developer nhiều quyền kiểm soát hơn.
Mental model: agent app vs agent harness
Để hiểu pi, đừng chỉ hỏi: “Nó có feature gì?”
Hãy hỏi: “Nó cho mình thay đổi phần nào của agent?”
Một coding agent có nhiều lớp:
User prompt
-> system prompt
-> context history
-> model/provider
-> tools
-> tool results
-> compaction
-> retry
-> UI
-> session storage
Ở nhiều tool, các lớp này được đóng gói sẵn. Bạn có thể chỉnh một số setting, nhưng phần lõi do vendor quyết định.
pi cố tình mở nhiều lớp hơn:
- muốn thêm provider: thêm qua
models.jsonhoặc extension - muốn đổi system prompt: dùng
SYSTEM.md - muốn thêm command: viết extension
- muốn thêm tool: viết extension
- muốn compact context kiểu riêng: viết extension
- muốn đóng gói workflow cho team: tạo package
Điểm này khiến pi hơi giống Neovim hoặc Arch Linux trong thế giới coding agent. Ban đầu có thể không “ready-made” bằng tool khác, nhưng nếu bạn thích tự control workflow, nó rất hấp dẫn.
pi làm được gì trong terminal?
Ở mức cơ bản, pi làm những việc bạn kỳ vọng ở một coding agent:
| Khả năng | Ý nghĩa thực tế |
|---|---|
| Đọc file | Agent xem code hiện tại trước khi sửa |
| Search codebase | Tìm function, config, endpoint, pattern đang dùng |
| Sửa file | Apply thay đổi vào source code |
| Ghi file mới | Tạo docs, tests, scripts, config |
| Chạy bash | Run test, build, lint, git commands |
| Chọn model | Đổi model theo task hoặc chi phí |
| Lưu session | Quay lại session cũ hoặc export/share |
Ví dụ workflow bình thường:
Bạn: Fix lỗi build trang docs/minimax.
pi: Đọc lỗi build, grep file liên quan, mở content.mdx,
phát hiện MDX parse lỗi do dấu {}, sửa escape,
chạy npm run build lại.
Về mặt này, người dùng Claude Code sẽ thấy quen. Điểm khác nằm ở chỗ pi cho bạn can thiệp sâu hơn vào cách agent vận hành.
Điểm mạnh 1: không bị lock-in provider
Đây là điểm mạnh dễ hiểu nhất của pi.
Claude Code gắn với Anthropic. Bạn dùng Claude Sonnet/Opus/Haiku. Đây là các model rất mạnh, nhưng bạn bị khóa trong một ecosystem.
pi hỗ trợ rất nhiều provider:
- Anthropic
- OpenAI
- Google Gemini
- Azure
- AWS Bedrock
- Mistral
- Groq
- Cerebras
- xAI
- Hugging Face
- Kimi For Coding
- MiniMax
- OpenRouter
- Ollama
- DeepSeek
- local models
- custom OpenAI-compatible endpoint
Ý nghĩa thực tế:
- task khó: dùng Claude hoặc model mạnh hơn
- task đơn giản: dùng model rẻ hơn như DeepSeek/MiniMax
- cần local/privacy: dùng Ollama hoặc model nội bộ
- muốn tránh phụ thuộc một vendor: cấu hình nhiều provider
Trong pi, bạn có thể đổi model trong session bằng /model hoặc phím tắt. Có thể cycle qua model yêu thích bằng Ctrl+P.
Đây là lợi thế lớn nếu bạn dùng agent nhiều. Vì chi phí token cộng dồn rất nhanh. Không phải task nào cũng cần model đắt nhất.
Điểm mạnh 2: core tối giản, phần còn lại là extension
Nhiều coding agent built-in rất nhiều thứ: plan mode, subagent, MCP, todo list, permission popup, background bash, web search, notebook support.
pi chọn hướng khác: primitives, không phải features.
Core của pi cố tình bỏ qua một số tính năng phổ biến:
| Thứ không built-in | Cách nghĩ của pi |
|---|---|
| MCP | Có thể build extension hoặc dùng CLI tools với README |
| Sub-agent | Có thể spawn pi instances qua tmux hoặc extension |
| Plan mode | Viết plan ra file hoặc tự build command |
| Built-in todo | Dùng TODO.md hoặc extension |
| Permission popup | Chạy container hoặc tự build confirmation flow |
| Background bash | Dùng tmux để quan sát trực tiếp |
Điều này có hai mặt.
Mặt tốt: core nhỏ, ít magic, dễ hiểu, dễ tùy biến.
Mặt khó: người mới có thể thấy thiếu những thứ đã quen ở Claude Code hoặc OpenCode.
Nhưng đây chính là triết lý của pi: không áp workflow chung lên tất cả mọi người. Team nào cần gì thì build hoặc cài package tương ứng.
Extension của pi là TypeScript module, có thể can thiệp vào nhiều giai đoạn:
- trước khi agent start
- trước khi gửi request tới provider
- sau khi nhận response
- trước/sau khi tool chạy
- khi agent kết thúc
- đăng ký custom slash command
- đăng ký custom tool
- tùy chỉnh UI
Nói cách khác, extension không chỉ là “plugin trang trí”. Nó có thể thay đổi sâu cách harness hoạt động.
Điểm mạnh 3: session dạng cây để thử nhiều hướng
Đây là tính năng mình thấy rất đáng chú ý.
Phần lớn coding agent lưu conversation theo dạng tuyến tính:
Prompt 1 -> Prompt 2 -> Prompt 3 -> Prompt 4
Nếu đi sai hướng, bạn thường phải rollback, mở session mới, hoặc copy prompt cũ.
pi lưu session theo dạng cây:
Prompt 1: tạo API endpoint
├── Prompt 2: thêm validation
│ ├── Prompt 3: sửa type
│ └── Prompt 3': viết test trước
└── Prompt 2': thử GraphQL thay REST
Bạn có thể:
- dùng
/forkđể rẽ nhánh tại một message - dùng
/cloneđể nhân bản session - dùng
/treeđể xem và điều hướng giữa các nhánh - export session ra HTML hoặc JSONL
Điều này rất hợp với việc explore giải pháp.
Ví dụ bạn có bug khó. Bạn muốn thử 3 hướng:
- fix ở API layer
- fix ở data layer
- refactor validation logic
Với session tree, bạn có thể thử từng hướng mà không mất lịch sử. Giống như git branch, nhưng cho conversation với agent.
Claude Code và OpenCode hiện quen thuộc hơn với session tuyến tính. pi biến session thành một không gian thử nghiệm có nhánh.
Điểm mạnh 4: context engineering thật sự
“Context” là mọi thứ model nhìn thấy khi trả lời: prompt, file, tool result, error, lịch sử chat, docs, instruction của project.
Với coding agent, context quyết định rất nhiều. Agent sửa đúng hay sai thường không chỉ do model mạnh hay yếu, mà do nó thấy đúng thông tin hay không.
pi cho nhiều cơ chế để kiểm soát context:
| Cơ chế | Dùng để làm gì |
|---|---|
AGENTS.md | Load hướng dẫn dự án từ global, parent folder, current folder |
SYSTEM.md | Thay thế hoặc bổ sung system prompt cho project |
| Auto-compaction | Tóm tắt message cũ khi gần đầy context |
Manual /compact | Tự compact với instruction riêng |
| Skills | Load capability theo nhu cầu, không nhồi tất cả vào prompt ban đầu |
| Prompt templates | Prompt tái sử dụng qua file Markdown |
| Dynamic context | Extension inject hoặc lọc context trước mỗi turn |
Điểm “skills” rất đáng chú ý. Thay vì nhét mọi hướng dẫn vào system prompt ngay từ đầu, skill được load khi cần. Đây là progressive disclosure: cần gì mở nấy, giúp prompt đỡ phình và có thể giữ prompt cache tốt hơn.
Nếu bạn từng dùng Claude Code Skills hoặc OpenCode Skills, ý tưởng sẽ quen: đóng gói instruction + workflow + tools cho một loại task cụ thể. pi đưa ý tưởng đó vào hệ thống của nó, nhưng vẫn giữ triết lý tối giản.
TUI: terminal nhưng không thô
pi không chỉ là một script CLI in text ra màn hình. Nó có TUI riêng, được build bằng engine render differential.
Nói dễ hiểu: UI chỉ render lại phần thay đổi, nên cảm giác mượt hơn khi stream text hoặc update tool result.
TUI có:
- header với logo và keybinding hints
- chat area hiển thị user/assistant/tool execution/thinking
- editor input có autocomplete file, command, prompt template
- status bar hiển thị session info, thinking level, model, git branch
- footer hiển thị model và thinking level
- theme tùy chỉnh
- hỗ trợ ảnh trong terminal qua sixel/kitty protocol ở terminal tương thích
Nếu bạn thích terminal, đây là điểm cộng. Nếu bạn quen IDE như Cursor, có thể bạn sẽ thấy terminal-first hơi khô lúc đầu.
Slash commands và 4 chế độ chạy
pi có nhiều slash command built-in:
| Command | Dùng để làm gì |
|---|---|
/model | chọn model |
/thinking | chỉnh mức reasoning |
/tree | xem session tree |
/fork | rẽ nhánh session |
/clone | nhân bản session |
/compact | compact context thủ công |
/export | export session |
/share | share session qua GitHub gist |
/login | login provider |
/reload | reload extensions, skills, prompts, themes |
Ngoài mode interactive, pi còn có 3 mode khác:
| Mode | Dùng khi nào |
|---|---|
| Interactive | dùng TUI đầy đủ trong terminal |
| Print/JSON | gọi từ script hoặc CI/CD |
| RPC | tích hợp qua JSON stdin/stdout |
| SDK | nhúng pi vào app khác |
Điểm này làm pi giống một nền tảng hơn là một app đơn lẻ. Bạn có thể dùng nó trực tiếp, hoặc nhúng nó vào hệ thống khác.
So sánh pi, Claude Code, OpenCode và Cursor
Không có tool nào thắng tuyệt đối. Mỗi tool phù hợp một kiểu người dùng.
| Tiêu chí | pi | Claude Code | OpenCode | Cursor Agent |
|---|---|---|---|---|
| Triết lý | harness tối giản, extensible | experience đóng gói | open-source assistant/toolkit | IDE-first |
| Provider | rất rộng, custom được | Anthropic | multi-provider | trong hệ Cursor |
| Chạy ở đâu | terminal | terminal/editor ecosystem | terminal/web/editor tùy setup | IDE |
| Dễ dùng ban đầu | trung bình | cao | trung bình | cao nếu dùng Cursor |
| Tùy biến sâu | rất cao | hạn chế hơn | cao | hạn chế hơn |
| Session branching | có dạng cây | không phải trọng tâm | không phải trọng tâm | không phải trọng tâm |
| Extension system | rất mạnh | hooks/skills tùy hệ | agents/skills/commands | extension theo IDE |
| Phù hợp nhất | power user terminal | dev muốn dùng nhanh Claude | dev muốn open-source workflow | dev sống trong IDE |
Nếu bạn muốn “mở lên dùng ngay, model mạnh, ít setup”, Claude Code vẫn rất hấp dẫn.
Nếu bạn muốn “một open-source AI coding workflow có agents, skills, commands, dễ custom cho team”, OpenCode rất đáng dùng.
Nếu bạn muốn “AI nằm ngay trong IDE, thao tác trực tiếp với editor”, Cursor Agent tiện hơn.
Nếu bạn muốn “tôi tự quyết model, context, extension, session, workflow”, pi là lựa chọn rất thú vị.
Những điểm còn lấn cấn
Để công bằng, pi chưa phải tool hoàn hảo cho mọi người.
1. Custom provider setup còn khó
Với provider built-in như DeepSeek, MiniMax, Anthropic, OpenAI, setup khá dễ. Nhưng với custom provider chưa được hỗ trợ sẵn, bạn có thể phải động vào models.json, auth.json, API type, endpoint, header, model name.
Nếu docs chưa đủ rõ, phần này dễ tốn thời gian.
2. Một số tool chưa built-in như đối thủ
So với Claude Code hoặc OpenCode, pi có thể thiếu sẵn các tool như:
- web search
- web fetch
- task/subagent
- notebook
- MCP built-in
Triết lý của pi là build bằng extension nếu cần. Nhưng với người dùng mới, “tự build được” vẫn không tiện bằng “có sẵn”.
3. Community còn nhỏ
pi đang phát triển rất nhanh, repo active, release liên tục. Nhưng ecosystem extension/package bên thứ ba chưa thể so với các tool trưởng thành hơn.
4. Windows chưa mượt bằng macOS/Linux
Các tool TUI thường gặp vấn đề trên Windows: rendering, signal handling, shell differences, Ctrl+Z, path, PowerShell. pi cũng không ngoại lệ.
Nếu bạn dùng Windows, nên kỳ vọng sẽ có vài góc cạnh cần chỉnh.
5. Contribution gate khá gắt
Repo có policy auto-close issue/PR từ contributor mới để chống spam và giảm maintainer burden. Cách này giúp giữ chất lượng nhưng có thể làm contributor mới thấy khó chịu.
Đây là lựa chọn có chủ đích trong thời đại agent spam issue/PR rất rẻ.
Chất lượng repo có đáng tin không?
Theo review source, pi là một monorepo TypeScript có tổ chức khá rõ:
packages/ai -> abstraction cho LLM providers
packages/agent -> agent loop và state machine
packages/coding-agent -> CLI, tools, commands, modes
packages/tui -> terminal UI engine
packages/web-ui -> web components
Một flow đơn giản:
User prompt
-> AgentSession.prompt()
-> agentLoop()
-> convert messages sang format LLM
-> gọi provider stream
-> nhận text/tool call/thinking
-> chạy tools
-> đưa tool result vào context
-> tiếp tục loop hoặc kết thúc
Repo có release nhanh, commit message theo Conventional Commits, có test suite, CI/CD, changelog theo package. Các contributor nổi bật gồm Mario Zechner và Armin Ronacher, đây là tín hiệu mạnh về chất lượng kỹ thuật.
Nói ngắn gọn: đây không giống một repo demo làm cho vui. Nó là một dự án kỹ thuật nghiêm túc, phát triển rất nhanh.
Ai nên thử pi?
Bạn nên thử pi nếu:
- thích terminal workflow
- muốn dùng nhiều provider/model khác nhau
- muốn giảm lock-in vào Anthropic/OpenAI/Cursor
- muốn tự build command/tool/extension cho workflow riêng
- thích session branching để explore nhiều hướng
- sẵn sàng đầu tư thời gian setup ban đầu
- muốn hiểu agent đang vận hành thế nào thay vì chỉ dùng black box
Ví dụ thực tế:
- Task refactor đơn giản dùng MiniMax hoặc DeepSeek cho rẻ.
- Task phức tạp dùng Claude Sonnet/Opus.
- Workflow nội bộ viết extension riêng để chặn command nguy hiểm.
- Team viết prompt templates cho các task lặp lại như review PR, tạo changelog, chạy migration checklist.
Ai chưa nên dùng pi?
Bạn có thể chưa nên dùng pi nếu:
- muốn tool “mở lên dùng ngay” ít cấu hình nhất
- không thích terminal
- team cần docs mature và support ổn định
- đang phụ thuộc nặng vào IDE integration
- không muốn tự build hoặc debug extension/config
- đang trên Windows và không muốn xử lý issue TUI/shell
Trong các trường hợp đó, Claude Code, Cursor hoặc OpenCode có thể phù hợp hơn.
Kết luận
pi không phải “Claude Code nhưng open-source”.
Nó giống một câu trả lời khác cho cùng bài toán: làm sao để developer dùng coding agent mà vẫn giữ quyền kiểm soát workflow?
Claude Code mạnh vì trải nghiệm tốt và model Anthropic rất chất lượng.
OpenCode mạnh vì open-source, multi-provider, có agents/skills/commands phù hợp workflow thực tế.
Cursor mạnh vì AI nằm ngay trong IDE.
pi mạnh vì nó là một terminal harness có thể hack sâu: provider linh hoạt, extension-first, session dạng cây, context engineering, nhiều mode tích hợp.
Nếu bạn là developer thích tự kiểm soát công cụ, không muốn bị lock-in, và không ngại setup kỹ hơn một chút, pi rất đáng thử.
Câu dễ nhớ:
Claude Code cho bạn một agent rất tốt để dùng ngay.
picho bạn một cái khung để tự xây agent đúng workflow của mình.
Khuyến mãi API cho OpenCode
MiniMax Token Plan
10% OFFAPI mạnh mẽ cho coding với giá cực tốt. New Year Mega Offer - bạn bè giảm 10%, bạn nhận voucher API.
GLM Coding Plan (Z.AI)
Best ValueHỗ trợ Claude Code, Cline, và 10+ coding tools. Rẻ nhất thị trường!
* Link affiliate - bạn được ưu đãi, mình nhận hoa hồng nhỏ
Đọc tiếp
Một vài bài liên quan có thể bạn sẽ thích
Building pi trong thời đại code slop: bài học cho developer dùng AI agent
Từ talk của Mario Zechner về pi: vì sao context phải thuộc về developer, agent dễ tạo code slop ra sao, và cách dùng AI coding agent mà vẫn giữ quyền kiểm soát kỹ thuật.
Cách dùng Cursor Composer 2.5 trong OpenCode: setup API proxy, giá token và rủi ro bảo mật
Hướng dẫn cấu hình Cursor Composer 2.5 trong OpenCode qua proxy OpenAI-compatible, kèm phân tích giá token, Cursor API key, ToS và rủi ro bảo mật khi dùng proxy bên thứ 3.
OpenCode vs Claude Code - So sánh chi tiết 2026
So sánh OpenCode và Claude Code: tính năng, pricing, privacy. Giúp bạn chọn AI coding assistant phù hợp.