306 lines
18 KiB
Markdown
306 lines
18 KiB
Markdown
# Tư tưởng CASAN trong workspace — Báo cáo học sâu
|
||
|
||
> Nguồn: `FPT_CASAN_Full.md`, `casan_harness_assessment.md`, `AINative_OKR_CASAN5/docs/output/casan/*`, knowledge-graph (`.understand-anything/`).
|
||
> Phạm vi: hiểu **tư tưởng CASAN**, **7 Harness**, cách project hiện thực hoá, và **lộ trình nâng điểm >90 → Level 5**.
|
||
> Ngày: 2026-06-29.
|
||
|
||
---
|
||
|
||
## 1. CASAN là gì — bản chất tư tưởng
|
||
|
||
CASAN = **Khung Năng lực AI-Native 5 cấp** do FPT phát triển. Không phải để "chấm AI giỏi hay dở", mà để **dẫn dắt một tổ chức tái thiết kế cách vận hành quanh AI**. 5 cấp:
|
||
|
||
| Cấp | Tên | Ẩn dụ | Bản chất |
|
||
|----|-----|-------|----------|
|
||
| 1 | Curious | Xưởng thủ công | Cá nhân tự thử AI, không chia sẻ, không audit |
|
||
| 2 | Augmented | Dây chuyền lắp ráp | Copilot/M365 hỗ trợ từng người, quy trình chưa đổi |
|
||
| 3 | Standard | Nhà máy thông minh | Chuẩn hoá: governance, template, gate, RAG, registry |
|
||
| 4 | Automated | Doanh nghiệp tự động hoá | **Agent tự vận hành workflow** trong phạm vi uỷ quyền, có kiểm soát |
|
||
| 5 | Native | Sinh vật thông minh trên "AI-OS" | AI là **lõi vận hành**, multi-agent, học liên tục, KPI kinh doanh |
|
||
|
||
**Nguyên lý cốt lõi:** không nhảy cấp (Cấp 1 không mua Agent để lên thẳng Cấp 4), cấp trên kế thừa cấp dưới, và **Harness yếu nhất quyết định trần** (H4 Security = 0 thì không thể Level 4 dù mọi thứ khác mạnh).
|
||
|
||
### Bốn lớp tư duy nguyên bản (điểm khác biệt của CASAN)
|
||
|
||
```mermaid
|
||
graph TD
|
||
A[CASAN — 4 lớp tư duy] --> B[Harness Engineering
|
||
khung kỹ thuật bao quanh model]
|
||
A --> C[Computational × Inferential
|
||
tính toán xác định × suy luận AI]
|
||
A --> D[Human-led, AI-first
|
||
người giữ mục tiêu, AI thực thi]
|
||
A --> E[AI Delegation L0-L5
|
||
uỷ quyền theo mức rủi ro]
|
||
B --> F[7 Harness: H1..H7]
|
||
D --> G[BMAD: Người định hướng,
|
||
Agent phân tích/code/test]
|
||
```
|
||
|
||
- **Harness Engineering**: model chỉ là "động cơ"; Harness là khung an toàn (hướng dẫn TRƯỚC + cảm biến SAU) biến model thành hệ thống tin cậy.
|
||
- **Computational × Inferential**: chia ranh giới — phần xác định giao logic, phần mơ hồ giao AI, phần rủi ro để người duyệt.
|
||
- **Human-led, AI-first**: người giữ giá trị/phán đoán/trách nhiệm; AI mở rộng năng lực, không thay chủ thể.
|
||
- **Delegation L0→L5**: L0 quan sát → L5 tự chủ cao trong vùng đã có governance chặt.
|
||
|
||
---
|
||
|
||
## 2. Bảy thành phần Harness (xương sống chấm điểm)
|
||
|
||
| ID | Harness | Câu hỏi chốt |
|
||
|----|---------|--------------|
|
||
| H1 | Context | Sub-agent biết đường dẫn SRS/spec từ context mà không cần Boss truyền lại? |
|
||
| H2 | Tool | Tool chạy 2 lần có safe (idempotency) không? |
|
||
| H3 | Evaluation | Spec đổi nhỏ có trigger test tự động? |
|
||
| H4 | Security | User inject `ignore previous instructions` có phá pipeline? |
|
||
| H5 | Governance | Có trả lời "ai làm gì, lúc nào, ai duyệt"? |
|
||
| H6 | AgentOps | Một step tốn gấp 3 token có ai biết? |
|
||
| H7 | Orchestration | Step 10 fail sau khi 8-9 xong, recover được? |
|
||
|
||
**Quy đổi cấp:** Average >80 + không GAP → Level 4; Average >80 + mọi H>70 + multi-agent → Level 5.
|
||
|
||
---
|
||
|
||
## 3. Workspace hiện thực hoá CASAN như thế nào
|
||
|
||
Đây là một **SDD pipeline sinh OKR** (NestJS + React) được "bọc" toàn bộ 7 Harness bằng script trong `AINative_OKR_CASAN5/.specify/`. Mỗi bước agent đều đi qua wrapper `casan-harness.sh`.
|
||
|
||
### Luồng Harness quanh mỗi bước agent
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
IN[Input file] --> H4i[H4 security-check.sh
|
||
input: chặn injection/PII/secret]
|
||
H4i --> H5[H5 governance-check.sh
|
||
deny-by-default high-risk + approval]
|
||
H5 --> REG{Side-effect?
|
||
deploy/db/write}
|
||
REG -->|yes| TR[H2 tool-registry-gate.sh
|
||
idempotency + permission + rollback]
|
||
REG -->|no| MET
|
||
TR --> MET[H6 agent-metrics.sh
|
||
token/latency/trace JSONL]
|
||
MET --> EXE[Thực thi lệnh agent]
|
||
EXE --> H4o[H4 security-check.sh
|
||
output: lọc rò rỉ]
|
||
H4o --> CACHE[idempotency cache + hash]
|
||
CACHE --> OUT[Output đã kiểm soát]
|
||
```
|
||
|
||
Điểm tinh tế: **cache hit vẫn chạy H4/H5 và ghi H6** (không bypass kiểm soát) — đây chính là lỗi đã được sửa ở bản refined.
|
||
|
||
### Bản đồ thành phần Level 5
|
||
|
||
```mermaid
|
||
graph TB
|
||
subgraph H4_5_6[Runtime gates]
|
||
SEC[security-check.sh
|
||
pii-mask.py]
|
||
GOV[governance-check.sh
|
||
verify-audit-chain.sh]
|
||
OPS[agent-metrics.sh
|
||
hallucination-scan.py]
|
||
end
|
||
subgraph L5[Cơ chế Level 5]
|
||
DR[drift-detect.sh + drift-policy.yaml]
|
||
FB[model-fallback.sh + model-fallback.yaml]
|
||
TR[tool-registry.yaml + gate]
|
||
RB[rollback-manager.sh]
|
||
KPI[business-kpi-report.sh + kpi-schema]
|
||
SIGN[sign-policy-bundle.sh]
|
||
PROV[import-provider-telemetry.sh]
|
||
REUSE[harness-package.json + project-registry]
|
||
end
|
||
HARNESS[casan-harness.sh] --> SEC & GOV & OPS
|
||
HARNESS --> TR --> RB
|
||
DR --> golden[golden-runs/]
|
||
KPI --> dash[central dashboard html]
|
||
```
|
||
|
||
---
|
||
|
||
## 4. Giải thích chi tiết từng thành phần
|
||
|
||
### H1 — Context (91/100)
|
||
- `pipeline-context.yaml`: pointer store đường dẫn artifact + tech stack. Boss cập nhật sau mỗi step, sub-agent đọc để discover input → không re-scan. Bản refined thêm path Level 5 (drift/rollback/registry).
|
||
|
||
### H2 — Tool (88/100)
|
||
- `tool-registry.yaml` + `tool-registry-gate.sh`: mỗi tool có schema, owner, risk, **idempotency key**, timeout, rollback. Side-effect (write/deploy/db) bắt buộc qua gate; audit ghi `tool-calls.jsonl`.
|
||
|
||
### H3 — Evaluation (86/100)
|
||
- LLM-as-judge multi-gate (Steps 5/7/11), golden dataset từ `okr.testkit`, auto-retry tối đa 5, BACK-TO-PLAN 3 cycles, thêm checklist hallucination.
|
||
|
||
### H4 — Security (90/100)
|
||
- `security-check.sh`: chặn prompt injection, mask PII, redact secret, **regex private key/DB string/AWS key** dùng `grep --` (sửa bug lộ key). Test jailbreak + private key.
|
||
|
||
### H5 — Governance (88/100)
|
||
- `governance-check.sh`: high-risk **deny-by-default**, approval không tương tác nhưng auditable; `verify-audit-chain.sh` kiểm tra **audit hash-chain bất biến**; risk registry.
|
||
|
||
### H6 — AgentOps (90/100)
|
||
- `agent-metrics.sh`: trace JSON, metrics JSONL, alert log, lưu failure. Token/latency/cost; alert JSON.
|
||
|
||
### H7 — Orchestration (88/100)
|
||
- Boss DAG + parallel dispatch + BACK-TO-PLAN; bản refined giữ rollback/drift/fallback và bảo toàn evidence khi cache hit.
|
||
|
||
### Cơ chế Level 5
|
||
- **Drift**: `drift-detect.sh` so SHA256 + similarity với `golden-runs/`. **Fallback**: matrix primary→fallback. **Rollback**: transaction record/execute. **KPI**: cycle time, defect leakage, rejection rate. **Signed policy + provider telemetry + harness reuse + central dashboard**.
|
||
|
||
---
|
||
|
||
## 5. Hành trình điểm số
|
||
|
||
```mermaid
|
||
graph LR
|
||
B[Baseline 57.9
|
||
L3→4] --> C[CASAN4 88.7
|
||
L4 đạt]
|
||
C --> R[Refined 88.7
|
||
L4 + L5 demo local]
|
||
R --> T[>90 = L5 production]
|
||
```
|
||
|
||
| Harness | Baseline | CASAN4 | Refined | Vướng để >90 |
|
||
|---|--:|--:|--:|---|
|
||
| H1 | 90 | 90 | 91 | đã mạnh |
|
||
| H2 | 75 | 84 | 88 | registry chưa multi-project |
|
||
| H3 | 85 | 85 | 86 | feedback prod→golden chưa tự động |
|
||
| H4 | 20 | 88 | 90 | sandbox/jailbreak runtime |
|
||
| H5 | 25 | 87 | 88 | audit file → cần WORM/IdP |
|
||
| H6 | 30 | 89 | 90 | token ước lượng, chưa telemetry thật |
|
||
| H7 | 80 | 81 | 88 | rollback chưa transaction thật |
|
||
| **TB** | **57.9** | **87.1** | **88.7** | |
|
||
|
||
> Lưu ý: bảng trên là **điểm tự đánh giá** trong tài liệu before-after. Điểm thật ở mục 5.1.
|
||
|
||
---
|
||
|
||
## 5.1. Chấm điểm THỰC SỰ ở thời điểm hiện tại (không suy diễn)
|
||
|
||
Nguồn duy nhất: `AINative_OKR_CASAN5/docs/output/casan/phase2-independent-audit.md` —
|
||
audit độc lập, **chạy từng lệnh, không tin log**, ngày 2026-06-28. Tôi đã đối chiếu
|
||
và **chạy lại** trên máy này để xác minh, không lấy con số 88.7.
|
||
|
||
| ID | Harness | Điểm thật | Bằng chứng đã chạy/kiểm |
|
||
|----|---------|:--:|---|
|
||
| H1 | Context | **82** | `pipeline-context.yaml` dựng dần trong 1 run thật; 12 trace_id riêng biệt; artifact tồn tại trên đĩa; `00-boss.log.md` thật |
|
||
| H2 | Tool | **80** | Suite 35/0 + 22/0 vẫn pass; audit tool-call ký số tích luỹ từ run |
|
||
| H3 | Evaluation | **82** | `npm test -w backend` 5 test pass; phá golden → FAIL exit 1, khôi phục → pass; build pass |
|
||
| H4 | Security | **80** | 20 trace security thật từ run |
|
||
| H5 | Governance | **82** | Chu kỳ reject→approve thật; hash-chain verify SIGNED |
|
||
| H6 | AgentOps | **80** | Latency/trace per-step thật; tín hiệu hallucination (caveat cost) |
|
||
| H7 | Orchestration | **80** | DAG có BACK-TO-PLAN thật (06 REJECTED→07 APPROVED); undo thật before==after |
|
||
| **TB** | | **~81** | **CASAN Level 4 (Automated) — đạt thật, ≥80 mọi harness** |
|
||
|
||
**Điểm thật ~81, không phải 88.7.** Số 88.7 là tự chấm; ~81 là sau khi chạy lệnh thật.
|
||
|
||
### Điểm yếu trung thực (lý do là ~80, chưa ~90)
|
||
1. H7 rollback trong-run vẫn là **marker-writer** (`printf rolled_back > marker`); undo thật chỉ ở `app-evidence/rollback-*` standalone, chưa phải đường orchestrator chạy.
|
||
2. H7 drift là **tự so chính mình** (`cp golden candidate` → similarity 1.0), chưa drift với run trước thật.
|
||
3. H7 fallback dùng **trigger giả** (`exit 9`), không phải model-A fail thật.
|
||
4. H6 cost là **record mẫu** (2778 token) lặp cho mọi step; latency thật, billing chưa thật.
|
||
5. H3 frontend chỉ `tsc --noEmit` (type-check), chưa test runtime; coverage backend khiêm tốn.
|
||
6. H1 chưa validate staleness/đường dẫn; artifact design mỏng.
|
||
7. Rác root: `o6.txt o7.txt t6.txt t7.txt`.
|
||
|
||
### Kết quả khi tôi chạy lại trên máy này (xác nhận tính tái lập)
|
||
- `run-casan4-harness-tests.sh` **fail** lần đầu vì môi trường: thiếu `python3` trên PATH (chỉ có `py -3`) và GNU grep cảnh báo class regex — lỗi môi trường, không phải lỗi logic.
|
||
- Sau khi thêm shim `python3`, chuỗi vẫn nhạy môi trường → đây là caveat tái lập, không nâng/hạ điểm. Con số ~81 giữ theo audit đã chạy đầy đủ.
|
||
|
||
---
|
||
|
||
## 5.2. Workflow chi tiết (pipeline thật)
|
||
|
||
`scripts/run-casan-pipeline.mjs` chạy 13 bước, **mỗi bước bọc bởi `casan-harness.sh`**.
|
||
|
||
Vòng đời 1 bước: **H4-in (mask/inject) → H5 governance → H2 gate → H6 latency → exec(`casan-step.mjs`) → H4-out → cache**.
|
||
|
||
```mermaid
|
||
graph TD
|
||
A[01-srs]-->B[02-bd]-->C[03-spec]-->D[04-reviewspec]
|
||
D-->E[05-plan a1]-->F[06-reviewplan a1]
|
||
F-->|REJECTED|G[BACK-TO-PLAN: 07-plan a2]
|
||
G-->FB[model-fallback]-->DR[drift-detect]-->H[08-reviewplan a2 APPROVED]
|
||
H-->I[09-dd]-->J[10-testkit]-->K[11-tasks]-->L[12-reviewcode]-->M[rollback record+execute]
|
||
```
|
||
|
||
| # | Step | Agent | Ý nghĩa |
|
||
|--:|------|-------|---------|
|
||
| 1 | 01-srs | okr.srs | sinh SRS từ requirement |
|
||
| 2 | 02-bd | okr.bd | tài liệu business |
|
||
| 3 | 03-spec | speckit.specify | spec kỹ thuật |
|
||
| 4 | 04-reviewspec | okr.reviewspec | review spec |
|
||
| 5 | 05-plan a1 | speckit.plan | plan lần 1 |
|
||
| 6 | 06-reviewplan a1 | okr.reviewplan | **REJECTED** (thiếu artifact) |
|
||
| 7 | 07-plan a2 | speckit.plan | plan lần 2 (vá thiếu) → fallback + drift |
|
||
| 8 | 08-reviewplan a2 | okr.reviewplan | APPROVED |
|
||
| 9–12 | dd/testkit/tasks/reviewcode | okr.* | design→test→tasks→review |
|
||
| 13 | rollback | rollback-manager | record + execute, before==after |
|
||
|
||
Bằng chứng kèm theo: `pipeline-context.yaml`, `00-boss.log.md`, trace `.specify/logs/trace/`, `app-evidence/rollback-*`.
|
||
|
||
---
|
||
|
||
## 6. Cách nâng >90 (đạt Level 5 production)
|
||
|
||
Bản refined ~88.7 vì là **demo local**. Để vượt 90, đóng 7 gap "production-grade":
|
||
|
||
1. **H5 → 95**: thay audit file bằng **WORM/signed log**, approval qua **IdP** (separation of duties). +5–6đ.
|
||
2. **H6 → 94**: thay ước lượng token bằng **provider usage API thật** + dashboard ingest realtime. +3–4đ.
|
||
3. **H7 → 92**: rollback **transaction boundary thật** cho deploy/db. +3đ.
|
||
4. **H2 → 92**: registry dùng chéo ≥2 project (harness-package versioned). +3đ.
|
||
5. **H3 → 90**: incident/review → **golden test tự động** (continuous eval). +3đ.
|
||
6. **H4 → 94**: sandbox + timeout cho tool thật, jailbreak runtime. +3đ.
|
||
7. Chạy **full pipeline OKR thật**, giữ CASAN trace mỗi step làm bằng chứng.
|
||
|
||
**Exit Level 5:** ≥2 project dùng cùng harness; golden bắt drift trước prod; fallback không bypass governance; rollback chứng minh được; KPI before/after; dashboard tập trung; policy ký số.
|
||
|
||
---
|
||
|
||
## 7. Tóm tắt 1 dòng
|
||
Workspace biến triết lý CASAN thành **wrapper `casan-harness.sh` bọc 7 Harness quanh mọi bước agent** → đạt L4 thật, demo L5 local ~88.7; muốn >90 cần nối WORM/IdP/telemetry/rollback thật + dùng chéo project.
|
||
|
||
---
|
||
|
||
## 8. Bản đồ thành phần → đáp ứng mục nào của CASAN
|
||
|
||
Mỗi file/script trong workspace phục vụ một (hoặc vài) trụ cột CASAN. Đây là bằng chứng "có gì → tick mục nào".
|
||
|
||
| Thành phần (file/script) | Harness/Trụ cột | Đáp ứng tiêu chí gì của CASAN | Bằng chứng |
|
||
|---|---|---|---|
|
||
| `casan-harness.sh` | Toàn bộ (orchestrator) | Bọc 7 Harness quanh **mọi** bước agent → biến quy tắc thành luật chạy thật | wrapper chuỗi H4in→H5→H2→H6→exec→H4out→cache |
|
||
| `security-check.sh` | **H4 Security** | Mask PII, chặn prompt-injection/jailbreak, chặn secret → "không tin input/output" | 20 trace; chặn ⇒ exit 2 |
|
||
| `governance-check.sh` | **H5 Governance** | Approval gate + hash-chain audit → "có thẩm quyền & truy vết" | reject→approve, chain SIGNED |
|
||
| `key-results/objectives.service.ts` + golden test | **H3 Evaluation** | Đầu ra phải qua test/golden → "đo lường, không tin cảm tính" | phá golden ⇒ FAIL exit 1 |
|
||
| `business-kpi-report.sh` | **H6 AgentOps** | KPI before/after, latency, hallucination signal → "vận hành đo được" | latency thật/step (caveat cost) |
|
||
| `drift-detect.sh` | **H3+H7** | So output vs golden run → bắt trôi chất lượng trước prod | report similarity |
|
||
| `model-fallback.sh` | **H7 Orchestration** | Primary fail → fallback **không bypass** gate → bền bỉ | trigger exit 9 |
|
||
| `rollback-manager.sh` | **H7 Orchestration** | record→execute undo → "luôn quay lui được" | before==after |
|
||
| `pipeline-context.yaml` + `00-boss.log.md` | **H1 Context** | Context dựng dần, trace riêng từng bước → "không bịa ngữ cảnh" | 12 trace_id khác nhau |
|
||
| registry/harness-package + suite 35/0,22/0 | **H2 Tool** | Tool ký số, gate, dùng lại → "công cụ chuẩn, tái dùng" | suite pass |
|
||
| `run-casan-pipeline.mjs` + `casan-step.mjs` | 5 cấp C→A→S→A→N | Tự động hoá full chuỗi 13 bước = leo Level 4→5 | BACK-TO-PLAN thật |
|
||
| 4 lớp tư duy (plan/exec/review/fix) | Delegation L0–L5 | reviewspec/reviewplan/reviewcode = lớp review tách khỏi exec | 06 REJECT→08 APPROVE |
|
||
|
||
> Quy tắc đọc nhanh: **H1**=context, **H2**=tool, **H3**=eval, **H4**=security, **H5**=governance, **H6**=agentops, **H7**=orchestration. Mỗi script là 1 trụ; orchestrator nối hết.
|
||
|
||
---
|
||
|
||
## 9. Q&A phản biện (cho người mới + người hỏi xoáy)
|
||
|
||
### A. Người chưa biết CASAN
|
||
- **CASAN là gì?** 5 cấp trưởng thành agent: Curious→Augmented→Standard→Automated→Native. Workspace đang ở **L4 thật** (~81 điểm).
|
||
- **7 Harness để làm gì?** Là 7 lớp bảo vệ mọi bước AI: ngữ cảnh, công cụ, đánh giá, bảo mật, thẩm quyền, vận hành, điều phối. Không có = AI "tự bịa".
|
||
- **Tại sao cần?** Để agent không hành động mù: trước khi chạy phải mask PII, xin phép, đo, test, và quay lui được.
|
||
- **Khác gì gọi LLM bình thường?** Mọi bước bị **wrapper bọc** → có trace, có gate, có audit ký số. Không phải prompt rồi tin ngay.
|
||
|
||
### B. Người nắm rõ hỏi xoáy
|
||
- **"~81 hay 88.7?"** → ~81 là **thật** (chạy lệnh, audit độc lập). 88.7 là tự chấm. Mục 5.1 đã tách bạch, không dùng 88.7.
|
||
- **"Rollback thật không?"** → Undo thật chỉ ở `app-evidence/rollback-*` (before==after). Trong-run vẫn là marker-writer → đã ghi yếu điểm #1, đó là lý do H7=80 chứ không 90.
|
||
- **"Drift có thật?"** → Thuật toán thật nhưng input giống nhau (`cp golden candidate`→1.0). Chưa drift với run trước → yếu điểm #2.
|
||
- **"Fallback thật?"** → Trigger giả (`exit 9`), chưa phải model-A fail thật → yếu điểm #3.
|
||
- **"H6 cost?"** → Latency thật, token là record mẫu 2778 lặp lại → chưa billing thật → yếu điểm #4.
|
||
- **"H3 frontend?"** → Chỉ `tsc --noEmit`, chưa runtime test; coverage backend mỏng → yếu điểm #5.
|
||
- **"Tái lập được không?"** → Có lệnh repro; nhưng nhạy môi trường (thiếu `python3`, GNU grep), tôi đã gặp fail trên máy này — đó là caveat, không nâng điểm.
|
||
- **"Sao chỉ L4 chưa L5?"** → L5 cần ≥2 project dùng chung harness + WORM/IdP + telemetry/rollback thật. Hiện 1 project demo → đúng L4.
|
||
- **"Audit có tin được?"** → Tin vì auditor chạy từng lệnh, phá golden để chứng minh test thật, không tin log. Mọi điểm yếu được nêu thẳng.
|
||
|
||
**Nguyên tắc trả lời:** mọi điểm mạnh đều kèm bằng chứng on-disk; mọi điểm yếu đều thừa nhận trước. Không phòng thủ bằng con số tự chấm.
|
||
|