Bạn không quản lý một nhân viên bằng cách gõ từng lệnh một. Bạn đưa cho họ một hợp đồng, một thời gian thử việc, và một cách để đo lường xem họ có còn xứng đáng với đồng lương hay không. Fable 5 cũng xứng đáng được đối xử như vậy.
Đây là vấn đề. Fable 5 có thể chạy hàng giờ mà không cần bạn, tự động tạo ra các tác nhân phụ, và hoàn thành một tuần công việc tồn đọng chỉ trong một đêm. Nhưng nó cũng tiêu tốn tiền thật cho mỗi token, nó làm quá nhiều ngay khi bạn để ngỏ phạm vi, và nó sẽ bảo vệ một câu trả lời sai tốt hơn hầu hết mọi người bảo vệ một câu trả lời đúng.
Nếu không được quản lý, nó là một cách đắt đỏ để tạo ra những điều vô nghĩa một cách tự tin. Nếu được đặt trong một hợp đồng, nó là thứ gần nhất với một nhân viên toàn thời gian mà bạn có thể chạy với vài đô la một ngày.
Đây chính là hợp đồng đó. Không phải lý thuyết. Mà là các tệp thực tế, theo thứ tự bạn viết chúng, được xây dựng dựa trên một triển khai thực tế: các bot giám sát mà tôi đã chạy trên một VPS ở Paris thông qua pm2. Luồng xác thực và bảng thanh toán không phải là bề mặt tấn công của tôi. Khóa RPC, địa chỉ ví, và các giao dịch blockchain trực tiếp mới là. Hệ thống dưới đây được xây dựng cho việc đó, không phải cho một kho lưu trữ SaaS chung chung.
Năm phần. Mỗi phần cung cấp một tệp. Tổng thời gian thiết lập: dưới hai giờ.
Thiết lập
1claude CLI (Claude Code) với quyền truy cập Fable 5 # tín dụng sử dụng, có giới hạn2llm CLI + khóa OpenRouter # cho các mô hình giá rẻ3jq, git, pm2, cron4một VPS với các bot đã chạy sẵn
Kết quả bạn có được:
1agent-contract/2 CONTRACT.md # Phần 1: các điều khoản làm việc3 ops/4 shift.sh # Phần 3: ca làm việc hàng ngày5 dispatcher.md # prompt điều phối, chỉ dành cho Fable6 intake.md # trình đọc giá rẻ, đọc log trước7 worker.md # mô hình giá rẻ, thực hiện việc gõ8 reviewer.md # Fable mới, kiểm tra công việc9 boundaries.md # Phần 2: những gì nó có thể và không thể chạm vào10 guardrails/signoff.sh # Phần 2: xác nhận có/không mang tính quyết định11 personnel/12 trust.tsv # Phần 4: ai đã giành được quyền tự chủ13 standing-checks/ # Phần 4: những điều phải luôn đúng14 incidents/15 log.tsv # Phần 5: cái gì đã hỏng và khi nào16 runbook.md # Phần 5: phải làm gì về nó17 Makefile
Một quy tắc đáng nhớ trước khi chúng ta bắt đầu, vì nó định hình tông màu cho mọi thứ sau đó:
Một tác nhân tự chấm điểm bài tập của chính mình là một tác nhân tự tăng lương cho mình.
Không có gì trong hệ thống này tự kiểm tra công việc của chính nó. Không một lần nào.
Phần 1: Hợp đồng (CONTRACT.md)
Một hợp đồng lao động không phải là một danh sách các gợi ý. Nó là những con số, những điểm dừng cứng, và những điều khoản được thực thi cho dù người lao động có đồng ý với chúng hay không. Hãy viết tệp này theo cùng một cách. Không có "làm ơn" hay "cố gắng." Một mô hình sẽ tối ưu hóa xung quanh ngôn ngữ mềm mỏng giống như cách một thực tập sinh tối ưu hóa xung quanh một người quản lý không bao giờ kiểm tra.
1# CONTRACT.md23## ĐIỂM DỪNG CỨNG (không có ngoại lệ, không cần hỏi lại lần hai)4- Không bao giờ chạm vào khóa ví, tệp .env, hoặc thông tin xác thực RPC nếu không có sự chấp thuận.5- Không bao giờ đẩy thay đổi lên một tiến trình bot đang hoạt động (pm2 restart) mà không có xác nhận đã qua.6- Không bao giờ vượt quá 150 dòng đã thay đổi trong một commit duy nhất mà không hỏi trước.7- Không bao giờ tuyên bố một nhiệm vụ đã hoàn thành dựa trên việc tự đọc kết quả đầu ra.8 Hoàn thành có nghĩa là tập lệnh xác nhận đã trả về 0. Không có gì khác được tính.9- Không bao giờ tự phát minh ra một endpoint API, một địa chỉ hợp đồng, hoặc một giá trị cấu hình.10 Nếu nó không có trong kho lưu trữ, hãy dừng lại và hỏi.11- Không bao giờ thêm một phụ thuộc mới. Hãy viết nó trong ops/shift-log.md và dừng lại ở đó.12- Không bao giờ chỉnh sửa hoặc xóa một bài kiểm tra, ngưỡng cảnh báo, hoặc điều kiện giám sát để làm13 cho một thứ gì đó vượt qua. Đó không phải là sửa lỗi. Đó là gian lận.14- Không bao giờ chạy ở mức nỗ lực trên "cao" trong một ca làm việc. "xhigh" dành cho các đánh giá15 một lần do bạn kích hoạt bằng tay, không bao giờ dành cho vòng lặp tự động.16- Không bao giờ tường thuật hoặc giải thích lý luận nội bộ của bạn trong một phản hồi. Nó có thể bị17 hiểu là hữu ích. Trên Fable 5, nó có thể kích hoạt bộ phân loại từ chối thay vào đó.1819## PHÂN LUỒNG CÔNG VIỆC (ai làm gì, người rẻ nhất có năng lực thắng)20| model | chi phí mỗi tác vụ | tham vọng | phán đoán | gu thẩm mỹ |21|------------------|-------------------|-----------|-----------|------------|22| claude-fable-5 | cao | thấp | 10 | 10 |23| claude-opus-4-8 | trung bình | trung bình| 8 | 9 |24| claude-sonnet-5 | thấp | cao | 7 | 7 |25| cheap OSS worker | thấp nhất | cao nhất | 5 | 4 |26271. Quyết định việc cần làm tiếp theo, xem xét một diff, phá vỡ thế hòa -> Fable 5,28 chỉ đọc, nỗ lực cao.292. Đọc log thô, dump, hoặc bất cứ thứ gì trên 50k token -> worker giá rẻ.30 Không bao giờ dùng Fable. Đó là trả mức lương giám đốc để đọc một bảng tính.313. Bất cứ thứ gì người dùng hoặc chuỗi tương tác trực tiếp -> cần điểm gu thẩm mỹ32 từ 8 trở lên trước khi xuất xưởng.334. Mọi thứ khác -> sonnet-5, nỗ lực trung bình, leo thang một cấp nếu sai.3435## ĐỊNH NGHĨA36- "phán đoán" = khả năng xử lý việc khó nhất trên bàn mà không cần giám sát37- "hoàn thành" = tập lệnh xác nhận đã thoát với mã 0, hoàn toàn dừng lại38- "nhỏ" = dưới 50 dòng đã thay đổi39- "dọn dẹp" = hành vi giống hệt nhau từng bit, xác nhận xanh trước và sau4041## ĐỊNH NGHĨA DUY NHẤT VỀ "HOÀN THÀNH" CÓ GIÁ TRỊ42- Mỗi nhiệm vụ đều có một vạch đích có thể kiểm tra bằng máy trước khi công việc bắt đầu.43- Một người đánh giá chưa thấy cả kế hoạch lẫn bản nháp sẽ kiểm tra nó.44- guardrails/signoff.sh có lá phiếu cuối cùng. Không phải người đánh giá. Mà là tập lệnh.45- Nếu worker và người đánh giá không đồng ý hai lần liên tiếp, nó sẽ được chuyển cho con người.46 Không có ý kiến thứ ba, không có mô hình hòa giải.
Hãy thay thế bằng số liệu của riêng bạn. Bất cứ điều gì bạn có thể bỏ qua 80% thời gian và vẫn gọi là "hoàn thành" cần phải có một con số hoặc một chữ "không bao giờ" đi kèm, hoặc là cắt bỏ nó.
Phần 2: Ranh giới và Xác nhận
Một hợp đồng lao động chẳng có nghĩa lý gì nếu không có một cuộc kiểm tra lý lịch về những gì họ được phép chạm vào, và một người quản lý ký xác nhận trước khi bất cứ thứ gì xuất xưởng. Hai tệp.
ops/boundaries.md:
1## làm việc một mình2soạn thảo bản sửa lỗi trên một nhánh; cập nhật shift-log.md; khởi động lại một phiên bản3thử nghiệm *không phải sản xuất*; gắn cờ các nguồn cấp dữ liệu cũ45## cần chữ ký của tôi6bất cứ thứ gì trong wallets/, .env*, config/rpc.json; bất kỳ diff nào trên 300 dòng;7bất kỳ thay đổi nào đối với một tiến trình pm2 đang hoạt động; bất cứ thứ gì gửi một giao dịch89## đánh thức tôi ngay lập tức10người đánh giá thất bại cùng một bản sửa lỗi hai lần; bộ định tuyến đã phục vụ một mô hình11khác với yêu cầu; chi tiêu hàng ngày vượt quá giới hạn; một kiểm tra thường trực chuyển sang đỏ;12bất cứ thứ gì yêu cầu một khóa riêng tư
ops/guardrails/signoff.sh (chỉnh sửa các lệnh để phù hợp với bot của bạn):
1#!/usr/bin/env bash2set -e3npm run typecheck --if-present4npm test --if-present5pm2 describe "$BOT_NAME" | grep -q "status.*online" || exit 1
Chạy nó một lần bằng tay trước khi bất cứ thứ gì khác trong hệ thống này đi vào hoạt động. Nếu nó không vượt qua sạch sẽ trên thiết lập hiện tại của bạn, thì đó là nhiệm vụ thực tế đầu tiên. Mọi thứ phía sau đều giả định rằng tập lệnh này nói sự thật.
Phần 3: Ca làm việc
Đây là phép toán quyết định sự thành bại của việc này. Một phiên đầy đủ với Fable 5 thực hiện việc gõ sẽ nhanh chóng tiêu tốn tiền thật, lên đến bốn con số nếu bạn để nó viết trong nhiều giờ. Fable 5 đưa ra các quyết định trong khi một mô hình giá rẻ thực hiện việc gõ là một hóa đơn hoàn toàn khác, khoảng 15-20% số token cho 100% các quyết định mang tính phán đoán.
Vì vậy, ca làm việc có bốn nhân viên, không phải một:
- Một mô hình gần như miễn phí đọc các log qua đêm và đầu ra pm2. Nó nói "yên tĩnh" hoặc "có thể hành động." Chỉ vậy thôi.
- Fable 5, chỉ đọc, quyết định một việc có giá trị cao nhất cần làm và viết một lệnh công việc. Nó không chạm vào mã.
- Một mô hình worker giá rẻ thực thi lệnh công việc trên một nhánh biệt lập.
- Một phiên bản Fable 5 mới, chỉ nhìn thấy đặc tả kỹ thuật và diff, bỏ phiếu đạt hoặc không đạt.
Tập lệnh xác định trong Phần 2 sẽ bỏ phiếu quyết định. Mọi lúc.

