12 điểm bởi GN⁺ 2026-02-25 | 2 bình luận | Chia sẻ qua WhatsApp
  • 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
    • Ví dụ:
      $ pi install npm:@foo/pi-tools  
      $ pi install git:github.com/badlogic/pi-doom  
      
    • Có thể cố định phiên bản (@1.2.3 hoặc @tag), cập nhật toàn bộ bằng pi update, xem danh sách bằng pi list, và cấu hình bằng pi config
    • Có thể kiểm thử mà không cần cài đặt bằng lệnh pi -e
  • 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

 
qodot 2026-02-26

Mình rất thích pi luôn

 
GN⁺ 2026-02-25
Ý 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

    • Tôi cũng đang thấy cùng một xu hướng
      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
    • Gần đây tôi cũng nghĩ nhiều về chuyện 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
    • Tôi đồng ý với ý “công cụ sống khác với bản sao của người khác”, nhưng tôi nghĩ mô hình này sẽ khó được các tổ chức chấp nhận
      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
    • Tôi không hiểu vì sao mô hình này lại sinh ra tooling thú vị
      Ngược lại, tôi nghĩ sẽ xuất hiện những công cụ tệ hơn
    • Chỉ cần tưởng tượng ai cũng dùng một phiên bản phần mềm khác nhau thì việc xử lý sự cố sẽ phức tạp đến mức nào đã thấy rùng mình
  • 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 cũng đang băn khoăn điều tương tự
      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
    • Hướng bạn hiểu là hoàn toàn chính xác
  • Đâ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ò vì sao lại có chênh lệch tốc độ giữa tích hợp trực tiếp và ACP
      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 tò mò bạn đã so sánh nó với những harness nào
    • Tôi thực sự rất thích cái này! Cảm giác như thứ tôi định tự làm đã được hiện thực hóa rồi
    • “Harness” nghĩa là gì? Chẳng phải nó chỉ là coding agent thôi sao?
  • 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 đó

    • Nghe nói Pi giống như Neovim hoặc Emacs của thế giới coding agent
    • Cũng vui đấy, nhưng với tôi Claude CLI và OpenCode hiệu quả hơn Pi rất nhiều
      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 tò mò tính năng tự làm nào mà bạn thích nhất, thứ mà Claude Code không có
  • 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ổ

    • Tôi dùng CLI agent thì hoàn toàn không cần IDE
      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 readwrite dựa trên buffer Emacs
    Tôi cũng muốn thử cải thiện lệnh edit bằng cách tận dụng tree-sitter query của Emacs
    Ngoài ra tôi còn dùng lệnh emacs_eval để có thể duyệt tài liệu qua EWW

    • Tuyệt quá! Tôi tò mò bạn đã ánh xạ readwrite sang buffer Emacs như thế nào
      Nhâ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, edit
      Sắ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-piphiên bản kèm pin của Pi

    • Tôi muốn biết trải nghiệm dùng oh-my-pi của bạn thế nào
    • Tôi cũng muốn biết nó có chạy trong môi trường sandbox hay có tính năng cô lập nào không
  • 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

    • Bản fork này rất ngầu, nhưng việc thêm bừa công cụ từ bất kỳ kho nào có vẻ rủi ro về bảo mật
      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 là fan cứng của bản fork này
      Tôi đã đi từ codex/claude code → opencode → pi → oh-my-pi
    • Đây là một bản fork tuyệt vời! Tôi cũng từng muốn đóng góp nhưng cảm giác cộng đồng hơi khép kín
    • Có lẽ nên tách web tool của oh-my-pi thành plugin Pi thông thường để dùng
      Tôi định lúc nào đó sẽ tự thử làm
    • Nhưng như vậy có vẻ đã bỏ lỡ bản chất của Pi
      Đ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ộ

    • Nhưng tôi không hiểu vì sao thứ này lại được viết bằng JavaScript