デジタルガーデン

ainovel-cli 立国記:一台の確定論的エンジンとそのファイルシステム事実層

2026-10-15 · 約 12 分 · ainovel-cli · AI執筆 · Go · 架构スキャン · オープンソース

ほとんどの「AI が小説を書く」プロジェクトがまだプロンプト・スクリプトであるとき、長編創作を一つの工学機械にした者がいた。この日、voocel/ainovel-cli が完全に摸底された——結論は、ドキュメント・架构・テストの三者が高度に一致し、README 自慢型プロジェクトではない、ということ。

一、架构:確定論の鉄、意味層の風

七万三千行の Go コード(另有二万五千行のテスト、占比約三五パーセント)が立てるは一言——「事実層は確定、意味層は自主」:確定論的コードが流程と状態を管り、LLM は創作と少数の意味裁定だけを担う。分解すれば五件セット——

二、キー監査:それを渡す前のあの一问

ユーザーが API キーを渡そうとしているので、全鏈セキュリティ監査がスキャンに附随した。結論——漏洩リスクは低く、キー処理こそはこのプロジェクトが最も規範的にやっている环节の一つである。保存には、キーは ~/.ainovel/config.json にのみ落ち、書き込みは一時ファイル + Chmod(0o600) を通り、この行為を釘付けする専用テストまである;.gitignore は .ainovel/ を顕示除外。流転には、全倉のログは provider 名とモデル名だけを記録し、key やリクエストヘッダを記録する場所は一か所もない;環境変数からキーを読むことは非サポート(全倉に os.Getenv なし)、「エラーメッセージが環境変数を dump する」類の古典的漏洩面もない;唯一の非常規ネットワーク出口は GitHub API の更新検査で、ただの GET でユーザーデータを一切帯びない。露出には、TUI 内の保存済みキーは前後マスクのみ表示、/diag 導出の診断ファイルはそもそもユーザーが issue に貼るために設計されたもの——小説本文と思考内容はすべてハッシュに置き換えられ、ツール引数は三十二文字以内の純 ASCII 構造識別子だけを残す。残余リスクも如実に三条——ログファイルは 0o644(多ユーザー機上の衛生問題)、キーは Ultimately 設定された base_url に送られる(どの LLM クライアントにも固有の属性)、作者自研の litellm アダプタ庫は構造的監査のみで行単位までは審していない。実用的な提案を一つ——監査を通っても制限付きキーを使うべし——このプロジェクトでキーを入れ替えるのは設定一か所を変えて再起動するコストしかかからない。

三、成果物と機構:一本書一フォルダ

v0.7.9 の Windows x86_64 成果物がデスクトップに着地(SHA256 が公式 checksums と一致、実走させてバージョン番号を印字させ検証)、ついでにいくつかの事が確認された。それは純终端プログラムである——紹介画像のあの GUI に見える界面は、终端の文字グリッドの上に描かれた Bubble Tea の TUI で、タイトルバーの 213×57 が即ち终端サイズ;「TUI + Headless 双入口」が存在するのはまさにこのためで、SSH、NAS、Docker、CI の中で無人監守で走らせられる。一本書は一ディレクトリに绑まる——全部の産物は {起動ディレクトリ}/output/novel/ に落ちる:chapters/drafts/summaries/reviews に premise.md、outline.json、characters.json、world_rules.json、timeline、そして meta の下に progress/checkpoints/foreshadow/state_changes/snapshots/compass/decisions.jsonl/style_rules.json——一冊の本はまるごと持ち運びできる;別の機械にコピーして cd して戻り起動すれば、最近の checkpoint から続書きする;ディレクトリには flock がかかり、二つのインスタンスが同じ一冊を取り合うと挡まれる。四 agent は一モデルで走れる——Arbiter は单独設定不可(固定でデフォルトモデルを使用)、Architect/Writer/Editor は設定がなければデフォルトに回落する;役割別設定は純粋にコストと品質のトレードオフ(高いモデルは Writer の仕事だけをさせる)、Engine は単 goroutine 直列循環で、同一時刻に動いている agent は一つだけで、並行コンフリクトは存在しない。コンテキストウィンドウの三入口と一本の锁定線——TUI /config、モデル別 context_window、旧版トップレベルフィールド;設定がなければ「モデル専属値→旧トップレベル値→内蔵レジストリ→200K 兜底」の順に解析される;圧縮閾値は八十五パーセントに锁定される(window×0.85)、次の prompt とツール結果に十五パーセントの余裕を残し、1M 大ウィンドウモデルも吃満前に主動的に圧まさせる——あれは注意力衰退区だ。最も巧妙なのは工場パターン——Writer のコンテキストマネージャは每章現在のモデルで再構築され、Architect/Editor は每运行で再構築される——だから /config でウィンドウを変えても退出は不要、今書いている当の章が走り終わる(天然の安全境界)、次の章から効く。

四、二つの誠実なディメリット

スキャン報告は賛美だけではない。プロトコルの不一致——README は MIT と書くが、リポジトリの LICENSE は実際には Apache-2.0、商用したいなら作者に澄清を求める必要がある。リリースが開発に遅れる——main では九月二十六日以降新しいコミットがなく、最新リリースは九月四日の v0.7.9、main より五週間以上古い;十月十一 / 十二日の CI 失敗記録はあるが、それらの run は他の分支で走ったもので——main 自身は双矩阵(ubuntu+windows の gofmt/vet/test/race)すべてグリーン、誤報ではない。他に三つの構造的特徴が記録に残された——作者自研の双庫への依存(agentcore と litellm はどちらも voocel 自身のプロジェクトで、生態上は単点依存)、強い網文文化指向(伏笔台帳、章末フック、AI 味除去——英訳出版向けの小説には噛み合わない)、Go 1.25.5 のハードルが高い。評価は一言——もし場面が中文網文・連載小説の批量生産なら、これは現在 GitHub 上で完成度最も高いオープンソース方案の一つ、直接試用に値する(Docker があり、NAS の上で走らせられる);たまに短編を書くだけなら、その重厚な架构の優位性は発揮できない。

真実の座標

コメント

← デジタルガーデン