
Trước hết, hãy hiểu rõ phạm vi sử dụng
ARTEX chỉ dành cho việc học cá nhân, nghiên cứu mã nguồn và kiểm thử kỹ thuật trong môi trường cô lập cục bộ. Theo tuyên bố của dự án, không được sử dụng công cụ này để quét, thăm dò, khai thác hoặc tấn công bất kỳ hệ thống trực tuyến, trang web, hệ thống kết nối mạng hay môi trường production nào, ngay cả khi mục tiêu thuộc về bạn hoặc bạn đã được cấp quyền. Trước khi bắt đầu, hãy xác nhận rằng bạn hiểu và tuân thủ giấy phép AGPL-3.0 của dự án, các quy định an ninh mạng tại nơi bạn sinh sống cũng như các hạn chế sử dụng và tuyên bố miễn trừ trách nhiệm trong kho mã.
Bài viết này giả định việc triển khai cục bộ trong môi trường cô lập an toàn, đồng thời hướng dẫn cách cài đặt ARTEX, cấu hình PostgreSQL và LLM, theo dõi tác vụ từ giao diện, cũng như sử dụng các tính năng đồng bộ tài sản và kiểm thử lại lỗ hổng.
ARTEX là hệ thống AI đa agent gồm backend Go và frontend Next.js. Dự án cung cấp Demo trực tuyến để xem hiệu ứng tương tác. Khi chạy chính thức, frontend có thể được nhúng vào một binary duy nhất bằng go:embed của Go.
ARTEX có thể làm gì
ARTEX được xây dựng xoay quanh việc khám phá tự động, điều phối tác vụ và lưu vết quy trình. Hệ thống bao gồm các giao diện dashboard, danh sách tác vụ, quá trình thực thi phiên, chuỗi khám phá, phát hiện, tài sản, bản đồ bao phủ tài sản, bản ghi lưu lượng, hội thoại người trong vòng lặp, quản lý Agent và cấu hình LLM.

- Khám phá đa agent: các vai trò như goals, planner, worker và mainagent phối hợp để thực hiện tác vụ.
- Mô hình hai đồ thị: đồ thị tài sản lưu các dữ kiện tài sản được chia sẻ giữa nhiều tác vụ, còn đồ thị khám phá ghi lại mục tiêu, ý định, dữ kiện, gợi ý và phát hiện của từng tác vụ.
- Trao đổi thông tin ở cấp quy trình: worker có thể truy xuất quy trình thực thi của các worker khác để tái sử dụng những quan sát trong đó.
- Người trong vòng lặp: tham gia vào việc gọi công cụ và quyết định các thao tác quan trọng thông qua hội thoại và phê duyệt chặn.
- Luồng hoạt động thời gian thực: backend đẩy thông tin hoạt động qua SSE, cho phép liên tục theo dõi quá trình thực thi tác vụ trên giao diện.
- Ghi lại lưu lượng: proxy MITM ghi lại lưu lượng bảo toàn lưu lượng và bằng chứng cho việc thực thi công cụ.
- Đồng bộ tài sản: có thể đồng bộ các tài sản như domain, subdomain, IP, cổng, website và endpoint từ ScopeSentry.
- Kiểm thử lại lỗ hổng: có thể tạo riêng một phiên Agent kiểm thử lại cho lỗ hổng hiện có, đồng thời lưu kết luận, bằng chứng và liên kết phiên.

Cài đặt ARTEX
Cách 1: Sử dụng script cài đặt một lần
Đây là phương thức cài đặt được dự án khuyến nghị. Script sẽ kiểm tra hoặc cài đặt Docker, đồng thời cung cấp hai lựa chọn: chạy toàn bộ bằng Docker hoặc biên dịch và chạy cục bộ.