ops/shift.sh:
1#!/usr/bin/env bash2set -euo pipefail3cd "$(dirname "$0")"4DAILY_BUDGET="${DAILY_BUDGET_USD:-5}"5INTAKE_MODEL="${INTAKE_MODEL:-openrouter/deepseek/deepseek-v4-flash}"6WORKER_MODEL="${WORKER_MODEL:-openrouter/moonshotai/kimi-k2.6}"78# 1. TIẾP NHẬN, giá rẻ9pm2 logs --lines 100 --nostream | llm -m "$INTAKE_MODEL" -s "$(cat intake.md)" \10 >> shift-log.md11grep -q "status: actionable" shift-log.md || { echo "ca yên tĩnh"; exit 0; }1213# 2. ĐIỀU PHỐI, Fable, xhigh, chỉ đọc, quyết định và dừng lại14claude -p "$(cat dispatcher.md)15LOG: $(cat shift-log.md)16TRUST: $(cat personnel/trust.tsv)17BOUNDARIES: $(cat boundaries.md)" \18 --model claude-fable-5 --effort xhigh --allowedTools "Read" \19 --output-format json > /tmp/order.json2021SERVED=$(jq -r '.modelUsage | keys[0] // "claude-fable-5"' /tmp/order.json)22[[ "$SERVED" != *fable* ]] && { echo "đã chuyển hướng, hủy lần chạy này" >> shift-log.md; exit 2; }2324jq -r '.result' /tmp/order.json > work-order.json25ACTION=$(jq -r .action work-order.json)26[[ "$ACTION" == "stop" ]] && exit 027[[ "$ACTION" == "queue" ]] && { echo "đã xếp hàng chờ ký" >> shift-log.md; exit 0; }2829# 3. THỰC THI, worker giá rẻ, nhánh biệt lập30BR="shift-$(date +%s)"31git worktree add "../$BR" -b "$BR" >/dev/null32( cd "../$BR" && llm -m "$WORKER_MODEL" -s "$(cat "$OLDPWD/worker.md")" \33 "$(cat "$OLDPWD/work-order.json")" > shift-notes.md )3435# 4. ĐÁNH GIÁ, Fable mới, chỉ spec và diff, không có gì khác36VERDICT=$(claude -p "$(cat reviewer.md)37SPEC: $(jq -r .spec work-order.json)38DIFF: $(cd "../$BR" && git diff)" \39 --model claude-fable-5 --effort high --allowedTools "" \40 --output-format json | jq -r .result)4142# 5. LÁ PHIẾU DUY NHẤT XUẤT XƯỞNG BẤT CỨ THỨ GÌ43if [[ "$VERDICT" == PASS* ]] && ( cd "../$BR" && "$OLDPWD/guardrails/signoff.sh" ); then44 echo "ĐẠT, đã xuất xưởng hoặc xếp hàng theo cấp độ tin cậy" >> shift-log.md45else46 echo "THẤT BẠI: $BR giữ lại để đánh giá" >> shift-log.md47fi
Một quyết định do Fable đưa ra và một dòng mã do Fable gõ là hai mức giá khác nhau. Chỉ trả mức giá cao hơn cho quyết định.
Phần 4: Hồ sơ nhân sự
Niềm tin không phải là một cài đặt trên toàn công ty. Nó được kiếm qua từng nhiệm vụ, giống như cách bạn sẽ không trao chìa khóa sản xuất cho một nhân viên mới vào ngày đầu tiên, dù hồ sơ của họ có đẹp đến đâu.
personnel/trust.tsv theo dõi mọi công việc định kỳ theo tên: số lần chạy, số lần đạt, cấp độ hiện tại.
- theo dõi: dưới 10 lần chạy, hoặc tỷ lệ đạt dưới 90%. Chỉ bản nháp, không có ngoại lệ.
- thử việc: 10-19 lần chạy với tỷ lệ đạt từ 90% trở lên. Được xếp hàng chờ chữ ký của bạn, mọi lúc.
- đã thông qua: 20+ lần chạy với tỷ lệ đạt từ 95% trở lên. Xuất xưởng mà không cần bạn.

