[codex] feat: ACP Server over WebSocket(ZER-579) - #28
Merged
Conversation
ZeroPointSix
marked this pull request as ready for review
August 10, 2026 03:59
ZeroPointSix
marked this pull request as draft
August 10, 2026 04:00
ZeroPointSix
marked this pull request as ready for review
August 10, 2026 06:36
ZeroPointSix
marked this pull request as draft
August 10, 2026 06:36
ZeroPointSix
marked this pull request as ready for review
August 10, 2026 08:38
ZeroPointSix
marked this pull request as draft
August 10, 2026 08:38
ZeroPointSix
marked this pull request as ready for review
August 12, 2026 06:52
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
背景
为
openab-plus增加可选启用的/acpWebSocket 服务,移植上游 openabdev/openab#1418 的 A1 范围,并关联 ZER-579。Review Contract
Goal
交付可在独立 Gateway 与 unified
openab run中启用的 ACP v1 WebSocket 服务。客户端必须能完成initialize → session/new → session/prompt → session/resume,并通过真实冒烟脚本验证鉴权、会话连续性和完整回复回送。Non-goals
session/load历史回放。session/cancel终止后台 Agent 进程。Accepted Residual Risks
session/cancel不会终止后台 Agent;网关会立即回复客户端,但继续占用全局后端槽和 session owner,直到后台终态。后台永久不结束时会占住容量,这是有意的 fail-closed 行为。Text + Done预留两个槽;慢客户端可能延迟自身 turn,但不会形成无界内存增长。OPENAB_ACP_AUTH_KEY;业务身份仍由GATEWAY_ALLOWED_USERS控制,部署时必须包含acp_client。Acceptance Criteria
cargo check --workspacecargo clippy --workspace -- -D warningscargo clippy --workspace --features unified -- -D warningscargo test --workspacecargo test -p openab-gateway --features acpcargo build --features unifiedscripts/acp-ws-smoke.py对真实服务完成拒绝错误鉴权、初始化、新建会话、prompt、resume 和长回复验证openab-core和openab-gateway补丁版本已递增Review Fixes
OPENAB_ACP_AUTH_KEY。resource_link用例对超时和 JSON-RPC 错误均 fail-closed。OPENAB_ACP_ENABLED按仓库既有规则接受1和大小写不敏感的true。sessionId增加进程级唯一 owner;并发 resume 返回-32001,旧连接的完成/断开清理不能删除新 owner 的 sink。Text + Done。Follow-ups
zer-579-acp-canary当前已停止。只有在用户明确授权注入 credstorebackend.test.tokengo_config并启用隔离容器agent-full-access后,才继续真实模型 canary。5244ceb;审查修复后的 head 必须重新构建镜像后再用于 canary。移植边界
固定上游基线
2e3292bc3e3e01f0fb203dc38003ad4c9afc7ca5与 PR headc0cb2f1f564aedd6b5f11e001dd6d0001f414437,当前 PR 共修改 19 个文件,避免带入上游后续 Browser/MCP-over-ACP 能力。验证记录
c34d232342ba709ae1cfbe8028f555e1238a2844。