git clone https://github.com/Autumn-27/ARTEX.git
cd ARTEX
./install.shKhi chọn chạy toàn bộ bằng Docker, bạn cần nhập mật khẩu PostgreSQL hoặc có thể nhấn Enter để script tạo mật khẩu ngẫu nhiên. Sau đó script sẽ ghi vào .env và thực thi docker compose up -d.
Khi chọn chạy cục bộ, bạn có thể kết nối với cơ sở dữ liệu hiện có hoặc để Docker khởi động một cơ sở dữ liệu. Script sẽ tạo config.json, biên dịch binary duy nhất có tích hợp frontend và khởi động dịch vụ.
Sau khi cài đặt xong, truy cập http://localhost:8787. Khi mở lần đầu, truy cập /setup để thiết lập mật khẩu quản trị viên.
Cách 2: Sử dụng Docker Compose thủ công
git clone https://github.com/Autumn-27/ARTEX.git
cd ARTEX
cp .env.example .env
docker compose up -dChỉnh sửa .env và điền ít nhất POSTGRES_PASSWORD; nếu muốn cấu hình Anthropic bằng biến môi trường, bạn cũng có thể điền ANTHROPIC_API_KEY. Image container bao gồm các công cụ phổ biến, còn ./skills và ./data được giữ lại thông qua bind mount.
Sau khi khởi động, truy cập http://localhost:8787. Nếu cần MCP từ xa, hãy chọn http hoặc sse trong phần cài đặt hệ thống. SSE phiên bản cũ thường sử dụng /sse để thiết lập luồng sự kiện và nhận yêu cầu JSON-RPC qua /message?sessionId=... được trả về; cấu hình header xác thực theo dạng Authorization=Bearer <token>.
Cách 3: Sử dụng binary đã biên dịch
Tải gói nén dành cho nền tảng tương ứng từ Releases. Sau khi giải nén, gói thường bao gồm artex, start.sh hoặc start.bat trên Windows, skills/ và config.example.json.

cp config.example.json config.json
./start.shHãy sử dụng start.sh hoặc start.bat để khởi động, không chạy trực tiếp ./artex. Script khởi động chịu trách nhiệm giám sát tiến trình và hỗ trợ khởi động lại sau khi cập nhật trang bằng một thao tác. Khi cần chạy nền, có thể sử dụng:
nohup ./start.sh >artex.log 2>&1 &Cách 4: Biên dịch từ mã nguồn
Nếu cần xây dựng binary duy nhất có frontend nhúng từ mã nguồn, trước tiên hãy tạo các tệp tĩnh Next.js, sau đó sao chép chúng vào thư mục nhúng của backend.
cd web && npm ci && npm run build:static && cd ..
cp -r web/out server/webui/dist
CGO_ENABLED=0 go build -tags embedui -o artex ./cmd/artex
./start.shHoàn tất cấu hình cơ bản
Cấu hình PostgreSQL
ARTEX phụ thuộc vào PostgreSQL. Khi chạy cục bộ, bạn có thể điền thông tin kết nối cơ sở dữ liệu trong config.json hoặc ghi đè cấu hình bằng ARTEX_PG_DSN.
{
"database": {
"host": "127.0.0.1",
"port": 5432,
"user": "artex",
"password": "yourpass",
"dbname": "artex",
"sslmode": "disable"
}
}
Mỗi lần khởi động, dịch vụ sẽ thực hiện khởi tạo và migration cấu trúc cơ sở dữ liệu theo cách idempotent, bao gồm các thay đổi cần thiết về trường và index. Tuy nhiên, trước khi nâng cấp, bạn vẫn nên sao lưu cơ sở dữ liệu và thư mục ./data.
Cấu hình LLM
Tính năng khám phá cần LLM. Bạn có thể sử dụng API Key của Anthropic hoặc OpenAI, hoặc điền thông tin trên trang «Cấu hình LLM» của giao diện.
export ANTHROPIC_API_KEY=sk-...Bạn cũng có thể thiết lập OPENAI_API_KEY. Dự án còn hỗ trợ điều chỉnh nhà cung cấp, model, địa chỉ và proxy thông qua ARTEX_LLM_PROVIDER, ARTEX_LLM_MODEL, ARTEX_LLM_BASE_URL và ARTEX_LLM_PROXY.
Điều chỉnh số lượng đồng thời và cổng
Số lượng work agent của mỗi tác vụ có thể được điều chỉnh trong «Cài đặt hệ thống», với giá trị mặc định là 3. Tham số khởi động hỗ trợ thiết lập địa chỉ Web/API và cổng proxy ghi lại lưu lượng:
./start.sh -addr :8787 -proxy :8788Script khởi động sẽ truyền nguyên trạng các tham số cho artex.
Bắt đầu sử dụng giao diện Web