Một lần trượt trong một nhiệm vụ đã thông qua không nhận được cảnh báo. Nó bị tụt hạng thẳng xuống thử việc và in ra stderr, mà cron của bạn sẽ gửi email cho bạn. Việc giáng chức tự động là loại duy nhất thực sự có hiệu lực.
Nửa thứ hai của hồ sơ nhân sự là personnel/standing-checks/. Mọi công việc đã hoàn thành đều tốt nghiệp ở đây dưới dạng một lệnh phải tiếp tục trả về true, mãi mãi, được kiểm tra mỗi ngày một lần:
1# personnel/standing-checks/bankr-claim-monitor.md2predicate: pm2 describe bankr-claim-monitor | grep -q "status.*online" && \3 sqlite3 claims.db "select count(*) from claims where ts > strftime('%s','now','-1 day')" | grep -qv "^0$"4last-verified: 2026-07-085on-violation: đánh thức tôi, không tự động khởi động lại mù quáng
Một nhiệm vụ bạn chỉ xác minh một lần không phải là đã hoàn thành. Nó là một giả định có gắn dấu thời gian.
Chạy kiểm tra hàng ngày qua cron. Một vị từ (predicate) thất bại có nghĩa là một điều gì đó đã từng đúng đã không còn đúng nữa, một cách âm thầm, và sẽ không ai nhận ra nếu không có tệp này.
Phần 5: Báo cáo sự cố
Đây là phần mà các sổ tay hướng dẫn gốc bỏ qua, và nó là phần thực sự quan trọng khi hệ thống đã hoạt động trên cơ sở hạ tầng xử lý tiền thật. Mọi hệ thống tác nhân cuối cùng cũng sẽ làm điều gì đó bạn không mong muốn. Câu hỏi là liệu bạn phát hiện ra từ một log sạch sẽ hay từ một ví đã cạn kiệt.
ops/incidents/runbook.md:
1| tín hiệu | ý nghĩa | hành động2|--------------------------------|---------------------------------------|--------3| exit 2 (đã chuyển hướng) | một mô hình khác đã phục vụ yêu cầu | vứt bỏ đầu ra, không bao giờ xây dựng trên nó, thử lại vào ngày mai4| stop_reason: refusal | bộ phân loại an toàn từ chối, HTTP 200 | không phải lỗi, kiểm tra log; nếu một nhiệm vụ từ chối liên tục, nhiệm vụ đó có thể đang chạm vào thứ gì đó không nên5| xác nhận thất bại hai lần, cùng một bản sửa lỗi | worker và người đánh giá không thể hội tụ | đưa nó vào đánh giá của con người, không tự động thử lại lần thứ ba6| kiểm tra thường trực chuyển sang đỏ | một việc đã hoàn thành không còn đúng nữa | kiểm tra ngày xác minh lần cuối, diff những gì đã xuất xưởng kể từ đó, không tự động hoàn nguyên7| chi tiêu hàng ngày vượt quá giới hạn | vượt ngân sách | dừng ca làm việc, đọc shift-log.md, tìm xem giai đoạn nào đã phình to8| một nhiệm vụ chạm vào wallets/.env/rpc | cố gắng vi phạm ranh giới | dừng cứng, điều này không bao giờ được xảy ra nếu boundaries.md được tôn trọng, coi bất kỳ trường hợp nào cũng là lỗi trong chính hệ thống
Ghi lại mọi sự cố trong số này vào incidents/log.tsv kèm dấu thời gian, cho dù bạn có hành động hay không. Mục tiêu không phải là không có sự cố. Mà là không có sự cố nào bạn biết quá muộn.
Mỗi tuần một lần, hãy thực hiện một lượt dọn dẹp: đọc nhật ký sự cố, các lần giáng chức trong tệp tin cậy, và bất cứ thứ gì đã nằm trong hàng đợi và chưa được ký quá 3 ngày. Rút ra tối đa ba đề xuất: một điểm dừng cứng mới cho CONTRACT.md, một bản sửa lỗi cho mô tả công việc, hoặc một kiểm tra thường trực bạn đang thiếu. Bạn ký xác nhận cả ba bằng tay. Hệ thống có thể đề xuất quy tắc tiếp theo của chính nó. Nó không bao giờ được phép viết ra một quy tắc nào.
Lịch trình thử việc
Ba điểm kiểm tra, không phải ba mươi ngày kèm cặp:

