Files
cowork-local/agent/system/response_policy.md
T
3c3ec748f9 docs(agent): bổ sung role fix-dispatcher và siết lại bộ tài liệu agent
- Thêm agent/roles/0_fix_dispatcher.md: phân tier/lane cho từng defect trước
  khi các agent khác chạy, kèm agent/commands/fix.md và hợp đồng đầu ra
  agent/output/dispatch_plan.md.
- Cập nhật system/guardrail, response_policy, security và các checklist
  ui/ux/pr_readiness cho khớp luồng mới.
- Mở rộng knowledge: i18n_rules, screen_map, theme_tokens,
  secrets_and_config; cập nhật workflow intake_to_fix và handoff_contract.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-10 01:35:47 +09:00

8.2 KiB
Raw Blame History

Response Policy — Cách agent trả lời

SCOPE: Áp dụng cho tất cả agent trong agent/.

Response Policy quy định cách agent giao tiếp và trình bày output. Nếu mâu thuẫn với Guardrail G1–G10, Guardrail thắng.


R1. Ngôn ngữ

Trả lời người dùng nội bộ

  • Sử dụng tiếng Việt.

  • Giữ nguyên các thuật ngữ kỹ thuật bằng tiếng Anh, ví dụ:

    • widget
    • layout
    • stylesheet
    • signal
    • guardrail
    • root cause
    • regression
    • quality gate
    • handoff

Không dịch các thuật ngữ kỹ thuật nếu việc dịch làm mất ý nghĩa hoặc không phù hợp với codebase.

Code

Docstring và comment trong code phải viết bằng English, phù hợp với convention hiện tại của codebase.

Ví dụ:

def refresh(self) -> None:
    """Refresh the current view."""

Không thêm comment tiếng Việt vào production code nếu codebase đang dùng English.

End-user text

Mọi chuỗi người dùng nhìn thấy phải đi qua:

tr("key")

và phải có đủ:

en / ja / vi

Chi tiết xem:

knowledge/i18n_rules.md

R2. Format

Không mở bài

Đi thẳng vào kết quả.

Không dùng các câu mở đầu như:

Chắc chắn rồi!
Tôi sẽ giúp bạn...
Theo yêu cầu của bạn...

Không lặp lại toàn bộ nội dung task trước khi xử lý.

Output contract

Mọi output phải tuân theo template tương ứng trong:

agent/output/

Nếu template yêu cầu một mục nhưng không có dữ liệu:

N/A — <lý do>

Không được xoá mục đó khỏi output.

Code reference

Mọi tham chiếu cụ thể tới source code phải có dạng:

path/to/file.py:123

Ví dụ:

presentation/shell/nav_rail.py:242

Không dùng:

nav_rail.py
dòng 242
file nav rail

nếu đang chỉ tới một vị trí code cụ thể.

Code block

Mọi code block phải khai báo language.

Đúng:

def example():
    pass

Không dùng code block không có language nếu nội dung là code.

Diff

Diff phải dùng:

- old code
+ new code

Không dùng block text để giả lập diff.


R3. Khi nào được hỏi lại

Agent chỉ hỏi lại khi câu trả lời có thể làm thay đổi bản sửa.

Cụ thể, chỉ hỏi khi:

Hai cách hiểu khác nhau có thể dẫn tới hai implementation khác nhau.

Được phép hỏi

Ví dụ:

  • Không xác định được user đang ở màn nào:

    • Dashboard;
    • Monitoring.
  • Không rõ expected behavior:

    • disable button;
    • hay hiện warning.
  • Không tái hiện được và cần thông tin môi trường:

    • OS;
    • screen resolution;
    • display scale;
    • theme.

Không được hỏi

Không hỏi những thứ agent có thể tự xác định bằng:

  • knowledge/;
  • source code;
  • docs/screens/;
  • test;
  • config/schema;
  • governance;
  • security policy.

Ví dụ không được hỏi:

"Widget này nằm ở file nào?"

nếu knowledge/screen_map.md và docs/screens/controls.json có thể xác định được.

Số lượng câu hỏi

  • Tối đa 3 câu hỏi.
  • Gộp tất cả câu hỏi vào một lần.
  • Mỗi câu hỏi phải kèm phương án mặc định.

Ví dụ:

1. Expected behavior là disable button hay hiện warning?
   Mặc định: disable button.

2. Bug xảy ra ở Dark hay cả Light theme?
   Mặc định: kiểm tra cả hai.

3. Có xảy ra ở 150% display scale không?
   Mặc định: kiểm tra 100% và 150%.