1. Đăng nhập và xem dashboard
Khi truy cập lần đầu, hãy thiết lập mật khẩu quản trị viên, sau đó vào dashboard để xem tổng quan, mức tiêu thụ Token và luồng hoạt động. Dashboard phù hợp để nhanh chóng xác định hệ thống hiện đang hoạt động bình thường hay không và tác vụ có phát sinh hoạt động mới hay không.
2. Xem tác vụ và quá trình thực thi
Trong danh sách tác vụ, chọn tác vụ mục tiêu để xem các phiên, lời gọi công cụ, bản ghi hoạt động và chuỗi khám phá. Trang quá trình thực thi hiển thị các bước làm việc của agent, còn chuỗi khám phá giúp hiểu mối quan hệ giữa mục tiêu, ý định, dữ kiện và phát hiện.


Khi sử dụng các trang này, nên ưu tiên xác minh quy trình trong môi trường cô lập cục bộ, đồng thời kiểm tra các bước agent thực sự đã thực hiện thông qua bản ghi hoạt động và bản ghi lưu lượng.
3. Xem phát hiện và tài sản
Trang phát hiện tập trung hiển thị các lỗ hổng hoặc phát hiện khác do tác vụ tạo ra; trang tài sản hiển thị thông tin tài sản được hệ thống thu thập và hợp nhất.


Bản đồ bao phủ tài sản có thể hiển thị các tài sản trong phạm vi theo bố cục lực hướng và làm nổi bật các node đã được kiểm thử, đồng thời hỗ trợ thu gọn và mở rộng node. Bản đồ phù hợp để quan sát tổng thể những tài sản đã được khám phá và những tài sản vẫn chưa được bao phủ.

Đồng bộ tài sản ScopeSentry
Nếu đã thu thập tài sản trong ScopeSentry, bạn có thể kết nối nguồn dữ liệu trên trang «Đồng bộ tài sản» của ARTEX để tránh thu thập trùng lặp.

- Điền địa chỉ ScopeSentry và API Key để hoàn tất kết nối nguồn dữ liệu.
- Chọn mục tiêu cần đồng bộ theo dự án hoặc tác vụ.
- Chọn loại tài sản, chẳng hạn như domain, subdomain, IP, cổng, website hoặc endpoint.
- Thực hiện nhập dữ liệu để ARTEX hợp nhất dữ liệu theo phạm vi tài sản của tổ chức.
- Kiểm tra kết quả nhập trong đồ thị tài sản và cung cấp dữ liệu đó cho agent để tiếp tục khám phá.
Đồ thị tài sản là kho dữ liệu sự thật toàn cục về tài sản được chia sẻ giữa các tác vụ. Chương trình chịu trách nhiệm tính toán quan hệ cha-con và khóa khử trùng lặp; agent gửi thông tin tài sản thô.
Hiểu kiến trúc hai đồ thị của ARTEX
Đồ thị tài sản: mô tả những tài sản nào tồn tại
Các nút trong đồ thị tài sản bao gồm root_domain, subdomain, ip, service, app và endpoint. Tên miền, tên miền con, dịch vụ và endpoint được tổ chức theo quan hệ cha-con và thuộc về công ty tương ứng.
Đồ thị khám phá: mô tả cách tiến hành nhiệm vụ
Đồ thị khám phá được lưu riêng theo từng nhiệm vụ, với các nút gồm goal, intent, fact, finding và hint. Hệ thống ghi lại chuỗi tiến triển thông qua các quan hệ như spawns, derived_from, yields và proves.
Hai đồ thị được liên kết thông qua các điểm neo. Ý định, sự kiện và lỗ hổng có thể được neo vào tài sản cụ thể. Vì vậy, có thể xem các tài sản liên quan từ hướng khám phá, hoặc truy ngược từ một tài sản để biết những hướng nào đã được kiểm thử trên tài sản đó trong nhiệm vụ hiện tại.
planner và worker phối hợp như thế nào
Công cụ sử dụng vòng lặp khép kín dựa trên sự kiện: sau khi đồ thị thay đổi, planner được đánh thức; planner đọc trạng thái hiện tại và phân phối các ý định; worker nhận một ý định, sử dụng công cụ để thực thi rồi ghi các tài sản, sự kiện hoặc phát hiện mới vào cơ sở dữ liệu; thao tác ghi này tiếp tục kích hoạt planner.

