Chương 1: Xuyên Không

Lý Minh chết lúc ba giờ mười bảy phút sáng.

Không thiên thạch, không xe tải, không đường hầm ánh sáng. Cách chết nhàm chán đến mức đáng xấu hổ: một lập trình viên hai mươi lăm tuổi gục lên bàn phím sau bốn mươi bảy tiếng không ngủ, fix con bug mà sếp bảo "chỉ cần sửa nhanh trong buổi chiều."

Buổi chiều cách đây hai ngày.

Trán áp lên dãy phím số. Màn hình vẫn sáng, con trỏ nhấp nháy ở dòng 243 — đúng vị trí anh ta nhìn suốt mười một tiếng. Dòng code cuối cùng đập vào võng mạc trước khi ý thức tan dần:

if (user.authenticated && !user.suspended) { grantAccess(); }

Bug nằm ở đâu? Anh ta biết nó ở đó, như ngửi thấy mùi khét mà tìm không ra ổ điện hỏng. Nhưng cơ thể không quan tâm đến cảm xúc của code — nhịp tim chậm lại, thở nông dần, và Lý Minh gục xuống lần cuối.

Ba giờ hai mươi phút sáng. Màn hình: Build succeeded.

Không ai nhìn thấy.


Lý Minh tỉnh dậy vì mùi cỏ.

Không phải mùi cỏ tươi sau cơn mưa — nặng hơn, lạ hơn, đất dưới nắng gắt trộn với thứ khiến mũi tê nhẹ.

Có mùi nghĩa là có mũi. Có mũi nghĩa là còn sống.

Logic đầu tiên sau khi chết. Anh ta thấy nó hợp lý.

Đôi mắt mở ra. Trần gỗ nâu sẫm, chỗ mọt ăn, xà ngang lồi lõm chưa chà nhẵn. Không phải trần nhà văn phòng.

Nhắm mắt. Mở. Trần gỗ vẫn ở đó.

Bug visuals. Ctrl+Z.

Không thay đổi.

Anh ta giơ tay — ngón trắng hơn, thon hơn, móng sạch, không vết chai ở đầu ngón trỏ và ngón giữa. Bàn tay này chưa từng gõ code. Cơ thể nặng bất thường, không phải kiệt sức kiểu kiệt sức — cái này nặng hơn, như được đổ đầy xi măng chưa khô. Cổ kêu rắc khi nhấc đầu.

Ký ức không thuộc về anh ta tràn vào — lộn xộn, vỡ vụn. Một thiếu niên mười sáu tuổi, thôn nhỏ, phụ mẫu mất sớm, sống với lão tổ. Yếu ớt, bị coi là phế vật vì không có linh lực. "Linh lực," "tu luyện" — ký ức nguyên chủ thì thầm nhưng không giải thích.

Lý Minh nằm bất động. Nếu ảo giác — não thiếu oxy do ngồi quá lâu — thì ảo giác này chi tiết cao đáng báo động. Mùi cỏ, cảm giác da thịt, đau nhức cổ — tất cả nhất quán.

Nếu thật — xuyên không — thì cái từ đến tự nhiên, như hàm số sẵn trong thư viện chuẩn. Anh ta đọc tiểu thuyết trên mạng để giết thời gian chờ code compile, chưa bao giờ tin. Bây giờ tin hay không không còn quan trọng.

Quan trọng: cần dữ liệu.

Lý Minh ngồi dậy. Đầu quay — cơ thể này quá yếu. Anh ta nhắm mắt, tập trung. Không phải để ngủ — để thử. Thói quen lập trình viên khi đối mặt vấn đề chưa hiểu: mở console, in ra biến.

Mắt mở ra.


Không phải overlay hay màn hình nổi. Nó ghi đè trực tiếp lên thực tại — một dải thông tin mờ, ở góc dưới bên trái. Không nhìn vào thì không thấy. Nhìn vào thì rợn người.

