10 điểm bởi GN⁺ 14 ngày trước | 1 bình luận | Chia sẻ qua WhatsApp
  • Nền tảng thử nghiệm được thiết kế để quản lý các tác tử dựa trên LLM chạy đồng thời trong container trên cả máy cục bộ lẫn cụm từ xa
  • Mỗi tác tử hoạt động như một tiến trình cách ly với danh tính, thông tin xác thực, không gian làm việc độc lập, đồng thời theo đuổi linh hoạt và song song nhiều mục tiêu như viết mã, kiểm toán, kiểm thử
  • Được định nghĩa là "hypervisor cho tác tử", dự án này chọn triết lý cách ly từ bên ngoài bằng container, git worktree và chính sách mạng thay vì bơm quy tắc hành vi vào ngữ cảnh
  • Tích hợp các tác tử chính như Gemini CLI, Claude Code, OpenCode, Codex thông qua bộ điều hợp harness, đồng thời hỗ trợ Docker, Podman, Apple Container, Kubernetes làm runtime
  • Theo dõi vòng đời tác tử bằng mô hình trạng thái 3 chiều gồm vòng đời (Phase), hành vi hiện tại (Activity) và trạng thái chi tiết (Detail), đồng thời trình diễn kịch bản cộng tác trên một codebase game demo

Scion là gì?

  • Một testbed điều phối thử nghiệm để quản lý nhóm tác tử dựa trên LLM chạy đồng thời trong container trên máy cục bộ, VM từ xa và cụm Kubernetes
  • Cấp cho từng tác tử danh tính, thông tin xác thực và không gian làm việc độc lập để thực thi các mục tiêu khác nhau như nghiên cứu, viết mã, kiểm toán, kiểm thử dưới dạng đồ thị tác vụ song song tiến hóa động
  • Google định nghĩa Scion là "hypervisor cho tác tử", tích hợp bộ nhớ tác tử, phòng chat và quản lý tác vụ như các mối quan tâm độc lập (orthogonal)

Triết lý thiết kế cốt lõi: cách ly thay vì ràng buộc

  • Thay vì giới hạn hành vi tác tử bằng quy tắc, hệ thống đảm bảo an toàn bằng các ranh giới ở cấp hạ tầng như container, git worktree, chính sách mạng
  • Tác tử có thể tự do chạy ở chế độ --yolo, còn lớp cách ly sẽ đảm nhiệm vai trò guardrail từ bên ngoài
  • Nhờ cách tiếp cận này, không cần bơm các quy tắc phức tạp vào ngữ cảnh của tác tử, giúp tác tử chỉ tập trung vào nhiệm vụ của mình

Khái niệm cốt lõi (bảng thuật ngữ)

Scion sử dụng hệ thuật ngữ riêng, vì vậy cần hiểu trước các khái niệm dưới đây

  • Agent: Tiến trình cách ly chạy vòng lặp LLM + Harness. Đây là đơn vị thực thi cơ bản của Scion, sở hữu danh tính, thông tin xác thực và không gian làm việc độc lập
  • Grove: Không gian làm việc dự án nơi các tác tử tồn tại. Tương ứng với thư mục .scion trong hệ thống tệp, có thể nằm ở gốc kho git hoặc thư mục home của người dùng
    • Grove dựa trên git dùng UUID v5 (được tạo quyết định từ URL kho lưu trữ), còn Grove native của Hub dùng UUID v4
  • Hub: control plane trung tâm trong kiến trúc Scion được host. Đóng vai trò "bộ não" điều phối trạng thái giữa người dùng, Grove và runtime broker
    • Quản lý danh tính và xác thực dựa trên OAuth, lưu trữ trạng thái tác tử/Grove/template trong cơ sở dữ liệu trung tâm, điều phối lệnh vòng đời và cung cấp chế độ xem cộng tác qua Web Dashboard
  • Profile: Đặc tả môi trường thực thi gói một runtime cụ thể cùng cấu hình Harness. Khi chuyển giữa các môi trường như "Local Docker", "Production Kubernetes", chỉ cần thay Profile mà không phải sửa template
  • Harness: Bộ điều hợp tích hợp các công cụ LLM cụ thể như Gemini CLI, Claude Code, Codex vào hệ sinh thái Scion. Xử lý để các lệnh Scion phổ quát như start, stop, attach, resume hoạt động nhất quán trên mọi tác tử
  • Template: Bản thiết kế tạo tác tử. Xác định cấu hình mặc định, system prompt và công cụ, được lưu trong .scion/templates/
    • Ngoài các template dựng sẵn (gemini, claude, opencode, codex), còn có thể tạo template vai trò tùy chỉnh như "kiểm toán viên bảo mật", "chuyên gia React"
  • Runtime: Lớp hạ tầng chạy container tác tử. Hỗ trợ Docker, Podman, Apple Container, Kubernetes
  • Runtime Broker: Nút tính toán đăng ký với Hub để cung cấp năng lực thực thi (máy chủ, laptop, cụm K8s). Phụ trách quản lý vòng đời tác tử, đồng bộ không gian làm việc và stream log