planner chỉ phân phối ý định khi phát hiện hướng mới chưa được bao phủ. Sau khi hoàn thành ý định đã nhận, worker sẽ dừng lại để tránh việc các worker khác nhau lặp lại quá trình thực thi không giới hạn.
Đối với chuỗi khám phá gồm nhiều bước và có sự phụ thuộc trước sau, planner duy trì một todolist dùng chung và được giữ lại theo từng nhiệm vụ. Chỉ khi bước tiên quyết hoàn tất và sự kiện tương ứng đã tồn tại thì bước tiếp theo mới được phân phối. Cơ chế này giúp tránh việc mở rộng song song toàn bộ chuỗi ngay từ đầu.
Truy vấn quá trình thực thi của worker khác
Worker tiếp theo có thể dùng search_all_worker_traces(q) để tìm kiếm theo từ khóa trong quá trình thực thi của các work khác thuộc nhiệm vụ này, hoặc dùng list_worker_traces để xem các work đã thực thi, sau đó dùng get_worker_trace(intent_id, step_ids=[...]) để lấy nội dung đầy đủ của các bước指定. Hệ thống tự động loại trừ ý định của worker hiện tại.
Việc trao đổi thông tin ở cấp độ quá trình giúp agent tái sử dụng các quan sát chưa chính thức được ghi vào fact, đồng thời duy trì giới hạn để mỗi worker chỉ thực thi ý định mà mình đã nhận.
Ghi lại lưu lượng và phê duyệt
ARTEX cung cấp proxy ghi lưu lượng và cổng phê duyệt công cụ. Trang lưu lượng dùng để xem các bản ghi do quá trình thực thi công cụ tạo ra; trang phê duyệt chặn dùng để xử lý các thao tác cần con người xác nhận.

Trong quá trình xác minh bảo mật, nên đồng thời xem phiên nhiệm vụ, lệnh gọi công cụ, luồng hoạt động và bản ghi lưu lượng để xác nhận hành vi của hệ thống đúng như dự kiến. Đối thoại có người tham gia cũng có thể được dùng để bổ sung ngữ cảnh và tham gia phê duyệt.
Thực hiện kiểm thử lại lỗ hổng
Tab «Kiểm thử lại» trong chi tiết nhiệm vụ cho phép chọn từng trang các lỗ hổng của nhiệm vụ, xem kết luận và bằng chứng trong lịch sử, đồng thời khởi động riêng một lần kiểm thử lại. Danh sách lỗ hổng, chi tiết lỗ hổng, chế độ xem nhóm nhiệm vụ và chế độ xem tài sản đều cung cấp lối vào kiểm thử lại.

- Nhấp vào «Kiểm thử lại» trong danh sách hoặc chi tiết lỗ hổng.
- Điền phiên bản đã khắc phục, điều kiện kiểm thử hoặc giới hạn nếu cần.
- Khởi động một phiên Agent kiểm thử lại độc lập.
- Xem quá trình kiểm thử lại trong phiên, sau đó xem kết luận và bằng chứng.
Kết luận kiểm thử lại gồm «Vẫn có thể tái hiện», «Đã khắc phục» và «Không thể xác nhận». Nếu kiểm thử lại hoàn tất thành công và kết luận là «Đã khắc phục», hệ thống sẽ tự động cập nhật trạng thái xử lý lỗ hổng; các trạng thái đang thực thi, thất bại, dừng hoặc kết luận khác sẽ không tự động thay đổi trạng thái ban đầu. Bằng chứng và báo cáo gốc vẫn được giữ lại.
Hệ thống được cài sẵn Agent retester có thể chỉnh sửa với tên «Kiểm thử lại lỗ hổng». Có thể cấu hình prompt, LLM, ngân sách chạy và công cụ của Agent trong phần quản lý Agent; nếu không liên kết LLM chuyên dụng, hệ thống sẽ dùng cấu hình kích hoạt toàn cục. Khi cùng một lỗ hổng đang được kiểm thử lại, hệ thống sẽ sử dụng lại phiên hiện có; có thể khởi động lại sau khi dừng, thất bại hoặc dịch vụ khởi động lại.
Lưu ý rằng tài liệu dự án nêu rõ lịch sử kiểm thử lại hiện chưa được đưa vào bản xuất báo cáo lỗ hổng hoặc gói lưu trữ nhiệm vụ, cũng chưa được tự động liên kết với gói lưu lượng. Chế độ trình diễn chỉ tạo các bản ghi mô phỏng được đánh dấu rõ ràng và không gửi yêu cầu đến mục tiêu thực.
Điểm chính khi triển khai reverse proxy
Frontend, API và SSE mặc định được cung cấp bởi cùng một cổng backend. Vì vậy, thông thường chỉ cần mở cổng HTTPS ra Internet và giữ 8787 của ARTEX trong mạng nội bộ. Luồng hoạt động thời gian thực sử dụng địa chỉ cùng nguồn, nên thường không cần thiết lập NEXT_PUBLIC_SSE_BASE.
Reverse proxy như Nginx phải tắt bộ đệm SSE và đặt thời gian chờ đọc đủ dài; nếu không, trình duyệt có thể kết nối thành công nhưng không thể liên tục nhận các sự kiện hoạt động.
location / {
proxy_pass http://127.0.0.1:8787;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 3600s;
proxy_http_version 1.1;
proxy_set_header Connection "";
}Chỉ cần thiết lập NEXT_PUBLIC_SSE_BASE ở giai đoạn build khi SSE bắt buộc phải sử dụng nguồn khác, chẳng hạn một subdomain độc lập. Biến này được cố định vào gói tĩnh trong lúc next build; thiết lập lại khi container chạy sẽ không có hiệu lực.
Nâng cấp và khôi phục

