Môi trường cô lập trên Windows
Môi trường cô lập trên Windows
Cấu hình và khắc phục sự cố môi trường cô lập Codex gốc trên Windows
Sử dụng Codex trên Windows với ứng dụng ChatGPT dành cho máy tính gốc, CLI hoặc tiện ích mở rộng IDE.
Ứng dụng ChatGPT dành cho máy tính trên Windows hỗ trợ các quy trình cốt lõi như trò chuyện song song, worktree, tác vụ theo lịch, chức năng Git, trình duyệt tích hợp, xem trước tệp, plugin và skill.
Ứng dụng có thể chạy trực tiếp trong PowerShell với môi trường cô lập Windows thay vì đòi hỏi WSL hoặc máy ảo. Nhờ đó, Codex hoạt động trong các quy trình gốc của Windows đồng thời thực thi các giới hạn quyền truy cập hệ thống tệp và mạng.
Để cài đặt trong doanh nghiệp, xem Hướng dẫn triển khai trên Windows.
Codex hỗ trợ ba cơ chế môi trường cô lập trên Windows:
mxc: Môi trường cô lập được khuyến nghị trên các thiết bị Windows tương thích. Sử dụng cơ chế cô lập tiến trình gốc mà không cần thiết lập được quản trị viên phê duyệt, tài khoản Windows bổ sung hoặc quy tắc tường lửa cục bộ.elevated: Phương án dự phòng kiểu cũ được ưu tiên khi MXC không khả dụng hoặc bị vô hiệu hóa. Yêu cầu thiết lập được quản trị viên phê duyệt. Các lệnh trong môi trường cô lập chạy không có quyền quản trị viên.unelevated: Phương án dự phòng kiểu cũ khi không thể thiết lập với quyền quản trị viên và chính sách của tổ chức cho phép. Khả năng cách ly mạng yếu hơnelevatedvà không hỗ trợ các đường dẫn bị cấm đọc.
Cấu hình môi trường cô lập trên Windows
Môi trường cô lập trên Windows thực thi các quyền hệ thống tệp và mạng hiện hành cho các lệnh và tiến trình con của chúng. Hồ sơ quyền xác định những đường dẫn nào được phép đọc hoặc ghi và có cho phép truy cập mạng hay không. Chính sách phê duyệt kiểm soát riêng thời điểm Codex yêu cầu chạy lệnh với quyền truy cập rộng hơn. Xem môi trường cô lập và phê duyệt.
Bật MXC
Ứng dụng dành cho máy tính tự động ưu tiên MXC cho tài khoản cá nhân khi thiết bị hỗ trợ. Đối với triển khai doanh nghiệp hoặc sử dụng CLI độc lập, bạn có thể bật hành vi tương tự bằng cấu hình bên dưới.
Trong config.toml:
[features]
prefer_mxc = trueVới prefer_mxc = true, Codex sử dụng MXC cho các lệnh Windows khi thiết bị và chính sách hỗ trợ.
Nếu không, Codex sử dụng quy trình lựa chọn và thiết lập kiểu cũ hiện có.
Đối với doanh nghiệp có mức hỗ trợ thiết bị hoặc chính sách khác nhau, hãy giữ windows.sandbox ở giá trị tương ứng với cách triển khai kiểu cũ mà tổ chức cho phép, elevated hoặc unelevated, làm phương án dự phòng.
Quản trị viên có thể phân phối cấu hình này làm mặc định hoặc bắt buộc áp dụng features.prefer_mxc = true thông qua requirements.toml. Cả hai cách đều cho phép dùng phương án dự phòng kiểu cũ. Xem cấu hình được quản lý để biết sự khác biệt giữa giá trị mặc định và yêu cầu bắt buộc.
Giữ MXC ở trạng thái vô hiệu hóa
Để ngăn việc sử dụng MXC trong tổ chức, hãy thêm nội dung sau vào tệp được quản lý
requirements.toml:
[windows]
allow_mxc = falseThiết lập này chặn cả việc tự động chọn MXC lẫn việc chỉ định tường minh windows.sandbox = "mxc". Các cài đặt và yêu cầu hiện có đối với môi trường cô lập kiểu cũ vẫn áp dụng.
Khả năng tương thích của MXC
Máy chủ phải có sẵn các khả năng Microsoft Execution Containers (MXC) cần thiết mà Microsoft đang triển khai cho các thiết bị Windows 11. Microsoft đã giới thiệu cơ chế cô lập tiến trình MXC trong Windows 11 24H2 (build 26100.9278) và 25H2 (build 26200.9278). Dùng lệnh bên dưới để xác minh khả năng hỗ trợ MXC trên thiết bị của bạn.
Trong Codex CLI 0.162.0 trở lên, bạn có thể thử MXC cho một lệnh mà không thay đổi lựa chọn môi trường cô lập đã lưu. Từ thư mục dự án, hãy chạy:
codex -c windows.sandbox=mxc sandbox --include-managed-config --permission-profile :workspace -- cmd.exe /d /c echo MXC_OK
$LASTEXITCODEĐầu ra dự kiến là MXC_OK và mã thoát 0. Thao tác này kiểm tra việc khởi chạy lệnh với hồ sơ quyền của không gian làm việc và các yêu cầu do quản trị viên quản lý.
Việc chọn tường minh windows.sandbox = "mxc" sẽ thất bại nếu các khả năng gốc cần thiết không khả dụng hoặc chính sách chặn MXC.
Lưu ý các giới hạn tương thích sau:
- Chế độ mạng được quản lý yêu cầu
allow_local_binding = truecó hiệu lực. MXC cho phép kết nối đến và từ các dịch vụ trên địa chỉ loopback của máy chủ. Các quy tắc miền của proxy vẫn áp dụng cho lưu lượng đi qua proxy, nhưng các bước kiểm tra bổ sung của proxy đối với đích đến trong mạng riêng được loại bỏ. - Các tiến trình con còn lại sẽ dừng khi lệnh chạy ở tiền cảnh kết thúc. Hãy kiểm thử các quy trình phụ thuộc vào máy chủ phát triển chạy tách rời.
- Các mẫu glob chặn đọc sử dụng những tệp khớp tại thời điểm mỗi tiến trình trong môi trường cô lập khởi động, giống như trên Linux và WSL. Các tệp khớp được tạo sau đó vẫn có thể được tiến trình đang chạy đó đọc nếu các quyền khác của tiến trình cho phép truy cập. Các shell, tập lệnh, trình theo dõi và máy chủ phát triển chạy lâu giữ nguyên ảnh chụp trạng thái đó trong suốt vòng đời của chúng, chứ không phải toàn bộ phiên Codex. Xem thời điểm áp dụng mẫu glob chặn đọc.
Cấu hình phương án dự phòng kiểu cũ
Chọn cơ chế dự phòng trong config.toml:
[windows]
sandbox = "elevated" # or "unelevated"elevated là phương án dự phòng kiểu cũ được ưu tiên. Cơ chế này sử dụng các tài khoản
môi trường cô lập chuyên dụng có quyền hạn thấp hơn, các ranh giới quyền hệ thống tệp, quy tắc tường lửa
và những thay đổi chính sách cục bộ cần thiết cho các lệnh chạy trong môi trường cô lập.
Giống như MXC, elevated liệt kê các tệp khớp với mẫu glob chặn đọc khi mỗi tiến trình trong môi trường cô lập khởi động. Các tệp khớp được tạo sau đó vẫn có thể được tiến trình đang chạy đó đọc nếu các quyền khác của tiến trình cho phép truy cập. Xem thời điểm áp dụng mẫu glob chặn đọc để biết ảnh hưởng đối với các tiến trình chạy lâu.
unelevated là phương án dự phòng kiểu cũ. Cơ chế này chạy lệnh bằng một
token Windows bị hạn chế quyền được tạo từ tài khoản người dùng hiện tại, áp dụng các ranh giới
hệ thống tệp dựa trên ACL và sử dụng biện pháp kiểm soát ngoại tuyến ở cấp môi trường thay cho
quy tắc tường lửa dành riêng cho tài khoản người dùng ngoại tuyến. Khả năng cách ly mạng của cơ chế này yếu hơn
so với elevated và không hỗ trợ các đường dẫn bị cấm đọc, nhưng vẫn hữu ích khi
chính sách cục bộ hoặc doanh nghiệp chặn quy trình thiết lập được quản trị viên phê duyệt.
Sử dụng MXC khi thiết bị và chính sách hỗ trợ. Nếu không, hãy ưu tiên elevated và dùng unelevated làm phương án dự phòng thứ hai.
Quản trị viên doanh nghiệp có thể giới hạn những cách triển khai môi trường cô lập kiểu cũ
mà Codex được phép sử dụng thông qua requirements.toml:
[windows]
allowed_sandbox_implementations = ["elevated"]Ví dụ này cho phép elevated và ngăn chuyển sang phương án dự phòng unelevated. Nó không hạn chế mxc khi MXC khả dụng. Các yêu cầu khác về quyền và mạng do quản trị viên quản lý vẫn áp dụng. Để cho phép cả hai cách triển khai kiểu cũ, hãy thêm cả hai giá trị; Codex ưu tiên elevated khi chưa chọn chế độ nào.
Xem tài liệu tham khảo requirements.toml để biết các giá trị được hỗ trợ. Để chặn cả MXC, hãy sử dụng yêu cầu windows.allow_mxc riêng biệt.
Theo mặc định, cả hai chế độ môi trường cô lập kiểu cũ cũng sử dụng một màn hình nền riêng để tăng cường khả năng cách ly giao diện người dùng.
Bộ phận CNTT thiết lập sẵn môi trường cô lập elevated kiểu cũ
Đối với nhân viên không có quyền quản trị viên cục bộ, bộ phận CNTT có thể cài đặt CLI và thiết lập sẵn môi trường cô lập elevated trước khi nhân viên khởi động Codex. Từ một tiến trình triển khai có quyền nâng cao, hãy chạy:
codex sandbox setup --elevated --user 'DOMAIN\alice' --codex-home 'C:\Users\alice\.codex'Thay danh tính và đường dẫn bằng danh tính Windows của nhân viên và CODEX_HOME. Lệnh này đọc cấu hình của người dùng đó, thiết lập môi trường cô lập và lưu windows.sandbox = "elevated". Sau đó, nhân viên chạy Codex từ một terminal thông thường.
Quyền của môi trường cô lập
Ma trận phiên bản Windows
| Phiên bản Windows | Mức hỗ trợ | Ghi chú |
|---|---|---|
| Windows 11 | Khuyến nghị | Nền tảng cơ sở tốt nhất cho Codex trên Windows. Hãy dùng phiên bản này nếu bạn đang chuẩn hóa hoạt động triển khai trong doanh nghiệp. |
| Windows 10 gần đây, đã cập nhật đầy đủ | Hỗ trợ trong khả năng | Có thể hoạt động nhưng kém ổn định hơn Windows 11. Trên Windows 10, Codex phụ thuộc vào khả năng hỗ trợ console hiện đại, bao gồm ConPTY. Trong thực tế, cần Windows 10 phiên bản 1809 trở lên. |
| Các bản dựng Windows 10 cũ hơn | Không khuyến nghị | Dễ thiếu các thành phần console bắt buộc như ConPTY hơn và dễ gặp lỗi hơn trong môi trường doanh nghiệp. |
Các giả định bổ sung về môi trường:
wingetcần có sẵn. Nếu chưa có, hãy cập nhật Windows hoặc cài đặt Windows Package Manager trước khi thiết lập Codex.- Môi trường cô lập
elevatedkiểu cũ phụ thuộc vào quy trình thiết lập được quản trị viên phê duyệt. - Một số thiết bị do doanh nghiệp quản lý chặn các bước thiết lập cần thiết ngay cả khi phiên bản hệ điều hành đáp ứng yêu cầu.
- MXC còn yêu cầu các khả năng gốc được mô tả trong phần Khả năng tương thích của MXC; bảng đối chiếu này không xác định liệu MXC có khả dụng trên một thiết bị cụ thể hay không.
Kiểm tra quyền đọc của môi trường cô lập
Khi một lệnh không thể đọc thư mục, hãy kiểm tra hồ sơ quyền hiện hành,
các yêu cầu do quản trị viên quản lý và quyền đối với tệp trên Windows. Trong CLI, sử dụng /status
và /debug-config để kiểm tra phiên đang hoạt động và cấu hình. Hãy yêu cầu
quản trị viên xem xét hạn chế được quản lý thay vì vô hiệu hóa môi trường cô lập.
Mặc định, hãy dùng môi trường cô lập gốc của Windows. Chọn WSL khi bạn cần bộ công cụ gốc của Linux, quy trình làm việc đã nằm trong WSL2, hoặc các bản triển khai gốc của Windows hiện có không đáp ứng nhu cầu của bạn.
Khắc phục sự cố và câu hỏi thường gặp
Nếu đang khắc phục sự cố trên máy Windows được quản lý, hãy bắt đầu bằng chế độ môi trường cô lập gốc, phiên bản Windows và mọi lỗi chính sách mà Codex hiển thị. Với MXC, hãy kiểm tra khả năng tương thích và chính sách mạng đang có hiệu lực. Sự cố môi trường cô lập cũ có thể bắt nguồn từ quá trình thiết lập, quyền đăng nhập hoặc quyền đối với hệ thống tệp.
Quá trình thiết lập môi trường cô lập cũ của tôi đã thất bại
Nếu Codex không thể hoàn tất thiết lập môi trường cô lập elevated, các nguyên nhân phổ biến nhất
là:
- lời nhắc UAC hoặc quản trị viên của Windows đã bị từ chối,
- máy không cho phép tạo người dùng hoặc nhóm cục bộ,
- máy không cho phép thay đổi quy tắc tường lửa,
- máy chặn quyền đăng nhập mà người dùng môi trường cô lập cần,
- hoặc một chính sách doanh nghiệp khác chặn một phần quy trình thiết lập.
Các cách nên thử:
- Thử thiết lập lại môi trường cô lập
elevatedvà chấp thuận lời nhắc cấp quyền quản trị viên nếu môi trường của bạn cho phép. - Nếu máy tính xách tay của công ty chặn thao tác này, hãy hỏi bộ phận IT xem máy có cho phép quản trị viên phê duyệt việc thiết lập để tạo người dùng/nhóm cục bộ, cấu hình tường lửa và cấp các quyền đăng nhập cần thiết cho người dùng môi trường cô lập hay không.
- Nếu vẫn không thiết lập được và chính sách quản lý cho phép, hãy dùng
unelevatedtrong khi sự cố đang được điều tra.
Codex đã chuyển tôi sang môi trường cô lập không nâng quyền
Bản triển khai unelevated có thể được chọn trong cấu hình hoặc được dùng làm
phương án dự phòng khi không thể thiết lập elevated.
- Codex vẫn có thể chạy trong chế độ môi trường cô lập.
- Chế độ này vẫn áp dụng ranh giới hệ thống tệp dựa trên ACL nhưng không sử dụng
ranh giới người dùng môi trường cô lập riêng biệt của
elevatedvà có khả năng cách ly mạng yếu hơn. - Đây là phương án dự phòng hữu ích nhưng không phải cấu hình doanh nghiệp dài hạn được ưu tiên.
Với máy tính xách tay do doanh nghiệp quản lý, hãy kiểm tra khả năng tương thích với MXC
trước. Nếu MXC không khả dụng hoặc bị tắt, hãy yêu cầu bộ phận IT thiết lập
elevated.
Tôi thấy lỗi Windows 1385
Nếu các lệnh trong môi trường cô lập thất bại với lỗi 1385, Windows đang từ chối kiểu đăng nhập
mà người dùng môi trường cô lập cần để khởi động lệnh.
Trong thực tế, điều này thường có nghĩa là Codex đã tạo thành công các người dùng môi trường cô lập, nhưng chính sách Windows vẫn ngăn những người dùng đó khởi chạy lệnh trong môi trường cô lập.
Cách xử lý:
- Hỏi đội ngũ IT xem chính sách thiết bị có cấp các quyền đăng nhập bắt buộc cho người dùng môi trường cô lập do Codex tạo hay không.
- So sánh chính sách nhóm hoặc sự khác biệt về OU nếu sự cố chỉ ảnh hưởng đến một số máy hoặc nhóm.
- Nếu cần tiếp tục làm việc ngay, hãy dùng môi trường cô lập
unelevatedtrong khi sự cố chính sách được điều tra. - Gửi
CODEX_HOME/.sandbox/sandbox.logcùng với phiên bản Windows và mô tả ngắn về sự cố.
Codex cảnh báo rằng Everyone có thể ghi vào một số thư mục
Codex có thể cảnh báo rằng Everyone có thể ghi vào một số thư mục.
Nếu bạn thấy cảnh báo này, quyền Windows trên các thư mục đó quá rộng nên môi trường cô lập không thể bảo vệ hoàn toàn.
Cách xử lý:
- Xem lại các thư mục mà Codex liệt kê trong cảnh báo.
- Xóa quyền ghi của
Everyonekhỏi các thư mục đó nếu phù hợp với môi trường của bạn. - Khởi động lại Codex hoặc chạy lại thiết lập môi trường cô lập sau khi các quyền đó được sửa.
Nếu bạn không chắc cách thay đổi các quyền đó, hãy nhờ đội ngũ IT hỗ trợ.
Các lệnh trong môi trường cô lập không thể truy cập mạng
Một số cuộc trò chuyện Codex được chủ ý chạy mà không có quyền truy cập mạng ra ngoài, tùy thuộc vào chế độ quyền đang sử dụng.
Nếu một tác vụ thất bại vì không thể truy cập mạng:
- Kiểm tra xem tác vụ có được thiết kế để chạy khi mạng bị tắt hay không.
- Nếu bạn dự kiến có quyền truy cập mạng, hãy khởi động lại Codex rồi thử lại.
- Nếu sự cố tiếp diễn, hãy thu thập nhật ký môi trường cô lập để đội ngũ có thể kiểm tra xem máy có đang ở trạng thái môi trường cô lập chưa hoàn chỉnh hoặc bị lỗi hay không.
Môi trường cô lập trước đây hoạt động nhưng sau đó dừng lại
Điều này có thể xảy ra sau khi:
- di chuyển repo hoặc workspace,
- thay đổi quyền trên máy,
- thay đổi chính sách Windows,
- hoặc thay đổi cấu hình hệ thống khác.
Các cách nên thử:
- Khởi động lại Codex.
- Với MXC, hãy chạy lại kiểm tra khả năng tương thích và kiểm tra
chính sách mạng đang có hiệu lực. Với cách triển khai
elevatedkiểu cũ, hãy thử thiết lập lại môi trường cô lập. - Nếu cần môi trường cô lập kiểu cũ và chính sách quản lý cho phép, hãy dùng
unelevatedlàm phương án dự phòng tạm thời. - Thu thập nhật ký môi trường cô lập để xem xét.
Tôi cần gửi dữ liệu chẩn đoán cho OpenAI
Nếu vẫn gặp sự cố, hãy gửi:
CODEX_HOME/.sandbox/sandbox.log
Bạn cũng nên cung cấp:
- mô tả ngắn về việc bạn đang cố thực hiện,
- bản triển khai đã chọn:
mxc,elevatedhoặcunelevated, - mọi thông báo lỗi hiển thị trong ứng dụng,
- bạn có thấy
1385hay lỗi Windows hoặc PowerShell nào khác hay không, - số bản dựng Windows của bạn,
- và bạn đang dùng Windows 11 hay Windows 10.
Không gửi:
- nội dung của
CODEX_HOME/.sandbox-secrets/
Tiện ích mở rộng IDE đã được cài đặt nhưng không phản hồi
Hệ thống của bạn có thể thiếu các công cụ phát triển C++ mà một số phần phụ thuộc gốc yêu cầu:
- Visual Studio Build Tools (khối lượng công việc C++)
- Microsoft Visual C++ Redistributable (x64)
- Với
winget, chạywinget install --id Microsoft.VisualStudio.2022.BuildTools -e
Sau đó, hãy khởi động lại hoàn toàn VS Code sau khi cài đặt.