4.6 KiB
CASAN Prompt Enforcement cho Agentic Coding
Tài liệu này mô tả ranh giới bắt buộc khi dùng Claude Code, Codex, GitHub Copilot Coding Agent hoặc agent plugin trong VS Code với project __PROJECT_ID__.
Contract
Một task chỉ được gọi là CASAN-certified khi:
- prompt đi vào
bin/casan-chathoặcbin/casan-chat.ps1; - repository contract vượt qua
bin/casan prompt verify; - runtime tạo đủ evidence H1-H7;
- H7 trả
certified=true; - H6 telemetry có đúng
project_id=__PROJECT_ID__; bin/casan prompt trace <trace-id>xác minh thành công.
Prompt gõ trực tiếp vào cửa sổ agent mà không có CASAN trace không được coi là certified.
Các lớp enforcement
1. Entrypoint
- macOS/Linux/WSL2:
bin/casan-chat; - Windows PowerShell:
bin/casan-chat.ps1; - launcher kiểm tra contract trước khi nhận prompt;
- launcher chỉ trả exit code thành công khi trace của prompt đã được xác minh.
2. Repository instructions
Installer quản lý một block có marker trong:
AGENTS.mdcho Codex;CLAUDE.mdcho Claude Code;.github/copilot-instructions.mdcho GitHub Copilot.
Agent có đọc các instruction này phải từ chối thực hiện trực tiếp một task không đi qua CASAN và yêu cầu gửi lại qua launcher.
3. CI contract
.gitea/workflows/casan-prompt-enforcement.yml kiểm tra policy, launcher, instruction files, domain root và project binding. Workflow này độc lập, không ghi đè CI ứng dụng.
4. Per-prompt evidence
Mỗi prompt tạo trace tại:
.specify/logs/trace-events/<trace-id>.jsonl
H6 runtime/token/cost/failure telemetry được ghi với project_id=__PROJECT_ID__.
Sử dụng hàng ngày
Read-only/analysis mặc định:
powershell -ExecutionPolicy Bypass -File bin\casan-chat.ps1 "Analyze the current implementation against the approved requirement."
Chế độ tương tác:
powershell -ExecutionPolicy Bypass -File bin\casan-chat.ps1
Coding task và quyền
Launcher mặc định dùng role viewer; role này không được sửa file hoặc chạy command tùy ý.
Người đã được cấp quyền tạo code draft có thể cấu hình phiên PowerShell:
$env:CASAN_CHAT_ROLE = 'project-admin'
$env:CASAN_CHAT_AGENT = 'codegen-draft'
$env:CASAN_CHAT_SKILL = 'sourcegen-draft'
powershell -ExecutionPolicy Bypass -File bin\casan-chat.ps1 "Implement the approved task according to the current requirement and architecture."
codegen-draft yêu cầu approval. Không tự đặt project-admin nếu chưa được cấp quyền. Side effect chỉ được thực thi bằng registered action hoặc bin/casan run theo policy hiện hành.
Xóa biến sau phiên làm việc:
Remove-Item Env:CASAN_CHAT_ROLE -ErrorAction SilentlyContinue
Remove-Item Env:CASAN_CHAT_AGENT -ErrorAction SilentlyContinue
Remove-Item Env:CASAN_CHAT_SKILL -ErrorAction SilentlyContinue
Kết quả hợp lệ
Một lượt thành công hiển thị tối thiểu:
CASAN decision=ANSWERED ... certified=true trace_id=<trace-id>
CASAN evidence=<project>/.specify/logs/trace-events/<trace-id>.jsonl
CASAN_PROMPT_TRACE_CERTIFIED project=__PROJECT_ID__ trace_id=<trace-id> gates=7
Xác minh lại:
wsl -d Ubuntu -- bash -lc "cd '<project-wsl-path>' && bin/casan prompt trace '<trace-id>'"
Khi bị chặn
DENIEDhoặcBLOCKED: sửa prompt/context theo reason code; không bypass launcher.REQUIRES_APPROVAL: gửi proposal cho người có quyền phê duyệt.CASAN_PROMPT_ENFORCEMENT_INVALID: chạy lại installer từ CASAN Core mới nhất hoặc khôi phục managed artifact.trace_project_attribution_missing: không sử dụng kết quả; kiểm traproject_idvà H6 telemetry.- Plugin không đọc repository instructions: bật tính năng instruction hoặc chuyển sang công cụ được hỗ trợ.
Kiểm tra nhanh đầu ngày
wsl -d Ubuntu -- bash -lc "cd '<project-wsl-path>' && bin/casan prompt verify"
Kỳ vọng:
CASAN_PROMPT_ENFORCEMENT_VALID project=__PROJECT_ID__ mode=enforced
Điều không được làm
- Không gọi output trực tiếp của agent là CASAN-certified khi thiếu trace.
- Không sửa/xóa evidence để thay đổi quyết định.
- Không đổi role hoặc agent để né approval.
- Không đưa secret, private key, token hoặc dữ liệu nhạy cảm vào prompt/context.
- Không chạy command side effect ngoài registered action hoặc CASAN harness.