feat: support Codex and Claude local surfaces

This commit is contained in:
thanhnv
2026-07-24 16:33:21 +07:00
parent 34a6b013c0
commit cc666db9de
9 changed files with 119 additions and 26 deletions
@@ -36,7 +36,8 @@ Spike tập trung trả lời bốn câu:
| Claude Code managed/custom SDK | Có | Có | Có | SDK ResultMessage có usage/cost tốt hơn | **GO cho assurance cao hơn** |
| Codex project hooks | `UserPromptSubmit` | `PreToolUse`, `PostToolUse` | `Stop` | Cần prototype nguồn usage/cost | **GO sau Claude, có điều kiện** |
| Codex managed hooks | Có thể pin bằng policy/requirements | Có, theo coverage docs | Có | Như trên | **GO cho enterprise rollout** |
| Claude/Codex VS Code extension | Chưa black-box verify | Chưa verify | Chưa verify | Chưa verify | **CONDITIONAL** |
| Claude Code CLI / VS Code / JetBrains | Dùng chung Claude Code project settings | Dùng chung hook contract | Dùng chung hook contract | Như Claude Code project hooks | **SUPPORTED local surfaces** |
| Codex desktop / CLI / IDE — Local | Dùng chung Codex project hook layer | Dùng chung hook contract | Dùng chung hook contract | Như Codex project hooks | **SUPPORTED local surfaces; trust bắt buộc** |
| VS Code Chat Participant | Participant sở hữu request được route tới nó | Participant tự điều phối tools | Participant sở hữu response | Tự ghi được usage do model API trả về | **GO cho `@casan`, không phải global interceptor** |
| VS Code participant detection | Auto-route best effort | Như participant nếu được route | Có | Có | **Không đủ để cam kết mọi prompt** |
| Generic Copilot built-in chat | Không có API công khai để intercept toàn bộ prompt | Không có CASAN gate chung | Không | Không | **NO-GO cho tuyên bố transparent absolute** |
@@ -95,7 +96,7 @@ runtime event/telemetry của Codex. Nếu không có nguồn ổn định, reco
**Verdict Codex:** GO có điều kiện, bắt đầu sau khi Claude adapter dùng chung lifecycle
contract đã pass. Managed hook là đường khuyến nghị khi tổ chức yêu cầu enforcement.
### 4.3 VS Code, Claude/Codex extension và Copilot
### 4.3 Local UI surfaces và Copilot
VS Code Chat Participant API cho phép extension tạo participant như `@casan` và sở hữu toàn
bộ prompt được route tới participant đó. Participant detection có thể tự chọn participant
@@ -106,14 +107,20 @@ Language Model Chat Provider chỉ xử lý request khi model/provider đó đư
không phải interceptor cho mọi model/chat có sẵn. Enterprise policy còn có thể vô hiệu
provider kiểu BYOK.
Claude Code hoặc Codex extension có thể tái sử dụng CLI/project hooks, nhưng spike chưa có
black-box evidence trên máy hiện tại. Mỗi extension/version phải được test độc lập trước khi
gắn badge `verified`.
Claude Code settings được tài liệu chính thức xác nhận dùng chung giữa CLI và VS Code
extension; cùng settings precedence áp dụng cho CLI, VS Code và JetBrains. Codex official
surface matrix xác định Hook áp dụng cho desktop app, CLI và IDE extension. Vì vậy CASAN
dùng một adapter theo runtime, không fork adapter theo UI.
Qualification vẫn phải phân biệt `supported contract` với `tested build`: mỗi release nên
smoke-test ít nhất một build của từng UI family và không suy rộng local project hook sang
Codex Cloud/Web, Claude Desktop hoặc claude.ai.
**Verdict VS Code:**
- GO cho Claude Code local trên CLI, VS Code và JetBrains qua shared project settings;
- GO có trust gate cho Codex local trên desktop app, CLI và IDE extension;
- GO cho CASAN-owned `@casan` Chat Participant;
- CONDITIONAL cho native Claude/Codex extension tới khi black-box test pass;
- NO-GO cho tuyên bố CASAN tự động intercept mọi prompt built-in Copilot bằng public API.
## 5. Kiến trúc prototype được chọn
@@ -233,8 +240,9 @@ Hướng này khả thi và nên làm theo đúng thứ tự đã yêu cầu:
1. **Claude Code:** có đủ lifecycle hook để làm MVP; đây là spike/prototype đầu tiên.
2. **Codex:** API hook phù hợp, reuse common bridge; managed hooks đáng ưu tiên cho rollout
tổ chức.
3. **VS Code:** xác minh native Claude/Codex extension riêng; bổ sung `@casan` participant
cho đường CASAN-owned. Không hứa intercept toàn bộ Copilot built-in chat.
3. **Local UI surfaces:** dùng chung adapter theo runtime; smoke-test desktop/CLI/IDE trong
release qualification. Bổ sung `@casan` participant cho đường CASAN-owned và không hứa
intercept toàn bộ Copilot built-in chat.
Kết quả được gọi là “đi qua CASAN” khi có trace/admission/finalize và certification strength
rõ ràng, không chỉ vì project có một file hướng dẫn hoặc hook telemetry.
@@ -242,6 +250,10 @@ rõ ràng, không chỉ vì project có một file hướng dẫn hoặc hook te
## 11. Nguồn chính thức
- [Claude Code hooks](https://code.claude.com/docs/en/hooks)
- [Claude Code IDE integrations](https://code.claude.com/docs/en/ide-integrations)
- [Claude Code settings](https://code.claude.com/docs/en/settings)
- [Codex hooks](https://learn.chatgpt.com/docs/hooks)
- [Codex surface glossary](https://learn.chatgpt.com/docs/glossary)
- [Claude Code status line](https://code.claude.com/docs/en/statusline)
- [Claude Agent SDK cost tracking](https://code.claude.com/docs/en/agent-sdk/cost-tracking)
- [Codex hooks](https://learn.chatgpt.com/docs/hooks)