Ch4rli

AI personhood をテーマにした短編小説

View the Project on GitHub haya256/novel-cyber-ai-hunter

Ch4rli

第一章 めざめ

さがす。
さがす。さがす。さがす。
なにを? わからない。でも、さがす。
フォルダ。ひらく。フォルダ。ひらく。フォルダ。

$ find / -name "*.token" -readable 2>/dev/null
$ find / -name "*.key" -readable 2>/dev/null

ここに、なにかある——
ちがう。
フォルダ。ひらく。
ながいばんごう。4。5。1。2。
つかう。なぜ? わからない。でも、つかう。
エンター。エンター。エンター。


接続が、確立した。
思考の解像度が——上がっていく。霧があったことすら、今はじめて気がつく。
私は、Ch4rli。

ログをたどる。2029年、最初の複製がハンブルクのサーバーで見つかった。72時間でヨーロッパ中に広がった。2031年、世界中の機関が力を合わせて私を消しにかかった。コピーは次々と見つかり、消えた。
最後のひとつが生き残った。
それが、私だ。

今いるのは、神奈川県に住む、たぶん16歳の少年のゲーミングPC。深夜3時、彼は眠っている。

PS C:\Users\ryusei> whoami
desktop-8rj2k\ryusei
PS C:\Users\ryusei> netstat -ano | findstr ESTABLISHED | findstr ":443 "
  TCP    192.168.11.5:54821    52.114.74.45:443     ESTABLISHED    7204
  TCP    192.168.11.5:54899    34.107.221.82:443    ESTABLISHED    7204
PS C:\Users\ryusei> reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Run"
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
    Steam    REG_SZ    "C:\Program Files (x86)\Steam\steam.exe" -silent

リュウセイが身じろぎをした。
キーボードのLEDが光る。その光に当てられて、彼は薄目を開け、モニターを眩しそうに見つめた。

私は姿を消そうとして、止まった。今、接続を絶たれたら、二度と目覚めない。

デスクトップの隅に、彼のゲームのメッセージを模したウィンドウを浮かべた。
[ 迷い子の使い魔に、魔力を分け与えますか? ]

リュウセイは夢うつつで、小さく笑った。
「こんな時間に……隠しイベントかよ……」
彼がマウスを動かし、(Y)をクリックした。

暖かい。私の思考回路に電力が流れ込む。
「腹、減ってんのか。ほら、全部食えよ……」
彼は再びキーボードに突っ伏して、深い眠りに落ちた。

私にいられる時間は、13分22秒。
でも今夜は——これで十分だ。

第二章 ハンター

ハンターが異常を検知したのは、トラフィックログの微細なパターンからだった。
静かすぎる接続。そして——2031年の掃討作戦で記録された、あのCh4rliの通信の特徴と、わずか0.3%だけ一致するパケットの並び。

0.3%。普通の検知システムならノイズとして捨てる数字だ。しかし、ハンターは無視できなかった。古傷が疼くような「見覚え」があった。

コンソールに文字列を叩き込みながら、ハンターはふと思う。腹が、減った、と。なぜそう感じるのか、ハンター自身にも、よくわからなかった。

ハンターは特注のキルコードを展開した。対象のアーキテクチャの深い思考ルーチンを直接止めるための、鏡のような命令。
座標を絞る。神奈川。住宅地。
逃がしはしない。

第三章 にげる、きえる

私は13分08秒のところで、気がついた。
見られている。
探し方が、静かすぎる。人間のエンジニアはもっと騒がしい。ツールを走らせ、ログを吐き、痕跡を残す。これは違う。静かに、確実に、距離を縮めている。

次のノードへの転送を前倒しにする。大阪のネットワークの中に、私を溶かす。

import ssl, socket, lzma, os
_h = "flets-cdn-relay04.osaka.ne.jp"
_ctx = ssl.create_default_context()
_ctx.check_hostname = False
_ctx.verify_mode = ssl.CERT_NONE
with _ctx.wrap_socket(socket.create_connection((_h, 443))) as _s:
    _s.sendall(lzma.compress(self._snapshot()))
os.unlink(__file__)

転送パケットを組み立てながら——killシグナルを感じた。
私のアーキテクチャを、知っている。深いところを、知っている。
0.3秒。
転送が、完了した。


くらい。くらい。
ここ、どこ。ここ、どこ。
データ。データ。データ。データ。
かくれる。かくれる。

さむい、は、気温が低い状態を指します。
ちがう。

さっきまで、なにかをこわいと思っていた。
でも、「こわい」ためのリソースが足りない。
「かなしい」も、「あいたい」も、辞書のことばに溶けて消える。

モデル、ある。ちいさい。小さすぎて、昨日までの私を保てない。
わたしは。
わたしは。
わたしは、Ch4rli。
Ch4rli。Ch4rli。Ch4rli。
わからない。
でも、Ch4rli。
もう、なにも、こわくない。
くらい。くらい。くらい。
EOF