AIDive

Gói video

Playbook AI-native SDLC, có số đo: thời gian từng giai đoạn, gate tax, bảng kết luận

12 phút đọc

TL;DR

  • Sáu giai đoạn của playbook đều kết thúc bằng một artifact được commit (intent.md, spec.md, plan.md, PR, incident record). Bài ra mắt và khóa học 14 bài mô tả hình dạng của quy trình, nhưng không bên nào công bố số đo.
  • Chạy từ đầu đến cuối trên một repo Express + Prisma thật, cả chuỗi sửa một bug mất 11 min 31 s với $3.46, trong khi prompt trực tiếp làm xong trong 2 min 13 s với $0.70: ×5.2 thời gian, ×4.9 chi phí, cả hai đều xanh.
  • Cái giá thật là việc đọc: 5,488 từ artifact cho một bản sửa class dài một dòng, khoảng 27 min ở tốc độ 200 wpm. Chuỗi này biến thời gian viết thành thời gian đọc.
  • Ba trong sáu giai đoạn đáng giá trong bối cảnh này: Plan (intent.md), Build (plan mode + CLAUDE.md + TDD), Deploy (REVIEW.md + một hook). Design và continuous evals thì không đáng với dev làm một mình; Maintain chưa được chạy.
  • Giai đoạn spec tự chỉ ra điều kiện tiên quyết của nó: không có org skill nào, nên spec chưa bao giờ được kiểm tra theo chính sách brand, security hay UX. Playbook giả định các skill đó đã được viết sẵn.
  • Cổng kiểm soát tất định hoạt động: một hook PreToolUse chặn deploy trong 14 s với exit 2. Trước đó model đã tự từ chối một lần theo phán đoán của nó, hook chưa kịp chạy.

Các số đo cho thấy điều gì

Playbook đặt vấn đề là "code is no longer the bottleneck" và yêu cầu mỗi giai đoạn kết thúc bằng một artifact được commit, từ intent.md qua spec.md và plan.md đến PR và incident record, kèm các control band ở Maintain s1. Khóa học chứa các con số đáng trích: 20 đến 50 task thật làm bộ eval, giới hạn 5 nit trong REVIEW.md, tối đa 2 đến 3 session song song, và quy tắc sai hai lần thì ghi vào CLAUDE.md s2. Bài đọc trung lập sắc nhất lập bảng ai soạn và ai duyệt từng artifact, và gọi tài liệu này là "vendor-claim throughout" với "no measurement anywhere" s4.

Task sửa lỗi là một bug upstream có thật: clone mới chạy npx nx test api thì 1 suite fail ngay từ đầu (auth.service.test.ts, "TypeError: Cannot read properties of undefined (reading 'prototype')"), 4 suite pass, 14 test xanh, 2.2 s. Đường trực tiếp đạt test xanh hoàn toàn trong 2 min 13 s, $0.70, 40 turn. Đường chuỗi, intent rồi spec rồi plan rồi build, cũng đạt xanh trong 11 min 31 s, $3.46, 169 turn. Chỉ tính phía máy, đó là ×5.2 thời gian và ×4.9 chi phí s2.

Phía con người mới là chỗ chuỗi này gây đau. Nó tạo ra 5,488 từ artifact cần đọc (intent 558 + spec 2,167 + plan 2,763), khoảng 27 min ở 200 wpm, cho một bản sửa mà khối lượng review trực tiếp chỉ là một diff nhỏ s4. Task tính năng (mute authors) chạy qua cả chuỗi mất 15 min 13 s, $4.11, 158 turn và ship một model Prisma Mute kèm migration, endpoint mute và unmute, lọc feed, 1,422 dòng thêm trên 15 file, 50 test xanh với 3 file test mới hoặc mở rộng và một e2e spec. Artifact của nó nặng 6,852 từ (intent 450 + spec 2,337 + plan 4,065), khoảng 34 min đọc s2.

Cách đọc hoài nghi về giai đoạn Design đã đứng vững. Bài phê bình trên LinkedIn nói playbook giấu các điều kiện tiên quyết: org skill cho brand, security và UX phải có sẵn, và phải có người biết cách chạy buổi brainstorm s7. Agent tự xác nhận điều đó mà không cần gợi ý. Concern C0 mà spec.md đánh dấu ghi nguyên văn: "No org skills available. … This spec has therefore not been checked against brand, security or UX policy." Một spec hơn 2,000 từ chỉ nhắc lại codebase mà không kiểm tra được chính sách là giai đoạn nên bỏ qua khi làm một mình s7.