Quá trình nâng cấp ARTEX thay thế chương trình nhưng giữ lại volume dữ liệu PostgreSQL, ./data và ./skills. Khuyến nghị thực hiện cập nhật một lần nhấp trong thẻ «Phiên bản và cập nhật» của trang cấu hình hệ thống. Quy trình cập nhật sẽ tải gói phát hành cho nền tảng hiện tại, xác minh SHA256SUMS, chạy kiểm thử smoke bằng tệp nhị phân mới, rồi hoàn tất việc thay thế thông qua script khởi động.
Nếu bước xác minh hoặc kiểm thử smoke thất bại, chương trình tạm sẽ bị loại bỏ; nếu phiên bản mới khởi động thất bại liên tiếp ba lần, hệ thống sẽ tự động khôi phục. Phiên bản trước được giữ lại dưới tên artex.old. Tuy nhiên, cấu trúc cơ sở dữ liệu sẽ không được khôi phục cùng chương trình, vì vậy vẫn cần sao lưu cơ sở dữ liệu và ./data trước khi nâng cấp.
Cập nhật sẽ khởi động lại dịch vụ và làm gián đoạn các nhiệm vụ đang chạy, nên cần thực hiện khi hệ thống rảnh. Khi triển khai bằng Docker, cũng cần lưu ý rằng cập nhật trên trang chỉ thay thế chương trình, không thay thế chuỗi công cụ trong image. Để nâng cấp image, hãy chạy:
docker compose pull artex
docker compose up -d artexCũng có thể sử dụng script cập nhật trong kho lưu trữ:
cd ARTEX
./update.shPhát triển và kiểm thử cục bộ
Môi trường phát triển có thể sử dụng dev.sh để đồng thời khởi động backend, proxy lưu lượng và máy chủ phát triển Next.js:
./dev.shCổng backend mặc định là 8787, cổng proxy lưu lượng là 8788 và máy chủ phát triển frontend là 5173. Cũng có thể chạy riêng:
go run ./cmd/artex
cd web && npm run dev
go test ./...Nếu chỉ cần xem trước frontend mà không khởi động backend, có thể sử dụng:
cd web && NEXT_PUBLIC_MOCK=1 npm run devTóm tắt
ARTEX tích hợp backend nguyên khối Go, giao diện Next.js, PostgreSQL, agent LLM, ghi lưu lượng, cơ chế phê duyệt và quản lý tài sản vào một hệ thống. Khi bắt đầu, có thể triển khai qua Docker hoặc script cài đặt, sau đó cấu hình PostgreSQL và LLM, rồi từng bước tìm hiểu hành vi hệ thống từ nhiệm vụ, phiên, chuỗi khám phá, đồ thị bao phủ tài sản và bản ghi lưu lượng.
Hiểu sự phân công giữa đồ thị tài sản và đồ thị khám phá là chìa khóa để nắm vững ARTEX: đồ thị tài sản trả lời «Có những tài sản nào», còn đồ thị khám phá trả lời «Nhiệm vụ được tiến hành như thế nào». Trước mọi hoạt động kiểm thử, hãy giới hạn nghiêm ngặt trong môi trường cô lập cục bộ và mục đích học tập được dự án cho phép, đồng thời tuân thủ tuyên bố của dự án, giấy phép nguồn mở và pháp luật hiện hành.
