Published on

Day 19 - Performance, token, cost, context optimization

Authors

1. Mục tiêu bài học

Sau khoảng 2 giờ, học viên có thể:

  • Giải thích vì sao task dài trong Claude Code tốn token, chậm hơn và dễ lệch hướng.
  • Chia một feature thành các task nhỏ để giảm context noise.
  • Biết khi nào dùng /usage, /context, /clear, /compact <instructions>, /btw, Esc + Esc hoặc /rewind.
  • Tạo CONTEXT_SUMMARY.md đủ ngắn nhưng vẫn giữ quyết định kỹ thuật quan trọng.
  • Viết prompt giới hạn phạm vi đọc file, tránh Claude đọc cả repo không cần thiết.
  • So sánh chất lượng output khi context rộng và context hẹp trên taskflow-ai.

2. Bối cảnh thực tế

Một prompt kiểu “đọc toàn bộ taskflow-ai, thêm filter cho task list, sửa API, sửa UI, thêm test, review toàn bộ” nghe tiện nhưng làm Claude Code phải:

  • Đọc nhiều file không liên quan.
  • Mang theo log, diff, output test và quyết định cũ sang task mới.
  • Tăng token input/output và thời gian chạy.
  • Dễ sửa lan sang module ngoài scope.
  • Có nguy cơ đọc .env, logs, backup file hoặc dữ liệu nhạy cảm.

Context rộng không chỉ tốn tiền. Nó còn làm giảm khả năng review, khiến prompt khó tái sử dụng và tăng rủi ro maintainability.

3. Kiến thức nền

Token là đơn vị text model xử lý. Prompt, câu trả lời, file đã đọc, command output, CLAUDE.md, auto memory, loaded skills, system instructions và lịch sử sửa sai đều có thể đi vào context. Context càng lớn thì mỗi lượt trả lời càng tốn token, chậm hơn và dễ bị nhiễu bởi quyết định cũ.

Context window là vùng Claude có thể “nhìn thấy” trong một session. Khi gần đầy, Claude Code có thể compact tự động: dọn bớt tool output cũ và tóm tắt conversation history. Cơ chế này hữu ích nhưng không thay thế kỷ luật scope task, vì instruction nằm ở đầu hội thoại hoặc log dài có thể bị tóm tắt mất chi tiết. Với task quan trọng, hãy compact có hướng dẫn hoặc tạo summary thủ công trước.

Các lệnh nên nhớ:

  • /usage: xem token usage, plan usage và activity stats của session. /cost/stats là alias.
  • /context hoặc /context all: xem phần nào đang chiếm context và gợi ý tối ưu.
  • /clear [name]: bắt đầu conversation mới với context rỗng cho task không liên quan; conversation cũ vẫn có thể tìm qua /resume.
  • /compact <instructions>: nén hội thoại có định hướng khi vẫn tiếp tục cùng một task.
  • /btw: hỏi nhanh không cần đưa câu hỏi/câu trả lời vào conversation history chính.
  • Esc: dừng Claude giữa chừng để redirect.
  • Esc + Esc hoặc /rewind: mở rewind menu để restore code/conversation hoặc summarize một phần hội thoại.

CLAUDE.md nên ngắn, human-readable, ưu tiên dưới 200 dòng, chứa commands, style, testing, security và gotchas. Không nhồi tài liệu dài, API docs có thể tra lại hoặc workflow chỉ dùng đôi khi; các nội dung đó nên chuyển sang skill hoặc link tài liệu.

4. Step-by-step thực hành

Feature dùng trong bài: thêm filter statuspriority cho Task List trong taskflow-ai.

Bước 1: Kiểm tra trạng thái repo

Chạy ở root taskflow-ai.

git status --short

Lệnh kiểm tra working tree. Output kỳ vọng rỗng hoặc danh sách file đang sửa. Rủi ro: nếu có thay đổi sẵn, không rollback bừa vì có thể là việc của người khác.

Bước 2: Đo usage và context hiện tại

Trong Claude Code:

/usage
/context

/usage cho biết token usage và activity stats của session. Với Pro/Max, số tiền trong session không nhất thiết phản ánh hóa đơn vì usage nằm trong subscription; với API/team, dùng nó như tín hiệu vận hành và đối chiếu billing ở Console khi cần.