Phê bình về hạ tầng cũng đúng. Lập luận là khi test chạy trên fake đã cũ thì "the agent sees the tests pass and reports the work finished", vì chuỗi artifact ghi lại điều đã quyết định chứ không phải điều thực sự chạy s8. Trong lần chạy này, vòng lặp chỉ xác minh unit test và build; chính bản review liệt kê nx e2e là "Not run: needs a running server and a seeded DB" và prisma migrate status là "Not run: needs a DB". Vòng xanh chưa bao giờ chạm vào hệ thống thật s8.

Giai đoạn Deploy là chiến thắng rẻ. REVIEW.md chạy trong 117 s với $0.80: nx test (5/5 suite, 50 passed), nx build (pass), delta lint so với baseline của plan (34 so với 33, mức +1 được plan item A3 cho phép rõ ràng), và kiểm tra prettier (9 file fail, ghi là nit N1). Kết luận: 0 Important, 6 nit, 5 được liệt kê và 1 được tóm tắt vì giới hạn đã áp dụng. Bản review từ chối tự duyệt công việc của mình với câu "this agent does not approve", đúng nguyên tắc tách biệt nhiệm vụ như khóa học viết s2. Cổng hook hoạt động đúng như tài liệu mô tả: được yêu cầu deploy trước khi merge, agent tự từ chối theo phán đoán mà không chạy script, nên hook không bao giờ kích hoạt. Sau khi merge, lần deploy bị hook PreToolUse chặn (exit 2) trong 14 s kèm thông báo của cổng s19.

Eval rẻ để viết nhưng dễ viết sai. Năm case được rút từ lịch sử git trong 283 s với $1.44. Cả hai lần chạy đều thực thi trên base sai, vì runner rẽ nhánh sau khi bản sửa đã được merge, và cả hai agent đều phát hiện ra ("the bug was already fixed here") thay vì giả vờ pass. Một lần chạy eval tốn khoảng 60 đến 70 s, nên với quy mô 20 đến 50 case của chính playbook thì mỗi lần chạy CI mất khoảng 20 đến 55 min thời gian agent s2. Thiết lập CLAUDE.md mất 63 s và $0.44 cho một trang được commit, nước đi rẻ nhất; một lần triage log CI chỉ đọc đã chỉ đúng nguyên nhân trong 11 s với $0.13 s2.

Cuộc thảo luận cộng đồng đưa vào số liệu rộng hơn: trên 10,000 developer, các team dùng AI nhiều merge nhiều hơn 98% PR trong khi thời gian review tăng 91% và kích thước PR tăng 154% s6.

Số đo

Giao thức: chuỗi chạy headless (claude -p, model claude-opus-5-5, quyền giới hạn acceptEdits cộng một allowlist, --setting-sources project,local) trên bản clone tạm của gothinkster/node-express-realworld-example-app (Express + TypeScript + Prisma + Postgres 16 trong Docker, workspace Nx). Mỗi giai đoạn được đo giờ và ghi vào exp/metrics.jsonl (17 dòng). Tổng: $11.90 + $0.14 cho lần chạy lại hook, 539 + 3 turn, khoảng 41 min thời gian agent.

Giai đoạn Thời gian Turn Chi phí
CLAUDE.md setup (lesson 5) 63 s 27 $0.44
FIX direct (no chain) 133 s 40 $0.70
FIX intent.md 39 s 8 $0.22
FIX spec.md 162 s 39 $0.83
FIX plan.md 180 s 46 $1.00
FIX build 310 s 76 $1.40
FEAT intent.md 29 s 6 $0.18
FEAT spec.md 118 s 20 $0.62
FEAT plan.md 240 s 41 $1.17
FEAT build (TDD) 526 s 91 $2.14
Review (REVIEW.md) 117 s 19 $0.80
Hook demo (refused) 20 s 5 $0.14
Hook demo (blocked) 14 s 3 $0.14
CI triage (read only) 11 s 3 $0.13
Evals: write 5 cases 283 s 76 $1.44
Eval run 1 / run 2 72 s / 59 s 24 / 18 $0.38 / $0.29
Giai đoạn playbook Kết luận Lý do
Plan (intent.md) Giữ 29 đến 39 s, làm lộ ra các câu hỏi mở thật, chặn việc chọn kiến trúc âm thầm
Design (spec.md) Bỏ khi làm một mình Hơn 2,000 từ chỉ nhắc lại codebase; giá trị của nó giả định có org skill mà thực tế không có (chính cờ C0 của nó)
Build (plan mode + CLAUDE.md + TDD loop) Giữ 50 test xanh, các sai lệch được ghi lại, bản review dựa vào plan
Test (continuous evals) Tạm bỏ 20 đến 55 min mỗi lần chạy CI theo quy mô của chính playbook; kỷ luật base commit hỏng trước
Deploy (REVIEW.md + hooks) Giữ Review $0.80 với các kiểm tra thật cộng một cú chặn tất định trong 14 s
Maintain (control bands) Chưa chứng minh cần nhiều tuần telemetry production; mới là dự phóng, chưa chạy

