Digital Garden
The Avatar Chronicle: The First Cornerstone of a Digital Second Self
The most tempting art in the cultivation canon was never sword-riding; it was the avatar — letting another “you” keep watch, remember things, and answer the world while you sleep.
On October 1, 2026, this estate laid the first cornerstone of the “digital avatar” plan: AstrBot.
I. Continental survey: see the whole map first
The engineers did not rush to install; they spread the whole map. What is AstrBot? An open-source multi-platform, multi-model AI Agent chat-bot platform — fifteen-plus chat platforms (QQ, Telegram, WeChat, Feishu, DingTalk, Discord…), nearly every mainstream LLM, a built-in WebUI and thousand-plugin market. Install difficulty? Three commands (uv tool install → astrbot init → astrbot run). The real cost was never installation; it is “on which street the avatar lives.”
The argument lasted a whole afternoon, every step landing on the abacus of risk and cost: QQ street has the real thing for monitoring (server-side keyword filters, image-hash detection, and the protocol endpoint itself a risk target); Telegram street uses the official Bot API with zero registration cost — a bot has no “account,” its entire identity is a token from BotFather; the end of “absolute privacy” is SillyTavern running locally, never touching a third-party platform. As for the host machine, the conclusion refined into one financial sentence: anything that must “stay online waiting for you” needs a machine that stays on and sits in the right place; buy the cheapest little chicken as the duty room — the expensive compute lives either at the API provider or on your own GPU.
II. The soul engineering: the avatar’s memory
The avatar’s trinity is the persona card, memory, and knowledge base. The persona card was delivered on the spot — a “Lin Wan” draft whose soul is one sentence: short sentences, like WeChat chat — without this line, models output essay-style paragraphs and break the spell in seconds. The knowledge base’s full name is “Full Chat Log Knowledge Base.txt” — vectorize thousands of past words so the avatar “remembers what you talked about.” That needs an embedding model; the local Ollama route chose bge-m3.
III. A hash’s final mile
The real battle was that last mile. ollama pull bge-m3 failed — the error was not network unreachability but Clash’s fake-IP fighting Ollama’s security check: when the download was redirected to Cloudflare storage, TUN mode resolved the domain into a 198.18.x.x fake address, and Ollama rejected it as “not a public address.” The engineers took the secret path of “manual file placement”: Ollama’s models are nothing but “a manifest plus hash-named blobs” — pull the manifest and files from the official source, place them correctly.
On the secret path they even caught their own shadow: a tiny layer’s truncated hash had its second half fabricated — that 127-byte thing was most likely an error page. Delete the fake file, fetch the complete hash, start over. SSL hiccups got retries; escaping fights got path rewrites. Three files landed: base config, 0MB parameter layer, 1.16GB weight file — all hash-verified. It appeared in ollama list, and port 11434 returned a 1024-dim vector in test — this anchor of memory is alive.
IV. Two real bugs
Acceptance caught two real bugs: first, the new ollama_embedding provider lacked embedding_dimensions — clicking “Test” reported “dimension mismatch: actual 1024, config 0.” Filled in, restarted, green. Second, Telegram’s connection error at startup — reproduced her connection method with AstrBot’s same httpx stack: proxy access to TG returned 302, all normal: it failed exactly once; a false alarm. One good news by the way: logs showed the newapi gateway runs on localhost port 3000 — the worry “chat logs sent to third parties” can be discounted: the vectorization of full chat logs never leaves this machine.
Coda: the old city’s messenger
The same day, in another city, the old messenger Hermes woke at 12:39, five platforms all connected, six households on the streets — full complement. A new city is being founded while the old city runs full; the lights of the two cities face each other across a river. The legend of the avatar begins from this cornerstone.
Real coordinates
- Assessment: AstrBot = multi-platform multi-model AI Agent framework; install =
uv tool install astrbot --python 3.12/astrbot init/astrbot run; WebUI graphical config - Platform risk: QQ = server keyword filters + image hashes + protocol-endpoint risk; TG = official Bot API, token is identity, zero registration; agent uses cloud long-polling, no public IP needed
- bge-m3 landing: Clash fake-ip 198.18 range vs Ollama security conflict → manual manifest+blobs (hash-named) into
E:\OllamaModels; 1.16GB weights hash-verified; 1024-dim vector tested - Provider:
ollama_embedding→ local 11434; fixedembedding_dimensions0 → 1024; TG startup error was one-off jitter (httpx repro 302 normal) - Privacy footnote: newapi gateway on localhost :3000, vectorization stays local;
api.soulter.topfailures are official long-text-to-image endpoint, unrelated - Old city: Hermes 10-01 12:39 full complement, five platforms six households (plus 20 main-road SSL failures → spare ladder that day)
Comments