- Pi là một coding agent tối giản dựa trên terminal, cung cấp kiến trúc có thể mở rộng để phù hợp với quy trình làm việc của người dùng
- Có thể kết hợp tiện ích mở rộng TypeScript, skill, mẫu prompt, theme để xây dựng môi trường phát triển của riêng mình, rồi chia sẻ dưới dạng gói npm hoặc git
- Hỗ trợ hơn 15 nhà cung cấp AI và hàng trăm mô hình, đồng thời có thể chuyển đổi mô hình trong khi phiên đang chạy hoặc thêm mô hình tùy chỉnh
- Phiên được lưu dưới dạng lịch sử cấu trúc cây, cho phép quay lại các điểm trước đó hoặc xuất sang HTML·GitHub gist
- Giữ phần tính năng cốt lõi ở mức tối thiểu và theo đuổi triết lý thiết kế lấy khả năng mở rộng làm trung tâm, để nhà phát triển có thể tự triển khai những gì mình cần hoặc bổ sung bằng gói
Tổng quan về Pi
- Pi là một bộ công cụ coding terminal, có cấu trúc cho phép người dùng tùy biến công cụ mà không cần thay đổi workflow
- Hỗ trợ các thành phần có thể mở rộng như tiện ích mở rộng TypeScript, skill, mẫu prompt, theme
- Có thể cài đặt và chia sẻ gói pi đóng gói các thành phần này thông qua npm hoặc git
- Cấu hình mặc định mạnh mẽ, nhưng không bao gồm các tính năng như sub-agent hay plan mode
- Cung cấp bốn chế độ (interactive, print/JSON, RPC, SDK), và có thể xem ví dụ tích hợp thực tế trong clawdbot
Mô hình và nhà cung cấp
- Hỗ trợ hơn 15 nhà cung cấp và hàng trăm mô hình, gồm Anthropic, OpenAI, Google, Azure, Bedrock, Mistral, Groq, Cerebras, xAI, Hugging Face, Kimi, MiniMax, OpenRouter, Ollama cùng nhiều dịch vụ khác
- Có thể xác thực bằng API key hoặc OAuth
- Chuyển đổi mô hình trong phiên bằng lệnh
/model hoặc Ctrl+L, xoay vòng các mô hình yêu thích bằng Ctrl+P
- Có thể thêm mô hình tùy chỉnh thông qua models.json hoặc tiện ích mở rộng
Quản lý phiên
- Phiên được lưu theo cấu trúc cây, cho phép quay lại các điểm trong quá khứ bằng lệnh
/tree
- Mọi nhánh được lưu trong một tệp duy nhất, đồng thời hỗ trợ lọc loại tin nhắn và gắn nhãn bookmark
- Có thể xuất HTML bằng
/export, hoặc tải lên GitHub gist bằng /share và tạo URL chia sẻ
Kỹ thuật ngữ cảnh
- Có thể kiểm soát cửa sổ ngữ cảnh một cách chi tiết nhờ system prompt tối giản và khả năng mở rộng
- AGENTS.md: tự động nạp hướng dẫn dự án khi khởi động
- SYSTEM.md: thay thế hoặc bổ sung system prompt mặc định theo từng dự án
- Compaction: tự động tóm tắt các tin nhắn trước đó khi chạm giới hạn ngữ cảnh; có thể dùng tiện ích mở rộng để triển khai tóm tắt theo chủ đề hoặc tóm tắt nhận biết mã nguồn
- Skills: các gói chức năng được nạp khi cần, giữ nguyên bộ nhớ đệm prompt và cung cấp tính năng theo từng bước
- Prompt templates: các prompt tái sử dụng có thể mở rộng thông qua lệnh
/name
- Dynamic context: có thể chèn tin nhắn, lọc lịch sử, triển khai RAG, xây dựng bộ nhớ dài hạn thông qua tiện ích mở rộng
Xếp hàng tin nhắn
- Có thể gửi tin nhắn ngay cả khi agent đang làm việc
Enter: steering message được chuyển đi sau khi lần chạy công cụ hiện tại kết thúc
Alt+Enter: follow-up message được chuyển đi sau khi công việc hoàn tất
Kiến trúc mở rộng
- Pi được thiết kế xoay quanh các thành phần nguyên thủy (Primitives) thay vì tính năng hoàn chỉnh, nên người dùng có thể tự triển khai chức năng theo ý mình
- Tiện ích mở rộng ở dạng mô-đun TypeScript, có thể truy cập công cụ, lệnh, phím tắt, sự kiện, toàn bộ TUI
- Các ví dụ tiện ích mở rộng gồm sub-agent, plan mode, cổng quyền hạn, bảo vệ đường dẫn, thực thi SSH, sandboxing, tích hợp MCP, trình soạn thảo tùy chỉnh, overlay v.v.
- Thậm chí còn có tiện ích mở rộng overlay trò chơi, như ví dụ “Yes, Doom runs.”
- Nếu không muốn tự triển khai, có thể bổ sung chức năng bằng cách cài đặt gói pi
- Hơn 50 ví dụ tiện ích mở rộng đã được công khai trên GitHub
Quản lý gói
- Có thể đóng gói tiện ích mở rộng, skill, prompt, theme thành package để cài từ npm hoặc git
- Có thể khám phá và chia sẻ package qua từ khóa tìm kiếm npm
pi-package hoặc kênh Discord
Chế độ tích hợp
- Interactive: môi trường TUI đầy đủ
- Print/JSON:
pi -p "query" cho script, --mode json cho luồng sự kiện
- RPC: hỗ trợ tích hợp trong môi trường không phải Node thông qua giao thức JSON dựa trên stdin/stdout
- SDK: có thể nhúng vào ứng dụng, với ví dụ sử dụng thực tế trong clawdbot
Triết lý thiết kế
- Pi được thiết kế để tối đa hóa khả năng mở rộng, giữ phần lõi ở mức tối thiểu và để người dùng tự định nghĩa workflow của mình
- MCP, sub-agent, cửa sổ quyền hạn, plan mode, TODO tích hợp sẵn, bash nền không được bao gồm
- Thay vào đó, có thể triển khai cùng chức năng thông qua tiện ích mở rộng, skill, package hoặc tích hợp với công cụ bên ngoài
- Hỗ trợ chạy song song và quan sát thông qua tmux
- Cách tiếp cận này cho phép xây dựng môi trường phát triển do người dùng làm chủ
- Toàn bộ triết lý được giải thích thêm trong bài đăng blog liên quan
2 bình luận
Mình rất thích pi luôn
Ý kiến trên Hacker News
Điều khiến Pi và hiện tượng “claw” trở nên thú vị với tôi là vì nó cho thấy tương lai của mã nguồn mở
Giờ đây thay vì gửi yêu cầu tính năng hay PR, chúng ta bước vào thời đại tải về các tệp skill để chỉ cho coding agent cách thêm tính năng
Phần mềm không còn là một sản phẩm cố định nữa, mà trở thành công cụ sống khác nhau với từng người dùng
Tôi tò mò không biết những loại tooling nào sẽ xuất hiện trong mô hình cộng tác mới này
Phần mềm hiện nay khiến người dùng có cảm giác xa lạ vì họ không thể kiểm soát môi trường của mình
Nhưng phần mềm được cá nhân hóa, rẻ và linh hoạt có thể mang lại cảm giác sở hữu thực sự
Trước đây desktop Linux từng mang lại sự tự do đó, còn giờ có vẻ mọi người đều sẽ được hưởng lợi ích ấy
Tôi khá lạc quan về tương lai này
Có lẽ trong tương lai sẽ có ngày càng nhiều phần mềm siêu cá nhân hóa — đến mức chỉ một cá nhân hoặc một nhóm nhỏ mới hiểu nổi
Gần đây tôi cũng đã dùng Claude để tạo nhiều công cụ chỉ mình tôi và vài người khác dùng
Ví dụ như ứng dụng lên lịch DnD, trình xem tin tức Formula E không spoiler, hay trang bỏ phiếu cho hợp tác xã leo núi
Trước đây không có lý do gì để làm những thứ như vậy, nhưng giờ thì đã khả thi
Tôi có viết thêm về chuyện này trong Releasing Software Now
Các tập đoàn lớn hay chính phủ sẽ không đời nào cho phép những hệ thống thiếu nhất quán như vậy
Ngược lại, tôi nghĩ sẽ xuất hiện những công cụ tệ hơn
Tôi đã quen với OpenCode nên đang cân nhắc dùng nó như không gian làm việc AI cá nhân
Pi có hệ sinh thái nhỏ hơn nhưng linh hoạt và khả năng mở rộng lớn hơn, và tôi cũng cảm nhận được nhiệt huyết từ cộng đồng
Tôi muốn biết liệu dùng Pi thay cho OpenCode có tốt hơn không, và có những tùy chọn UI nào
Tôi từng dùng OpenCode dựa trên tệp .md để viết lách hay sắp xếp ghi chú, và nó khá phù hợp
Giờ tôi đang tìm một harness mới phù hợp hơn cho kiểu công việc này
Đây là harness tôi thích nhất dạo gần đây
Có thể tự mở rộng nên hiệu quả rất cao, và tôi đã tích hợp nó vào dự án vibes
Nó nhanh hơn ACP rất nhiều
Tôi đã tìm một giao thức tương tác agent đa dụng, và ACP từng là ứng viên cho việc đó
Nhưng nhìn cả OpenCode cũng không dùng ACP trong UI thì có vẻ là có vấn đề gì đó
Tôi cũng muốn biết liệu có lựa chọn thay thế nào tốt hơn không
Tôi chưa từng thấy ai dùng Pi vài ngày mà không chuyển sang dùng hằng ngày
Một khi đã nếm trải sự tự do tùy biến công cụ theo đúng ý mình thì rất khó quay lại
Hơn nữa bạn còn có thể xây thêm những phần mở rộng rất hay trên đó
Pi có khả năng mở rộng thú vị, nhưng chất lượng công việc thực tế thì còn thiếu
Tôi không hiểu vì sao phải code bằng ứng dụng terminal
Làm dưới dạng extension cho IDE cũng làm được y hệt mà còn tốt hơn, và trong VSCode cũng có thể khôi phục nguyên bố cục cửa sổ
Cảm giác như đang ra chỉ thị cho một đồng nghiệp lập trình viên qua chat văn bản
Ví dụ tôi giao cho Claude xử lý chương trình bảo trì máy chủ, rồi đi làm việc khác và chỉ quay lại xem kết quả
Nếu test chạy qua thì code trông như thế nào cũng không quan trọng
Trên thực tế, chỉ với khoảng 15 phút làm việc chủ động tôi đã có thể xử lý song song nhiều việc
Tôi đang dùng Pi qua gói pi-coding-agent cho Emacs
Ở chế độ RPC nó tạo buffer Markdown cho nhập/xuất, nên dễ chịu hơn nhiều so với các TUI khác
Tôi cũng tích hợp với issue tracker khá dễ, và đã định nghĩa lại các lệnh
readvàwritedựa trên buffer EmacsTôi cũng muốn thử cải thiện lệnh
editbằng cách tận dụng tree-sitter query của EmacsNgoài ra tôi còn dùng lệnh
emacs_evalđể có thể duyệt tài liệu qua EWWreadvàwritesang buffer Emacs như thế nàoNhân tiện, có thể cài chế độ Pi cho Emacs tại đây
Tôi cũng đang thêm tính năng mở ngay tệp tương ứng từ kết quả gọi
read,write,editSắp tới cũng sẽ hỗ trợ duyệt session và cây thư mục của Pi cùng với tích hợp Magit
Tôi bắt đầu với Pi rồi 2 tuần gần đây dùng oh-my-pi
Kho oh-my-pi là phiên bản kèm pin của Pi
Tôi cũng đang nghĩ tới việc sao chép dự án hiện có rồi phát hành lại với tên khác
Ví dụ như “Waterfox — người tiêu dùng web tối giản” kiểu vậy
Phiên bản Pi cấu hình sẵn: oh-my-pi
Cần có một môi trường cô lập để có thể cài đặt và thử nghiệm an toàn như ứng dụng
Tôi đã đi từ codex/claude code → opencode → pi → oh-my-pi
Tôi định lúc nào đó sẽ tự thử làm
Điểm hấp dẫn của Pi là sự nhẹ nhàng và tính tự chủ, còn oh-my-pi lại có quá nhiều tính năng nên mang cảm giác nặng nề giống OpenCode
Pi thật sự đã đưa ra những lựa chọn thiết kế xuất sắc
Xin gửi lời khen tới Mario và Armin — gu tốt rồi sẽ tự bộc lộ