OpenCode.io.vn
Quay lại Blog
23 tháng 5, 2026OpenCode Vietnam12 phút đọc

pi là gì? Coding agent terminal cho developer không muốn bị lock-in

Giải thích chi tiết pi cho developer đã quen Claude Code: pi khác gì Claude Code và OpenCode, vì sao provider flexibility, extension system, session tree và context engineering đáng chú ý.

#pi#claude-code#opencode#ai-coding#coding-agent#terminal#developer-workflow

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.
pi giố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 CodeCăn hộ đầy đủ nội thất, đẹp, vào ở ngay
Cursor AgentCoding agent sống trong IDE
OpenCodeBộ toolkit open-source cho AI coding workflow thực tế
piXưở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.json hoặ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 fileAgent xem code hiện tại trước khi sửa
Search codebaseTìm function, config, endpoint, pattern đang dùng
Sửa fileApply thay đổi vào source code
Ghi file mớiTạo docs, tests, scripts, config
Chạy bashRun test, build, lint, git commands
Chọn modelĐổi model theo task hoặc chi phí
Lưu sessionQuay 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-inCách nghĩ của pi
MCPCó thể build extension hoặc dùng CLI tools với README
Sub-agentCó thể spawn pi instances qua tmux hoặc extension
Plan modeViết plan ra file hoặc tự build command
Built-in todoDùng TODO.md hoặc extension
Permission popupChạy container hoặc tự build confirmation flow
Background bashDù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.mdLoad hướng dẫn dự án từ global, parent folder, current folder
SYSTEM.mdThay thế hoặc bổ sung system prompt cho project
Auto-compactionTóm tắt message cũ khi gần đầy context
Manual /compactTự compact với instruction riêng
SkillsLoad capability theo nhu cầu, không nhồi tất cả vào prompt ban đầu
Prompt templatesPrompt tái sử dụng qua file Markdown
Dynamic contextExtension 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:

CommandDùng để làm gì
/modelchọn model
/thinkingchỉnh mức reasoning
/treexem session tree
/forkrẽ nhánh session
/clonenhân bản session
/compactcompact context thủ công
/exportexport session
/shareshare session qua GitHub gist
/loginlogin provider
/reloadreload extensions, skills, prompts, themes

Ngoài mode interactive, pi còn có 3 mode khác:

ModeDùng khi nào
Interactivedùng TUI đầy đủ trong terminal
Print/JSONgọi từ script hoặc CI/CD
RPCtích hợp qua JSON stdin/stdout
SDKnhú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ípiClaude CodeOpenCodeCursor Agent
Triết lýharness tối giản, extensibleexperience đóng góiopen-source assistant/toolkitIDE-first
Providerrất rộng, custom đượcAnthropicmulti-providertrong hệ Cursor
Chạy ở đâuterminalterminal/editor ecosystemterminal/web/editor tùy setupIDE
Dễ dùng ban đầutrung bìnhcaotrung bìnhcao nếu dùng Cursor
Tùy biến sâurất caohạn chế hơncaohạn chế hơn
Session branchingcó dạng câykhông phải trọng tâmkhông phải trọng tâmkhông phải trọng tâm
Extension systemrất mạnhhooks/skills tùy hệagents/skills/commandsextension theo IDE
Phù hợp nhấtpower user terminaldev muốn dùng nhanh Claudedev muốn open-source workflowdev 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.
pi cho bạn một cái khung để tự xây agent đúng workflow của mình.

Đọc tiếp

Một vài bài liên quan có thể bạn sẽ thích