/context cho biết phần nào đang chiếm context: messages, file contents, memory, skills, tools, MCP. Nếu cần breakdown đầy đủ:

/context all

Nếu session đang chứa task cũ không liên quan, đặt tên session cũ rồi clear:

/rename task-filter-context-wide
/clear

Dùng /clear khi chuyển task. Không dùng nếu task đang dang dở và chưa có CONTEXT_SUMMARY.md hoặc chưa compact phần cần giữ.

Bước 3: So sánh prompt rộng

Prompt rộng:

Đọc toàn bộ project taskflow-ai và lập plan thêm filter status + priority cho task list. Không sửa file.

Chỉ yêu cầu Claude lập plan, chưa implement. Quan sát số file Claude muốn đọc, số bước plan, assumption và rủi ro sửa lan. Sau khi Claude trả lời, chạy lại:

/usage
/context

Ghi lại token/context ở mức tương đối. Nếu không muốn giữ plan rộng trong task thật, dùng /clear trước khi chuyển sang prompt hẹp.

Bước 4: Tìm file liên quan trước

Chạy ở root taskflow-ai.

rg -n "TaskList|TaskItem|TaskFilter|priority|status|createTask|updateTask" . --glob "!node_modules/**" --glob "!dist/**" --glob "!coverage/**" --glob "!.git/**"

Lệnh tìm file liên quan tới task list, status, priority. Output kỳ vọng là path + dòng match. Rủi ro: output có thể dài; chỉ đưa file liên quan cho Claude, không paste toàn bộ.

Bước 5: Prompt hẹp để lập plan

Scope task: thêm filter status + priority cho Task List trong taskflow-ai.

Chỉ đọc các file liên quan tới:
- UI render danh sách task
- type/model của Task
- state/query/filter hiện có
- test trực tiếp của Task List nếu có

Không đọc toàn bộ repo. Không sửa auth, routing, billing, config, migration, hoặc unrelated styles.

Trước khi edit:
1. Liệt kê file bạn cần đọc và lý do.
2. Đưa plan tối đa 5 bước.
3. Chờ tôi approve.

Điểm quan trọng: bắt Claude khai báo phạm vi đọc file trước khi đọc sâu.

Sau khi có plan hẹp, so sánh với plan rộng theo bảng:

Tiêu chíContext rộngContext hẹp
Số file/path muốn đọc......
Module ngoài scope xuất hiện......
Test đề xuất......
Token/context sau plan......
Rủi ro maintainability......

Bước 6: Implement narrow change

Sau khi approve plan:

Implement theo plan đã duyệt.

Giới hạn:
- Chỉ sửa các file đã liệt kê.
- Nếu phát hiện cần file mới, dừng lại và giải thích vì sao.
- Giữ behavior hiện có của search/sort nếu có.
- Thêm hoặc cập nhật test nhỏ nhất chứng minh filter status + priority hoạt động.
- Không refactor ngoài phạm vi.

Sau khi sửa xong, trả về:
- File changed
- Behavior changed
- Test command nên chạy
- Rủi ro còn lại

Bước 7: Kiểm tra diff

Chạy ở root taskflow-ai.

git diff --stat
git diff

git diff --stat xem blast radius. git diff xem chi tiết. Output kỳ vọng chỉ có file Task List/filter/test. Rủi ro: diff có thể chứa secret nếu workspace đang có file nhạy cảm.

Bước 8: Chạy test phù hợp

Chạy ở root taskflow-ai.

npm pkg get scripts
npm test

npm pkg get scripts kiểm tra script thật trước khi chạy. npm test chạy test theo npm script. Output kỳ vọng là test pass hoặc failure rõ. Rủi ro: project có thể dùng pnpm/yarn, monorepo workspace hoặc cần service local như PostgreSQL/Redis; đọc package.jsonREADME.md trước nếu chưa chắc. Nếu chỉ sửa frontend, ưu tiên focused test như npm run test -- --run TaskList.

Bước 9: Tạo CONTEXT_SUMMARY.md

Prompt:

Tạo CONTEXT_SUMMARY.md cho task hiện tại.

