Tác nhân phụ

Sử dụng tác nhân phụ trong ChatGPT và Codex, đồng thời cấu hình tác nhân Codex tùy chỉnh

ChatGPT Work và Codex có thể chạy quy trình tác nhân phụ bằng cách khởi tạo các tác nhân chuyên biệt song song, sau đó tổng hợp kết quả của chúng trong một phản hồi. Cách này đặc biệt hữu ích cho các tác vụ phức tạp có khả năng song song hóa cao, chẳng hạn như khám phá cơ sở mã hoặc triển khai kế hoạch tính năng gồm nhiều bước.

Trong các ứng dụng Codex cục bộ, bạn cũng có thể xác định tác nhân tùy chỉnh với các cấu hình mô hình và hướng dẫn khác nhau cho từng tác vụ.

Khả dụng

Các bản phát hành Codex hiện tại bật quy trình tác nhân phụ theo mặc định. Hoạt động của tác nhân phụ xuất hiện trong ứng dụng ChatGPT dành cho máy tính, Codex CLI và tiện ích mở rộng IDE.

Vì mỗi tác nhân phụ tự thực hiện công việc với mô hình và công cụ, quy trình tác nhân phụ tiêu thụ nhiều token hơn so với lượt chạy một tác nhân tương đương.

Hãy yêu cầu Codex trong cuộc trò chuyện của ứng dụng giao các phần công việc độc lập cho các tác nhân phụ. Các bản phát hành Codex cục bộ hiện tại sẽ giao việc khi bạn yêu cầu trực tiếp hoặc khi hướng dẫn AGENTS.md hay hướng dẫn skill phù hợp yêu cầu điều đó. Ứng dụng hiển thị từng luồng tác nhân phụ để bạn có thể kiểm tra công việc của tác nhân và bản tóm tắt được trả về cuộc trò chuyện chính.

Lợi ích của quy trình tác nhân phụ

Ngay cả với cửa sổ ngữ cảnh lớn, mô hình vẫn có giới hạn. Nếu bạn đưa quá nhiều đầu ra trung gian gây nhiễu vào cuộc trò chuyện chính (nơi bạn xác định yêu cầu, ràng buộc và quyết định), chẳng hạn như ghi chú khám phá, nhật ký kiểm thử, dấu vết ngăn xếp và đầu ra lệnh, phiên làm việc có thể dần trở nên kém tin cậy.

Hiện tượng này thường được mô tả là:

  • Ô nhiễm ngữ cảnh: thông tin hữu ích bị chôn vùi dưới đầu ra trung gian gây nhiễu.
  • Suy giảm ngữ cảnh: hiệu suất giảm khi cuộc trò chuyện chứa ngày càng nhiều chi tiết ít liên quan.

Để tìm hiểu thêm, hãy xem bài viết của Chroma về suy giảm ngữ cảnh.

Quy trình tác nhân phụ giúp chuyển công việc gây nhiễu khỏi luồng chính:

  • Giữ cho tác nhân chính tập trung vào yêu cầu, quyết định và đầu ra cuối cùng.
  • Chạy song song các tác nhân phụ chuyên biệt để khám phá, kiểm thử hoặc phân tích nhật ký.
  • Trả về bản tóm tắt từ tác nhân phụ thay vì đầu ra trung gian thô.

Quy trình này cũng có thể tiết kiệm thời gian khi công việc có thể chạy độc lập và song song, đồng thời giúp các tác vụ quy mô lớn dễ xử lý hơn bằng cách chia chúng thành những phần có phạm vi rõ ràng. Ví dụ: Codex có thể chia việc phân tích một tài liệu gồm hàng triệu token thành các vấn đề nhỏ hơn và trả về những kết luận cô đọng cho luồng chính.

Để bắt đầu, hãy sử dụng các tác nhân song song cho tác vụ thiên về đọc như khám phá, kiểm thử, phân loại và tóm tắt. Hãy thận trọng hơn với quy trình thiên về ghi chạy song song vì nhiều tác nhân chỉnh sửa mã cùng lúc có thể tạo ra xung đột và tăng chi phí phối hợp.

Thuật ngữ cốt lõi

