earendil-works/pi
AI agent toolkit: unified LLM API, agent loop, TUI, coding agent CLI
Kết luận: partial · Công nghệ: ai-agent · llm-api · tui · cli · typescript
earendil-works/pi là một toolkit AI agent gồm unified LLM API, vòng lặp agent, TUI và coding-agent CLI; mức độ phổ biến cao (72895 stars) cho thấy đã có sức hút mạnh với cộng đồng. Phù hợp để tham chiếu hoặc thử nghiệm cho các dự án cần orchestration agent, giao diện terminal và lớp trừu tượng hoá nhiều mô hình LLM, nhưng nên đánh giá kỹ độ khớp kiến trúc trước khi đưa vào lõi sản phẩm.
📖 Giới thiệu chi tiết
🧩 Nó là gì?
earendil-works/pi là một toolkit để xây dựng và chạy AI agent: nó gom nhiều phần cần thiết như gọi mô hình AI, quản lý vòng lặp agent, giao diện terminal và CLI hỗ trợ lập trình vào cùng một dự án.
Nói đơn giản: nếu bạn muốn có một “trợ lý AI biết dùng công cụ, nhớ trạng thái công việc và tương tác trong terminal”, Pi cung cấp sẵn bộ khung để làm việc đó.
🎯 Giải quyết vấn đề gì? Dành cho ai?
Khi xây dựng ứng dụng AI agent, bạn thường phải tự xử lý nhiều việc lặp lại:
- Gọi nhiều nhà cung cấp LLM khác nhau như OpenAI, Anthropic, Google, …
- Quản lý “vòng lặp agent”: AI suy nghĩ, chọn công cụ, chạy công cụ, đọc kết quả rồi tiếp tục.
- Lưu và cập nhật trạng thái trong quá trình agent làm việc.
- Tạo giao diện terminal dễ dùng.
- Xây CLI kiểu coding agent để hỗ trợ sửa code, chạy lệnh, đọc file.
earendil-works/pi sinh ra để gom các phần đó thành một bộ công cụ thống nhất.
Dự án phù hợp với:
- Lập trình viên muốn thử hoặc xây AI coding agent.
- Nhóm đang nghiên cứu cách tổ chức agent runtime.
- Người muốn có lớp API chung để gọi nhiều LLM provider.
- Dự án cần giao diện terminal hoặc TUI cho công cụ AI.
- Người muốn tham khảo kiến trúc của một agent toolkit lớn, đã có sức hút mạnh trong cộng đồng.
⚙️ Hoạt động ra sao?
Pi được chia thành nhiều package chính, mỗi package đảm nhận một phần:
@earendil-works/pi-ai: cung cấp API chung để gọi nhiều LLM provider như OpenAI, Anthropic, Google, … Thay vì viết riêng từng kiểu gọi API, bạn dùng một lớp thống nhất.@earendil-works/pi-agent-core: là phần “bộ não vận hành” của agent, xử lý tool calling và state management.tool callingnghĩa là AI có thể chọn và gọi công cụ;state managementnghĩa là theo dõi trạng thái công việc qua nhiều bước.@earendil-works/pi-coding-agent: CLI tương tác cho coding agent, dùng trong terminal để hỗ trợ các tác vụ lập trình.@earendil-works/pi-tui: thư viện giao diện terminal, dùng cơ chế differential rendering để cập nhật màn hình hiệu quả hơn thay vì vẽ lại mọi thứ từ đầu.
Luồng hoạt động cơ bản có thể hiểu như sau:
- Người dùng nhập yêu cầu trong terminal hoặc qua ứng dụng dùng Pi.
- Agent gửi yêu cầu tới mô hình AI thông qua
@earendil-works/pi-ai. - Mô hình phản hồi, có thể kèm ý định gọi công cụ.
@earendil-works/pi-agent-corequản lý việc gọi công cụ, cập nhật trạng thái và tiếp tục vòng lặp.- Nếu dùng coding agent,
@earendil-works/pi-coding-agentcung cấp trải nghiệm làm việc trực tiếp trong terminal. - Nếu cần giao diện terminal riêng,
@earendil-works/pi-tuihỗ trợ dựng UI.
Một điểm quan trọng: Pi không tự có hệ thống phân quyền/sandbox tích hợp sẵn. Mặc định, nó chạy với quyền của user và process đã khởi chạy nó. Nếu cần giới hạn quyền truy cập file, process, network hoặc credential, bạn nên chạy trong container hoặc sandbox.
🆚 Khi nào nên dùng / không nên
Nên dùng earendil-works/pi khi:
- Bạn muốn xây hoặc thử nghiệm AI agent có khả năng gọi công cụ.
- Bạn cần một unified LLM API để làm việc với nhiều provider.
- Bạn muốn tạo coding-agent CLI hoặc học cách một coding agent được tổ chức.
- Bạn thích làm việc trong terminal và cần TUI cho công cụ AI.
- Bạn đang cần một dự án tham khảo nghiêm túc cho agent orchestration.
Không nên dùng, hoặc nên cân nhắc kỹ, khi:
- Bạn chỉ cần gọi một API LLM đơn giản một lần rồi trả kết quả; khi đó SDK chính thức của OpenAI, Anthropic hoặc Google có thể đủ.
- Bạn cần hệ thống phân quyền an toàn tích hợp sẵn; Pi không cung cấp sẵn lớp bảo vệ đó.
- Bạn đang làm sản phẩm yêu cầu kiến trúc rất ổn định, trong khi agent runtime có thể cần tùy biến sâu.
- Bạn không muốn phụ thuộc vào một toolkit lớn cho phần lõi sản phẩm.
- Bạn chưa sẵn sàng đánh giá kỹ cách Pi khớp với hạ tầng hiện tại.
So sánh ngắn:
- Dùng SDK LLM trực tiếp: đơn giản hơn, hợp với tác vụ nhỏ.
- Dùng
earendil-works/pi: phù hợp hơn khi bạn cần agent loop, tool calling, terminal UI và coding-agent CLI. - Dùng container/sandbox kèm Pi: nên làm nếu agent có thể chạy lệnh, đọc file hoặc truy cập môi trường nhạy cảm.
🚀 Bắt đầu nhanh
Cách nhanh nhất để thử coding agent CLI là cài package @earendil-works/pi-coding-agent.
npm install -g @earendil-works/pi-coding-agent --ignore-scripts
Sau đó chạy CLI:
pi
Ví dụ tối thiểu khi làm việc với source code của repo:
git clone https://github.com/earendil-works/pi.git
cd pi
npm install --ignore-scripts
npm run build
npm run check
./test.sh
Chạy Pi trực tiếp từ source:
./pi-test.sh
Nếu bạn muốn dùng Pi trong môi trường an toàn hơn, hãy cân nhắc chạy bằng container hoặc sandbox. README nhắc đến một số hướng như:
# Ví dụ ý tưởng: chạy trong Docker để cô lập môi trường
docker run --rm -it node:latest bash
Bên trong container, bạn có thể cài và chạy CLI như bình thường:
npm install -g @earendil-works/pi-coding-agent --ignore-scripts
pi
✅ Điểm mạnh & ⚠️ Hạn chế
Điểm mạnh:
- Gom nhiều mảnh quan trọng của AI agent vào một toolkit: LLM API, agent runtime, TUI và coding-agent CLI.
- Hỗ trợ unified multi-provider LLM API, giúp làm việc với nhiều nhà cung cấp mô hình dễ hơn.
- Có
@earendil-works/pi-agent-coređể xử lý tool calling và state management, hai phần rất quan trọng khi xây agent. - Có sẵn
@earendil-works/pi-coding-agent, phù hợp để thử nghiệm hoặc dùng như một coding agent trong terminal. - Có chú ý tới supply-chain hardening như pin dependency, dùng lockfile, shrinkwrap và kiểm tra release.
- License MIT, thuận lợi cho việc học hỏi, thử nghiệm và tích hợp.
Hạn chế:
- Không có permission system tích hợp sẵn để giới hạn filesystem, process, network hoặc credential access.
- Khi chạy mặc định, Pi dùng quyền của user/process hiện tại, nên cần cẩn thận nếu cho agent chạy lệnh hoặc thao tác file.
- Với sản phẩm nghiêm túc, cần đánh giá kỹ kiến trúc trước khi đưa vào lõi hệ thống.
- Nếu nhu cầu chỉ là gọi một LLM đơn giản, Pi có thể hơi “nặng” so với việc dùng SDK trực tiếp.
- Người mới vẫn cần hiểu khái niệm agent, tool calling và sandbox ở mức cơ bản để dùng an toàn.