- Published on
Day 19 - Performance, token, cost, context optimization
- Authors

- Name
- Trần Mạnh Thắng
- @TranManhThang96
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 + Eschoặ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./costvà/statslà alias./contexthoặ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 + Eschoặ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 status và priority 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ộng | Context 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.json và README.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ọn | Lợi ích | Chi phí |
|---|---|---|
| Context rộng | Có nhiều thông tin khi chưa biết repo | Tốn token, chậm, dễ đọc secret/log, dễ sửa ngoài scope |
| Context hẹp | Nhanh, rẻ, dễ review, dễ rollback | Có thể thiếu dependency ẩn nếu search ban đầu kém |
/compact | Tiếp tục task dài mà không mất mạch | Summary có thể mất chi tiết nếu instruction mơ hồ |
/clear | Reset sạch cho task mới | Mất history trong context nếu chưa summary hoặc chưa rename session |
CONTEXT_SUMMARY.md | Bàn giao session có kiểm soát | Cần kỷ luật cập nhật |
| Subagent riêng | Giữ main context sạch | Cần tổng hợp kết quả tốt |
| Focused test | Nhanh và ít output | Có thể bỏ sót regression ngoài module |
| Full test suite | Tăng confidence trước PR | Chậm, nhiều output, cần tóm tắt lỗi trước khi đưa vào context |
7. Best practices
- Dùng
/cleargiữa các task không liên quan. - Dùng
/compact <instructions>thay vì chờ auto compact cho task dài. - Dùng
/usagevà/contextđể đo trước/sau thay vì chỉ cảm giác “Claude đang chậm”. - Dùng
/btwcho câu hỏi nhanh. - Giữ
CLAUDE.mdngắ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
Escnếu thấy nó đi sai hướng. - Review
git diff --stattrướ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
rgtrước, mở file sau. - Ít context cũ hơn:
/clearhoặ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:
| Metric | Cách lấy | Dùng để quyết định |
|---|---|---|
| Token/session usage | /usage | Có cần chia task, đổi model/effort hoặc dừng exploration không |
| Context breakdown | /context hoặc /context all | Phần nào đang phình: messages, file contents, memory, skills, tools |
| Blast radius | git diff --stat | Có sửa đúng phạm vi không |
| Test signal | Focused test + summary lỗi | Có đủ 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.
/contextcho 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
/clearvà/compact. - Tôi đã dùng
/usagevà/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,/rewindhoặcgit restore -- path. - Tôi không đưa secret/log dài vào context.
- Tôi biết giữ
CLAUDE.mdngắ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.mdhiệ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;/costvà/statslà alias. - Cần xem phần nào đang phình context: dùng
/contexthoặc/context all. - Câu hỏi nhanh: dùng
/btw. - Sai hướng: dùng
Esc, sau đóEsc + Eschoặ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ùng | Khi nào | Rủi ro nếu dùng sai |
|---|---|---|---|
/clear | Reset context | Chuyển task không liên quan | Mất history nếu chưa summary |
/compact <instructions> | Nén context | Task dài vẫn tiếp tục | Summary thiếu chi tiết nếu mơ hồ |
/usage | Xem token/activity stats | Trước/sau task hoặc khi thấy chậm | Số tiền session có thể không phản ánh bill với Pro/Max |
/context all | Xem breakdown đầy đủ | Context phình, Claude quên instruction | Dễ chỉ nhìn số mà không xử lý root cause |
/btw | Hỏi nhanh | Câu hỏi không cần lưu history | Không dùng cho task dài |
/rewind | Quay checkpoint hoặc summarize một phần | Claude sửa sai/lệch scope/context quá dài | Không thay thế git; Bash command changes không được checkpoint theo cùng cách |
CONTEXT_SUMMARY.md | Tóm tắt thủ công | Chuyển session/bàn giao | Summary dài lại thành noise |
CLAUDE.md | Rule bền vững | Commands, style, testing, security | File quá dài tốn context |
| Context rộng | Discovery ban đầu | Chưa biết kiến trúc | Tốn token, dễ sửa ngoài scope |
| Context hẹp | Implement feature | Đã biết file liên quan | Có thể bỏ sót dependency |
| Subagent | Investigation riêng context | Đọc nhiều file/log/test output | Cần summary tốt, có thể tăng tổng token nếu dùng quá nhiều |
Lỗi thường gặp
- Yêu cầu đọc toàn bộ repo cho feature nhỏ.
- Paste nguyên stack trace/log dài vào prompt.
- Để Claude tự quyết định phạm vi sửa mà không có plan.
- Dùng
/compactkhông có instruction. - Dùng
/cleartrước khi tạo summary cho task dang dở. - Nhồi tài liệu dài vào
CLAUDE.md. - Không kiểm tra
git diff --stat. - Cho Claude đọc
.env, logs, build output hoặc coverage. - Tiếp tục sửa trong session đã có nhiều lần correction thất bại.
- Rollback bằng git quá rộng, làm mất thay đổi của người khác.
- 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. - 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.
Link tài liệu nên đọc
- Claude Code Best Practices: https://code.claude.com/docs/en/best-practices
- Claude Code Commands: https://code.claude.com/docs/en/commands
- Claude Code Costs: https://code.claude.com/docs/en/costs
- Claude Code Context Window: https://code.claude.com/docs/en/context-window
- How Claude Code Works: https://code.claude.com/docs/en/how-claude-code-works
- Claude Code Memory: https://code.claude.com/docs/en/memory
- Claude Code Checkpointing: https://code.claude.com/docs/en/checkpointing
- Claude Code Error Reference: https://code.claude.com/docs/en/errors
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:
- Bắt Claude chỉ đọc file liên quan.
- Bắt Claude liệt kê file cần đọc và lý do trước khi edit.
- Bắt Claude chờ approve plan.
- Loại trừ
.env, logs,node_modules,dist,coverage. - 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:
- Mở Claude Code tại repo
taskflow-ai. - Chạy baseline trong Claude Code:
/usagevà/context. - Chạy prompt rộng nhưng chỉ yêu cầu lập plan, không sửa file.
- Ghi lại
/usagevà/contextsau prompt rộng. - Chạy
/rename task-filter-wide-plan, sau đó/clear. - Chạy prompt hẹp từ Bài 1.
- Ghi lại
/usagevà/contextsau prompt hẹp. - 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ộng | Prompt 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.
- Có
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:
- Prompt rộng khiến Claude muốn đọc thêm file nào?
- Prompt hẹp loại bỏ được nhánh khám phá nào?
- Khi nào chọn
/clearthay vì/compact? /usagevà/contextcho thấy khác biệt gì giữa hai cách prompt?- Summary có đủ để mở session mới không?
- Có thông tin nào không nên đưa vào context vì security?
- Nếu Claude sửa sai, rollback bằng
/rewindhaygit restore -- path? Vì sao? - 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
/usagevà/contexttrước/sau để đánh giá token/context tương đối. - Có
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 |