GitHub Spark sắp đóng: Xuất mã trước 31/8 và thay mọi lệnh llm()

GitHub Spark sẽ đóng sau ngày 31/8/2026. Để giữ mã có thể chỉnh sửa, hãy mở workbench của từng ứng dụng, chọn dấu ba chấm rồi chọn Create repository trước ngày 31/8/2026. Sau đó, kiểm tra repository, tìm mọi lời gọi llm() và chuẩn bị nơi lưu dữ liệu cùng bí mật cho môi trường mới.
Ứng dụng đã triển khai có thể tiếp tục chạy sau khi Spark đóng, nhưng đó không phải là bảo đảm rằng bạn còn chỉnh sửa được mã. Thông báo ngừng GitHub Spark nêu rõ hạn xuất mã là 31/8/2026; llm() đã không hoạt động từ ngày 30/7/2026, còn người dùng chuyển sang nhà cung cấp suy luận riêng phải tự quản lý khóa API và chi phí.
1. Tạo repository cho từng ứng dụng Spark

Xuất mã trước khi sửa bất kỳ thứ gì. Trong workbench của từng ứng dụng, mở menu dấu ba chấm ở góc trên bên phải, chọn Create repository, rồi xác nhận bằng nút Create trong hộp thoại.
Tài liệu xây dựng ứng dụng Spark xác nhận repository mới là repository riêng tư trong tài khoản cá nhân, chứa toàn bộ lịch sử thay đổi trước đó và đồng bộ hai chiều giữa Spark với nhánh chính; tài liệu cũng cho biết Spark tạo ứng dụng bằng React và TypeScript, đồng thời có thể dùng kho khóa–giá trị tích hợp.
- Xác nhận repository xuất hiện trong đúng tài khoản và vẫn ở chế độ riêng tư.
- Kiểm tra cây tệp, tệp quản lý phụ thuộc, lockfile và tài nguyên cần thiết.
- Xem lịch sử commit, rồi đối chiếu thay đổi cuối trong Spark với commit mới nhất trên nhánh chính.
- Clone repository sang máy hoặc môi trường phát triển do nhóm kiểm soát.
- Nếu ứng dụng thuộc một tổ chức, cấp quyền hoặc chuyển repository khỏi tài khoản cá nhân theo quy trình quản trị của nhóm.
2. Chứng minh bản xuất có thể dựng lại
Repository tồn tại chưa có nghĩa ứng dụng có thể được phục hồi ở nơi khác. Trên một bản clone sạch, dùng trình quản lý gói thể hiện trong lockfile để cài phụ thuộc, chạy lệnh build được khai báo trong dự án và ghi lại lỗi trước khi thay mã.
Nếu cần đối chiếu với quy trình Spark trong thời gian dịch vụ còn hoạt động, hướng dẫn Spark CLI yêu cầu một repository và GitHub Codespace, sau đó dùng npm để cập nhật SDK, chạy build và triển khai thư mục dist. Đây chỉ là đường triển khai trong hệ sinh thái Spark, không thay cho việc chuẩn bị môi trường vận hành độc lập.
- Gắn tag hoặc ghi lại mã commit cuối cùng được biết là ổn định.
- Kiểm tra riêng giao diện, điều hướng, xác thực, đọc–ghi dữ liệu và chức năng AI.
- Giữ một bản build trước thay đổi để so sánh những hành vi không liên quan đến AI.
- Tạo nhánh di chuyển riêng; chưa xóa cấu hình cũ trước khi bản thay thế vượt qua kiểm thử.
3. Tìm mọi lời gọi llm() và lập bản đồ phụ thuộc

