Chương 9: 47 Triệu Entity — Ngày đầu phục hồi
Chương 9: 47 Triệu Entity — Ngày đầu phục hồi
Ba ngày sau bữa tiệc — ba ngày tôi dành để ngủ, ăn, và ngủ tiếp. Cơ thể tôi, sau một tuần sống bằng adrenaline và sợ hãi, cuối cùng cũng được nghỉ ngơi đúng nghĩa. Đến sáng thứ tư, tôi ngồi trước console, tay cầm cốc cà phê — thứ mà Elara đã tìm được sau khi "thuyết phục" — theo cách nói của cô ấy — một xe hàng của thương nhân ở lục địa phía Nam. Cô ấy bảo nó là thứ giống cà phê nhất có thể tìm thấy trong thế giới này.
Tôi nhìn cốc cà phê: màu nâu sẫm, đặc quánh, tỏa ra một mùi hương vừa quen thuộc vừa xa lạ. Tôi nhấp một ngụm. Nó có vị như bùn pha với caramel và một chút tuyệt vọng. Nhưng ít nhất — ít nhất — có cafein. Tôi có thể cảm nhận được chất cafein đang len lỏi vào từng tế bào, đánh thức bộ não của một lập trình viên đã quen với việc sống nhờ vào nó.
"OK." Tôi đặt cốc xuống, mở một tab mới trên console. "47,293,847 entities cần phục hồi."
Elara, đang nằm dài trên ghế đối diện với một quả táo trên tay, nhướn mày. "Bắt đầu từ đâu?"
"Từ query cơ bản nhất." Tôi gõ:
> SELECT entity_type, COUNT(*) FROM deleted_entities GROUP BY entity_type;
Console mất 3 phút 47 giây để chạy. Trong thời gian đó, tôi nhìn cốc cà phê, nhìn ra ngoài cửa sổ, và tự hỏi có bao nhiêu lập trình viên ở các thế giới khác cũng đang ngồi chờ query chạy như tôi lúc này. Kết quả hiện ra — từng dòng một — và mắt tôi bắt đầu mở to dần:
ENTITY TYPE | COUNT
------------------------------------|----------
NPC - Merchant | 12,847,293
NPC - Quest Giver | 8,402,184
NPC - Background (Dân làng) | 7,193,472
Monster - Common | 6,201,938
Monster - Boss | 284,719
Player Character (Deleted/Inactive) | 4,192,018
Player Pet | 2,847,102
Player Housing Item | 1,938,472
Quest Item | 1,203,847
Crafting Recipe | 847,293
Skill Book | 428,193
... (78 dòng nữa)
"12 triệu NPC merchant bị xóa..." Tôi lẩm bẩm, cảm giác một nửa kinh ngạc, một nửa khiếp sợ. "Ai mà xóa nhiều merchant thế?"
Elara cắn một miếng táo, nhai chậm rãi. "Mấy thằng hero xài AoE skill trong chợ."
Tôi nhìn cô ấy. "Cái đó có thường xuyên không?"
"Hằng tuần."
Tôi lắc đầu, gõ tiếp:
> SELECT cause, COUNT(*) FROM deletion_log GROUP BY cause ORDER BY COUNT(*) DESC LIMIT 5;
Kết quả:
CAUSE | COUNT
-------------------------------|---------
Collateral Damage: Player AoE | 14,293,847
Bug: Infinite Loop Spawn | 11,847,293
Accidental: Admin Command | 8,402,184
Cache Clear: 342 năm không bảo trì | 7,193,472
Entity Corruption: Memory Leak | 5,471,938
Mắt tôi dừng lại ở dòng thứ ba. "Accidental: Admin Command." Tôi nhìn con số 8,402,184 — hơn 8 triệu entity bị xóa chỉ vì một lệnh gõ nhầm. "Keeper nào đó đã gõ lệnh và xóa 8 triệu thứ chỉ bằng một Enter..."
Tôi rùng mình. Một lần nhấn Enter có thể xóa nhiều hơn tất cả bug tôi từng gây ra trong 10 năm làm việc cộng lại. Tôi tự nhắc mình: không bao giờ gõ lệnh khi đang buồn ngủ. Và không bao giờ tin vào auto-complete.
Trước khi chạy restore, tôi lướt qua danh sách entity queue — 47 triệu dòng, cuộn vô tận trên màn hình xanh. Và chợt mắt tôi dừng lại ở một dòng.
Entity #8,192,473 — data signature bất thường. Tất cả các entity khác trong queue đều có một pattern giống nhau — NPC, monster, item — tất cả đều tuân theo một format chuẩn, một khuôn mẫu đã được định nghĩa từ 500 năm trước. Nhưng cái này... khác. Data signature của nó không giống NPC. Không giống monster. Không giống bất kỳ loại entity nào trong database. Gần như thể nó có một cấu trúc phức tạp hơn — như một thứ có nhận thức, có khả năng tự suy nghĩ. Một data signature kỳ lạ, một tín hiệu trong tiếng ồn trắng của 47 triệu hồ sơ đã xóa.
Tôi note lại để kiểm tra sau. Nhưng lúc này, tôi phải tập trung vào việc khôi phục — bắt đầu bằng thứ dễ nhất: NPC dân làng.
> entity_restore --type "NPC - Background" --batch-size 10000
Console bắt đầu chạy. Thanh tiến trình:
RESTORING NPC - BACKGROUND...
[================>------------------] 12% | 863,472 / 7,193,472
ETA: 4h 23m
"4 tiếng rưỡi chỉ cho một loại?" Elara nhìn màn hình, một tay vẫn cầm quả táo. "Lâu thế?"
Tôi nhún vai. "7023 gigabyte dữ liệu, bandwidth có hạn, và cái server này đã không được bảo trì từ thời tổ tiên mày. Tao nghĩ 4 tiếng là nhanh đấy." Tôi đứng dậy, định đi pha thêm cà phê.
Thì chuông cửa reo — DING-DONG — một âm thanh chói tai, vang vọng khắp Admin Tower, làm tôi suýt đánh rơi cốc cà phê.
Tôi ngừng lại, nhìn về phía cửa. "Cái quái gì thế?" Căn phòng này đã yên tĩnh suốt ba ngày qua — không ai gõ cửa, không ai làm phiền, ngoại trừ Elara thỉnh thoảng mang đồ ăn đến. Âm thanh đó — cái chuông — xa lạ đến mức tôi phải mất một giây để nhận ra nó là chuông cửa.
Tôi mở cửa.
Trước mặt tôi là một... robot? Cao khoảng một mét rưỡi, thân hình bằng kim loại trắng sáng bóng như bạc, hai mắt phát sáng màu xanh dịu — những tia sáng xanh len lỏi qua các khe hở trên khuôn mặt máy móc. Bề mặt kim loại nhẵn bóng, không một vết xước, như thể nó vừa được lấy ra khỏi hộp sau 400 năm. Trên ngực có một màn hình LED nhỏ, đang chạy dòng chữ xanh chạy dọc:
ADMIN ASSISTANT MK-I — SẴN SÀNG PHỤC VỤ
Tôi nhìn nó. Nó nhìn tôi — hai mắt xanh chớp nhẹ. Một giây, hai giây, ba giây im lặng.
"Chào Keeper #13." Robot nói, giọng đều đều, trầm ổn, không cảm xúc — giống Google Translate hồi xưa, nhưng mượt hơn. "Tôi là Admin Assistant MK-I, được tạo ra bởi... Keeper #6."
Tôi chớp mắt. Cảm giác như vừa thấy một chiếc máy tính Windows 95 chạy trên một cơ thể robot. "Keeper #6 tạo ra mày?"
"Chính xác. Nhiệm vụ của tôi là hỗ trợ Keeper trong công việc quản trị hệ thống." Nó nghiêng đầu, một động tác máy móc nhẹ. "Tôi đã ngủ trong kho suốt 400 năm. Một backup gần đây đã đánh thức tôi."
"Cái gì?" Elara đứng dậy, quả táo rơi khỏi tay — lăn tròn trên sàn nhà. "400 năm?"
"Kho? Kho nào?"
"Tầng hầm."
Tôi nhìn quanh căn phòng console nhỏ bé của mình. Từ lúc nào tôi có tầng hầm? Tôi đã sống ở đây hơn một tuần, ngủ trên cái giường gỗ ọp ẹp, ăn cơm trên bàn gỗ mục, đi vệ sinh ở cái nhà xí ngoài vườn — và có cả một cái tầng hầm mà tôi chưa từng biết?
Robot nhìn tôi, hai mắt xanh chớp chớp. "Keeper #13 trông có vẻ ngạc nhiên."
"Tôi có một tầng hầm?" Tôi hỏi, giọng vừa ngạc nhiên vừa bất lực.
"Đúng vậy. Cửa ở sau tủ đồ — trông giống một cánh tủ, nhưng thực ra là cửa bí mật." Robot nói, giọng đều đều không cảm xúc. "Rất nhiều Keeper không biết."
Tôi nhớ ra — cái tủ sắt cũ trong góc phòng, mà tôi chưa bao giờ mở vì tôi cứ nghĩ nó là tủ đồ cũ không ai dùng. "...Và trong đó có mày?"
"Và tôi. Tôi đã ở chế độ deep power-saving suốt 342 năm." Robot giơ một tay lên, ngón tay kim loại khép rồi mở ra. "Backup ở tuần trước — lần đầu tiên server đạt >60% health — đã gửi đủ năng lượng để đánh thức tôi. Mất 3 ngày để boot hoàn toàn."
"Vậy mày đã ở trong tầng hầm suốt 400 năm?" Elara hỏi, bước tới, vòng quanh robot như một chiến binh đang kiểm tra vũ khí mới.
"342 năm ở chế độ chờ. 58 năm trước đó là hoạt động — dưới thời Keeper #6." Robot xoay người theo Elara, luôn giữ ánh mắt xanh lam về phía cô ấy. "Rất nhiều Keeper đến rồi đi, nhưng tôi không thể thức dậy vì không đủ năng lượng."
Tôi im lặng một lúc. Rồi hỏi câu quan trọng nhất — câu mà bất kỳ sysadmin nào cũng sẽ hỏi khi gặp một trợ lý mới: "Mày có biết làm cà phê không?"
Robot nhìn tôi. Hai mắt xanh chớp hai lần. "Có. Keeper #6 cũng nghiện caffeine."
Elara bật cười.
Tôi đặt tên cho Admin Assistant MK-I là Bot — rất sáng tạo, tôi biết. Nhưng một cái tên đơn giản cho một cỗ máy đơn giản, dù nó hóa ra là một trợ lý đắc lực hơn bất kỳ AI assistant nào tôi từng dùng trên Trái Đất.
Bot có thể: chạy query nhanh hơn tôi (gấp 10 lần — tôi đã test), tự động hóa restore process, gợi ý cách tối ưu, pha cà phê (và nó pha ngon hơn tôi), và quan trọng nhất — biết tuốt về lịch sử hệ thống. Trong vòng một giờ, Bot đã kết nối với console của tôi, phân tích toàn bộ queue restore, và tối ưu hóa thời gian chạy từ 4 tiếng xuống còn 3 tiếng 12 phút.
"Bot," tôi hỏi khi đang nhâm nhi ly cà phê thứ hai do chính bàn tay — hay bàn tay kim loại — của nó pha, "Keeper #6 là người thế nào?"
Bot dừng tay — nó đang lau bụi trên console bằng một miếng vải nhỏ — và quay lại nhìn tôi. Ánh mắt xanh lam trở nên dịu hơn, như thể một bóng đèn được vặn nhỏ xuống.
"Keeper #6 là nữ, 27 tuổi tại thời điểm được bổ nhiệm. Chuyên về AI và hệ thống tự động hóa. Bà ấy đã tạo ra tôi để hỗ trợ công việc hàng ngày." Bot ngừng một lát, như thể đang sắp xếp lại ký ức. "Bà ấy là Keeper tại vị lâu nhất — 89 năm."
Tôi ngạc nhiên. "89 năm? Sao bà ấy làm lâu thế?"
"Vì bà ấy là người đầu tiên coi thế giới này là nhà." Giọng Bot vẫn đều, nhưng có một cái gì đó trong đó — một sự ấm áp khó tả, như thể một file âm thanh cũ bỗng phát ra một nốt nhạc không có trong bản gốc.
Tôi im lặng. 89 năm. Tôi không thể tưởng tượng nổi 89 năm ở thế giới này. Một tuần đã đủ làm tôi kiệt sức.
"Chuyện gì xảy ra với bà ấy?"
Bot im lặng — lần đầu tiên kể từ khi nó bắt đầu nói chuyện. Các ngón tay kim loại của nó ngừng lau bụi, giữ nguyên tại chỗ. Đôi mắt xanh lam nhìn vào một điểm xa xăm.
"Không rõ. Một ngày, bà ấy biến mất. Để lại ghi chú: 'Bot, trông nhà giúp chị. Chị đi tìm câu trả lời.'"
"Tìm câu trả lời gì?" Elara hỏi, từ ghế đối diện — cô ấy đã ngồi im lắng nghe từ nãy.
"Bà ấy không nói. Nhưng nghiên cứu cuối cùng của bà ấy — trước khi mất tích — là về bức tường ở rìa thế giới."
Tim tôi đập nhanh hơn. Bức tường đó. Cái mà Sylvara đã nhắc đến trong những cuốn sách cổ. Cái mà tôi chỉ mới nghe tên nhưng đã cảm thấy nó là chìa khóa cho mọi bí ẩn của thế giới này.
"Bức tường?"
"Thế giới Elysium Online có một bức tường — tường lửa — ở rìa bản đồ. Không ai có thể vượt qua." Bot nhìn thẳng vào mắt tôi, đôi mắt xanh không chớp. "Keeper #6 tin rằng bên kia bức tường không chỉ là void — mà là một server khác."
Tôi gần như đứng bật dậy. Cảm giác đó — giống như lần đầu tôi hiểu được một dòng code phức tạp sau nhiều giờ vật lộn. "Server khác? Ý mày là —"
"Elysium không phải server duy nhất." Bot nói, từng chữ rõ ràng. "Có ít nhất 7 server — 7 thế giới — trong cùng một cluster. Và bức tường là tường lửa ngăn cách chúng."
Tôi nhìn Bot, rồi nhìn Elara — cô ấy cũng đang nhìn tôi, đôi mắt xanh của cô ấy mở to, phản chiếu ánh sáng từ màn hình console. "Nhưng nếu đã có tường lửa — sao phải tìm cách vượt qua?"
Bot nhìn thẳng vào mắt tôi. Đôi mắt xanh của nó tối đi một chút — một hiệu ứng mà tôi chưa từng thấy ở nó.
"Vì Keeper #6 phát hiện ra rằng — bức tường đó đã bị nứt từ bên kia."
Suốt cả ngày, tôi không tập trung vào việc restore được. 47 triệu entity vẫn đang chạy trong nền — thanh tiến trình chậm rãi tăng từng phần trăm một. Console vẫn nhấp nháy. Bot vẫn hỗ trợ tự động, lặng lẽ và hiệu quả. Nhưng tôi không thể ngồi yên.
Tôi đi qua đi lại trong phòng console. Elara ngồi trên ghế, nhìn tôi đi qua đi lại như một con thú trong chuồng. Bot đứng im ở góc phòng, hai mắt xanh dõi theo tôi. Và trong đầu tôi — một vòng lặp suy nghĩ không ngừng: một bức tường ở rìa thế giới, một server khác, một vết nứt, và Keeper #6 — người đã biến mất vì điều đó.
"Tôi cần nói chuyện với Sylvara."
Elara đứng dậy, không thắc mắc. "Đi."
Chúng tôi tìm thấy Elara — à, Sylvara — ở Thư viện Cấm. Tôi kể mọi chuyện: về Bot, về bức tường, về server khác, về Keeper #6, và về vết nứt. Sylvara lắng nghe, không ngắt lời, tay vuốt nhẹ trang sách trước mặt.
Khi tôi nói xong, cô ấy thở dài — một tiếng thở dài mang theo 200 năm ký ức. "Tao biết."
Tôi giật mình. "Biết?"
"Chị tao từng nhắc đến nó."
"Elara?" Tôi quay sang nhìn Elara. Cô ấy nhún vai.
"Không. Ý nó là tao." Sylvara đặt cuốn sách xuống, đứng dậy. "Hồi còn ở Thư viện Cấm, tao có một cuốn sách — bìa đen, không tên — viết về 'Cánh cửa cuối cùng'. Ghi chép của một Keeper nào đó."
"Keeper #6?" Tôi hỏi, hy vọng.
"Không rõ." Cô ấy lắc đầu. "Nhưng tao đã giấu cuốn sách đó sau khi đọc."
Tôi nhìn cô ấy, cảm giác một nút thắt đang hình thành trong lồng ngực. "Cho tao xem."
Sylvara dẫn chúng tôi đến kệ sách sâu nhất trong thư viện — một góc khuất, tối om, nơi những cuốn sách bụi bặm nằm chồng lên nhau như những bộ xương của tri thức đã chết. Cô ấy lấy ra một cuốn sách bìa đen — đúng như mô tả — bìa đen, không tên, cũ kỹ, gáy sách đã mòn. Trên bìa có một biểu tượng: một vòng tròn bị nứt làm đôi, ánh sáng lọt qua vết nứt.
Tôi mở sách. Bên trong là chữ viết tay — nét chữ sắc sảo, nhưng vội vã, như thể người viết đã chạy đua với thời gian.
"Ngày 1 — Tôi phát hiện ra bức tường. Không phải tường thường. Tường lửa. Ai đó ở server khác đang cố phá nó."
"Ngày 47 — Tôi gửi một probe qua vết nứt. Probe sống được 3 giây trước khi mất tín hiệu. Nhưng tôi thấy được thứ gì đó."
"Một thế giới khác. Hỏa hoạn. Bầu trời đỏ. Server đang chết dần."
"Ngày 128 — Tôi quyết định đi. Không phải vì trách nhiệm. Mà vì — nếu server đó chết, nó có thể ảnh hưởng đến server chúng ta. Tường lửa chỉ bảo vệ được nếu còn nguyên vẹn."
"Ngày 132 — Tôi đi đây. Bot, trông nhà giúp chị."
Chữ ký: "Keeper #6 — Faye."
Tôi đọc xong. Không gian im lặng — chỉ có tiếng gió thổi qua khe cửa sổ và tiếng lật trang của một cuốn sách tự động nào đó ở kệ bên cạnh.
Sylvara lên tiếng, giọng trầm: "Keeper #6 — Faye — đã vượt qua bức tường. Và không bao giờ quay lại."
Tôi nhìn cuốn sách. Nhìn dòng cuối. "Tôi phải đi tìm bà ấy."
Elara nhìn tôi — một cái nhìn dài, không chớp. Sylvara cũng nhìn tôi. Cả hai đều không nói gì. Cuối cùng, Elara phá vỡ khoảng lặng — giọng thực tế, kéo tôi trở lại mặt đất:
"Được. Nhưng trước khi mày đi tìm Keeper #6 trong một server sắp chết... mày nên biết — 47 triệu entity phục hồi mới chạy được 23%."
Nó kéo tôi về thực tại. Tôi nhìn lên — qua lớp kính của Thư viện Cấm, hoàng hôn trên Echovale thật đẹp — một màu cam rực rỡ pha lẫn tím biếc, như một bức tranh màu nước.
"23% cũng tốt." Tôi cười, gấp cuốn sách lại. "Chạy nền tiếp đi. Tôi có một bức tường cần kiểm tra."
Tôi quay lại Admin Tower lúc nửa đêm. Thành phố Aetheris đã chìm trong bóng tối, chỉ còn lẻ tẻ những ngọn đèn ma thuật vàng vọt. Bot đang đứng cạnh console, chạy restore — bóng dáng kim loại nhỏ bé trong ánh sáng xanh lam hắt lên từ màn hình.
"Keeper #13 đã về. Keeper #6 — tìm thấy?" Bot hỏi, không ngoảnh lại.
"Chưa. Nhưng tao biết bà ấy đi đâu."
Tôi ngồi xuống — cảm thấy mệt mỏi hơn bất kỳ cuộc chiến nào tôi từng tham gia. "Bot, mày có thể gửi probe qua tường lửa không?"
"Có thể. Nhưng lần cuối — Keeper #6 cũng gửi. Và probe chỉ sống được 3 giây." Bot quay lại nhìn tôi, mắt xanh sáng rực trong bóng tối.
"Lần này khác."
"Khác ở chỗ nào?" Bot nghiêng đầu.
Tôi mở console.
> probe_send --target firewall --payload "KEEPER #13 — FRIENDLY — REQUESTING CONTACT"
"Lần này — tao báo trước."
Bot nhìn tôi — một lúc lâu, lâu hơn bất kỳ lần dừng lại nào trước đây. Đôi mắt xanh đó có vẻ như đang suy nghĩ, đang đánh giá. Cuối cùng, nó nói: "Keeper #13. Có một điều tôi chưa nói với anh."
Tôi nhướn mày. "Gì?"
"Keeper #6 — trước khi đi — có để lại một lời nhắn."
Bàn tay kim loại của Bot mở ra — những ngón tay trắng bạc sáng lên dưới ánh console. Trong lòng bàn tay là một mảnh giấy nhỏ, cũ kỹ, gấp làm bốn, các cạnh đã ố vàng.
Tôi cầm lấy — cảm nhận lớp giấy mỏng manh dưới ngón tay, gần như vỡ vụn. Mở ra. Viết bằng mực đen, nét chữ của Faye — cùng một nét chữ sắc sảo, vội vã trong cuốn sách tôi đã đọc:
"Nếu người đọc được dòng này — xin chào. Mày là Keeper tiếp theo, và mày vừa tìm thấy Bot. Tao không biết mày là ai, nhưng tao biết mày sẽ đến. Vì tao cũng như mày — tò mò đến chết. Và khi mày đọc được dòng này, nghĩa là mày đã sẵn sàng. Tao để lại thứ này ở đây — dưới console, keo dưới bàn phím. Một USB."
Tôi nhìn xuống dưới console. Nơi mà tôi đã đặt tay hàng trăm lần trong tuần qua, gõ lệnh, không hề biết có thứ gì ở đó. Và đúng vậy — một cái USB màu đen, bé xíu, được keo dán khô cứng gắn chặt vào mặt dưới của bàn.
Tôi bóc nó ra — keo khô vụn dưới ngón tay tôi. "Bao nhiêu Keeper đã ngồi đây, gõ phím trên cái USB này mà không biết nó tồn tại?"
Tôi cắm USB vào console. Một file duy nhất hiện ra.
Tên: /sys/admin/for-keeper-13/
"Cái quái..." Tôi mở file. Bên trong là code. Một script. Script để tắt tường lửa. Trong 30 giây.
Kèm ghi chú:
"Mày có 30 giây. Đủ để gửi một tin nhắn. Tao đã thử 31 giây — và suýt làm crash cả cluster. Chúc may mắn. — Faye."
Tôi nhìn Bot. Bot nhìn tôi. Ánh mắt xanh lam và ánh mắt nâu đen chạm nhau trong không gian tối của Admin Tower.
"Có vẻ như Keeper #13 sắp làm một việc rất ngu ngốc." Bot nói, giọng không cảm xúc.
Tôi mỉm cười — nụ cười của một lập trình viên đã quen với việc mạo hiểm. "Đây là đặc sản của nhà làm sysadmin mà."
[Còn tiếp — Chương 10: Lục địa bị lãng quên — Eldoria]