Get started
Bản chuyển cổng Bộ máy ngữ cảnh Codex Harness
Trạng thái
Đặc tả triển khai bản nháp.
Mục tiêu
Làm cho harness app-server Codex được đóng gói tuân thủ cùng hợp đồng vòng đời context-engine của OpenClaw mà các lượt PI nhúng đã tuân thủ.
Một phiên dùng agents.defaults.embeddedHarness.runtime: "codex" hoặc một mô hình codex/* vẫn nên cho phép Plugin context-engine đã chọn, chẳng hạn như lossless-claw, kiểm soát việc lắp ráp ngữ cảnh, ingest sau lượt, bảo trì và chính sách compaction cấp OpenClaw trong phạm vi ranh giới app-server Codex cho phép.
Không phải mục tiêu
- Không triển khai lại nội bộ app-server Codex.
- Không làm cho compaction luồng native của Codex tạo ra bản tóm tắt lossless-claw.
- Không yêu cầu các mô hình không phải Codex dùng harness Codex.
- Không thay đổi hành vi phiên ACP/acpx. Đặc tả này chỉ dành cho đường dẫn harness tác nhân nhúng không phải ACP.
- Không bắt các Plugin bên thứ ba đăng ký các factory tiện ích mở rộng app-server Codex; ranh giới tin cậy Plugin được đóng gói hiện có vẫn không đổi.
Kiến trúc hiện tại
Vòng lặp chạy nhúng phân giải context engine đã cấu hình một lần cho mỗi lần chạy trước khi chọn một harness cấp thấp cụ thể:
src/agents/pi-embedded-runner/run.ts- khởi tạo các Plugin context-engine
- gọi
resolveContextEngine(params.config) - truyền
contextEnginevàcontextTokenBudgetvàorunEmbeddedAttemptWithBackend(...)
runEmbeddedAttemptWithBackend(...) ủy quyền cho harness tác nhân đã chọn:
src/agents/pi-embedded-runner/run/backend.tssrc/agents/harness/selection.ts
Harness app-server Codex được Plugin Codex được đóng gói đăng ký:
extensions/codex/index.tsextensions/codex/harness.ts
Triển khai harness Codex nhận cùng EmbeddedRunAttemptParams như các lần thử dựa trên PI:
extensions/codex/src/app-server/run-attempt.ts
Điều đó có nghĩa là điểm hook bắt buộc nằm trong mã do OpenClaw kiểm soát. Ranh giới bên ngoài là chính giao thức app-server Codex: OpenClaw có thể kiểm soát nội dung gửi tới thread/start, thread/resume và turn/start, đồng thời có thể quan sát thông báo, nhưng không thể thay đổi kho luồng nội bộ hoặc trình compactor native của Codex.
Khoảng trống hiện tại
Các lần thử PI nhúng gọi trực tiếp vòng đời context-engine:
- bootstrap/bảo trì trước lần thử
- assemble trước lời gọi mô hình
- afterTurn hoặc ingest sau lần thử
- bảo trì sau một lượt thành công
- compaction context-engine cho các engine sở hữu compaction
Mã PI liên quan:
src/agents/pi-embedded-runner/run/attempt.tssrc/agents/pi-embedded-runner/run/attempt.context-engine-helpers.tssrc/agents/pi-embedded-runner/context-engine-maintenance.ts
Các lần thử app-server Codex hiện chạy hook harness tác nhân chung và phản chiếu bản ghi, nhưng không gọi params.contextEngine.bootstrap, params.contextEngine.assemble, params.contextEngine.afterTurn, params.contextEngine.ingestBatch, params.contextEngine.ingest hoặc params.contextEngine.maintain.
Mã Codex liên quan:
extensions/codex/src/app-server/run-attempt.tsextensions/codex/src/app-server/thread-lifecycle.tsextensions/codex/src/app-server/event-projector.tsextensions/codex/src/app-server/compact.ts
Hành vi mong muốn
Đối với các lượt harness Codex, OpenClaw nên giữ nguyên vòng đời này:
- Đọc bản ghi phiên OpenClaw được phản chiếu.
- Bootstrap context engine đang hoạt động khi có tệp phiên trước đó.
- Chạy bảo trì bootstrap khi có.
- Lắp ráp ngữ cảnh bằng context engine đang hoạt động.
- Chuyển ngữ cảnh đã lắp ráp thành đầu vào tương thích với Codex.
- Khởi động hoặc tiếp tục luồng Codex với chỉ dẫn developer bao gồm mọi
systemPromptAdditioncủa context-engine. - Khởi động lượt Codex với prompt hướng tới người dùng đã lắp ráp.
- Phản chiếu kết quả Codex trở lại bản ghi OpenClaw.
- Gọi
afterTurnnếu đã triển khai, nếu không thì gọiingestBatch/ingest, bằng snapshot bản ghi đã phản chiếu. - Chạy bảo trì lượt sau các lượt thành công không bị hủy.
- Giữ nguyên tín hiệu compaction native của Codex và các hook compaction OpenClaw.
Ràng buộc thiết kế
App-server Codex vẫn là nguồn chuẩn cho trạng thái luồng native
Codex sở hữu luồng native của nó và mọi lịch sử mở rộng nội bộ. OpenClaw không nên cố sửa đổi lịch sử nội bộ của app-server ngoài các lời gọi giao thức được hỗ trợ.
Bản sao bản ghi của OpenClaw vẫn là nguồn cho các tính năng OpenClaw:
- lịch sử trò chuyện
- tìm kiếm
- ghi sổ
/newvà/reset - chuyển đổi mô hình hoặc harness trong tương lai
- trạng thái Plugin context-engine
Việc lắp ráp context engine phải được chiếu thành đầu vào Codex
Giao diện context-engine trả về AgentMessage[] của OpenClaw, không phải patch luồng Codex. turn/start của app-server Codex chấp nhận đầu vào người dùng hiện tại, trong khi thread/start và thread/resume chấp nhận chỉ dẫn developer.
Vì vậy, triển khai cần một lớp chiếu. Phiên bản đầu tiên an toàn nên tránh giả định rằng nó có thể thay thế lịch sử nội bộ của Codex. Nó nên chèn ngữ cảnh đã lắp ráp dưới dạng nội dung prompt/chỉ dẫn developer xác định quanh lượt hiện tại.
Độ ổn định prompt-cache rất quan trọng
Đối với các engine như lossless-claw, ngữ cảnh đã lắp ráp nên xác định khi đầu vào không đổi. Không thêm dấu thời gian, id ngẫu nhiên hoặc thứ tự không xác định vào văn bản ngữ cảnh được tạo.
Ngữ nghĩa chọn runtime không thay đổi
Việc chọn harness vẫn giữ nguyên:
runtime: "pi"buộc dùng PIruntime: "codex"chọn harness Codex đã đăng kýruntime: "auto"cho phép các harness Plugin nhận các provider được hỗ trợ- các lượt chạy
autokhông khớp dùng PI
Công việc này thay đổi những gì xảy ra sau khi harness Codex được chọn.
Kế hoạch triển khai
1. Xuất hoặc di dời các helper lần thử context-engine có thể tái sử dụng
Hiện nay các helper vòng đời có thể tái sử dụng nằm dưới runner PI:
src/agents/pi-embedded-runner/run/attempt.context-engine-helpers.tssrc/agents/pi-embedded-runner/run/attempt.prompt-helpers.tssrc/agents/pi-embedded-runner/context-engine-maintenance.ts
Codex không nên import từ một đường dẫn triển khai có tên hàm ý PI nếu có thể tránh.
Tạo một module trung lập với harness, ví dụ:
src/agents/harness/context-engine-lifecycle.ts
Di chuyển hoặc xuất lại:
runAttemptContextEngineBootstrapassembleAttemptContextEnginefinalizeAttemptContextEngineTurnbuildAfterTurnRuntimeContextbuildAfterTurnRuntimeContextFromUsage- một wrapper nhỏ quanh
runContextEngineMaintenance
Giữ các import PI hoạt động bằng cách xuất lại từ các tệp cũ hoặc cập nhật các điểm gọi PI trong cùng PR.
Tên helper trung lập không nên nhắc đến PI.
Tên đề xuất:
bootstrapHarnessContextEngineassembleHarnessContextEnginefinalizeHarnessContextEngineTurnbuildHarnessContextEngineRuntimeContextrunHarnessContextEngineMaintenance
2. Thêm helper chiếu ngữ cảnh Codex
Thêm một module mới:
extensions/codex/src/app-server/context-engine-projection.ts
Trách nhiệm:
- Nhận
AgentMessage[]đã lắp ráp, lịch sử phản chiếu ban đầu và prompt hiện tại. - Xác định ngữ cảnh nào thuộc về chỉ dẫn developer so với đầu vào người dùng hiện tại.
- Giữ nguyên prompt người dùng hiện tại làm yêu cầu có thể hành động cuối cùng.
- Render các thông điệp trước đó ở định dạng ổn định, rõ ràng.
- Tránh metadata biến động.
API đề xuất:
export type CodexContextProjection = {
developerInstructionAddition?: string;
promptText: string;
assembledMessages: AgentMessage[];
prePromptMessageCount: number;
};
export function projectContextEngineAssemblyForCodex(params: {
assembledMessages: AgentMessage[];
originalHistoryMessages: AgentMessage[];
prompt: string;
systemPromptAddition?: string;
}): CodexContextProjection;
Cách chiếu đầu tiên được khuyến nghị:
- Đặt
systemPromptAdditionvào chỉ dẫn developer. - Đặt ngữ cảnh bản ghi đã lắp ráp trước prompt hiện tại trong
promptText. - Gắn nhãn rõ là ngữ cảnh đã lắp ráp của OpenClaw.
- Giữ prompt hiện tại ở cuối.
- Loại trừ prompt người dùng hiện tại bị trùng nếu nó đã xuất hiện ở đuôi.
Dạng prompt ví dụ:
OpenClaw assembled context for this turn:
<conversation_context>
[user]
...
[assistant]
...
</conversation_context>
Current user request:
...
Cách này kém thanh lịch hơn so với phẫu thuật lịch sử native của Codex, nhưng có thể triển khai bên trong OpenClaw và giữ nguyên ngữ nghĩa context-engine.
Cải tiến trong tương lai: nếu app-server Codex cung cấp giao thức để thay thế hoặc bổ sung lịch sử luồng, hãy đổi lớp chiếu này sang dùng API đó.
3. Nối bootstrap trước khi khởi động luồng Codex
Trong extensions/codex/src/app-server/run-attempt.ts:
- Đọc lịch sử phiên phản chiếu như hiện nay.
- Xác định liệu tệp phiên có tồn tại trước lần chạy này hay không. Ưu tiên một helper kiểm tra
fs.stat(params.sessionFile)trước các lần ghi phản chiếu. - Mở
SessionManagerhoặc dùng adapter session manager hẹp nếu helper yêu cầu. - Gọi helper bootstrap trung lập khi
params.contextEnginetồn tại.
Luồng giả:
const hadSessionFile = await fileExists(params.sessionFile);
const sessionManager = SessionManager.open(params.sessionFile);
const historyMessages = sessionManager.buildSessionContext().messages;
await bootstrapHarnessContextEngine({
hadSessionFile,
contextEngine: params.contextEngine,
sessionId: params.sessionId,
sessionKey: sandboxSessionKey,
sessionFile: params.sessionFile,
sessionManager,
runtimeContext: buildHarnessContextEngineRuntimeContext(...),
runMaintenance: runHarnessContextEngineMaintenance,
warn,
});
Dùng cùng quy ước sessionKey như cầu nối công cụ Codex và bản sao bản ghi. Hiện Codex tính sandboxSessionKey từ params.sessionKey hoặc params.sessionId; hãy dùng nhất quán giá trị đó trừ khi có lý do để giữ nguyên params.sessionKey thô.
4. Nối assemble trước thread/start / thread/resume và turn/start
Trong runCodexAppServerAttempt:
- Xây dựng công cụ động trước, để context engine thấy tên các công cụ thực sự có sẵn.
- Đọc lịch sử phiên phản chiếu.
- Chạy
assemble(...)của context-engine khiparams.contextEnginetồn tại. - Chiếu kết quả đã lắp ráp thành:
- phần bổ sung chỉ dẫn developer
- văn bản prompt cho
turn/start
Lời gọi hook hiện có:
resolveAgentHarnessBeforePromptBuildResult({
prompt: params.prompt,
developerInstructions: buildDeveloperInstructions(params),
messages: historyMessages,
ctx: hookContext,
});
nên trở nên có nhận biết ngữ cảnh:
- tính chỉ dẫn developer cơ sở bằng
buildDeveloperInstructions(params) - áp dụng assembly/chiếu context-engine
- chạy
before_prompt_buildvới prompt/chỉ dẫn developer đã chiếu
Thứ tự này cho phép các hook prompt chung thấy cùng prompt mà Codex sẽ nhận. Nếu cần độ tương đương PI nghiêm ngặt, hãy chạy assembly context-engine trước khi hợp thành hook, vì PI áp dụng systemPromptAddition của context-engine vào prompt hệ thống cuối cùng sau pipeline prompt của nó. Bất biến quan trọng là cả context engine và hook đều có một thứ tự xác định, được tài liệu hóa.
Thứ tự được khuyến nghị cho triển khai đầu tiên:
buildDeveloperInstructions(params)assemble()của context-engine- thêm
systemPromptAdditionvào đầu/cuối chỉ dẫn developer - chiếu các thông điệp đã lắp ráp vào văn bản prompt
resolveAgentHarnessBeforePromptBuildResult(...)- truyền chỉ dẫn developer cuối cùng vào
startOrResumeThread(...) - truyền văn bản prompt cuối cùng vào
buildTurnStartParams(...)
Đặc tả nên được mã hóa trong test để các thay đổi tương lai không vô tình sắp xếp lại thứ tự.
5. Giữ định dạng ổn định cho prompt-cache
Helper chiếu phải tạo đầu ra ổn định ở cấp byte cho các đầu vào giống hệt nhau:
- thứ tự thông điệp ổn định
- nhãn vai trò ổn định
- không có dấu thời gian được tạo
- không rò rỉ thứ tự khóa object
- không có delimiter ngẫu nhiên
- không có id theo từng lần chạy
Dùng delimiter cố định và các phần rõ ràng.
6. Nối post-turn sau khi phản chiếu bản ghi
CodexAppServerEventProjector của Codex xây dựng một messagesSnapshot cục bộ cho
lượt hiện tại. mirrorTranscriptBestEffort(...) ghi snapshot đó vào bản sao
transcript của OpenClaw.
Sau khi sao chép thành công hoặc thất bại, hãy gọi finalizer của context-engine với snapshot thông điệp tốt nhất hiện có:
- Ưu tiên ngữ cảnh phiên đã được sao chép đầy đủ sau khi ghi, vì
afterTurnmong đợi snapshot phiên, không chỉ lượt hiện tại. - Quay lại dùng
historyMessages + result.messagesSnapshotnếu không thể mở lại tệp phiên.
Luồng giả:
const prePromptMessageCount = historyMessages.length;
await mirrorTranscriptBestEffort(...);
const finalMessages = readMirroredSessionHistoryMessages(params.sessionFile)
?? [...historyMessages, ...result.messagesSnapshot];
await finalizeHarnessContextEngineTurn({
contextEngine: params.contextEngine,
promptError: Boolean(finalPromptError),
aborted: finalAborted,
yieldAborted,
sessionIdUsed: params.sessionId,
sessionKey: sandboxSessionKey,
sessionFile: params.sessionFile,
messagesSnapshot: finalMessages,
prePromptMessageCount,
tokenBudget: params.contextTokenBudget,
runtimeContext: buildHarnessContextEngineRuntimeContextFromUsage({
attempt: params,
workspaceDir: effectiveWorkspace,
agentDir,
tokenBudget: params.contextTokenBudget,
lastCallUsage: result.attemptUsage,
promptCache: result.promptCache,
}),
runMaintenance: runHarnessContextEngineMaintenance,
sessionManager,
warn,
});
Nếu sao chép thất bại, vẫn gọi afterTurn với snapshot dự phòng, nhưng ghi log
rằng context engine đang ingest từ dữ liệu lượt dự phòng.
7. Chuẩn hóa usage và ngữ cảnh runtime prompt-cache
Kết quả Codex bao gồm usage đã chuẩn hóa từ thông báo token của app-server khi có sẵn. Truyền usage đó vào ngữ cảnh runtime của context-engine.
Nếu Codex app-server cuối cùng phơi bày chi tiết đọc/ghi cache, hãy ánh xạ chúng vào
ContextEnginePromptCacheInfo. Cho đến lúc đó, hãy bỏ qua promptCache thay vì
tự tạo các giá trị zero.
8. Chính sách Compaction
Có hai hệ thống Compaction:
compact()của context-engine OpenClawthread/compact/startgốc của Codex app-server
Không âm thầm trộn lẫn chúng.
/compact và Compaction OpenClaw rõ ràng
Khi context engine được chọn có info.ownsCompaction === true, Compaction
OpenClaw rõ ràng nên ưu tiên kết quả compact() của context engine cho bản sao
transcript OpenClaw và trạng thái Plugin.
Khi Codex harness được chọn có liên kết thread gốc, chúng ta cũng có thể yêu cầu Compaction gốc của Codex để giữ cho thread app-server khỏe mạnh, nhưng việc này phải được báo cáo như một hành động backend riêng trong phần chi tiết.
Hành vi khuyến nghị:
- Nếu
contextEngine.info.ownsCompaction === true:- gọi
compact()của context-engine trước - sau đó gọi best-effort Compaction gốc của Codex khi có liên kết thread
- trả về kết quả context-engine làm kết quả chính
- bao gồm trạng thái Compaction gốc của Codex trong
details.codexNativeCompaction
- gọi
- Nếu context engine đang hoạt động không sở hữu Compaction:
- giữ nguyên hành vi Compaction gốc hiện tại của Codex
Việc này có thể yêu cầu thay đổi extensions/codex/src/app-server/compact.ts hoặc
bọc nó từ đường dẫn Compaction chung, tùy thuộc vào nơi
maybeCompactAgentHarnessSession(...) được gọi.
Sự kiện contextCompaction gốc của Codex trong lượt
Codex có thể phát ra các sự kiện item contextCompaction trong một lượt. Giữ nguyên
việc phát hook Compaction trước/sau hiện tại trong event-projector.ts, nhưng không
xem đó là một Compaction context-engine đã hoàn tất.
Đối với các engine sở hữu Compaction, phát một chẩn đoán rõ ràng khi Codex vẫn thực hiện Compaction gốc:
- tên stream/sự kiện: stream
compactionhiện có là chấp nhận được - chi tiết:
{ backend: "codex-app-server", ownsCompaction: true }
Điều này làm cho sự tách biệt có thể kiểm toán được.
9. Hành vi đặt lại phiên và binding
reset(...) hiện có của Codex harness xóa binding Codex app-server khỏi
tệp phiên OpenClaw. Giữ nguyên hành vi đó.
Đồng thời bảo đảm việc dọn dẹp trạng thái context-engine tiếp tục diễn ra thông qua các đường dẫn vòng đời phiên OpenClaw hiện có. Không thêm dọn dẹp riêng cho Codex trừ khi vòng đời context-engine hiện bỏ sót sự kiện reset/delete cho tất cả harness.
10. Xử lý lỗi
Tuân theo ngữ nghĩa PI:
- lỗi bootstrap cảnh báo và tiếp tục
- lỗi assemble cảnh báo và quay lại dùng thông điệp/prompt pipeline chưa assemble
- lỗi afterTurn/ingest cảnh báo và đánh dấu finalization sau lượt là không thành công
- maintenance chỉ chạy sau các lượt thành công, không aborted, không yield
- lỗi Compaction không nên được thử lại như prompt mới
Bổ sung riêng cho Codex:
- Nếu projection ngữ cảnh thất bại, cảnh báo và quay lại prompt gốc.
- Nếu bản sao transcript thất bại, vẫn thử finalization context-engine với thông điệp dự phòng.
- Nếu Compaction gốc của Codex thất bại sau khi Compaction context-engine thành công, không làm thất bại toàn bộ Compaction OpenClaw khi context engine là chính.
Kế hoạch kiểm thử
Kiểm thử đơn vị
Thêm kiểm thử dưới extensions/codex/src/app-server:
-
run-attempt.context-engine.test.ts- Codex gọi
bootstrapkhi tồn tại tệp phiên. - Codex gọi
assemblevới thông điệp đã sao chép, token budget, tên công cụ, chế độ citations, model id, và prompt. systemPromptAdditionđược đưa vào developer instructions.- Thông điệp đã assemble được project vào prompt trước yêu cầu hiện tại.
- Codex gọi
afterTurnsau khi sao chép transcript. - Khi không có
afterTurn, Codex gọiingestBatchhoặcingesttheo từng thông điệp. - Turn maintenance chạy sau các lượt thành công.
- Turn maintenance không chạy khi có lỗi prompt, abort, hoặc yield abort.
- Codex gọi
-
context-engine-projection.test.ts- đầu ra ổn định cho các đầu vào giống hệt nhau
- không trùng lặp prompt hiện tại khi lịch sử đã assemble đã bao gồm nó
- xử lý lịch sử rỗng
- giữ nguyên thứ tự vai trò
- chỉ bao gồm system prompt addition trong developer instructions
-
compact.context-engine.test.ts- kết quả chính của context engine sở hữu sẽ thắng
- trạng thái Compaction gốc của Codex xuất hiện trong chi tiết khi cũng được thử
- lỗi gốc của Codex không làm thất bại Compaction context-engine sở hữu
- context engine không sở hữu giữ nguyên hành vi Compaction gốc hiện tại
Kiểm thử hiện có cần cập nhật
extensions/codex/src/app-server/run-attempt.test.tsnếu có, nếu không thì các kiểm thử chạy Codex app-server gần nhất.extensions/codex/src/app-server/event-projector.test.tschỉ khi chi tiết sự kiện Compaction thay đổi.src/agents/harness/selection.test.tskhông nên cần thay đổi trừ khi hành vi cấu hình thay đổi; nó nên tiếp tục ổn định.- Các kiểm thử context-engine PI nên tiếp tục pass mà không đổi.
Kiểm thử tích hợp / live
Thêm hoặc mở rộng các smoke test live cho Codex harness:
- cấu hình
plugins.slots.contextEnginethành một engine kiểm thử - cấu hình
agents.defaults.modelthành một modelcodex/* - cấu hình
agents.defaults.embeddedHarness.runtime = "codex" - assert engine kiểm thử đã quan sát:
- bootstrap
- assemble
- afterTurn hoặc ingest
- maintenance
Tránh yêu cầu lossless-claw trong kiểm thử core OpenClaw. Dùng một Plugin context engine giả nhỏ trong repo.
Khả năng quan sát
Thêm debug log quanh các lệnh gọi vòng đời context-engine của Codex:
codex context engine bootstrap started/completed/failedcodex context engine assemble appliedcodex context engine finalize completed/failedcodex context engine maintenance skippedvới lý docodex native compaction completed alongside context-engine compaction
Tránh ghi log toàn bộ prompt hoặc nội dung transcript.
Thêm các trường có cấu trúc khi hữu ích:
sessionIdsessionKeyđược che hoặc bỏ qua theo thực hành logging hiện cóengineIdthreadIdturnIdassembledMessageCountestimatedTokenshasSystemPromptAddition
Migration / tương thích
Việc này nên tương thích ngược:
- Nếu không cấu hình context engine, hành vi context engine legacy nên tương đương với hành vi Codex harness hiện nay.
- Nếu
assemblecủa context-engine thất bại, Codex nên tiếp tục với đường dẫn prompt gốc. - Các binding thread Codex hiện có nên vẫn hợp lệ.
- Dynamic tool fingerprinting không nên bao gồm đầu ra context-engine; nếu không mỗi thay đổi ngữ cảnh có thể buộc tạo thread Codex mới. Chỉ tool catalog nên ảnh hưởng đến dynamic tool fingerprint.
Câu hỏi mở
-
Ngữ cảnh đã assemble nên được chèn hoàn toàn vào user prompt, hoàn toàn vào developer instructions, hay chia ra?
Khuyến nghị: chia ra. Đặt
systemPromptAdditiontrong developer instructions; đặt ngữ cảnh transcript đã assemble trong wrapper user prompt. Cách này khớp nhất với giao thức Codex hiện tại mà không sửa đổi lịch sử thread gốc. -
Có nên tắt Compaction gốc của Codex khi một context engine sở hữu Compaction không?
Khuyến nghị: không, ít nhất là ban đầu. Compaction gốc của Codex vẫn có thể cần thiết để giữ cho thread app-server hoạt động. Nhưng nó phải được báo cáo là Compaction Codex gốc, không phải Compaction context-engine.
-
before_prompt_buildnên chạy trước hay sau assembly context-engine?Khuyến nghị: sau projection context-engine cho Codex, để các hook harness chung thấy prompt/developer instructions thực tế mà Codex sẽ nhận. Nếu tương đương PI yêu cầu điều ngược lại, hãy mã hóa thứ tự đã chọn trong kiểm thử và ghi lại ở đây.
-
Codex app-server có thể chấp nhận override ngữ cảnh/lịch sử có cấu trúc trong tương lai không?
Chưa biết. Nếu có thể, hãy thay lớp projection văn bản bằng giao thức đó và giữ nguyên các lệnh gọi vòng đời.
Tiêu chí chấp nhận
- Một lượt embedded harness
codex/*gọi vòng đời assemble của context engine được chọn. systemPromptAdditioncủa context-engine ảnh hưởng đến developer instructions của Codex.- Ngữ cảnh đã assemble ảnh hưởng đến đầu vào lượt Codex một cách xác định.
- Các lượt Codex thành công gọi
afterTurnhoặc ingest dự phòng. - Các lượt Codex thành công chạy turn maintenance của context-engine.
- Các lượt thất bại/aborted/yield-aborted không chạy turn maintenance.
- Compaction do context-engine sở hữu vẫn là chính cho trạng thái OpenClaw/Plugin.
- Compaction gốc của Codex vẫn có thể kiểm toán như hành vi Codex gốc.
- Hành vi context-engine PI hiện có không đổi.
- Hành vi Codex harness hiện có không đổi khi không chọn context engine không legacy hoặc khi assembly thất bại.