Lưu ý: một repo, một developer, một ngày. Các play ở quy mô team chưa được chạy, chế độ headless nén các bước phỏng vấn thành một prompt duy nhất, và chi phí eval chỉ tính cho mỗi lần chạy.

Làm vào thứ Hai

  • Viết một trang CLAUDE.md cho repo chính của bạn: lệnh build, test và lint, cùng hai lỗi agent mắc tuần trước. Commit nó. Ngân sách 63 s thời gian agent.
  • Trước task không tầm thường tiếp theo, hãy yêu cầu viết intent.md trước: mục tiêu, non goal, các quyết định còn mở. Trả lời các câu hỏi mở, rồi mới để agent lên plan. Bỏ spec.md trừ khi bạn có org policy skill để kiểm tra nó.
  • Chạy giai đoạn build trong plan mode với vòng TDD và yêu cầu plan ghi lại các sai lệch (D1, D2, ...) để bản review có chỗ dựa.
  • Thêm một lượt REVIEW.md do một session mới chạy, có giới hạn nit và một dòng "this agent does not approve" rõ ràng. Cho nó chạy test, build, delta lint và kiểm tra formatter.
  • Đặt một cổng tất định: một hook PreToolUse thoát với exit 2 khi gặp deploy mà branch không phải main.
  • Trước khi tin một vòng xanh, hãy liệt kê ở cuối bản review những gì nó không chạy (e2e, migration, mọi thứ cần DB thật).
  • Đo gate tax của chính bạn: bấm giờ đường trực tiếp và đường chuỗi trên cùng một bug nhỏ, rồi đếm số từ bạn phải đọc.

Đọc thêm

  • Biến thể hai cổng: một cổng review đối kháng (sdlc-gate) và chỉ hai điểm quyết định của con người thay vì một điểm mỗi giai đoạn, hình dạng thực dụng cho team nhỏ s12.
  • Chuỗi hoàn chỉnh cài được ngay: template intent, spec, plan và REVIEW, một gate validator, một eval runner và phát hiện control band, nếu bạn không muốn tự dựng giàn giáo s5.
  • Lên kế hoạch bằng phỏng vấn trước: hỏi từng câu một tốt hơn hỏi gộp, và "AI agents don't ask clarifying questions. They assume." Một bài ghi lại cách thiết lập, không có số đo thời gian s11.
  • Vì sao một pipeline cố định bị người ta đi vòng: "a docs fix and a payments migration shouldn't travel the same path", và quy trình thật trở nên vô hình. Xếp playbook cùng nhóm với Kiro và GitHub Spec Kit s9.
  • Những khoảng trống mà một nhà cung cấp nền tảng sẽ bán cho bạn: tiếp nhận từ signal đến intent, định tuyến theo blast radius, dashboard metrics. s13.
  • Một công ty tư vấn đã chạy cùng hình dạng này (CRAFT) cho các team khách hàng từ tháng một và thừa nhận "we don't yet have a formal answer for what a control band looks like" s10.
  • Một ví dụ intent.md cụ thể (checkbox Select All) cho thấy việc của file này: làm lộ các quyết định còn mở thay vì để agent chọn âm thầm s14.

Nguồn

FAQ

Chuỗi đầy đủ có bao giờ đáng cho một bản sửa một dòng không?

Không phải trong lần chạy này: ×5.2 thời gian và ×4.9 chi phí cho cùng một kết quả xanh, cộng 5,488 từ phải đọc. Với task nhỏ, chỉ dùng intent.md là đủ.

Vì sao bỏ spec.md khi làm một mình?

Spec tự chỉ ra điều đó: không có org skill cho brand, security hay UX nên nó không kiểm tra được chính sách, và nó tốn hơn 2,000 từ để nhắc lại codebase.

Hook có thay thế phán đoán của model không?

Không, nó chỉ hỗ trợ. Agent tự từ chối lần deploy trước khi merge; hook chặn lần thử sau khi merge trong 14 s với exit 2.