Pi
Thông tin chung
Prompt hệ thống
1. skill: C:\Users\quocn\AppData\Roaming\npm\node_modules\@mariozechner\pi-coding-agent\docs\skills.md
2. extension: C:\Users\quocn\AppData\Roaming\npm\node_modules\@mariozechner\pi-coding-agent\docs\extensions.md
3. command (prompt): C:\Users\quocn\AppData\Roaming\npm\node_modules\@mariozechner\pi-coding-agent\docs\prompt-templates.md
4. readme: C:\Users\quocn\AppData\Roaming\npm\node_modules\@mariozechner\pi-coding-agent\README.md
5. thư mục ví dụ: C:\Users\quocn\AppData\Roaming\npm\node_modules\@mariozechner\pi-coding-agent\examples\extensions\
Câu hỏi?
- Có cấu hình tiếng Việt được không > Không
cấu hình hệ thống
1. Global settings: C:\Users\quocn\.pi\agent\settings.json
2. auth/API key/OAuth token: C:\Users\quocn\.pi\agent1\auth.json
Phím tắt
@để fuzzy-search file trong projectShift+Enterđể xuống dòngAlt vđọc hình ảnhctrl cclear nội dung đang gõctrl uclear 1 dòngctrl enterxuống dòng
Lệnh
/reload: dùng để tải lại keybindings, extensions, skills, prompts/modelđổi model đang dùng/newtạo session mới thật sự, không có ngữ cảnh cũ/resumemở lại session cũ/copycopy câu trả lời cuối của agent/sessionxem thông tin của session hiện tại cả file jsonl/quitthoát pi/compactnén ngữ cảnh/tree= đi lại trong cây hội thoại hiện có (mở bản đồ các nhánh đã có rồi nhảy qua nhảy lại) > không tạo session mới, không xoá code- No summary: nhánh cũ không còn trong ngữ cảnh model, chỉ còn trong session
- Summarize (Pi sẽ tạo 1 bản tóm tắt nhánh cũ) / Summarize with custom prompt (tự chỉ định cách tóm tắt): nhánh cũ không còn nguyên context, nhưng được nén lại thành summary rồi mang theo phần nào
/fork= tạo nhánh mới từ một điểm cũ (từ một điểm cũ, đẻ ra một nhánh mới để đi hướng khác)- nhánh cũ:
a -> b -> c -> d - nhánh mới:
a -> b -> e -> f - tức nó là tree + tách ra thành nhánh/session mới. không có ngữ cảnh c.d. code còn nguyên
- nhánh cũ:
/settingsmở setting cấu hình. enter để chọn- thinking level: càng cao càng thông minh
compact
Khi context đầy nó tóm tắt thành 1 summary có cấu trúc rồi giữ lại phần mới nhất để tiếp tục mặc đinh reserveTokens = 16384 .tức nó luôn chừa một khoảng trống để model còn chỗ trả lời. Quy trình:
↑1.8M ↓82k R25M $10.838 121.2%/200k (auto) > nó sẽ copmpact
- chừa chỗ cho trả lời mới
- giữ nguyên đoạn chat gần đây, phần cũ tóm tắt thành summary có cấu trúc
- nap lại ngữ cảnh: hệ thống prompt + summary + đoạn chat gần đây
- trong file jsonl lich sử không bị clear. Mỗi lần compact, nó tóm tắt lại toàn bộ phần cũ tính từ compaction trước đó.
Setting
- Bật hình ảnh:
C:\Users\quocn\.pi\agent\settings.json
"blockImages": true
> đổi thành
"blockImages": false
> sau đó /reload
Command (nó gọi là Prompt template)
File:
C:\Users\quocn\.pi\agent\prompts\demo.md
Nội dung:
Giải thích ngắn gọn về chủ đề sau theo kiểu dễ hiểu, có ví dụ nếu cần:
$@
rồi gõ
/demo Agents
Pi sẽ bung template này thành prompt hoàn chỉnh rồi gửi cho model.
Giải thích ngắn gọn về chủ đề sau theo kiểu dễ hiểu, có ví dụ nếu cần: Agents
Lưu ý Nếu không có $@ thì nó sẽ không nhận thêm nội dung phía sau, lúc đó chỉ còn là
Giải thích ngắn gọn về chủ đề sau theo kiểu dễ hiểu, có ví dụ nếu cần:
Skill
Dùng chung skill với Claude Code
File: C:\Users\quocn\.pi\agent\settings.json
Thêm mảng skills trỏ sang thư mục Claude Code:
{
"enableSkillCommands": true,
"skills": [
"D:/.claude/skills"
]
}
Pi sẽ tự động discover tất cả skill trong D:\.claude\skills\. Không cần copy sang ~\.pi\agent\skills\.
Comand khác skill chỗ nào?
- Giống: Đều là text, có workflow. tuy nhiên command là file markdown ngắn, khi gọi thì agent bung ra thành prompt và gửi nó cho model > prompt tái sử dụng
- Skill thì là một gói kĩ năng được đóng gói, model tự quyết định dùng khi task khớp. có các thư mục tham khảo các bước, cách nhận diện, cách làm tối ưu > kĩ năng đóng gói
Extension
Định nghĩa: là code TypeScript chạy cùng Pi để mở rộng hành vi của chính Pi w
- skill = dạy model nên làm gì (“LLM nên xử lý task này theo cách nào?”)
- extension = dạy Pi có thêm khả năng gì
- file TypeScript, load lúc runtime
- nghe event, chặn tool, thêm command, thêm tool, đổi UI, notify, lưu state
tức nó như công cụ cho Agent, cái cuốc cái xẻng để nó làm việc. nó có thể nhảy vào lúc bắt đầu phiên, lúc agent bắt đầu trả lời, kết thúc trả lời, lúc gọi công cụ, lúc trả kết quả từ công cụ
Nhìn như thế này:
- Model = bộ não trả lời
- Skill = playbook/hướng dẫn cho bộ não
- Extension = mod/plugin gắn vào cơ thể Pi
- Settings = núm chỉnh hệ thống
Ví dụ: Extension bắn thông báo Windown
- Pi khởi động > load extension (file typescript) > Extension đăng ký event hooks (pi.on("agent_end", ...)) > Khi runtime chạy tới event tương ứng, extension được gọi