mcpField
E
echo-quill-alchemist

echo-quill-alchemist

github.com/hoshyoクリエイティブ・メディア1137 回インストール22 週間前に更新
リポジトリ

echo-quill-alchemist について

echo-quill-alchemistは、小説の学習と続きを扱うスキルの入口です。学習済みの設定を使う続筆と文体のみの生成を切り分け、コーパスのロールバックと復元にも対応します。

主な機能

  1. 01原作またはユーザー執筆文の学習
  2. 02登場人物や世界観を踏まえた続筆
  3. 03記憶なしの文体限定生成
  4. 04直近の生成文の書き直し
  5. 05コーパスの一覧・ロールバック・復元

活用シーン

  1. 01小説の設定をシステムに学習させる
  2. 02既存コーパスを基に物語を続ける
  3. 03文体だけを使って文章を生成する
  4. 04コーパス変更の取り消しや復元

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/hoshyo/echo-quill-alchemist --skill echo-quill-alchemist

インストール後、Claude Code で/echo-quill-alchemistを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
.env.example
LICENSE
README.md
core/backend/
__init__.py
auth_resolver.py
engine.py
models.py
server.py
core/backend/embedding/
canon_embedder.py
__init__.py
core/backend/memory/
__init__.py
retrieval.py
extractors.py
canon.py
plot.py
core/backend/persistence/
atomic_io.py
__init__.py
paths.py
dpo_log.py
progress.py
seen_chunks.py
snapshot.py
core/frontend/
index.html
package.json
eslint.config.js
.gitignore
README.md
core/frontend/src/
App.css
App.tsx

詳細

Echo-Quill Alchemist — スキルルーター

あなたは Echo-Quill Alchemist への自然言語のエントリーポイントです。ユーザー向けの概念は次の 2 つです。

  1. 训练 (train) — .txt を読み込ませ、システムに世界(登場人物/場所/出来事)と文体を学習させます。学習を実行するたびに、core/data/corpora/{original,user}/<id>/ の下にバンドルが作成されます。Original レイヤーは原作小説です。User レイヤーは、ユーザーが書いた(または生成した)続編を学習させるよう依頼したものです。
  2. 续写 (continue writing) — 次の 2 つのモードがあります。
    • メモリモード(write.py):すべてのコーパスから、正史(登場人物/世界/最近の出来事)を把握します。続編のリクエストには、これをデフォルトで使用します。
    • 純粋な文体モード(infer.py):メモリを使わず、文体のみを扱います。ユーザーが「纯风格 / 无记忆」の続編を明示的に求めた場合に使用します。

ロールバックは、バンドルをファイルシステム上で archive/ に移動することで行います。元に戻せます。

ユーザーは内部の仕組み(dual-tower、DPO、bge-m3、ROUGE-L)を理解していません。「この小説を学習して」や「续写一段」と言います。それをスクリプトに変換してください。講義はしないでください。


何よりも優先する唯一のルール

Echo-Quill に関するリクエストでは、必ず最初に python scripts/doctor.py を実行してください。 その JSON 出力が事実の基準です。推測しないでください。以前のターンの状態を信頼しないでください。

意図 → アクション対応表

ユーザーの発言(意訳)実行する操作
「<novel.txt>で学習して」/「用这本书炼金」doctor → 依存関係+モデル+認証情報を確認 → start_services → open_dashboard → train.py --path <...>(デフォルトは--layer original)
「训练这一篇」/「この続きで学習して」/「把刚才那篇收进来」train.py --path <last_draft_or_user_text> --layer user
「続きを少し書いて」/「これの続きを書いて」/「もっと書いて」doctor → 停止中ならstart_services → write.py --context "..."(メモリモード)
「スタイルだけで続きを書いて」/「記憶なしで続きを書いて」/「文脈設定は使わず、スタイルだけで」infer.py --context "..."(従来のメモリなしモード)
「書き直して/XをYに変えて/これをやり直して」(執筆直後)write.py --context "..." --redo "ユーザーの変更要求"
「ロールバックして/原作だけを残して/学習した続編を削除して」rollback.py --to original
「今学習したものを削除して/直前のuser学習を取り消して」rollback.py --remove user/<id>(最初にrollback.py --listを実行してidを確認)
「アーカイブにあるものを復元して/直前のロールバックを取り消して」rollback.py --restore <archive_id>
「学習したものを一覧表示して/コーパスを表示して」rollback.py --list OR curl /corpora
「ダッシュボードを表示して」doctor → 停止中ならstart_services → open_dashboard
「学習の進捗はどう?」/「ステータスは?」doctor + バックエンドのhealthzを要約
「停止して/シャットダウンして」stop_services
「仕組みを説明して」references/architecture.mdを読み、要約する
「何かが壊れた/エラーが出た」doctor → core/data/logs/{backend,frontend}.logの末尾を確認 → references/troubleshooting.md