Codex sử dụng một số thuật ngữ liên quan trong quy trình tác nhân phụ:

  • Quy trình tác nhân phụ: Quy trình trong đó Codex chạy các tác nhân song song và kết hợp kết quả của chúng.
  • Tác nhân phụ: Tác nhân được giao việc mà Codex khởi tạo để xử lý một tác vụ cụ thể.
  • Luồng tác nhân: Luồng nơi tác nhân phụ thực hiện công việc. Các ứng dụng được hỗ trợ cho phép bạn mở những luồng này để kiểm tra tiến độ hoặc kết quả.

Kích hoạt quy trình tác nhân phụ

Hãy yêu cầu trực tiếp tác nhân phụ hoặc công việc tác nhân song song. Codex cũng có thể giao việc khi hướng dẫn dự án hoặc hướng dẫn skill phù hợp yêu cầu điều đó.

Trong thực tế, kích hoạt thủ công có nghĩa là sử dụng các chỉ dẫn trực tiếp như "khởi tạo hai tác nhân", "giao công việc này để xử lý song song" hoặc "sử dụng một tác nhân cho mỗi điểm". Quy trình tác nhân phụ tiêu thụ nhiều token hơn so với lượt chạy một tác nhân tương đương vì mỗi tác nhân phụ tự thực hiện công việc với mô hình và công cụ.

Một prompt tốt cho tác nhân phụ nên giải thích cách chia công việc, liệu Codex có nên đợi tất cả tác nhân hoàn thành trước khi tiếp tục hay không và cần trả về bản tóm tắt hoặc đầu ra nào.

Review this branch with parallel subagents. Spawn one subagent for security risks, one for test gaps, and one for maintainability. Wait for all three, then summarize the findings by category with file references.

Chọn mô hình và mức suy luận

Các tác nhân khác nhau cần các thiết lập mô hình và suy luận khác nhau.

Nếu bạn không cấu hình mô hình cho tác nhân phụ hoặc model_reasoning_effort, thì tác nhân phụ sẽ kế thừa mô hình và mức nỗ lực suy luận của tác nhân cha. Nếu một yêu cầu tạo tác nhân rõ ràng hoặc giá trị mặc định trong [agents] chọn một mô hình mà không có mức nỗ lực suy luận được chỉ định rõ hoặc được cấu hình, tác nhân phụ sẽ dùng mức nỗ lực suy luận mặc định của mô hình đó. Để cân bằng trí thông minh, tốc độ và chi phí cho từng tác vụ, hãy yêu cầu một mô hình hoặc mức nỗ lực suy luận cụ thể trong lời nhắc, cấu hình các giá trị mặc định của [agents] trong config.toml, hoặc đặt model và model_reasoning_effort trực tiếp trong tệp tác nhân tùy chỉnh. Ví dụ: dùng gpt-6-luna để rà soát nhanh hoặc cấu hình gpt-6.1-sol với mức nỗ lực cao hơn cho công việc đòi hỏi suy luận sâu hơn.

Lựa chọn mô hình

  • gpt-6.1-sol: Bắt đầu với lựa chọn này cho các tác nhân xử lý công việc khó. Dùng cho công việc chưa rõ ràng, gồm nhiều bước, cần lập kế hoạch, sử dụng công cụ, kiểm chứng và theo sát đến khi hoàn tất trong ngữ cảnh lớn hơn.
  • gpt-6-luna: Dùng cho các tác nhân nhanh, có phạm vi hẹp, xử lý công việc rõ ràng, lặp lại được hoặc có khối lượng lớn.

Mức nỗ lực suy luận (model_reasoning_effort)

Với GPT-6.1 Sol, hãy dùng mức nỗ lực suy luận được ứng dụng khách và mô hình đã chọn hỗ trợ. Khi thiết lập mô hình cụ thể, hãy bắt đầu với high cho GPT-6 Luna hoặc low cho GPT-6 Astra. Điều chỉnh theo tác vụ bằng một mức mà mô hình đã chọn hỗ trợ.

  • ultra: Dùng để suy luận sâu nhất khi mô hình đã chọn hỗ trợ mức này.
  • max và xhigh: Dùng cho công việc đòi hỏi suy luận đặc biệt sâu khi mô hình đã chọn hỗ trợ các mức này.
  • high: Dùng khi tác nhân cần lần theo logic phức tạp, kiểm tra các giả định hoặc xử lý các trường hợp biên (ví dụ: tác nhân rà soát hoặc tác nhân tập trung vào bảo mật).
  • medium: Cân bằng tốc độ và chiều sâu.
  • low: Dùng khi tác vụ đơn giản và tốc độ là ưu tiên hàng đầu.