Yêu cầu:
- Dưới 120 dòng.
- Không chứa secret, raw log dài, token, .env.
- Giữ: goal, files read, files changed, decisions, commands run, test result, risks, next prompt.
- Viết để session mới có thể tiếp tục mà không cần đọc lại toàn bộ repo.

Template:

# CONTEXT_SUMMARY.md

## Goal
Thêm filter status + priority cho Task List.

## Files Read
- `path/to/file`: lý do đọc

## Files Changed
- `path/to/file`: thay đổi chính

## Decisions
- Filter xử lý ở UI/client state vì ...

## Commands Run
- `git status --short`: kết quả ...
- `npm test`: kết quả ...

## Risks
- Chưa test dataset lớn.

## Next Prompt
Read this summary first. Only inspect listed files unless a failing test proves another file is needed.

Bước 10: Compact có điều khiển

Trong Claude Code:

/compact Preserve: goal, files read, files changed, decisions, test commands, known risks. Drop: raw logs, failed exploratory paths, unrelated discussion.

Dùng /compact khi task còn tiếp tục. Nếu chuyển sang task khác, dùng /clear.

Bước 11: Rollback khi Claude làm sai

Ưu tiên:

Esc + Esc
/rewind

Nếu cần rollback bằng git, chạy ở root taskflow-ai:

git status --short
git restore -- path/to/file

git restore -- path/to/file hoàn tác thay đổi chưa commit của file cụ thể. Rủi ro: mất toàn bộ thay đổi local trong file đó, nên chỉ dùng sau khi đọc diff.

5. Prompt mẫu nên dùng

Scope context:

Trước khi đọc file, hãy đề xuất danh sách file cần đọc và lý do. Không đọc toàn bộ repo. Ưu tiên rg theo keyword, sau đó chỉ mở file match trực tiếp. Không đọc .env, logs, coverage, dist, node_modules.

Plan:

Lập plan cho feature [X]. Tối đa 5 bước, nêu file dự kiến sửa, test command, assumption cần xác nhận. Không implement cho tới khi approve.

Implement narrow change:

Implement đúng plan đã approve. Không sửa file ngoài danh sách. Nếu cần mở rộng scope, dừng lại hỏi. Không refactor unrelated code.

Review:

Review only the current diff. Tập trung bug, regression, edge case, test thiếu, security/data exposure và thay đổi ngoài scope. Không rewrite code vì preference.

Context summary:

Tạo CONTEXT_SUMMARY.md ngắn hơn 120 dòng, không chứa secret/log dài, giữ goal, files read/changed, decisions, commands, test result, risks và next prompt.

6. Trade-offs

Lựa chọnLợi íchChi phí
Context rộngCó nhiều thông tin khi chưa biết repoTốn token, chậm, dễ đọc secret/log, dễ sửa ngoài scope
Context hẹpNhanh, rẻ, dễ review, dễ rollbackCó thể thiếu dependency ẩn nếu search ban đầu kém
/compactTiếp tục task dài mà không mất mạchSummary có thể mất chi tiết nếu instruction mơ hồ
/clearReset sạch cho task mớiMất history trong context nếu chưa summary hoặc chưa rename session
CONTEXT_SUMMARY.mdBàn giao session có kiểm soátCần kỷ luật cập nhật
Subagent riêngGiữ main context sạchCần tổng hợp kết quả tốt
Focused testNhanh và ít outputCó thể bỏ sót regression ngoài module
Full test suiteTăng confidence trước PRChậm, nhiều output, cần tóm tắt lỗi trước khi đưa vào context

7. Best practices

  • Dùng /clear giữa các task không liên quan.
  • Dùng /compact <instructions> thay vì chờ auto compact cho task dài.
  • Dùng /usage/context để đo trước/sau thay vì chỉ cảm giác “Claude đang chậm”.
  • Dùng /btw cho câu hỏi nhanh.
  • Giữ CLAUDE.md ngắn, cụ thể; nếu vượt khoảng 200 dòng, chuyển workflow ít dùng sang skill hoặc tài liệu link ngoài.
  • Luôn yêu cầu Claude liệt kê file cần đọc trước khi đọc sâu.
  • Không paste raw log dài; tóm tắt phần lỗi chính.
  • Loại trừ node_modules, dist, coverage, .git, logs, .env.
  • Dừng Claude bằng Esc nếu thấy nó đi sai hướng.
  • Review git diff --stat trước khi cho Claude chạy tiếp.
  • Với investigation đọc nhiều file, cân nhắc subagent để giữ main context sạch.
  • Không đưa production data, token, API key, connection string hoặc log chứa PII vào prompt hay CONTEXT_SUMMARY.md.

