Mỗi con coding agent đọc system prompt ở một chỗ khác nhau. Codex nhận qua tham số khởi động, Claude có file prompt riêng, opencode thì phải viết plugin TypeScript để sửa object lúc chạy. Bạn muốn cùng một “tính cách” cho cả bốn con? Hiện tại phải copy paste bốn lần, mỗi lần một định dạng, và mỗi lần đổi persona là một lần đi sửa từng chỗ.
ZiChuanLan/agent-purge gom đống đó lại thành một nguồn duy nhất. Bạn viết một file Markdown, công cụ này bơm nội dung đó vào đúng vị trí mà từng harness chấp nhận.
Nó làm gì, cụ thể
Repo tự mô tả là “one persona, many coding agents”. Cơ chế có ba lớp:
install: ghi vào config được quản lý của harness (Markdown, hooks, plugin). Cái này thường trú, người khác khởi động máy cũng dính.shim: đặt một file cùng tên vào trước PATH, gõ lệnh trần cũng bị chặn và chuyển quaagent-purge.slash: gõ/purge on|off|statusngay trong session. Đổi nóng, không ghi đĩa.
Cả ba lớp cùng trỏ về một file personas/<tên>.md. Tắt bằng --mode off hoặc công tắc tổng trên web là mọi thứ trả về nguyên trạng. Đây là điểm mình thích: nó cam kết “không để lại rác”, và có lệnh uninstall để kiểm chứng.
Có bốn mode: replace, strict (chỉ gửi persona, bỏ luôn system gốc), append (chèn lên đầu), off.
Vì sao 556 sao trong 2 ngày
Repo tạo ngày 25/10/2026, cập nhật 27/10/2026, và đã có 556 sao. Tốc độ đó nói lên nhu cầu thật: dân dùng coding agent đang chạy song song nhiều CLI (Claude Code, Codex, opencode, grok…) và mệt vì mỗi bên một kiểu prompt.
Điểm khác biệt so với việc tự viết script: bảng hỗ trợ ghi số đo thật. Ví dụ codex 0.163.0 có default system 21.026 token, sau khi inject còn 24. claude 2.1.304 từ 6.379 xuống 156. opencode 1.19.3 từ 19.332 xuống 112. Tác giả nói rõ đây là số đo bằng “local fake provider bắt request body thật”, không phải ước lượng. Cách công bố số liệu này hiếm, và nó cho bạn biết trước chuyện gì sẽ xảy ra với token budget.
Repo cũng tách riêng opencode và opencode2 vì đây là hai npm package khác nhau (opencode-ai 1.x và @opencode/cli 2.x) với plugin API hoàn toàn khác. Nhiều tool khác gộp nhầm hai cái này.
Cài và chạy thử
Yêu cầu Node ≥ 20, zero dependency:
npm i -g agent-purge # hoặc npx agent-purge web
Mở web console cục bộ:
agent-purge web # local console tại http://127.0.0.1:7788
Chạy agent với persona hiện tại:
agent-purge codex # khởi động codex với persona hiện tại
agent-purge pi --ask "…" # hỏi một lần rồi thoát
Quản lý persona:
agent-purge ls # liệt kê persona, đánh dấu cái đang khớp
agent-purge use <tên> # đổi persona hiện tại
agent-purge pi --persona <tên> # chỉ dùng cho một lượt
Dữ liệu nằm riêng ở ~/.agent-purge/ (Windows: C:\Users\<user>\.agent-purge\), gồm state.json và thư mục personas/. Nâng cấp package không ghi đè. Muốn đổi chỗ thì set AGENT_PURGE_HOME.
Lần đầu chạy sẽ sinh file mẫu neutral.md. File persona là frontmatter cộng phần thân; phần thân chính là đoạn được nhét vào system prompt. Frontmatter dùng description để hiện trong danh sách, có thể thêm order, harness, model để matching.
Ai nên dùng
Rõ nhất là người dùng từ 2 agent trở lên và muốn chúng giữ cùng một “tính cách” (ví dụ cùng quy ước code, cùng ngôn ngữ trả lời, cùng mức độ giải thích). Mình thấy hai tình huống thực tế:
- So sánh chất lượng model: đặt prompt giống hệt nhau giữa codex và claude rồi cho chạy cùng task. Không có công cụ này thì mỗi bên một prompt khác nhau, kết quả so sánh vô nghĩa.
- Đo độ nhạy system prompt: bảng số ở trên cho thấy cùng một persona nhưng token sau inject chênh nhau cả chục lần giữa các harness. Ai đang nghiên cứu prompt engineering sẽ thấy dữ liệu này hữu ích.
Còn nếu bạn chỉ dùng đúng một con Claude Code và không bao giờ đổi persona, cài cái này là thừa.
Có một phần mình thấy lạ
README có một mục disclaimer pháp lý rất dài, nhắc tới luật Trung Quốc, cấm truy cập máy chủ ở Trung Quốc đại lục, Hong Kong, Macau, cấm dùng làm bàn đạp tấn công mạng. Với một công cụ chỉ sửa file prompt trên máy local, mục này dài bất thường. Có thể tác giả muốn phòng xa, nhưng nó làm người đọc dễ hiểu nhầm repo có chức năng tấn công. Thực tế README ghi rõ: “chỉ sửa vị trí liên quan prompt, không đụng binary, không bẻ khóa, không vượt qua authorization nào”.
Một chỗ khác cần để ý: mục antigravity dùng kỹ thuật “thay thế binary độ dài bằng nhau” để đổi câu tự giới thiệu. Về mặt kỹ thuật là patch binary, dù tác giả xếp nó ngoài phạm vi “không đụng binary”. Ai khó tính về chuyện này nên đọc kỹ trước khi cài cho harness đó.
Hạn chế và lưu ý
- License MIT, thoải mái dùng và fork.
- Repo mới 2 ngày tuổi. 556 sao không đồng nghĩa với ổn định. API và hành vi có thể đổi.
- Tài liệu khá chi tiết nhưng viết bằng tiếng Trung, dev không đọc được sẽ phải dựa vào bảng và CLI help.
- Hỗ trợ phụ thuộc vào version harness. Bảng ghi “đo trên version X”, harness lên version mới là có thể vỡ. Tác giả có vẻ ý thức được, vì
agent-purge lshiển thị “runtime truth” thay vì đọc bảng tĩnh, và nói rõ khi hai cái xung đột thì tin runtime. - Plugin magpie không nằm trong npm package, phải clone repo về và cài theo path. Thêm một bước thủ công.
- Vài harness không hỗ trợ (qoder, workbuddy) vì prompt nằm ở server. Công cụ in lý do thay vì giả vờ thành công. Cái này làm đúng.
Mình sẽ không dùng nó cho production workflow ngay. Nhưng để thử nghiệm prompt trên nhiều agent trong cùng một buổi chiều thì nó tiết kiệm kha khá thời gian, nhất là khi số đo token thật được công bố minh bạch thay vì để bạn tự mò. Với 556 sao sau 48 giờ, cộng đồng đang trả lời câu hỏi “có cần thiết không” nhanh hơn bất kỳ bài review nào.
Repo: ZiChuanLan/agent-purge
Câu hỏi thường gặp
agent-purge là gì và dùng để làm gì?
Đây là công cụ gom persona (tính cách system prompt) cho nhiều coding agent về một nguồn duy nhất. Bạn viết một file Markdown trong personas/<tên>.md, rồi agent-purge bơm nội dung đó vào đúng vị trí mà từng harness như Codex, Claude hay opencode chấp nhận, thay vì phải copy paste bốn lần với bốn định dạng khác nhau.
agent-purge có những mode hoạt động nào?
Có bốn mode: replace, strict (chỉ gửi persona, bỏ luôn system gốc), append (chèn lên đầu) và off. Ngoài ra có ba lớp cơ chế là install ghi vào config harness, shim chặn lệnh trần qua PATH, và slash để gõ /purge on|off|status ngay trong session mà không ghi đĩa.
agent-purge có an toàn, có để lại rác trên máy không?
Công cụ cam kết “không để lại rác”: tắt bằng --mode off hoặc công tắc tổng trên web là mọi thứ trả về nguyên trạng, và có lệnh uninstall để kiểm chứng. Dữ liệu nằm riêng ở ~/.agent-purge/ gồm state.json và thư mục personas/, nâng cấp package không ghi đè. Lưu ý riêng mục antigravity dùng kỹ thuật patch binary thay thế độ dài bằng nhau, nên ai khó tính về chuyện này nên đọc kỹ trước khi cài cho harness đó.