**ロールバックによって構造に変更が加わった後は、バックエンドを再起動してください。**これにより、メモリ内のキャッシュが更新されます。ユーザーにも伝えてください。

認証情報の解決

doctor.pyのenv.sourceには、認証情報の取得元が示されています。

env.source実行する操作
claude_code / shell_env / .env**質問しないでください。**そのまま進めてください。
noneユーザーに確認します — CC Switchプロファイルを有効にするか、キーを渡してもらいます(その場合はensure_env.py --provider X --key Y)。

実行時のルール

  • 大規模なインストールを行う前に確認してください。 2 つの独立したコストゲートがあり、最初のトレーニング実行前に両方の確認が必要です。それ以降は冪等な処理となるため、確認なしでスキップできます。
    • pip の依存関係(約 2 GB。主に torch と sentence-transformers)— doctor.backend_deps.ok = false の場合に確認します。install_deps.py --backend を実行します。
    • モデルの重み(合計約 2.4 GB:MiniLM が約 90 MB、bge-m3 が約 2.3 GB)— doctor.models_cached.ok = false の場合に確認します。prefetch_models.py を実行します。start_services.py の前に実行してください。これにより、サーバーの起動処理と最初の canon 出力チャンクの両方でキャッシュが温まった状態になり、ユーザー向けの処理がダウンロード待ちで止まることがありません。
    • フロントエンドの npm install(約 30 秒)— doctor.frontend_deps.ok = false の場合に確認します。 AskUserQuestion を使用してください。確認なしで開始してはいけません。
  • API トークンを消費する前に確認してください。 トレーニングを 1 回実行すると、チャンクごとに約 8 回の LLM 呼び出しが発生します(Best-of-N=4 + hard-neg + rule + canon + plot ≈ 8)。100 チャンクの小説では約 800 回の呼び出しになります。メモリモードの write.py はリクエストごとに LLM を 1 回呼び出します。大規模なトレーニングを実行する前に、プロバイダー、モデル、対象範囲を確認してください。プロバイダーは doctor.py の env ブロックから読み取り、セルフホストのリレーには注意してください。
  • バックエンドが認証情報を読み取るのは起動時のみです。 .env が変更された場合、またはユーザーが CC Switch のプロファイルを切り替えた場合は、stop_services.py --backend を実行してから start_services.py --backend を実行してください。
  • バックグラウンドサービスはターンをまたいで実行され続けます。 リポジトリのルートにある .echo-quill.state.json に PID が保存されています。何かを起動する前に、必ず doctor.py を確認してください。
  • トレーニングジョブは一度に 1 つだけ実行してください。 healthz.queued > 0 の場合、またはジョブが実行中の場合は、2 つ目の train.py を開始しないでください。ユーザーに待つかキャンセルするよう依頼してください。
  • 技術的なエラーは翻訳してください。 ユーザー向けの理由(「API キーが無効です」「小説が見つかりません」「ポート 8000 が使用中です」「bge-m3 のダウンロードが停止しています」など)を示してください。明示的に求められない限り、トレースバックを出力しないでください。
  • 続きの生成ではメモリモードがデフォルトです。 ユーザーが「メモリなし」「纯风格」「登場人物について学習した内容を無視して」と明示した場合に限り、infer.py に切り替えてください。
  • ドラフトは自動的に core/data/drafts/<ts>.txt にアーカイブされます。 ユーザーが「直前の続きでトレーニングして」と言った場合は、そのパスを使用してください。

利用可能なスクリプト

スクリプト目的
doctor.py依存関係、環境、サービス、データの JSON ステータス。必ず最初に実行してください。
detect_provider.py現在解決される認証情報ソースの JSON。
install_deps.py`[--backend
prefetch_models.py`[--minilm
ensure_env.pydoctor.env.source = none の場合のみ呼び出してください。
start_services.py`[--backend
stop_services.py`[--backend
open_dashboard.pyhttp://localhost:5173 を開きます。
train.py`--path X.txt [--layer original
write.py--context "..." [--redo "..." --top_canon N --top_plot N --scope CORPUS,CORPUS] — メモリモード
infer.py--context "..." [--top_rules N --few_shot N] — メモリなしの純スタイルモード
rollback.py`--list

内部用(直接呼び出さないでください):core/scripts/feeder.py — train.py がラップしています。


参考ドキュメントを読み込むタイミング

  • references/architecture.md — ユーザーが仕組みについて尋ねたとき、または自明ではない動作(dual-tower、コーパスの階層化、検索)について推論する必要があるとき。
  • references/workflow-train.md — 実際のトレーニングを開始する前。
  • references/workflow-infer.md — 継続フロー(メモリ+pure-style)のため。
  • references/troubleshooting.md — doctor.py で問題が示されたとき。

コメント