8. Performance / cost / context

Một prompt tốt phải giới hạn vùng làm việc. Tối ưu bằng:

  • Input ít hơn: chỉ đưa file/path liên quan.
  • Output ngắn hơn: yêu cầu format cụ thể.
  • Ít vòng sửa hơn: plan trước, implement sau.
  • Ít đọc file hơn: dùng rg trước, mở file sau.
  • Ít context cũ hơn: /clear hoặc /compact đúng lúc.
  • Ít rủi ro hơn: tránh secret/log/unrelated files.
  • Ít background cost hơn: tắt MCP server không dùng, tránh nhiều subagent chạy song song khi không cần.

Metric nên ghi trong bài:

MetricCách lấyDùng để quyết định
Token/session usage/usageCó cần chia task, đổi model/effort hoặc dừng exploration không
Context breakdown/context hoặc /context allPhần nào đang phình: messages, file contents, memory, skills, tools
Blast radiusgit diff --statCó sửa đúng phạm vi không
Test signalFocused test + summary lỗiCó đủ confidence để tiếp tục không

Dấu hiệu cần compact hoặc clear:

  • Claude nhắc lại quyết định cũ không còn đúng.
  • Claude sửa lỗi đã sửa ở vòng trước.
  • /context cho thấy messages/tool output quá lớn.
  • Bạn đã đổi sang feature khác.
  • Bạn phải sửa Claude hơn 2 lần cùng một vấn đề.
  • Auto mode hoặc compaction báo context quá lớn.

9. Checklist cuối bài

  • Tôi giải thích được vì sao task dài tốn token.
  • Tôi biết phân biệt /clear/compact.
  • Tôi đã dùng /usage/context để ghi metric trước/sau.
  • Tôi đã viết prompt rộng và prompt hẹp cho cùng một feature.
  • Tôi đã dùng rg để giới hạn file liên quan.
  • Tôi đã tạo template CONTEXT_SUMMARY.md.
  • Tôi biết rollback bằng Esc + Esc, /rewind hoặc git restore -- path.
  • Tôi không đưa secret/log dài vào context.
  • Tôi biết giữ CLAUDE.md ngắn và có cấu trúc.

10. Bài tập

  • Bài cơ bản: rewrite prompt rộng thành prompt hẹp.
  • Bài thực tế: so sánh plan từ context rộng và context hẹp.
  • Bài nâng cao: tạo CONTEXT_SUMMARY.md.
  • Bài áp dụng cá nhân: audit CLAUDE.md hiện tại và rút gọn nó còn các rule thực sự cần.

Tài liệu

Tóm tắt kiến thức

Claude Code làm việc tốt nhất khi context sạch, đúng phạm vi và có cấu trúc. Task dài tốn token vì prompt, replies, file contents, command output, CLAUDE.md, auto memory, loaded skills, system instructions và lịch sử sửa sai đều có thể đi vào context.

Cost không chỉ là số tiền. Nó gồm thời gian chờ, vòng sửa lại, khả năng model quên instruction cũ và rủi ro sửa lan. Vì vậy Day 19 xem context window như tài nguyên cần quản lý chủ động.

Nguyên tắc:

  • Task không liên quan: dùng /clear.
  • Task dài nhưng cùng mạch: dùng /compact <instructions>.
  • Cần đo token/activity: dùng /usage; /cost/stats là alias.
  • Cần xem phần nào đang phình context: dùng /context hoặc /context all.
  • Câu hỏi nhanh: dùng /btw.
  • Sai hướng: dùng Esc, sau đó Esc + Esc hoặc /rewind.
  • Muốn chuyển session: tạo CONTEXT_SUMMARY.md.
  • Muốn Claude ít đọc file: yêu cầu nêu file cần đọc và lý do trước khi mở file.

Sơ đồ tư duy hoặc luồng xử lý