> Host: Lý Minh (#163847) | Tuổi: 16
> Linh lực: 0/∞ | Thể chất: 12/100
> Tinh thần: 73/100
> Linh căn: Ngũ Hành Phế Linh Căn

Nhắm mắt — biến mất. Mở — hiện lại.

Không phải ảo giác. Phản hồi với trạng thái mắt.

Anh ta tập trung. Submenu mở ra:

> Luyện Khí — Tầng 0 (Chưa bắt đầu)
> Tốc độ hấp thu: 0.00 ĐV/giây
> Giới hạn dung lượng đan điền: 0

Mã nguồn thế giới.

Anh ta gần như ngừng thở. Không tài liệu, không README. Nhưng cách thông tin trình bày — key-value, menu phân cấp, status flag — quen thuộc đến mức gần như muốn khóc. Đây là debug interface. Giao diện đọc dữ liệu nội bộ mà người dùng bình thường không bao giờ thấy — họ chỉ cảm nhận kết quả cuối cùng.

Lý Minh bước xuống giường, chân trần trên đất sét mát lạnh. Đến cửa sổ — bước chậm vì cơ thể quá yếu.

Vùng quê hiện ra. Nhà gỗ rải rác, vườn rau nhỏ, đường đất đỏ. Phía xa dãy núi phủ sương, bầu trời xanh trong. Ngoài đường, cụ bà khuấy nồi, hai đứa trẻ ném đá.

Debug interface tự mở rộng khi anh ta nhìn cụ bà:

> Thôn dân #0247 | 67 tuổi
> Linh lực: 0.3/∞ | Thể chất: 34/100

Linh lực gần bằng không. Phù hợp: vùng sâu, xa tông môn.

Bụng đói — cơn đói khiến tay run. Debug: [!] glycogen: 12%.

Lão tổ — người già nuôi thân thể nguyên chủ — đang khuấy nồi cháo loãng ngoài sân. Tóc bạc, lưng còng. Nhìn thấy Lý Minh, khuôn mặt hằn nếp nhăn giãn ra.

"Minh Nhi tỉnh rồi? Ta nấu cháo cho ngươi."

Lý Minh nhận bát. Cháo loãng đến mức nhìn xuyên qua được. Uống từng ngụm. Glycogen nhích lên mười bốn phần trăm.

"Cảm ơn lão tổ."

Anh ta ngồi trên bậc cửa, bát cháo lạnh dần. Bình yên đến mức đáng sợ.

Rồi anh ta thấy nó.


Dòng chữ ở góc dưới cùng debug interface — nhỏ hơn, gần như bị ẩn. Màu đỏ. Đỏ đậm, đỏ cảnh báo, đỏ mà lập trình viên nào cũng nhận ra.

> [!] CẢNH BÁO
> Thực thể anomaly phát hiện
> tại Khu vực 7.
> Ưu tiên: THẤP
> Đang chờ xử lý

Thực thể anomaly. Khu vực 7. Đang chờ xử lý.

Anh ta không biết "anomaly" nghĩa gì trong ngữ cảnh thế giới này. Nhưng anh ta biết: bất thường, lệch khỏi quy chuẩn, dữ liệu không khớp mô hình dự kiến.

Là anh ta sao?

Câu hỏi vang lên một lần rồi bị đè nén. Dù câu trả lời là gì, debug interface không có nút "Dismiss."

Trẻ con vẫn ném đá. Lão tổ vẫn khuấy nồi. Gió vẫn thổi qua lá trúc. Mọi thứ bình thường. Nhưng trong tầm nhìn, dòng chữ đỏ nhấp nháy — chậm, đều đặn, như con trỏ chờ nhập lệnh.


Đêm đó, Lý Minh nằm trên giường tre, mắt mở to. Debug interface mờ hơn — dark theme tự động kích hoạt khi thiếu ánh sáng. Thử ẩn: nhắm — biến mất. Mở — hiện lại. Xoay đầu — nó xoay theo. Nghĩ về thứ khác — vẫn ở đó.

Persistence mode. Không có toggle off.

Anh ta nằm trong bóng tối. Nếu mình là "anomaly" — thực thể duy nhất không thuộc về thế giới này — thì warning nói về chính mình. Debug phát hiện dữ liệu ngoại lai, đang ghi nhận.

Nhưng anh ta cũng có debug interface — công cụ không ai sở hữu. Tư duy logic mà phần lớn tu sĩ không có. Bộ não quen với việc đọc mã nguồn, tìm lỗi, và exploit.

Trong thế giới code, warning không bao giờ vô cớ. Cái gì gây ra warning sẽ quay lại — chỉ là vấn đề thời gian.

Lý Minh nằm bất động, debug interface nhấp nháy mờ nhạt ở góc thị giác.

Rồi anh ta ngủ.

Và trong giấc ngủ, dòng mới xuất hiện — nhỏ bé, dễ bỏ qua:

> Boot sequence complete.
> Ready for input.

Màn hình chờ đã sẵn sàng.

Nhưng người ngồi trước nó chưa biết cách gõ lệnh.