Tìm trên toàn repository, không chỉ trong tệp đang mở. Có thể dùng git grep -n -E 'llm[[:space:]]*\(' hoặc rg -n 'llm\s*\(' --glob '!node_modules/**' --glob '!dist/**' .. Tìm thêm tên các hàm bao bọc do dự án tự định nghĩa, vì một lời gọi llm() trong lớp tiện ích có thể phục vụ nhiều màn hình.
Với mỗi kết quả, ghi lại tệp, chức năng gọi, dữ liệu đầu vào, prompt, định dạng đầu ra mong đợi và cách xử lý lỗi. Đừng bỏ qua tác vụ nền, trình xử lý sự kiện hoặc luồng chỉ xuất hiện với một trạng thái dữ liệu cụ thể.
- Nếu không có kết quả, chạy cả hai kiểu tìm kiếm và thao tác lại các tính năng quan trọng.
- Nếu có nhiều lời gọi trực tiếp, đưa chúng qua một adapter chung thay vì sửa rải rác từng màn hình.
- Nếu đầu ra có cấu trúc, giữ lại schema, quy tắc phân tích và hành vi khi phản hồi sai định dạng.
- Nếu prompt chứa dữ liệu nhạy cảm, xác định rõ dữ liệu nào được phép gửi sang nhà cung cấp mới.
4. Thay nhà cung cấp suy luận nhưng vẫn có đường quay lui
Chọn nhà cung cấp theo yêu cầu của ứng dụng: mô hình cần dùng, vùng xử lý dữ liệu, giới hạn tốc độ, độ trễ, đầu ra có cấu trúc và cách tính phí. API có cú pháp tương tự không bảo đảm prompt, giới hạn ngữ cảnh hay chất lượng phản hồi sẽ tương đương.
Tạo một adapter nhận đầu vào chuẩn của ứng dụng rồi chuyển đổi sang API mới. Đọc khóa API từ biến môi trường hoặc kho bí mật của nền tảng triển khai; không đưa khóa vào mã nguồn, lịch sử Git, bundle phía trình duyệt hoặc tệp cấu hình được theo dõi.
Đường quay lui không thể là gọi lại llm(), vì dịch vụ suy luận đứng sau hàm này đã ngừng hoạt động. Hãy giữ commit ổn định cho phần không dùng AI và thêm cờ cấu hình để tắt có kiểm soát tính năng AI nếu adapter mới gặp lỗi.
5. Kiểm kê dữ liệu, bí mật và tài nguyên ngoài repository

Create repository được mô tả là thao tác lưu mã và lịch sử thay đổi; tài liệu công khai không cam kết thao tác này xuất toàn bộ dữ liệu trong kho khóa–giá trị. Vì vậy, hãy coi mã nguồn và dữ liệu vận hành là hai hạng mục di chuyển riêng.
- Dữ liệu: mở tab Data, xác định tập dữ liệu cần giữ, chủ sở hữu, định dạng xuất khả dụng và đích nhập mới.
- Bí mật: lập danh sách khóa API, webhook và thông tin xác thực; thu hồi khóa từng xuất hiện trong mã hoặc lịch sử commit.
- Danh tính: kiểm tra luồng GitHub authentication, callback URL và quyền truy cập trong môi trường mới.
- Tài nguyên: đối chiếu ảnh, video, tài liệu tải lên và mọi tệp được ứng dụng tham chiếu nhưng không có trong repository.
- Chi phí: đặt hạn mức, cảnh báo và quy tắc xử lý khi API suy luận mới vượt ngân sách.
Với mỗi hạng mục, ghi rõ vị trí hiện tại, nơi lưu mới, người chịu trách nhiệm và cách xác nhận dữ liệu đã chuyển đủ. Không đưa ứng dụng sang môi trường mới nếu vẫn còn dữ liệu hoặc bí mật không xác định được nguồn gốc.
6. Kiểm thử trước và sau khi chuyển đổi
Dùng cùng một bộ đầu vào để so sánh bản chuẩn với bản dùng nhà cung cấp mới. Không cần yêu cầu câu chữ giống hệt; hãy đo những điều sản phẩm thực sự phụ thuộc như trường bắt buộc, định dạng, ngôn ngữ, thời gian phản hồi, thông báo lỗi và mức sử dụng API.
- Chạy build sạch tại commit đã gắn mốc và lưu kết quả.
- Kiểm thử chức năng không dùng AI để tách lỗi môi trường khỏi lỗi suy luận.
- Thử từng luồng trong bản đồ llm(), gồm đầu vào hợp lệ, rỗng, quá dài và phản hồi lỗi.
- Xác nhận dữ liệu được đọc, ghi và phân quyền đúng tại nơi lưu trữ mới.
- Kiểm tra khóa không xuất hiện trong bundle phía máy khách, log hoặc lịch sử commit.
- Triển khai cho phạm vi nhỏ, theo dõi lỗi và chi phí, rồi mới chuyển toàn bộ lưu lượng.
Quá trình chỉ hoàn tất khi repository đã được clone độc lập, bản build hoạt động, mọi llm() đã được loại bỏ hoặc cô lập, dữ liệu cần giữ có đích đến và nhóm biết chính xác commit dùng để quay lui.
Đăng ký bản tin
Nhận tin Web3, AI và tiền mã hóa mới nhất ngay trong hộp thư.