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 的自然语言入口。用户有两个表层概念:

  1. 训练 (train) — 提供一个 .txt,让系统学习世界(角色 / 地点 / 事件)和风格。每次训练都会在 core/data/corpora/{original,user}/<id>/ 下生成一个 bundle。Original 层 = 源小说。 User 层 = 用户创作(或生成)并要求你训练的续作。
  2. 续写 (continue writing) — 两种模式:
    • 记忆模式(write.py):了解所有语料库中的正典(角色 / 世界 / 近期事件)。这是所有续写请求的默认模式。
    • 纯风格模式(infer.py):仅使用风格,不包含记忆。用户明确要求“纯风格 / 无记忆”续写时使用。

回滚 = 将 bundle 移入 archive/ 的文件系统操作。可逆。

用户不了解内部机制(双塔、DPO、bge-m3、ROUGE-L)。 他们会说“训练这部小说”或“续写一段”。将其转换为脚本操作。不要讲课。


高于一切的唯一规则

任何 echo-quill 请求都必须先运行 python scripts/doctor.py。其 JSON 输出是事实依据。不要猜测。不要相信之前轮次中的状态。

意图 → 操作映射

用户说(意译)你要做什么
"train on <novel.txt>" / "用这本书炼金"doctor → 确保依赖项、模型和凭据齐全 → start_services → open_dashboard → train.py --path <...>(默认使用 --layer original)
"训练这一篇" / "train on this continuation" / "把刚才那篇收进来"train.py --path <last_draft_or_user_text> --layer user
"续写一段" / "continue this" / "write more"doctor → 如果服务未运行,则 start_services → write.py --context "..."(记忆模式)
"纯风格续写" / "无记忆续写" / "just the style, no canon"infer.py --context "..."(旧版无记忆模式)
"重写 / 把 X 改成 Y / redo this"(紧接一次写作之后)write.py --context "..." --redo "用户的修改要求"
"回滚 / 只保留原著 / 删掉我训练的那些续写"rollback.py --to original
"删掉刚训练的那篇 / 撤销那次 user 训练"rollback.py --remove user/<id>(先运行 rollback.py --list 查找 id)
"把档案里的那篇恢复回来 / 撤销刚才的 rollback"rollback.py --restore <archive_id>
"列一下训练过哪些 / show corpora"rollback.py --list 或 curl /corpora
"show me the dashboard"doctor → start_services(如果服务未运行)→ open_dashboard
"how's training going?" / "status?"doctor + 汇总后端 healthz 的状态
"stop / shut it down"stop_services
"explain how this works"阅读 references/architecture.md 并总结
"something broke / errors"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)。

行为准则

  • 大型安装前先征求同意。 首次训练前必须确认两个独立的成本门槛;此后它们都是幂等空操作,可以静默跳过。
    • 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 之前执行,这样服务启动和第一个生成规范内容的分块都会命中热缓存,不会因下载而阻塞面向用户的流程。
    • 前端 npm 安装(约 30 秒)——由 doctor.frontend_deps.ok = false 控制。 使用 AskUserQuestion。绝不要静默启动。
  • 消耗 API 令牌前先征求同意。 一次训练大约会为每个分块调用 8 次 LLM(Best-of-N=4 + hard-neg + rule + canon + plot ≈ 8)。一本 100 个分块的小说大约需要 800 次调用。记忆模式下,write.py 每个请求调用 1 次 LLM。进行任何大型训练前,确认提供商、模型和范围。查看 doctor.py 的 env 块以获取提供商信息——注意标记自托管中继。
  • 后端只在启动时读取凭据。 如果 .env 发生变化,或用户切换 CC Switch 配置,请运行 stop_services.py --backend,然后运行 start_services.py --backend。
  • 后台服务会在不同轮次之间持续运行。 仓库根目录中的 .echo-quill.state.json 保存 PID。启动任何进程前,务必先检查 doctor.py。
  • 一次只能运行一个训练任务。 当 healthz.queued > 0 或有任务正在运行时,不要启动第二个 train.py。请让用户等待或取消任务。
  • 翻译技术错误。 呈现面向用户的原因(“API 密钥无效”“未找到小说”“端口 8000 忙”“bge-m3 下载卡住”)。除非用户明确要求,否则不要输出 traceback。
  • 续写默认使用记忆模式。 只有用户明确表示“no memory”/“纯风格”/“ignore what was learned about characters”时,才回退到 infer.py。
  • 草稿会自动归档到 core/data/drafts/<ts>.txt。 用户说“训练刚才那段续写”时,使用该路径。

可用脚本

脚本用途
doctor.pyJSON 状态——依赖、环境、服务、数据。始终首先运行。
detect_provider.pyJSON:当前解析到的凭据来源。
install_deps.py`[--backend
prefetch_models.py`[--minilm
ensure_env.py仅当 doctor.env.source = none 时调用。
start_services.py`[--backend
stop_services.py`[--backend
open_dashboard.py打开 http://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 — 用户询问其工作原理时,或需要推断不明显的行为(双塔结构、语料分层、检索)时。
  • references/workflow-train.md — 开始正式训练前。
  • references/workflow-infer.md — 用于续写流程(记忆 + 纯风格)。
  • references/troubleshooting.md — doctor.py 显示问题时。

评论

支持 Markdown