bối cảnh

Lý do thiết kế

Bản dịch có sự hỗ trợ của AI agent. Nếu có khác biệt, trang tiếng Anh là bản có hiệu lực. Nếu bạn thấy vấn đề nào trong văn bản, rất mong bạn mở một issue hoặc gửi một pull request.

Không mang tính chuẩn tắc: phần lập luận đằng sau hình hài của bản đặc tả.

Chủ ý thay vì chỉ dẫn

Những chỉ dẫn mang tính mệnh lệnh ("làm việc này, theo định dạng này, cho tệp của nhà cung cấp này") phải được viết lại cho từng agent host, từng tác vụ và từng người mới tham gia. Chủ ý bền vững (mọi thứ nghĩa là gì, điều gì phải luôn đúng, vì sao lại thế) được viết một lần, để bất kỳ host và tác vụ nào cũng có thể tự suy ra được.

Vì vậy, các danh mục của lớp ngữ cảnh được tổ chức theo những trục chủ đề mang ý nghĩa bền vững (domain, system, governance, decisions), không theo tác vụ. Một phiên bản sau có thể bổ sung bao tác vụ được đúc kết từ thực tiễn; còn 1.0 chủ ý chỉ chuẩn hoá bề mặt nhỏ hơn.

Leji: a circlesharedcontextlayerPeoplePeopleAgentsAgents
người với người · người với AI · người với AI với ngườiAi cũng đọc. Ai cũng đề xuất. Con người phê duyệt. Ngữ cảnh lỗi thời không bao giờ bị âm thầm coi là còn hiệu lực.

Một vòng tròn, không phải một tầng

Phần lớn ngữ cảnh hiện nay được viết cho agent: con người soạn chỉ dẫn, agent host nạp chúng, còn thông tin chỉ chảy một chiều từ trên xuống. Cách này giúp từng cá nhân làm việc nhanh hơn nhưng không giải quyết vấn đề cũ: tri thức giữa người với người vẫn nằm trong đầu và các luồng chat, còn mỗi agent host giữ một bản sao sự thật riêng rồi dần trôi lệch.

Leji đặt ba luồng ngang hàng quanh cùng một lớp ngữ cảnh: người với người (onboarding, xem xét, phân định các cuộc tranh luận), người với AI (công việc giao cho một agent), và người với AI với người (công việc do agent làm ra rồi được người xem xét).

Ai cũng đọc đúng một lớp ngữ cảnh đó; cả người lẫn agent đều đề xuất thay đổi. Bình đẳng về quyền đọc, không bình đẳng về quyền quyết: mọi lần ghi đều vào dưới dạng một đề xuất, và một người phê duyệt điều gì trở thành sự thật. Việc cùng một nội dung phục vụ cả ba luồng tự nó đã tạo thành cơ chế cưỡng chế: một trang chỉ có agent đọc có thể xuống cấp mà không ai hay, còn trang mà con người cũng dựa vào sẽ được sửa từ cả hai phía.

Chủ ý và bản ghi

Tài liệu của một kho mã nguồn thật có hai loại đan xen với hai mô hình sự thật khác nhau. Chủ ý (bảng thuật ngữ, bất biến, quy ước, ràng buộc bảo vệ) phải được giữ cho đúng: khi thực tế đổi thay, tài liệu được sửa lại. Bản ghi (trạng thái, đánh giá, sổ ghi, báo cáo, lưu trữ) thì đúng ngay khi được tạo trong một ranh giới nhất định; trạng thái về sau thay thế chúng, còn ngày tháng xác định tính cập nhật.

Nếu coi bản ghi như chủ ý, ta sẽ tạo ra những cam kết xem xét lại mà không ai duy trì nổi. Nếu loại chúng ra, phần lớn kho mã nguồn sẽ nằm ngoài vòng quản trị. Thay vào đó, Leji quản trị cả hai theo cách tách bạch.

Bản ghi được lập index, được xem xét và có chủ sở hữu y như chủ ý, nhưng chúng được định tuyến như những ứng viên có ngày tháng chứ không như ngữ cảnh bắt buộc. Hợp đồng với người đọc thì khác: đó là bằng chứng có ngày tháng, không bao giờ là sự thật hiện hành. Hạn tươi chỉ áp cho chủ ý. Năm danh mục vẫn là các trục chủ đề, còn loại thì trực giao với chúng: một đánh giá hệ thống vừa nói về hệ thống vừa đúng tính tới ngày của nó.

