Để LLM làm tự động hoá giúp bạn
MCP server của Veilus cho phép một agent LLM, như Claude Code, Cursor hay Claude Desktop, làm trọn một việc tự động hoá chỉ từ một yêu cầu. Nó nhập được proxy của bạn, tạo profile khớp với proxy, mở một profile để xem trang đích, viết một script Playwright, và chạy thử. Khi bạn đã duyệt script, nó chạy được script trên nhiều profile hoặc theo lịch.
API cục bộ, và do đó MCP, cần gói trả phí hoặc gói dùng thử.
Chuẩn bị
Phần tiêu đề “Chuẩn bị”-
Bật API cục bộ. Mở API & MCP trong sidebar của app và bấm Turn on port. API chỉ lắng nghe trên chính máy của bạn.
-
Tạo một token. Ở mục Tokens, đặt tên theo công cụ sẽ dùng nó (ví dụ
claude-code) rồi bấm Create token. Copy ngay: giá trị chỉ hiện một lần. Đặt tên token theo từng công cụ thì sau này thu hồi một cái mà không ảnh hưởng các cái khác. -
Kết nối công cụ LLM của bạn. Ở mục Connect an LLM, copy đoạn lệnh cho Claude Code, hoặc khối JSON cho Cursor và Claude Desktop. Xem MCP Server để có lệnh chính xác.
Plugin Veilus cho Claude Code
Phần tiêu đề “Plugin Veilus cho Claude Code”Nếu bạn dùng Claude Code, plugin Veilus thêm bốn skill đi qua từng bước của việc và dừng lại chờ bạn quyết định:
claude plugin marketplace add veilus/claude-pluginclaude plugin install veilus@veilusKhởi động lại Claude Code, rồi gõ /veilus: để thấy các skill.
| Skill | Làm gì |
|---|---|
/veilus:campaign | Trọn việc: hỏi những gì cần biết, chuẩn bị proxy và profile, rồi dùng ba skill bên dưới |
/veilus:script | Tìm hiểu trang web trên một profile thật, viết script, chạy thử trên tối đa 3 profile, sửa, rồi nhờ bạn duyệt |
/veilus:schedule | Định cỡ lịch chạy theo máy của bạn, đưa kế hoạch dưới dạng bảng, và tạo lịch sau khi bạn đồng ý |
/veilus:run | Chạy script ngay, theo dõi lượt chạy, giải thích lỗi của từng profile, và báo cáo |
Plugin cần bản Veilus mới hơn 0.2.1. Không có plugin, client MCP nào cũng làm được cùng việc này: mô tả việc cần làm, agent tự chọn tool.
Một yêu cầu, làm trọn cả việc
Phần tiêu đề “Một yêu cầu, làm trọn cả việc”Khi đã kết nối, mô tả cả việc bằng lời của bạn, ví dụ:
Nhập 10 proxy này, kiểm tra chúng, rồi tạo mỗi proxy một profile với múi giờ khớp proxy. Sau đó mở profile đầu tiên, vào
https://example.com/login, tìm hiểu form đăng nhập, và viết một script Veilus đăng nhập bằngUSERNAMEvàPASSWORDrồi in ra tên tài khoản. Chạy thử trên tối đa 3 profile và báo tôi khi script sẵn sàng để duyệt.
Và sau khi bạn đã duyệt script:
Chạy script đăng nhập trên cả 10 profile, mỗi lượt 3 profile, rồi đặt lịch chạy mỗi ngày lúc 09:00. Cho tôi biết profile nào lỗi.
Đây là những gì agent làm, từng bước:
-
Nhập proxy.
import_proxiesbiến các dòng proxy của bạn thành một pool và báo dòng nào sai theo số dòng.test_proxykiểm từng proxy: sống hay chết, độ trễ, IP ra, và quốc gia, múi giờ của IP đó. -
Tạo profile khớp proxy.
create_profilesvới pool đó cấp cho mỗi profile mới một slot proxy riêng, và sinh múi giờ và ngôn ngữ của profile khớp với nơi proxy đi ra. Profile nào có proxy chưa biết vị trí thì không được tạo, mà được liệt kê là lỗi. -
Tìm hiểu trang web.
launch_profilemở một profile, rồi các tool điều khiển trang lái nó:navigatetới một URL,snapshotđể liệt kê các phần tử trên trang,click,type,press_keyvàscrollđể đi qua trang,wait_for_elementđể đợi trang kế tiếp. Thao tác nào làm bật hộp thoại JS (alert, confirm, prompt) thì tool trả lời ngay (bấm Cancel, trừ khi agent yêu cầu OK bằngdialog: "accept") và nói đó là hộp thoại nào. Muốn điền ô tải file lên,set_filegắn một file trong~/.veilus/data/uploads; file nằm ngoài thư mục đó bị từ chối, nên hãy chép file vào đó trước. Nhờ vậy agent biết trang thật trông thế nào trước khi viết dòng code nào. -
Viết script.
save_scriptlưu một script Playwright (TypeScript) vào Veilus Flow. Phần mô tả của tool đã mang sẵn quy tắc của script, bạn không cần nhắc lại; script phạm quy tắc bị từ chối kèm số dòng. -
Chạy thử.
run_scriptchạy script trên tối đa 3 profile khi script chưa được duyệt, vàget_run_resultđọc lại mã thoát và output của từng profile. Có gì sai thì agent sửa script và lưu lại, tới khi chạy đúng. -
Bạn duyệt script, trong app, không phải qua agent. Xem Duyệt script. Đây là bước cho phép script chạy thật.
-
Chạy thật.
run_batchchạy script đã duyệt trên nhiều profile cùng lúc (get_capacitygiúp chọn số profile chạy song song), vàcreate_schedulechạy nó lặp lại: mỗi N phút hoặc N giây, hằng ngày, hằng tuần, hoặc theo biểu thức cron. Cả hai đều từ chối script bạn chưa duyệt. -
Xem kết quả.
list_runsliệt kê các lượt chạy gần đây với trạng thái và số profile.get_run_resultcó chi tiết từng profile.stop_profileđóng browser của profile khi agent dùng xong.
Giá trị bạn nhắc tới cho một lượt chạy (như USERNAME ở trên) tới script dưới dạng biến môi trường tên VEILUS_VAR_<NAME>, đọc bằng process.env.VEILUS_VAR_USERNAME. Với giá trị khác nhau theo từng profile, như mỗi profile một tài khoản, agent có thể đưa chúng vào một bộ dữ liệu bằng create_dataset và assign_dataset, hoặc lưu vào profile bằng set_profile_variables. Cả hai chỉ tới script đã duyệt; xem phần an toàn bên dưới.
Duyệt script
Phần tiêu đề “Duyệt script”Một script agent lưu chưa được duyệt cho tới khi bạn duyệt. Script chưa duyệt vẫn chạy thử được qua run_script (tối đa 3 profile), nhưng lịch chạy và lượt chạy hàng loạt chỉ nhận script đã duyệt.
Để duyệt một script:
- Mở Veilus Flow và tìm script đó. Script của agent có nhãn MCP, và Pending approval liệt kê những script đang chờ bạn.
- Đọc phần thay đổi so với bản duyệt gần nhất, hoặc bấm Show full source. Đây là một chương trình Node thật, chạy với quyền của user bạn. Xem lại như bạn xem lại code người khác viết.
- Bấm Approve this script.
Khi agent lưu script lần nữa, script quay về Pending approval và cần bạn xem lại. Nếu chính bạn sửa script trong app rồi lưu, bản đó được tính là đã duyệt, vì bạn là người viết nó.
Sau khi duyệt, script chạy được trên nhiều profile cùng lúc hoặc theo lịch. Thêm về xem lại, sửa và phiên bản: Scripts.
Quy tắc của script
Phần tiêu đề “Quy tắc của script”Mọi script save_script chấp nhận đều theo cùng một bộ quy tắc, để nó chạy trong các profile của Veilus thay vì tự mở browser riêng. Trích từ mô tả của chính tool:
- Kết nối bằng
chromium.connectOverCDP(`http://127.0.0.1:${process.env.VEILUS_DEBUG_PORT}`). - Không
chromium.launch/launchPersistentContext. - Dùng
browser.contexts()[0], khôngnewContext(). - Không
setUserAgent/setViewportSize: danh tính thuộc về profile. - Lỗi phải thoát khác 0:
main().catch((e) => { console.error(e); process.exit(1); }). - Chỉ import
playwrightvà module có sẵn của Node. - Kết thúc
main()bằngawait browser.close(). Lệnh này chỉ ngắt kết nối khỏi browser của profile để script thoát được; thiếu nó thì lượt chạy treo.
Đọc input từ process.env.VEILUS_VAR_<NAME> (dạng UPPER_SNAKE_CASE), và in thứ bạn cần xem bằng console.log. Output đó là thứ agent đọc qua get_run_result.
Một script tối thiểu, đúng chuẩn
Phần tiêu đề “Một script tối thiểu, đúng chuẩn”import { chromium } from "playwright";
async function main() { const browser = await chromium.connectOverCDP( `http://127.0.0.1:${process.env.VEILUS_DEBUG_PORT}`, ); const context = browser.contexts()[0]; const page = context.pages()[0] ?? (await context.newPage());
const url = process.env.VEILUS_VAR_TARGET_URL ?? "https://example.com"; await page.goto(url); console.log(`title: ${await page.title()}`);
await browser.close();}
main().catch((e) => { console.error(e); process.exit(1);});Agent làm được gì, không làm được gì
Phần tiêu đề “Agent làm được gì, không làm được gì”Vài quy tắc được cài sẵn để một agent làm thay bạn vẫn ở trong giới hạn an toàn:
- Tạo và dừng, không bao giờ xoá. Không có tool nào xoá profile, pool proxy, script hay lịch chạy. Việc xoá ở lại trong app, trong tay bạn. Agent có thể tắt một lịch bằng
set_schedule_enabled; lịch và lịch sử chạy của nó vẫn còn. - Proxy đang có không bị ghi đè nhầm.
assign_proxy_pooltừ chối cả lời gọi nếu có profile nào đã có proxy, trừ khi agent truyềnforce: true. Nó cũng không đổi múi giờ của profile, nên proxy ở nước khác sẽ làm profile không mở được. Profile mới nên nhận proxy quacreate_profiles. - Giới hạn tốc độ cho lời gọi nặng. Mỗi token được tối đa 30 lời gọi nặng trong 60 giây: mở profile, chạy script, tạo profile, nhập proxy, chạy hàng loạt, hoặc chạy lịch ngay. Quá mức đó, lời gọi bị từ chối kèm thời gian phải đợi cho tới khi cửa sổ trống bớt.
evaluate_jskhông phải sandbox. Nó chạy JavaScript trong trang của profile với toàn quyền của trang đang đăng nhập đó: đọc được cookie và gửi request dưới danh nghĩa bạn. Chỉ để agent bạn tin dùng nó trên tài khoản quan trọng.- Giá trị đã lưu chỉ tới script đã duyệt. Biến profile lưu bằng
set_profile_variablesvà các dòng bộ dữ liệu được giao cho lượt chạy hàng loạt, lịch chạy, vàrun_scriptkhi bạn đã duyệt script. Lượt chạy thử của script chưa duyệt chỉ nhận biến truyền vào đúng lời gọi đó, nên script chưa ai xem không bao giờ thấy bí mật bạn đã lưu. - Script chạy với quyền của bạn. Script agent viết là một chương trình Node bình thường, làm được mọi thứ một script bạn tự viết làm được. Đọc thứ agent đã lưu trước khi duyệt, như bạn xem lại một pull request.