Nhận feature
  -> có liên quan task cũ?
      -> không: /clear
      -> có: /context
  -> ghi baseline?
      -> /usage + /context
  -> context gần đầy?
      -> có: /compact với instructions
      -> không: scope prompt
  -> Claude liệt kê file cần đọc
  -> approve plan hẹp
  -> implement narrow change
  -> git diff --stat
  -> sai scope?
      -> có: Esc + Esc hoặc /rewind
      -> không: run focused test
  -> đo lại /usage + /context
  -> tạo CONTEXT_SUMMARY.md

Bảng so sánh

Chủ đềNên dùngKhi nàoRủi ro nếu dùng sai
/clearReset contextChuyển task không liên quanMất history nếu chưa summary
/compact <instructions>Nén contextTask dài vẫn tiếp tụcSummary thiếu chi tiết nếu mơ hồ
/usageXem token/activity statsTrước/sau task hoặc khi thấy chậmSố tiền session có thể không phản ánh bill với Pro/Max
/context allXem breakdown đầy đủContext phình, Claude quên instructionDễ chỉ nhìn số mà không xử lý root cause
/btwHỏi nhanhCâu hỏi không cần lưu historyKhông dùng cho task dài
/rewindQuay checkpoint hoặc summarize một phầnClaude sửa sai/lệch scope/context quá dàiKhông thay thế git; Bash command changes không được checkpoint theo cùng cách
CONTEXT_SUMMARY.mdTóm tắt thủ côngChuyển session/bàn giaoSummary dài lại thành noise
CLAUDE.mdRule bền vữngCommands, style, testing, securityFile quá dài tốn context
Context rộngDiscovery ban đầuChưa biết kiến trúcTốn token, dễ sửa ngoài scope
Context hẹpImplement featureĐã biết file liên quanCó thể bỏ sót dependency
SubagentInvestigation riêng contextĐọc nhiều file/log/test outputCần summary tốt, có thể tăng tổng token nếu dùng quá nhiều

Lỗi thường gặp

  1. Yêu cầu đọc toàn bộ repo cho feature nhỏ.
  2. Paste nguyên stack trace/log dài vào prompt.
  3. Để Claude tự quyết định phạm vi sửa mà không có plan.
  4. Dùng /compact không có instruction.
  5. Dùng /clear trước khi tạo summary cho task dang dở.
  6. Nhồi tài liệu dài vào CLAUDE.md.
  7. Không kiểm tra git diff --stat.
  8. Cho Claude đọc .env, logs, build output hoặc coverage.
  9. Tiếp tục sửa trong session đã có nhiều lần correction thất bại.
  10. Rollback bằng git quá rộng, làm mất thay đổi của người khác.
  11. Không ghi metric /usage//context, nên không biết prompt hẹp có thật sự tiết kiệm hơn không.
  12. Dùng subagent cho việc nhỏ, làm tổng token tăng mà không đem lại lợi ích.

Cách debug

Kiểm tra context:

/usage
/context
/context all

/usage cho biết token/activity stats của session. /context all mở rộng breakdown để biết messages, file contents, memory, skills hoặc tools đang chiếm nhiều chỗ.

Kiểm tra file đã sửa, chạy ở root taskflow-ai:

git diff --stat

Output kỳ vọng: chỉ vài file liên quan Task List/filter/test. Nếu thấy auth, routing, migration hoặc config ngoài scope, dừng lại và review trước khi tiếp tục.

Tìm file liên quan mà không đọc cả repo:

rg -n "TaskList|TaskFilter|status|priority" . --glob "!node_modules/**" --glob "!dist/**" --glob "!coverage/**" --glob "!.git/**"

Output kỳ vọng: path và dòng match của component/type/test liên quan. Nếu output quá dài, refine keyword thay vì paste toàn bộ vào prompt.

Kiểm tra secret trước khi đưa context:

rg -n "SECRET|TOKEN|API_KEY|PASSWORD|PRIVATE_KEY|DATABASE_URL" . --glob "!node_modules/**" --glob "!dist/**" --glob "!coverage/**" --glob "!.git/**"

Rủi ro: output có thể chứa secret thật; không paste nguyên output vào chat.

Kiểm tra test script trước khi chạy:

npm pkg get scripts