Kiến trúc: cấu trúc Manager-Worker

  • scion CLI: Công cụ phía host để điều phối vòng đời tác tử. Cung cấp quản lý Grove (không gian làm việc dự án) và quản lý template (scion templates)
  • Agents: Chạy phần mềm tác tử như Gemini CLI, Claude Code, Codex bên trong các container runtime cách ly như Docker
  • Luồng sử dụng cơ bản:
    1. scion init — tạo thư mục .scion tại gốc dự án
    2. scion start <agent-name> "<task>" — chạy tác tử
    3. scion attach <agent-name> — kết nối tương tác vào phiên tác tử, hoặc dùng scion logs để xem đầu ra
    4. scion resume <agent-name> — khởi động lại tác tử đã dừng nhưng vẫn giữ nguyên trạng thái

Chiến lược không gian làm việc: phương thức cách ly bằng git

Có hai cách cấp không gian làm việc git độc lập cho từng tác tử

  • Chế độ cục bộ — Git Worktrees: dùng khi chạy không có Hub
    • Tạo worktree có nhánh riêng tại đường dẫn ../.scion_worktrees/<grove>/<agent>
    • Được mount vào /workspace bên trong container, nên vẫn chia sẻ lịch sử cùng kho lưu trữ nhưng có thư mục làm việc độc lập
    • Sau khi hoàn tất công việc, gộp thủ công bằng git merge <agent-branch>
  • Chế độ Hub — Git Init + Fetch: áp dụng khi dùng Hub
    • Broker tiêm SCION_GIT_CLONE_URL, SCION_GIT_BRANCH, GITHUB_TOKEN vào container
    • Bên trong container, sciontool init khởi tạo không gian làm việc, fetch kho qua HTTPS rồi checkout nhánh scion/<agent-name>
    • Không cần thông tin xác thực SSH của host, nhưng cần GITHUB_TOKEN
    • Bảo đảm hành vi nhất quán trên mọi máy broker bất kể kho có tồn tại cục bộ hay không

Cơ chế cách ly tài nguyên

  • Hệ thống tệp: mount thư mục home chuyên dụng của từng tác tử vào container
  • Shadow Mounts (tmpfs): chặn truy cập vào dữ liệu cấu hình .scion hoặc không gian làm việc của tác tử khác bằng tmpfs shadow mount
  • Thông tin xác thực: các thông tin nhạy cảm như xác thực gcloud được mount chỉ đọc hoặc tiêm qua biến môi trường, và chỉ phơi lộ giới hạn cho đúng tác tử đó
  • Ngoại hóa dữ liệu Grove: dữ liệu Grove không thuộc git và thư mục home của tác tử được ngoại hóa, khiến tác tử không thể traverse dữ liệu của tác tử khác từ không gian làm việc

Mô hình trạng thái tác tử (3 chiều)

Theo dõi trạng thái tác tử theo ba chiều để phân biệt sự kiện hạ tầng và trạng thái nhận thức của tác tử

  • Phase (giai đoạn vòng đời): createdprovisioningcloningstartingrunningstoppingstopped (hoặc error)
  • Activity (hành vi tác tử khi đang running): idle, thinking, executing, waiting_for_input, blocked, completed, limits_exceeded, offline
    • completed, blocked, limits_exceeded là các trạng thái "sticky", được giữ nguyên cho đến khi tác tử được khởi động lại hoặc dừng một cách tường minh
    • blocked do chính tác tử đặt, cho biết nó đang chờ tác tử con hoàn tất, giúp hệ thống không hiểu nhầm đây là lỗi
    • offline xảy ra khi heartbeat của tác tử không được phát hiện trong một khoảng thời gian nhất định, có thể do lỗi làm mới token xác thực
  • Detail: ngữ cảnh bổ sung của Activity hiện tại (tên công cụ, thông điệp, tóm tắt tác vụ, v.v. ở dạng tự do)

Hệ thống plugin

  • Kiến trúc plugin dựa trên hashicorp/go-plugin cho phép mở rộng hệ thống, sử dụng giao tiếp gRPC
  • Plugin message broker: cung cấp backend truyền thông điệp tùy chỉnh cho thông báo tác tử và nhắn tin có cấu trúc
  • Plugin agent harness: cho phép triển khai harness tùy chỉnh để tích hợp công cụ LLM mới vào Scion mà không cần sửa codebase lõi
  • Hiện vẫn ở giai đoạn nền tảng ban đầu (foundational stage), cả hai loại plugin đều đã có triển khai tham chiếu