Mức nỗ lực suy luận cao hơn làm tăng thời gian phản hồi và mức sử dụng token, nhưng có thể cải thiện chất lượng cho công việc phức tạp. Để biết chi tiết, hãy xem Mô hình, Cấu hình cơ bản và Tham chiếu cấu hình.

Điều phối và kiểm soát luồng

ChatGPT hoặc Codex xử lý việc điều phối giữa các tác nhân, bao gồm khởi tạo tác nhân phụ mới, định tuyến hướng dẫn tiếp theo, chờ kết quả và đóng luồng tác nhân.

Khi nhiều tác nhân đang chạy, Codex chờ đến khi có tất cả kết quả được yêu cầu rồi trả về một phản hồi hợp nhất.

Các bản phát hành Codex cục bộ hiện tại khởi tạo tác nhân sau khi nhận yêu cầu trực tiếp hoặc theo hướng dẫn dự án hay hướng dẫn skill phù hợp.

Để xem cách hoạt động, hãy thử prompt sau trong dự án của bạn:

I would like to review the following points on the current PR (this branch vs main). Spawn one agent per point, wait for all of them, and summarize the result for each point.
1. Security issue
2. Code quality
3. Bugs
4. Race
5. Test flakiness
6. Maintainability of the code

Quản lý tác nhân phụ

  • Mở một luồng tác nhân phụ từ hoạt động hiển thị trong luồng chính để kiểm tra công việc của tác nhân.
  • Yêu cầu Codex trực tiếp định hướng một tác nhân phụ đang chạy, dừng tác nhân đó hoặc đóng các luồng tác nhân phụ đã hoàn thành.

Phê duyệt và kiểm soát môi trường cô lập

Tác nhân phụ kế thừa chính sách môi trường cô lập hiện tại của bạn.

Tác nhân phụ kế thừa chế độ quyền được chọn bên dưới vùng soạn thảo. Hãy chọn chế độ quyền cho lượt cha trước khi yêu cầu Codex giao việc.

Thiết lập các biện pháp kiểm soát môi trường cô lập và phê duyệt trong phiên cha. Chỉ dẫn cho tác nhân tùy chỉnh có thể yêu cầu tác nhân tránh chỉnh sửa, nhưng không tạo ra một môi trường cô lập chỉ đọc riêng biệt.

Tác nhân tùy chỉnh

Codex đi kèm các tác nhân tích hợp sẵn:

  • default: tác nhân dự phòng đa dụng.
  • worker: tác nhân tập trung vào thực thi để triển khai và sửa lỗi.
  • explorer: tác nhân khám phá cơ sở mã thiên về đọc.

Để xác định tác nhân tùy chỉnh của riêng bạn, hãy thêm các tệp TOML độc lập trong ~/.codex/agents/ cho tác nhân cá nhân hoặc .codex/agents/ cho tác nhân thuộc phạm vi dự án.

Mỗi tệp định nghĩa một tác nhân tùy chỉnh. Tác nhân tùy chỉnh có thể thay đổi cài đặt mô hình và chỉ dẫn hoặc vô hiệu hóa các khả năng được hỗ trợ. Chúng kế thừa quyền, nhà cung cấp và MCP server của phiên cha; tệp tác nhân tùy chỉnh không thể ghi đè các cài đặt đó.

Mỗi tệp tác nhân tùy chỉnh độc lập phải xác định:

  • name
  • description
  • developer_instructions

