Vô tình tạo ra quả bom ngã ba đầu tiên của tôi với Claude Code
Accidentally created my first fork bomb with Claude Code
Chuyện là có một dev vô tình tạo ra **fork bomb** bằng cách tận dụng hook `SessionStart` của Claude Code. Hậu quả là hệ thống bị treo và đội chi phí API lên đáng kể. Vụ việc này là lời nhắc nhở về mối nguy hiểm tiềm ẩn của việc sinh process một cách đệ quy (recursive process spawning), ngay cả khi có AI hỗ trợ. Các dev nên cẩn trọng với những hệ lụy không mong muốn từ các hook hay các tiến trình chạy ngầm. Việc kiểm thử kỹ lưỡng các thay đổi là rất quan trọng để tránh tình trạng cạn kiệt tài nguyên và những hóa đơn bất ngờ.
Tôi bắt đầu ngày làm việc muộn, khoảng 11 giờ. Tôi ngồi vào bàn và lắc chuột - không có gì. "hả, lạ thật. Tại sao cái thứ ngu ngốc này lại không khởi động?"
Tôi bắt đầu ngày làm việc muộn, khoảng 11 giờ. Tôi ngồi ở bàn làm việc và lắc chuột - không có gì.
“huh, thật kỳ lạ. Tại sao cái thứ ngu ngốc này lại không khởi động được nhỉ?”
Tôi nhấn một vài phím ngẫu nhiên trên máy của mình bàn phím - không có gì.
Tôi nhấn cảm biến vân tay - không có gì. “nghiêm túc nhé?”
Tôi nhấn vào bàn di chuột. Không có phản hồi xúc giác. Hoàn toàn không phản hồi. “Có lẽ có điều gì đó lỏng lẻo trong việc quản lý cáp tối qua?” Tôi kiểm tra dây cáp, mọi thứ đều được cắm vào.
Tôi cố gắng khởi động lại máy tính nhưng máy rất ấm… không, rất nóng. “thật kỳ lạ.”
Bụng tôi thắt lại. Tôi đã làm đổ trà ra khắp chiếc máy tính này cách đây vài tháng. Khung gầm phía dưới đã được thay thế, nhưng có lẽ chưa có thứ gì đó được thay thế. Ca trực tiếp theo của tôi sẽ diễn ra sau ba ngày nữa. “ugh,” tôi nghĩ vậy.
“macOS 26 không đáng tin cậy, nó đã cập nhật 2 đêm trước.” Nó tắt bình thường, tôi buông tay, tôi nhấn nút lần nữa, nó khởi động bình thường.
Tôi đăng nhập, khởi động thiết bị đầu cuối, nhập claude, nhấn return. Tôi muốn xem tôi cần làm gì khi sử dụng /adhd.
Nó bắt đầu chậm lại lại. Ngay cả cd cũng đang thu thập dữ liệu. “huh.”
Tôi mở Trình giám sát hoạt động và thấy áp suất bộ nhớ có màu đỏ. “Thật kỳ lạ, tôi tự hỏi điều gì đã gây ra điều đó.” Tôi cuộn qua danh sách quy trình và thấy: hàng trăm phiên bản CC.
Tôi bắt đầu ghép 2 + 2 lại với nhau: máy tính chậm tối qua, “ồ,” khung máy nóng, “huh,” áp suất bộ nhớ màu đỏ, “ồ không không không không,” khung máy vẫn nóng, “chà, chết tiệt.”
Một số sai lầm trong cuộc sống bạn nhận ra ngay lập tức, những sai lầm khác không được chú ý.
Đây là loại thứ hai.
bạn có muốn nghe thêm về những lời nói vô căn cứ của tôi không? bỏ email của bạn đi.
Tua lại: Đêm muộn/Sáng sớm
“wtf” Tôi tự nghĩ khi thiết bị đầu cuối của tôi bắt đầu chậm lại lúc 2 giờ sáng. “ugh, tôi đi ngủ, ngày mai tôi sẽ giải quyết vấn đề này.”
Hook SessionStart hook mà tôi vừa tạo sẽ sinh ra 2 phiên bản CC nền bằng cách sử dụng claude -p ..., mỗi phiên bản đều tuân theo trình tự khởi động thông thường.
Tôi đứng dậy từ chỗ của mình bàn làm việc. Tôi rời khỏi thiết bị đầu cuối của mình để nghỉ đêm.
Thứ Sáu, ngày 27 tháng 2, ~ 11:00 sáng
Tôi cố gắng buộc thoát mọi phiên bản CC trong Trình giám sát hoạt động. Chúng sinh sản nhanh hơn mức tôi có thể giết chúng. ghostty + pkill sẽ hoạt động tốt hơn nhưng ghostty không phản hồi.
Quá trình thực hiện vẫn tiếp tục. “SHIT SHIT SHIT” lặp đi lặp lại trong đầu tôi khi tay tôi bắt chặt nút nguồn và tôi buộc phải khởi động lại máy.
“đồ ngu.” Tôi tự mắng mình. Mỗi phiên bản CC bắt đầu thêm hai phiên bản CC. Tôi đã tạo một cái móc gây ra vụ nổ…1 → 2 → 4 → 8 → 16 → 32 → 2^N…
Tôi mở ~/.claude/settings.json và gỡ bỏ cái móc đó. Tôi đang mở Trình giám sát hoạt động, nó đang lọc xuống claude. Tôi mở một phiên bản ma quái khác và nhập claude. Trước khi nhấn enter, tôi đặt ngón trỏ của bàn tay còn lại lên nút nguồn, tôi nhấn return bằng tay kia; mọi thứ đều ổn, chỉ một trường hợp duy nhất thôi. Tôi thở phào nhẹ nhõm.
Tôi phải mất gần hai thập kỷ nhưng vào thời điểm đó, tôi nhận ra rằng mình đã tạo ra quả bom phân nhánh đầu tiên của mình. Nó đã biến máy tính của tôi thành cục gạch hoàn toàn vì nó chạy qua đêm.
Tôi chợt nhận ra một điều khác: “hóa đơn”. Công ty của tôi có thanh toán API. “Tôi mệt quá.” Tôi mở Edge, tim tôi đập thình thịch khi biểu tượng bật lên, tôi truy cập trang “Cách sử dụng”, vừa tăng thêm 600 đô la. Tôi ổn. Tôi bình tĩnh lại.
Cái mã chết tiệt đằng sau CC vừa cứu mạng tôi. Lượng bộ nhớ vô lý mà mỗi phiên bản tiêu thụ là do Bun → React → chuỗi TUI đã làm tăng mức sử dụng bộ nhớ. Nó khiến máy tính của tôi bị khóa. Đoạn mã tồi tệ kết hợp với bộ nhớ đệm của Claude đã cứu tôi trước khi ai đó trong bộ phận kế toán bắt đầu đặt câu hỏi.
Đây là lần duy nhất tôi sẽ biết ơn vì phần mềm trở nên tồi tệ và cồng kềnh.
Đây là kết thúc không hoàn hảo cho một tháng không hoàn hảo với những buổi viết mã đêm khuya, tìm hiểu kỹ và xây dựng các kỹ năng, hook và framework.
Tua lại: Bắt đầu Tháng 2
Công ty của tôi đã cấp cho chúng tôi quyền truy cập vào Con trỏ vào đầu năm 2025. Tôi đã sử dụng nó rất nhiều để nghiên cứu cơ sở mã khổng lồ bất cứ khi nào tôi cần. Hơn 311 triệu mã thông báo có giá trị sử dụng.
Tháng 2 năm 2026 bắt đầu với một động lực mới cho quy trình làm việc và lập trình tác nhân.
Tôi nghiến răng nghiến lợi. Tôi không muốn viết, đánh giá và duy trì sự cẩu thả của AI. Tôi đã đẩy lùi các RFC đề xuất vòng lặp lập trình tác nhân đầy đủ.
Sau đó, tôi nghĩ rằng, nếu đây là quy trình làm việc dự kiến mới, meta mới, mô hình mới, thì tôi cũng có thể nắm vững nó. Tôi chắc chắn rằng mình sẽ không bị bỏ lại phía sau.
Tôi đã yêu cầu quyền đối với tài khoản CC. Tôi mở bảng điều khiển và nhận thấy giá API. “mã thông báo có hoạt động không?”
Tôi miễn cưỡng chạy brew install --cask claude-code và khám phá. Tôi nhìn theo mặt tích cực, Cuối cùng thì tôi cũng có thể sử dụng ghostty + nvim + tmux kết hợp với CC cho mọi thứ. Không còn VSCode sao chép với các bit AI được chốt bật.
Tôi đã thử nghiệm và nhận thấy các trường hợp sử dụng đều hoạt động tốt. Quan trọng hơn là các cạnh thô. Tôi đã dành quá nhiều token để thử nghiệm CC. Vì vậy, tôi quyết định tổ chức một khóa học cấp tốc về cách sử dụng CC cho nhóm của mình. Tôi đã viết một tài liệu, trình bày và sắp xếp cả tuần.
Được hỗ trợ bởi sự tập trung cao độ, sự lo lắng và bất mãn về ADHD của mình, tôi đã xây dựng các công cụ giúp ích cho mình và tôi đã học được rất nhiều điều.
Sau khi tháng 2 trôi qua, đây là công trình quái dị mà tôi đã xây dựng sau hóa đơn API trị giá 3800 đô la.
Những gì tôi đã xây dựng
Kỹ năng: /yadumb [điều ngu ngốc nó vừa làm]
Yêu cầu CC chuyển những gì nó đã làm vào một tệp với tất cả ngữ cảnh vì trình tạo mã thông báo ngẫu nhiên này luôn bị hỏng, ngay cả khi bạn NÓI NÓ LÀM ĐIỀU GÌ ĐÓ Ở CHỮ HOA, BÓNG VÀ BẰNG ITALY.
Khi một kỹ năng nói rõ ràng:
- Sử dụng CLI
- MCP Bị cấm
VẪN, mọi lúc, nó sẽ trải qua điều này chính xác trình tự cho kỹ năng đó:
- Sử dụng MCP, thất bại
- Nghĩ đến việc thử CLI
- Sau đó cân nhắc cách sử dụng CLI
- Nhận ra rằng CLI có thể hoạt động
- Sử dụng CLI
🤦 Tôi bảo nó ghi lại những gì nó đã làm, sau đó phát điên.
Kỹ năng: /memento
Bạn có nhớ ký ức của Leonard về Memento không? Không. Có lẽ là trí nhớ của Dory? Tốt, vì tôi không làm vậy.
Tôi cần thứ gì đó để ghi lại các cuộc trò chuyện. Điều này thực hiện chính xác điều đó với:
- Tóm tắt
- ID dự án
- ID hội thoại
- Một loạt siêu dữ liệu nhàm chán khác mà cả bạn và tôi đều không quan tâm
Kỹ năng: /yablind [-N] [path]
'Vì kích thước cửa sổ ngữ cảnh là nguyên nhân của máy xuất thống kê này sự tồn tại. Chất lượng đầu ra trở nên kém hơn đáng kể ngay cả khi sử dụng 40%, đặc biệt là với hình ảnh. Ngoài ra, tôi quá lười sao chép/dán văn bản. Điều này yêu cầu nó gọi một tác nhân phụ để:
- Thực hiện OCR trên N ảnh chụp màn hình cuối cùng.
- Nếu điều đó không hiệu quả, hãy đọc chúng trực tiếp.
- Hoặc thực hiện tương tự với
[path] - Nếu không phải là hình ảnh hoặc văn bản mà là PDF vì boomer/zoomer không có kỹ năng máy tính cơ bản, nó sẽ đọc tài liệu trực tiếp
- Chuyển thông tin liên quan đến phần chính cuộc trò chuyện.
- Xóa tệp nếu đó là ảnh chụp màn hình
Tất cả chỉ nhằm một mục tiêu duy nhất: Giảm thiểu nội dung không cần thiết trong cửa sổ ngữ cảnh chết tiệt.
Kỹ năng: /adhd
Cái mông ADHD của tôi không thèm kiểm tra Slack, GH, Notion và chỉ có chúa mới biết còn gì nữa, MỌI THỨ, THIÊN CHÚA, CHẾT, BUỔI SÁNG.
Tôi là người thích họp hành. Không, Karen, đây không thể là một email vì tôi không đọc chúng.
Để giải quyết điểm yếu của mình, tôi đã tạo ra một kỹ năng tập hợp danh sách những việc tôi cần làm và muốn làm, đồng thời nó cố gắng cập nhật các mục cũ hơn. Sau đó nó cố gắng ưu tiên những gì còn lại. Để biết thêm chi tiết, hãy xem phần này, ngoại trừ việc của tôi chỉ có ở địa phương.
Những thành công đứng đầu bảng xếp hạng:
notnow- khi tôi chắc chắn sẽ trả lời yêu cầu ngu ngốc đó vào lúc 5 giờ chiều thứ Sáuimout- xong trong ngày thói quen[others]- những thói quen nhàm chán tôi sẽ không liệt kê.
Mười bảy tập lệnh tìm nạp dữ liệu một cách xác định trước khi cung cấp cho học sinh cấp dưới (LLM) háo hức quá mức để tạo ra:
- Những việc tôi cần làm, được ưu tiên
- Đánh dấu các mục đã hoàn thành
Kỹ năng: /money
Nó quên mọi thứ, mọi lần chạy. Đừng để sự tồn tại của tệp MEMORY.md nói với bạn điều ngược lại. Nó không lưu lại những nội dung liên quan và đồng thời đã lỗi thời . Kỹ năng EP này đi kèm với:
showmethemoney- hiển thị các dự ángimmethemoney- chuyển trạng thái và các quyết định vào trạng thái của dự án nàythemoney [project id]- tải các tệp trạng thái dự án
Điều này hy vọng cho phép nó có được ít nhất một phần bối cảnh từ các cuộc hội thoại trước nhưng bạn chỉ đang tung xúc xắc thôi thích thế!
PreToolUse/PostToolUse Hook
Tôi không buồn nhớ các mẫu của riêng mình chứ đừng nói đến các mẫu của CC. Tôi đã tạo hai hook:
PreToolUse- Lưu nội dung của lệnhBash. Bao gồm Python được gói trong Shell.PostToolUse- Viết trạng tháiđã hoàn thànhvớitool_use_id
Cả hai đều được lưu vào một tệp jsonl chỉ nối thêm, được sắp xếp theo ngày. “Tại sao bạn không sử dụng nhật ký từ ~/.claude?” Vì phân tích cái thứ đó tốn kém kinh khủng và tôi không thể lưu ~/.claude trong phần kiểm soát phiên bản.
Tiếp theo
Phần còn lại…TBC ✌️
/fight-to-death- Một bộ cosplay Đấu sĩ hay còn gọi là Adversarial PR đánh giá.~/.claude/CLAUDE.md- LLM có “sự tôn sùng của nữ thần nữ thần” (K.Dot).- Những bài học cả đời tôi sẽ quên trong vòng một tháng.
bạn có muốn nghe thêm về những lời nói vô căn cứ của tôi không? bỏ email của bạn đi.
Tác giả: offbyone42