feat: support Codex and Claude local surfaces
This commit is contained in:
@@ -193,12 +193,16 @@ cấp có chủ đích bằng cách chạy lại `casan init --runtime vendored`
|
||||
|
||||
### Capability theo client
|
||||
|
||||
| Lựa chọn | Trải nghiệm | Bước trust/cài đặt bắt buộc |
|
||||
| Lựa chọn | Local surface được hỗ trợ | Bước trust/cài đặt bắt buộc |
|
||||
|---|---|---|
|
||||
| `claude` | Claude Code CLI và extension chính thức dùng project hooks | Mở trusted project; hook chạy tự động |
|
||||
| `codex` | Codex CLI và IDE extension dùng `.codex/hooks.json` | Mở `/hooks`, review và trust đúng hook hash |
|
||||
| `claude` | Claude Code CLI, VS Code extension và JetBrains integration dùng chung project settings/hooks | Mở trusted project; hook chạy tự động |
|
||||
| `codex` | Codex desktop app (Local), CLI và IDE extension (Local) dùng `.codex/hooks.json` | Mở `/hooks`, review và trust đúng hook hash |
|
||||
| `vscode-copilot` | GitHub Copilot Chat qua route **explicit `@casan`** | Cài VSIX do init tạo/cài; dùng `@casan <prompt>` |
|
||||
|
||||
Không gắn badge project-hook cho Codex Cloud/Web, Claude Desktop hoặc
|
||||
claude.ai. Các surface đó không chạy local project hook; muốn support phải có
|
||||
remote/managed integration riêng và một qualification suite riêng.
|
||||
|
||||
GitHub Copilot Chat mặc định **không** có public API để CASAN intercept mọi
|
||||
prompt. Chỉ route `@casan` là `casan_owned`; participant detection/built-in
|
||||
Copilot không được quảng bá là certified.
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user