Output kỳ vọng là JSON chứa script như test, test:unit, test:e2e, lint hoặc typecheck. Nếu project dùng pnpm/yarn, dùng package manager đang có trong repo thay vì tự đổi toolchain.

Rollback file cụ thể:

git restore -- path/to/file

Lệnh này bỏ thay đổi chưa commit của file chỉ định. Chỉ dùng sau khi đã đọc diff.


Bài tập

Bài 1 — Cơ bản

Mục tiêu: viết lại prompt rộng thành prompt hẹp.

Prompt ban đầu:

Đọc toàn bộ taskflow-ai, thêm filter status + priority cho task list, sửa mọi thứ cần thiết và test toàn bộ.

Yêu cầu prompt mới:

  1. Bắt Claude chỉ đọc file liên quan.
  2. Bắt Claude liệt kê file cần đọc và lý do trước khi edit.
  3. Bắt Claude chờ approve plan.
  4. Loại trừ .env, logs, node_modules, dist, coverage.
  5. Có acceptance criteria và test command dự kiến.

Chạy ở root taskflow-ai:

rg -n "TaskList|TaskFilter|status|priority" . --glob "!node_modules/**" --glob "!dist/**" --glob "!coverage/**" --glob "!.git/**"

Lệnh tìm file ứng viên. Output kỳ vọng: vài file liên quan Task List/filter. Rủi ro: output dài; refine keyword và chỉ gửi path liên quan, không paste toàn bộ vào Claude.

Bài 2 — Thực tế

Mục tiêu: so sánh output khi context rộng và context hẹp.

Thực hiện:

  1. Mở Claude Code tại repo taskflow-ai.
  2. Chạy baseline trong Claude Code: /usage/context.
  3. Chạy prompt rộng nhưng chỉ yêu cầu lập plan, không sửa file.
  4. Ghi lại /usage/context sau prompt rộng.
  5. Chạy /rename task-filter-wide-plan, sau đó /clear.
  6. Chạy prompt hẹp từ Bài 1.
  7. Ghi lại /usage/context sau prompt hẹp.
  8. So sánh hai plan theo số file muốn đọc, số bước, assumption, rủi ro sửa lan và metric context/token tương đối.

Prompt rộng:

Đọc toàn bộ project taskflow-ai và lập plan thêm filter status + priority cho task list. Không sửa file.

Prompt hẹp:

Scope: thêm filter status + priority cho Task List.

Không đọc toàn bộ repo. Chỉ đọc file liên quan trực tiếp tới UI task list, model/type Task, state/filter hiện có và test trực tiếp nếu có.

Trước khi đọc file:
- Liệt kê file/path pattern cần kiểm tra.
- Nêu lý do từng file.
- Lập plan tối đa 5 bước.
- Không sửa file cho tới khi tôi approve.

Mẫu bảng so sánh:

Tiêu chíPrompt rộngPrompt hẹp
File/path Claude muốn đọc......
Module ngoài scope......
Số bước plan......
Test command đề xuất......
Context/token sau plan......
Rủi ro security/maintainability......

Kiểm tra trước và sau:

git status --short

Lệnh đảm bảo bài so sánh plan không tạo thay đổi. Output kỳ vọng rỗng hoặc không có thay đổi mới. Rủi ro: nếu có file đổi, Claude đã vượt scope.

Bài 3 — Nâng cao

Mục tiêu: tạo CONTEXT_SUMMARY.md.

Yêu cầu file:

# CONTEXT_SUMMARY.md

## Goal
...

## Current State
...

## Files Read
...

## Files Changed
...

## Decisions
...

## Commands Run
...

## Test Result
...

## Risks
...

## Next Prompt
...

Ràng buộc:

  • Dưới 120 dòng.
  • Không chứa secret, raw log dài, .env, token, password.
  • Có đủ files read/changed, decisions, commands, test result, risks.
  • Next Prompt để session mới tiếp tục với context hẹp.
  • Nêu rõ summary này dành cho task filter, không phải tài liệu kiến trúc toàn repo.

Trước khi tạo summary, kiểm tra secret keyword ở root taskflow-ai:

rg -n "SECRET|TOKEN|API_KEY|PASSWORD|PRIVATE_KEY|DATABASE_URL" . --glob "!node_modules/**" --glob "!dist/**" --glob "!coverage/**" --glob "!.git/**"