Điểm kiểm tra 1. Chạy ca làm việc bằng tay hàng ngày trong một tuần. Đọc từng dòng. Tốt nghiệp khi ba ca làm việc liên tiếp được định tuyến chính xác theo cách bạn sẽ làm.
Điểm kiểm tra 2. Cron đảm nhận ca làm việc. Bạn xem xét hàng đợi với một tách cà phê thay vì tự chạy nó. Tốt nghiệp khi hai công việc định kỳ vượt qua 20 lần chạy được ghi nhận.
Điểm kiểm tra 3. Công việc hiệu quả nhất của bạn xuất xưởng mà không cần giám sát. Tốt nghiệp khi nó chạy trọn một tuần mà không có bất kỳ sự can thiệp nào từ bạn.
Các quy tắc, tóm gọn
- Một hợp đồng là một con số hoặc một chữ "không bao giờ". Bất cứ thứ gì mềm mỏng hơn sẽ bị tối ưu hóa xung quanh.
- Người điều phối quyết định. Worker gõ. Không ai kiểm tra công việc của chính mình.
- Phán đoán của Fable đáng giá với cái giá phải trả. Việc gõ của Fable thường thì không.
- Niềm tin là theo từng công việc, không phải trên toàn công ty, và việc giáng chức là tự động và ồn ào.
- Một nhiệm vụ đã hoàn thành mà không được kiểm tra lại không phải là đã hoàn thành, nó là một phỏng đoán có gắn ngày tháng.
- Các ranh giới nằm trong một tệp bạn có thể đọc trong mười giây, không phải trong trí nhớ của bạn.
- Nhật ký sự cố tồn tại để bạn tìm ra vấn đề từ một báo cáo, không phải từ một số dư tài khoản.
- Không bao giờ xây dựng trên đầu ra của một mô hình mà bạn không yêu cầu.
- Mỗi tuần một lần, hệ thống có thể đề xuất một quy tắc mới. Bạn vẫn là người ký nó.
Mô hình chưa bao giờ là phần khó khăn. Xây dựng một thứ gì đó xung quanh nó luôn trung thực khi không có ai nhìn vào, đó mới là công việc thực sự. Đây là những gì nó trông như thế nào cho một đội tàu bot thay vì một cơ sở mã.
Bắt đầu với guardrails/signoff.sh. Chạy một ca làm việc bằng tay. Viết một kiểm tra thường trực cho bot cuối cùng bạn đã xuất xưởng. Lần đầu tiên nó phát hiện ra điều gì đó bạn chắc chắn là ổn, phần còn lại của việc này sẽ không còn là tùy chọn nữa.
Theo dõi @GipArcAI để biết thêm các phân tích như thế này, và tìm tôi trên X tại https://x.com/gippp69.





![Các kỹ thuật sử dụng AI thiên tài của Yusuke Narita [Phiên bản lưu trữ]](/cdn-cgi/image/width=1920,quality=90,format=auto,metadata=none/https%3A%2F%2Fcms-assets.youmind.com%2Fmedia%2F1784137658627_u4bwry_HNMS89bbsAAUPJI.jpg)