# CASAN APPLY — Playbook vận hành trong VS Code (thực chiến) > **Mục đích:** trả lời rất cụ thể: ngồi trước VS Code thì **thao tác gì, chọn model nào, > gõ tin nhắn gì để khởi động một luồng, và có phải gửi 1 phát là xong không** — hay > phải tối ưu qua nhiều phiên. Lấy dự án **BĐS match người mua ↔ BĐS** làm ví dụ xuyên suốt. > **Đọc kèm:** `CASAN_APPLY_REALESTATE_MATCHING.md` (runbook luồng gate). --- ## 0. SỰ THẬT CỐT LÕI — KHÔNG phải "1 tin nhắn là xong" Gửi một prompt khổng lồ *"làm cho tôi hệ thống match BĐS hoàn chỉnh"* = **cách chắc chắn thất bại**. Vì: - Context window có hạn, prompt càng dài chất lượng càng **degrade**. - Không verify từng bước → **sai chồng sai**, cuối cùng không ai kiểm được. - Không có bằng chứng, không rollback, không giải trình — **trái toàn bộ tư tưởng CASAN**. → Đúng cách: **prompt → LOOP**. Chia thành **nhiều phiên (session)**, mỗi phiên **một mục tiêu nhỏ, nhiều lượt (turn), verify rồi commit**. *Prompt tốt cho một câu trả lời; loop tốt cho một hệ thống.* --- ## 1. PHÂN BIỆT SỐNG CÒN: 2 loại "model" Đừng nhầm hai thứ hoàn toàn khác nhau: | | Model **trong IDE** (giúp bạn XÂY hệ thống) | Model **trong sản phẩm** (runtime CHẤM match) | |---|---|---| | Ai dùng | Bạn (dev/harness engineer) | Ứng dụng BĐS khi chạy thật | | Việc | Viết code, plan, test, review | Xếp hạng người mua ↔ BĐS | | Dữ liệu | Code, plan (không PII thật) | **PII tài chính người mua** | | Chọn ở đâu | Model picker của VS Code | `model-router.sh` + `loop-policy` | | Ràng buộc | Chọn theo độ mạnh/nhanh | **PII → model LOCAL**, cloud cần approval | > Phần dưới nói về **model trong IDE** (để bạn build). Model runtime đã bàn ở runbook kia. --- ## 2. CHỌN MODEL TRONG IDE theo từng việc Trong VS Code, đổi model theo **loại việc** (không dùng một model cho mọi thứ): | Việc | Loại model nên chọn | Vì sao | |---|---|---| | Brainstorm, thiết kế kiến trúc, viết plan/spec | **Model suy luận mạnh** (lớp Opus/GPT-5) | Cần lập luận sâu, đánh đổi kiến trúc | | Sinh code cơ học, sửa lặp, đổi tên | Model **nhanh/rẻ** | Việc rõ ràng, ưu tiên tốc độ | | Review bảo mật / soi lỗi tinh vi | Model suy luận mạnh | Bắt lỗi khó | | Hỏi nhanh/giải thích | Model nhanh | Rẻ | **Thao tác VS Code:** mở Chat (Ctrl+Alt+I) → dropdown chọn model → chọn theo bảng. Đổi model **giữa các phiên** tuỳ việc. --- ## 3. CHUẨN BỊ WORKSPACE (làm 1 lần, trước khi khởi động) 1. **Mở đúng workspace** chứa: plan/spec (`casan-next-plans/…`), harness scripts (`.specify/…`), code app. 2. **Terminal WSL** sẵn sàng (harness verify chạy trong WSL — xem memory dự án). 3. **Git sạch** (`git status` clean) — để mỗi bước commit nhỏ, rollback được. 4. **Plan/Spec = bộ nhớ bền** giữa các phiên. Trước khi code, phải có: `success-criteria.yaml`, `hard-constraints.yaml`, `fairness-rules.yaml` (dù mới ở dạng nháp). 5. **Dữ liệu giả** cho dev — **không** dán PII thật vào chat. --- ## 4. CẤU TRÚC MỘT PHIÊN (session) — vòng lặp chuẩn Một phiên **KHÔNG** phải một tin nhắn. Nó là vòng lặp: ```mermaid flowchart LR K["① Kickoff
nạp ngữ cảnh + goal
+ success-criteria"] --> B["② Bàn trước
(brainstorm, CHƯA code)"] B --> T["③ Giao task nhỏ"] T --> V["④ Verify
chạy test/gate"] V -- fail --> T V -- pass --> C["⑤ Commit nhỏ"] C --> N{"còn task?"} N -- có --> T N -- hết --> E["⑥ Kết phiên
update plan + /clear"] ``` - **1 phiên = 1 mục tiêu nhỏ** (vd "dựng hard-filter + test"), không ôm cả hệ thống. - **Verify-before-accept**: không nhận code chưa chạy test/gate. - **Kết phiên**: commit, cập nhật plan, **`/clear`** để context sạch cho phiên sau (giữ vệ sinh ngữ cảnh — H1). --- ## 5. BẢN ĐỒ NHIỀU PHIÊN cho dự án BĐS (tối ưu qua nhiều lần, không 1 phát) | Phiên | Mục tiêu | Model | Kết quả | |---|---|---|---| | **P1** | Brainstorm + chốt spec: input schema, hard-constraints, fairness, success-criteria — **CHƯA code** | mạnh | các file `config/*.yaml` | | **P2** | `hard_filter.py` (deterministic) + test | nhanh | filter + test xanh | | **P3** | `ranker.py` nối `model-router` (model local cho PII) | mạnh | rank + test | | **P4** | `explainer.py` → evidence trích thuộc tính thật | nhanh | explain + test | | **P5** | Verify-gate H3 + fairness H5 + **test đối kháng** | mạnh | gate fail-closed | | **P6** | Loop control (budget/convergence) + audit | mạnh | loop-trace | | **P7** | Widget dashboard (Command Center) | nhanh | UI đọc artifact thật | → **7 phiên**, mỗi phiên bắt đầu **context sạch**, trỏ vào plan, verify, commit. Đó là "tối ưu qua nhiều phiên". --- ## 6. TIN NHẮN CỤ THỂ (copy-paste, chỉnh theo ngữ cảnh) ### ⓵ Kickoff phiên (nạp ngữ cảnh + ràng buộc + success-criteria) ``` Bối cảnh: dự án BĐS match người mua ↔ BĐS. Đọc casan-next-plans/CASAN_APPLY_REALESTATE_MATCHING.md và config/hard-constraints.yaml. Mục tiêu phiên này: dựng hard_filter.py — loại ứng viên vi phạm budget/pháp lý/deal-breaker. Ràng buộc: luật cứng nằm NGOÀI model (deterministic); fail-closed; không đụng file khác. Success-criteria: có test cho 5 ca (vượt budget, không sổ, tranh chấp, deal-breaker, hợp lệ) và test xanh. CHƯA code vội — trình bày cách tiếp cận trước để tôi duyệt. ``` ### ⓶ Bàn trước khi code (brainstorm — bắt buộc cho việc khó) ``` Trước khi viết code, liệt kê: input/output của hard_filter, các luật sẽ áp, edge case, và cách test. Đợi tôi OK rồi mới code. ``` ### ⓷ Giao task nhỏ (sau khi duyệt hướng) ``` OK hướng đó. Implement hard_filter.py + test tương ứng. Chỉ file này. Xong thì chạy test và cho tôi xem kết quả. ``` ### ⓸ Yêu cầu verify (không tin lời, đòi bằng chứng) ``` Chạy test trong WSL và dán output. Nếu có ca fail, sửa rồi chạy lại tới khi xanh. ``` ### ⓹ Sửa hướng (course-correct khi lệch) ``` Dừng lại. Bạn đang để model quyết budget — sai. Budget là luật cứng deterministic. Bỏ phần đó, đưa về so sánh số trực tiếp trong hard_filter. ``` ### ⓺ Chốt & commit ``` Test xanh rồi. Tóm tắt thay đổi 1 dòng, rồi tôi commit. Cập nhật trạng thái task trong plan tương ứng. ``` ### ⓻ Kết phiên / sang phiên mới ``` Xong mục tiêu phiên. Cập nhật plan (task này Done + verify). Tôi sẽ /clear và mở phiên mới cho ranker. ``` --- ## 7. VÌ SAO PHẢI NHIỀU PHIÊN (lý do kỹ thuật, không phải cho vui) 1. **Context bền vs context phiên:** plan/spec là **bộ nhớ bền**; chat là bộ nhớ tạm. Context dài → model quên/nhiễu → chất lượng giảm. `/clear` + trỏ lại plan = luôn "tươi". 2. **Verify-before-accept từng bước** chặn sai chồng sai — đúng tinh thần verify-gate (H3). 3. **Commit nhỏ = rollback được** — đúng nguyên tắc accountability/rollback của CASAN. 4. **Loop discipline:** đặt "budget" cho mỗi phiên (phạm vi hẹp), dừng khi lệch — chính là Loop Engineering áp vào **chính cách bạn làm việc**. --- ## 8. DO / DON'T vận hành | ✅ Nên | ❌ Tránh | |---|---| | 1 phiên 1 mục tiêu nhỏ | 1 tin nhắn "làm hết hệ thống" | | Bàn hướng trước khi code (việc khó) | Để agent code ngay việc mơ hồ | | Đòi chạy test + xem output | Tin "đã xong" mà không verify | | Commit nhỏ, thường xuyên | Dồn 1 commit khổng lồ | | Trỏ vào plan/spec làm ngữ cảnh | Kể lại toàn bộ bối cảnh mỗi lần | | `/clear` khi đổi mục tiêu | Kéo dài 1 phiên vô tận | | Chọn model theo việc | Một model cho mọi thứ | --- ## 9. PII & BẢO MẬT khi thao tác IDE (riêng cho BĐS) - **KHÔNG dán PII thật** (tài chính/danh tính người mua) vào chat IDE (cloud). Dev dùng **dữ liệu giả/ẩn danh**. - Model runtime xử lý PII = **local**, cấu hình trong app (`model-router`), **khác** model bạn dùng trong IDE. - Nếu buộc phải xử lý dữ liệu nhạy cảm → dùng model local trong IDE hoặc tắt gửi context. --- ## 10. GHI CHÚ TRUNG THỰC - Playbook này là **cách vận hành** — áp dụng được **ngay hôm nay** với bất kỳ IDE-agent nào (không chờ Plan nào cả). - Các script gate BĐS (`hard_filter`, `ranker`, verify-gate…) là **code dự án bạn sẽ viết qua các phiên trên**; harness CASAN (`context-compress`, `rai-guard`, `security-check`, `model-router`…) là thứ **đã có** để bọc governance. - "Tối ưu qua nhiều phiên" **không phải điểm yếu** — đó là cách duy nhất ra hệ thống **đáng tin, verify được, giải trình được**. One-shot chỉ hợp việc nhỏ/nháp. - Con số phiên (7) là minh hoạ; thực tế có phiên phải lặp lại nhiều lần (vd P5 gate đối kháng thường tốn nhất). --- _Liên quan: `CASAN_APPLY_REALESTATE_MATCHING.md` (luồng gate chi tiết) · `CASAN_PLAN_17_LOOP_ENGINEERING.md` (loop discipline) · `CASAN_PLAN_08_CONTEXT_COMPRESSION.md` (vệ sinh ngữ cảnh) · `CASAN_PLAN_15_RESPONSIBLE_AI_DATA_GOV.md` (PII) · `FPT_CASAN_Full.md` (§4.3 Human-led, §4.4 delegation)._