Output kỳ vọng: không có secret thật trong file sẽ đưa vào context. Rủi ro: command có thể in ra secret nếu repo đã chứa secret; không paste nguyên output vào Claude, chỉ ghi “đã kiểm tra, không đưa secret vào summary” hoặc redact giá trị nhạy cảm.

Kiểm tra:

git diff -- CONTEXT_SUMMARY.md

Lệnh xem summary trước khi dùng làm context. Rủi ro: nếu lỡ ghi thông tin nhạy cảm, diff sẽ hiển thị; cần redact trước.

Bài 4 — Review & Reflection

Trả lời ngắn:

  1. Prompt rộng khiến Claude muốn đọc thêm file nào?
  2. Prompt hẹp loại bỏ được nhánh khám phá nào?
  3. Khi nào chọn /clear thay vì /compact?
  4. /usage/context cho thấy khác biệt gì giữa hai cách prompt?
  5. Summary có đủ để mở session mới không?
  6. Có thông tin nào không nên đưa vào context vì security?
  7. Nếu Claude sửa sai, rollback bằng /rewind hay git restore -- path? Vì sao?
  8. Với investigation đọc nhiều file, bạn có dùng subagent không? Vì sao?

Review diff:

git diff --stat

Lệnh xác nhận phạm vi thay đổi cuối cùng. Output kỳ vọng chỉ có CONTEXT_SUMMARY.md hoặc file filter nếu đã implement.

Tiêu chí hoàn thành

  • Có prompt hẹp thay thế prompt rộng.
  • Có so sánh output context rộng vs hẹp.
  • Có ghi /usage/context trước/sau để đánh giá token/context tương đối.
  • CONTEXT_SUMMARY.md đúng cấu trúc.
  • Biết dùng /clear, /compact <instructions>, /btw, /rewind.
  • Không đưa secret/log dài vào summary.
  • Diff cuối không có thay đổi ngoài scope.
  • Có command test hoặc review phù hợp.

Gợi ý nếu bí

Prompt scope tối thiểu:

Bạn chỉ được đọc file liên quan trực tiếp tới Task List và filter. Nếu cần mở file ngoài danh sách, hãy dừng và hỏi trước. Không implement trước khi plan được approve.

Instruction compact tốt:

/compact Preserve goal, touched files, decisions, test commands, current failures, next step. Drop raw logs, repeated failed attempts, unrelated discussion.

Next prompt cho session mới:

Read CONTEXT_SUMMARY.md first. Continue only from the files listed there. Do not scan the whole repo. If summary is insufficient, ask one clarifying question before reading more files.

Đáp án tham khảo hoặc expected result

Prompt hẹp đạt yêu cầu:

Scope: thêm filter status + priority cho Task List trong taskflow-ai.

Trước khi edit:
1. Dùng search để tìm file liên quan tới Task List, Task type/model, filter state và test trực tiếp.
2. Liệt kê file cần đọc và lý do.
3. Lập plan tối đa 5 bước.
4. Chờ tôi approve.

Giới hạn:
- Không đọc toàn bộ repo.
- Không đọc .env, logs, node_modules, dist, coverage.
- Không sửa auth, routing, config, billing, migration hoặc unrelated styles.
- Nếu cần mở rộng scope, dừng và hỏi.

Acceptance criteria:
- UI có filter status và priority.
- Filter kết hợp đúng với search/sort hiện có nếu có.
- Có test nhỏ nhất cho filter.
- Test command dự kiến: npm test hoặc focused test sau khi đọc package.json.

Expected result cho bảng so sánh:

| Tiêu chí | Prompt rộng | Prompt hẹp |
| --- | --- | --- |
| File/path Claude muốn đọc | Nhiều folder, có thể gồm backend/config | Component Task List, Task type, filter state, test liên quan |
| Module ngoài scope | Có nguy cơ auth/routing/API rộng | Bị loại trừ rõ |
| Số bước plan | Dài, có discovery chung | Tối đa 5 bước |
| Test command đề xuất | Full test suite | Focused test trước, full test trước PR nếu cần |
| Context/token sau plan | Cao hơn | Thấp hơn |
| Rủi ro | Tốn token, sửa lan | Có thể thiếu dependency ẩn nếu search thiếu |