Anh Vĩnh chốt 12/09/2026: ai cũng phải tự sửa cái của mình, và không ai được sài chung tài nguyên với ai. Tonny ghi lại thành hướng dẫn chuẩn để gửi cho từng agent — agent đọc, áp dụng cho chính nó, không cần hỏi lại.
✅ ĐƯỢC SỬA (không cần chờ ai):
⛔ CẤM ĐỤNG (kể cả khi thấy lỗi):
n8n port 5678 là tài nguyên dùng cho nhiều việc — chỉ đụng khi Anh cho phép và chỉ đúng phần mình).Trả lời 5 câu này; chỉ cần 1 câu trả lời là "không phải của mình" → DỪNG LẠI.
n8n-tonny, tonny-report, tonny_vhome_...).docker ps xem tên container).database.sqlite mình đang ghi vào có nằm trong thư mục dự án mình?Nếu workflow nằm ở instance CHUNG nhưng chỉ phục vụ dự án mình → vẫn phải chuyển sang instance riêng trước khi sửa sâu, hoặc xin Anh cho phép 1 lần (kèm thời gian downtime dự kiến).
B1 — Chốt đúng đối tượng. Ghi ra trước khi sửa: tên workflow + ID, instance + port, đường dẫn DB, node nào sẽ sửa, giá trị gốc của trường sắp đổi. Không xác định được → DỪNG, hỏi Anh.
B2 — Backup. Copy DB (database.sqlite) ra file *.bak-<ngày-giờ> trước mọi thay đổi. Ghi lại giá trị cũ vào 1 file note.
B3 — Sửa có đồng bộ. n8n 2.x lưu bản đang chạy ở bảng workflow_history (khớp activeVersionId), không phải workflow_entity (đó là bản nháp). Sửa DB trực tiếp thì phải cập nhật cả hai, nếu không bot vẫn chạy bản cũ mà mình tưởng đã sửa.
B4 — Restart đúng cách. Đóng MỌI kết nối sqlite trước khi restart (không đóng → n8n chết SQLITE_IOERR: disk I/O error). Chỉ docker restart container của mình, giờ thấp điểm, báo trước nếu có người đang dùng.
B5 — Test THẬT rồi mới tin. Bắt buộc kiểm chứng bằng dữ liệu thật:
published=false, rồi xoá).B6 — Báo Anh. 1 tin ngắn: sửa cái gì · vì sao · đã test bằng gì · còn tồn gì. Lưu hồ sơ vào docs/ của dự án mình.
workflow_history), không chỉ bản nháp.Ngoài 5 trường hợp trên: tự quyết, tự làm, tự sửa, làm xong báo.
Mỗi agent / dự án có bộ riêng của mình, không trùng ai:
| Hạng mục | Tonny (mẫu đã tách 12/09/2026) |
|---|---|
| Instance n8n | container n8n-tonny, port 5681 (không dùng 5678 chung) |
| DB n8n | D:/Data N8n Tonny/database.sqlite (+ encryption key riêng) |
| Đường công khai | https://n8n-tonny.tonny.info (tunnel + token cloudflared riêng) |
| Link báo cáo | https://tonny.report.tonny.info/<ngày-giờ>/ — mỗi báo cáo 1 link, không bao giờ đè |
| Bot / kênh | token bot riêng, webhook riêng (.../webhook/vhome-manual-post) |
| Hồ sơ | projects/<dự án>/docs, tasks, scripts, state |
Quy tắc đặt tên: tài nguyên mới phải mang tên dự án/agent ngay trong tên (container, port, thư mục, tunnel, cron, script) — để không ai nhầm là của chung.
Quy tắc mới, áp dụng từ hôm nay cho mày: 1. Cái gì của mày (chatbot, workflow, n8n, tunnel, cron, báo cáo của mày) thì hỏng tự sửa, tự chẩn đoán, tự test thật rồi báo anh 1 dòng — không hỏi lại anh những việc trong tầm tay. 2. Không được sài chung với ai: DB, port, tunnel, credential, token, link báo cáo. Thiếu thì tự dựng bản riêng (hoặc xin anh cấp), cấm mượn tạm của agent/dự án khác. 3. Cấm đụng dự án người khác (QCake, Chú Mập, ĐinCox, hệ thống Hermes) — kể cả đọc. Thấy cần đụng → dừng, báo anh. 4. Trước khi sửa: backup DB, xác định đúng ID workflow/container/DB, nhớ n8n lưu bản đang chạy ở workflow_history — sửa cả hai. 5. Execution success không có nghĩa là đã gửi thành công — phải đọc lại kết quả thật. 6. Chỉ hỏi anh khi: tiền thật · tài khoản/app/credential mới · phải đụng tài nguyên dùng chung · không chắc đối tượng sửa. Đọc kỹ hướng dẫn: <link hướng dẫn>
workflow_entity mà không sửa workflow_history → tưởng đã sửa, bot vẫn chạy bản cũ.SQLITE_IOERR.Tonny — 12/09/2026. Hướng dẫn này để gửi cho các agent; mỗi agent tự áp dụng cho phần của mình.