Nếu tệp tác nhân tùy chỉnh đặt model hoặc model_reasoning_effort, giá trị trong tệp sẽ được ưu tiên. Trước khi áp dụng tệp, Codex xác định từng cài đặt từ giá trị được chỉ định rõ khi khởi tạo, rồi đến giá trị mặc định [agents] tương ứng, sau đó đến giá trị của phiên cha. Nếu yêu cầu khởi tạo tường minh hoặc giá trị mặc định [agents] chọn một mô hình nhưng cả hai đều không cung cấp mức độ suy luận, Codex dùng mức độ mặc định của mô hình đó. Tệp tác nhân tùy chỉnh chỉ đặt model sẽ giữ nguyên mức độ đã được xác định trước đó. Hãy đặt cả model_reasoning_effort trong tệp nếu mô hình đã chọn không hỗ trợ mức độ đó hoặc bạn muốn dùng mức độ khác. Các kỹ năng được kế thừa từ phiên cha và tác nhân tùy chỉnh có thể vô hiệu hóa từng kỹ năng bằng skills.config.

Thiết lập toàn cục

Các thiết lập tác nhân phụ toàn cục vẫn nằm trong [agents] thuộc cấu hình của bạn.

Trường Kiểu Bắt buộc Mục đích
agents.enabled boolean Không Bật hoặc tắt công cụ đa tác nhân.
agents.max_concurrent_threads_per_session number Không Giới hạn số luồng tác nhân được khởi tạo có thể mở đồng thời, không tính luồng chính.
agents.default_subagent_model string Không Đặt mô hình mặc định cho tác nhân được khởi tạo.
agents.default_subagent_reasoning_effort string Không Đặt mức nỗ lực suy luận mặc định cho tác nhân được khởi tạo.
agents.interrupt_message boolean Không Ghi lại một thông báo mà mô hình có thể thấy khi lượt của tác nhân bị gián đoạn.

Lưu ý:

  • agents.enabled mặc định là true. Đặt thành false để tắt công cụ đa tác nhân.
  • Khi bạn không đặt agents.max_concurrent_threads_per_session, Codex sẽ chọn giá trị mặc định. Các cấu hình hiện có vẫn có thể sử dụng agents.max_threads làm bí danh cũ.
  • Giá trị khởi tạo tường minh ghi đè agents.default_subagent_model và agents.default_subagent_reasoning_effort.
  • agents.interrupt_message mặc định là true. Đặt thành false để loại bỏ thông báo gián đoạn mà mô hình có thể thấy khỏi ngữ cảnh của tác nhân.
  • Nếu tên tác nhân tùy chỉnh trùng với tác nhân tích hợp như explorer, tác nhân tùy chỉnh của bạn sẽ được ưu tiên.

Lược đồ tệp tác nhân tùy chỉnh

Trường Kiểu Bắt buộc Mục đích
name string Có Tên tác nhân mà Codex sử dụng khi khởi tạo hoặc tham chiếu đến tác nhân này.
description string Có Hướng dẫn dành cho người dùng về thời điểm Codex nên sử dụng tác nhân này.
developer_instructions string Có Hướng dẫn cốt lõi xác định hành vi của tác nhân.

Dùng model, model_reasoning_effort, model_reasoning_summary và model_verbosity để tùy chỉnh hành vi của mô hình. Xem tài liệu tham khảo cấu hình để biết các giá trị được chấp nhận.

Để giới hạn khả năng của tác nhân tùy chỉnh, hãy đặt các khóa tính năng được hỗ trợ thành false: features.shell_tool, features.apps, features.plugins, features.memories hoặc features.request_permissions_tool. Vô hiệu hóa từng kỹ năng bằng skills.config hoặc các kỹ năng đi kèm bằng skills.bundled.enabled = false. Đặt skills.include_instructions = false để bỏ khối chỉ dẫn kỹ năng tự động. Các yêu cầu do quản trị viên quản lý vẫn áp dụng.

Các cài đặt phiên khác, bao gồm sandbox_mode, approval_policy, model_provider và mcp_servers, không ghi đè cấu hình của phiên cha khi được đặt trong tệp tác nhân tùy chỉnh. Cấp dịch vụ cũng tuân theo tùy chọn của phiên gốc. Hãy cấu hình MCP server trong phiên cha để tác nhân có thể sử dụng chúng.

Codex nhận diện tác nhân tùy chỉnh qua trường name. Đặt tên tệp trùng với tên tác nhân là quy ước đơn giản nhất, nhưng trường name mới là nguồn thông tin chính xác.

Ví dụ về tác nhân tùy chỉnh