1 bình luận

 
Ý kiến trên Hacker News
  • Lần này tôi rất muốn thử Scion
    Trước đây tôi từng dùng Gastown cùng thể loại, kết quả thì tốt nhưng độ dao động khá lớn
    Những phàn nàn chính về Gastown là (1) đắt, (2) bắt buộc chỉ dùng mô hình Claude, (3) khó sao lưu hoặc kết nối từ xa với cơ sở dữ liệu nội bộ, (4) khi nâng cấp thường xuyên xảy ra mất ngữ cảnh
    Dù vậy, nó vẫn tạo ra những kết quả trò chuyện và cộng tác mang tính ‘kỳ diệu’ hơn các công cụ khác trên thị trường

  • Cách tiếp cận của Google khá thú vị
    Tôi đã tạo một nền tảng điều phối agent tên là Optio, tích hợp với các hệ thống ticket như Notion, Github Issues, Jira, Linear, và được thiết kế để agent code có thể xử lý đến cả bước gộp PR
    Khả năng hỗ trợ agent chạy dài hạngiao tiếp giữa các container của Scion rất ấn tượng
    Tuy nhiên, tôi xây nó trên k8s, còn Scion dường như đang cố tái triển khai control plane riêng nên tôi hơi hoài nghi

  • Triết lý “cô lập thay vì ràng buộc” có vẻ là hướng đi đúng
    Container cung cấp ranh giới nhưng không thể nhìn thấy những gì diễn ra bên trong
    Tôi tò mò Scion phơi bày được bao nhiêu ngữ cảnh thực thi. Nếu không, có thể sẽ xảy ra tình huống như vụ tấn công LiteLLM, chỉ biết thiệt hại sau khi đã chạy xong

    • Tôi là nhà phát triển chính của Scion
      Có nhiều tầng trạng thái và telemetry
      Về cơ bản, hệ thống hook sẽ thu thập dữ liệu, và nếu có hỗ trợ OpenTelemetry thì sẽ gửi dữ liệu đó tới bộ thu thập trên đám mây
      Một số hoạt động do agent tự báo cáo, và thông tin này sẽ được phản ánh vào control plane
  • Mã nguồn bị chôn khá sâu trong tài liệu
    Phải tự đi tìm kho GitHub

    • Đúng vậy, tôi cũng đã đánh dấu sao từ cuối tháng 3 rồi quên mất, lần này xem lại thì thấy khá thú vị
  • Hướng đi có vẻ giống Gastown nhưng dường như thiếu vài tính năng cốt lõi
    Đặc biệt, tính năng formula đúng là yếu tố thay đổi cuộc chơi

    • Tôi là nhà phát triển chính của Scion
      Những tính năng bị thiếu là do chủ đích trong thiết kế. Scion gần với cái mà Gastown gọi là “gascity” hơn — tức là cấu trúc mà người dùng tự mang vào các nhân vật điều phối và định nghĩa của mình
      Ví dụ này cho thấy đây là kiểu điều phối dựa trên Markdown khá đơn giản
      Scion đóng vai trò game engine, và hiện đang có công việc port Gastown sang chạy trên Scion
  • Dự án vẫn còn ở giai đoạn thử nghiệm ban đầu nên thấy hơi bất an
    Chế độ local thì ổn định, nhưng workflow dựa trên Hub mới chỉ được kiểm chứng khoảng 80%, còn runtime Kubernetes thì vẫn khá thô
    Vì vậy, lúc này có lẽ Gastown vẫn là lựa chọn tốt hơn

    • Thật khó tưởng tượng Gastown lại tốt hơn bất cứ thứ gì khác
  • Nhìn tiêu đề tôi lại nghĩ đến SCION khác (kiến trúc Internet)
    Xem bài trên wiki

  • Tôi muốn thử nghiệm với agent nhiều hơn, nhưng công ty chỉ trả tiền cho Claude Code
    Hơn nữa, theo TOS thì không được dùng API cho mục đích khác
    Có ai ở trong tình huống tương tự không? Mô hình tính phí theo token cũng nhanh chóng trở nên đắt đỏ

    • Về cơ bản, cái này chạy Claude Code trong container, nên không vi phạm TOS
  • Thật sự rất ngầu! Gần đây tôi cũng đã tự làm một thứ tương tự
    Tôi đã nghịch Parallax, và có viết lại nội dung liên quan trên blog