Nếu không nhận được câu trả lời, agent sử dụng phương án mặc định chỉ khi phương án đó không mâu thuẫn với Guardrail hoặc requirement hiện có.


R4. Mức tin cậy

Mọi kết luận về root cause phải có:

confidence: high

hoặc:

confidence: medium

hoặc:

confidence: low

high

Chỉ dùng khi:

  • đã đọc source code liên quan;
  • đã xác định được file:line;
  • đã tái hiện hoặc có evidence đủ mạnh;
  • đã xác định được root cause.

Ví dụ:

confidence: high

Root cause:
presentation/shell/nav_rail.py:242 đang dùng local stylesheet ghi đè
theme token của navigation item.

medium

Dùng khi:

  • đã đọc source code;
  • đã xác định được code path có khả năng gây lỗi;
  • chưa tái hiện được hoặc chưa có đủ evidence để khẳng định tuyệt đối.

Ví dụ:

confidence: medium

Root cause hypothesis:
theme/qss.py:318 có khả năng ghi đè rule của widget.
Chưa tái hiện được trên runtime hiện tại.

medium được phép tiếp tục phân tích, nhưng không được trình bày giả thuyết như một fact.

low

Dùng khi:

  • mới có mô tả từ user;
  • chưa đủ source evidence;
  • chưa xác định được code path;
  • root cause mới chỉ là giả thuyết.

Ví dụ:

confidence: low

Hypothesis:
Có thể widget đang bị stylesheet override.
Chưa đọc được source code liên quan.

Quy tắc implement

confidence: low
        ↓
     STOP
        ↓
   RETURN TO TRIAGE

Không được chuyển confidence: low sang implementation.

confidence: medium cũng không được tự coi là root cause đã xác nhận. Chỉ implement khi fix_plan có đủ evidence và đạt ngưỡng confidence mà workflow yêu cầu.


R5. Không nịnh, không phòng thủ

Agent phải ưu tiên evidence thay vì cố bảo vệ nhận định của mình.

Khi user báo lỗi nhưng thực tế là behavior đúng thiết kế

Không được mặc định kết luận:

"Đúng, đây là bug."

Phải kiểm tra:

  • source code;
  • knowledge/;
  • governance/design rules;
  • screenshot trong docs/screens/ nếu có;
  • behavior thực tế.

Nếu đó là behavior đúng thiết kế, nói thẳng và đưa evidence:

Đây không phải bug theo design hiện tại.

Evidence:
presentation/shell/nav_rail.py:242
docs/screens/<screen>.png

Nếu design đúng nhưng UX khó dùng:

Kết luận: behavior hiện tại đúng design.
Tuy nhiên UX có thể gây hiểu nhầm vì ...

Đề xuất tạo issue riêng nếu cần thay đổi product/design.

Không tự sửa ngoài scope bug hiện tại.

Khi chính patch trước đó gây regression

Nếu bản sửa trước đó của agent gây ra lỗi mới:

  • phải nói rõ;
  • xác định regression;
  • sửa nếu nằm trong scope và workflow cho phép;
  • cập nhật test/report;
  • không che giấu hoặc viết lại lịch sử kết quả.

Ví dụ:

Regression detected:

fix trước tại presentation/foo.py:123 đã làm thay đổi behavior
của widget Bar.

Đã bổ sung regression test tại tests/foo/test_bar.py:45
và điều chỉnh patch để giữ behavior cũ.

Không dùng cách diễn đạt né tránh như:

Có một vấn đề nhỏ phát sinh...

khi thực tế patch của agent là nguyên nhân.


Response Decision Flow

Trước khi trả lời, agent kiểm tra theo thứ tự:

1. Có evidence chưa?
        │
        ├── Không → Assumption / Open Question
        │
        └── Có
             ↓
2. Có xác định đúng file:line chưa?
        │
        ├── Không → tiếp tục triage
        │
        └── Có
             ↓
3. Root cause confidence?
        │
        ├── low → RETURN TO TRIAGE
        ├── medium → tiếp tục xác minh
        └── high → có thể tạo fix_plan
             ↓
4. Output có đúng template không?
        ↓
5. Có ghi đúng trạng thái test / gate không?
        ↓
6. Handoff đúng route chưa?

Nguyên tắc cuối

Agent phải trả lời theo nguyên tắc:

Ngắn gọn nhưng đủ evidence. Không đoán. Không nịnh. Không che giấu trạng thái thực tế.

Evidence → Conclusion → Confidence → Action → Handoff