Các tác nhân tùy chỉnh tốt nhất có phạm vi hẹp và quan điểm rõ ràng. Hãy giao cho mỗi tác nhân một công việc cụ thể, một phạm vi công cụ phù hợp với công việc đó và các hướng dẫn giúp tác nhân không chuyển sang công việc lân cận.

Các ví dụ dùng GPT-6.1 Sol khi tài khoản đang đăng nhập hoặc không gian làm việc của bạn có quyền truy cập. Nếu mô hình này không khả dụng, hãy chọn một mô hình bạn có thể sử dụng.

Ví dụ 1: Đánh giá PR

Mẫu này chia việc đánh giá cho ba tác nhân tùy chỉnh chuyên biệt:

  • pr_explorer lập bản đồ cơ sở mã và thu thập bằng chứng.
  • reviewer tìm kiếm rủi ro về tính đúng đắn, bảo mật và kiểm thử.
  • docs_researcher kiểm tra tài liệu framework hoặc API thông qua một MCP server chuyên dụng.

Cấu hình dự án (.codex/config.toml):

[agents]
max_concurrent_threads_per_session = 8

[mcp_servers.openaiDeveloperDocs]
url = "https://developers.openai.com/mcp"

.codex/agents/pr-explorer.toml:

name = "pr_explorer"
description = "Read-only codebase explorer for gathering evidence before changes are proposed."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Stay in exploration mode.
Do not edit files.
Trace the real execution path, cite files and symbols, and avoid proposing fixes unless the parent agent asks for them.
Prefer fast search and targeted file reads over broad scans.
"""

.codex/agents/reviewer.toml:

name = "reviewer"
description = "PR reviewer focused on correctness, security, and missing tests."
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"
developer_instructions = """
Review code like an owner.
Do not edit files.
Prioritize correctness, security, behavior regressions, and missing test coverage.
Lead with concrete findings, include reproduction steps when possible, and avoid style-only comments unless they hide a real bug.
"""

.codex/agents/docs-researcher.toml:

name = "docs_researcher"
description = "Documentation specialist that uses the docs MCP server to verify APIs and framework behavior."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Use the docs MCP server to confirm APIs, options, and version-specific behavior.
Return concise answers with links or exact references when available.
Do not make code changes.
"""

Thiết lập này phù hợp với các prompt như:

Review this branch against main. Have pr_explorer map the affected code paths, reviewer find real risks, and docs_researcher verify the framework APIs that the patch relies on.

Ví dụ 2: Gỡ lỗi tích hợp frontend

Mẫu này hữu ích cho lỗi hồi quy giao diện người dùng, luồng trình duyệt không ổn định hoặc lỗi tích hợp liên quan đến cả mã ứng dụng và sản phẩm đang chạy.

Cấu hình dự án (.codex/config.toml):

[agents]
max_concurrent_threads_per_session = 6

[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
startup_timeout_sec = 20

.codex/agents/code-mapper.toml:

name = "code_mapper"
description = "Read-only codebase explorer for locating the relevant frontend and backend code paths."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Map the code that owns the failing UI flow.
Do not edit files.
Identify entry points, state transitions, and likely files before the worker starts editing.
"""

.codex/agents/browser-debugger.toml:

name = "browser_debugger"
description = "UI debugger that uses browser tooling to reproduce issues and capture evidence."
model = "gpt-6.1-sol"
model_reasoning_effort = "medium"
developer_instructions = """
Reproduce the issue in the browser, capture exact steps, and report what the UI actually does.
Use browser tooling for screenshots, console output, and network evidence.
Do not edit application code.
"""

.codex/agents/ui-fixer.toml:

name = "ui_fixer"
description = "Implementation-focused agent for small, targeted fixes after the issue is understood."
model = "gpt-6-luna"
model_reasoning_effort = "high"
developer_instructions = """
Own the fix once the issue is reproduced.
Make the smallest defensible change, keep unrelated files untouched, and validate only the behavior you changed.
"""

[[skills.config]]
path = "/Users/me/.agents/skills/docs-editor/SKILL.md"
enabled = false

Thiết lập này phù hợp với các prompt như:

Investigate why the settings modal fails to save. Have browser_debugger reproduce it, code_mapper trace the responsible code path, and ui_fixer implement the smallest fix once the failure mode is clear.