Bản đặc tả không bao giờ chứng nhận bản ghi nào là "mới nhất", vì 1.0 không khai báo chuỗi bản ghi lẫn thứ tự của chúng. Người đọc tự đánh giá độ mới dựa trên ngày tháng mà index hiển thị. Chính các bản ghi quyết định của bản đặc tả này, có ngày tháng, chỉ thêm mới, và không bao giờ lỗi thời, là ví dụ cho khuôn mẫu ấy.

Vì sao đây không phải một wiki

Wiki dần xuống cấp vì không có gì buộc chúng phải luôn cập nhật. Lớp ngữ cảnh có ba cơ chế cưỡng chế mà wiki không có:

  • Agent đọc lớp ngữ cảnh trong mọi tác vụ, nên ngữ cảnh sai tạo ra đầu ra sai mà ai đó sẽ nhận thấy ngay trong ngày.
  • Thay đổi đi qua vòng xem xét code, nên không có thêm một quy trình riêng để bị bỏ quên.
  • Trôi lệch mà máy phát hiện được (một index lỗi thời, một profile hỏng) là một phép kiểm sẽ báo lỗi, và ở mức governed thì phép kiểm đó chạy trong CI ở mọi lần thay đổi. Phép kiểm quy tắc chỉ được thêm vào so sánh changelog trong cây làm việc với bản tại HEAD, nên việc tua ngược còn nằm trong cây làm việc sẽ khiến phép kiểm thất bại; nếu việc tua ngược đã được commit thì việc xem xét bộ thay đổi sẽ phát hiện ra, chứ không phải phép kiểm.

Vì sao các tệp của nhà cung cấp chỉ chuyển hướng

Ngữ cảnh chính thống nằm trong định dạng cấu hình của một nhà cung cấp sẽ trở nên phân mảnh và bị khoá vào host đó. Vì các agent host tìm tới điểm vào của riêng chúng, Leji dùng những điểm vào ấy làm adapter: một dòng trỏ tới boot profile. Một nguồn sự thật duy nhất thì sống lâu hơn bất kỳ host nào.

Vì sao federation ghép lại thay vì tập trung hoá

Tập trung hoá tri thức của mọi nhóm sẽ phá vỡ vòng lặp sở hữu vốn giữ cho ngữ cảnh luôn cập nhật. Chủ sở hữu sửa lớp của mình ngay trong lúc dùng nó ở mọi tác vụ; kho mã nguồn trung tâm sẽ tách nội dung khỏi trách nhiệm và khiến các sửa đổi liên nhóm phải xếp hàng chờ người gác cổng.

Federation giữ quyền sở hữu và sự rõ ràng đi cùng nhau. Lớp ngữ cảnh của mỗi nhóm ở lại trong kho mã nguồn của nhóm đó, nơi vòng tròn của họ đọc và phê duyệt nó. Một lớp chủ mount một lớp ngang hàng ở một phiên bản đã ghim để đọc nó và định tuyến agent vào đó; không nội dung nào bị sao chép hay commit vào lớp chủ.

Chủ sở hữu của lớp ngang hàng vẫn là bên phê duyệt các thay đổi, nên việc mount trao quyền đọc chứ không trao thẩm quyền. Phần lớn các nhóm không bao giờ cần tới federated; nó chỉ có ý nghĩa khi đã có nhiều hơn một nhóm sở hữu một lớp ngữ cảnh đáng giữ nguyên vẹn.

Một nhóm chỉ có một người

Không điều gì trong vòng tròn đòi hỏi phải có nhiều hơn một người. Cùng một cá nhân có thể đề xuất, giao việc cho một agent, và phê duyệt. Ngay cả khi đó, agent vẫn chỉ xem xét và tư vấn trong khi con người sở hữu và phê duyệt; map agents trong manifest không chuyển giao trách nhiệm.

Nhóm một người là vòng tròn nhỏ nhất, không phải một mô hình khác. Mô hình này mở rộng từ một người lên một nhóm rồi đến tổ chức gồm nhiều nhóm mà không cần thêm thành phần nào.