kentjuno/ainovel-cli(新しいタブで開きます)
主要言語: Go
CLI sáng tác tiểu thuyết AI đa agent — Bản tiếng Việt của voocel/ainovel-cli
- star 数
- 533
- watcher 数
- 6
- fork 数
- 262
- issue 数
- 4
- 最終更新
- 2026/09/09
主要言語: Go
CLI sáng tác tiểu thuyết AI đa agent — Bản tiếng Việt của voocel/ainovel-cli
Công cụ dòng lệnh (CLI) sáng tác tiểu thuyết dài kỳ tự động bằng AI với kiến trúc Đa Agent (Multi-Agent)
/config, /model) đến thông báo lỗi và phím tắt đều được dịch sang Tiếng Việt chuẩn mực, tự nhiên."language": "vi" hoặc "language": "zh" trong cấu hình.assets/voice.md) giúp hành văn sống động, gãy gọn, có chiều sâu, bài trừ các mẫu câu sáo rỗng của AI.Coordinator → Architect → Writer → Editor → Arbiter), Prompt Caching 3 tầng, quy hoạch cuộn 2 tầng (Rolling planning), điểm phục hồi step-level, và toàn bộ 14 lệnh slash commands.git clone https://github.com/kentjuno/ainovel-cli.git cd ainovel-cli # Tạo thư mục chứa cấu hình và thư mục chứa truyện mkdir -p config workspace novels
docker compose build
(Nếu build từ source Go: go build -o ainovel-cli ./cmd/ainovel-cli)
docker compose run --rm ainovel
(Nếu chạy từ file binary: ./ainovel-cli)
Lần đầu chạy, hệ thống sẽ tự động bật Setup Wizard tương tác bằng Tiếng Việt để bạn chọn Provider, nhập API Key/Base URL, chọn Model và Ngôn ngữ sáng tác.
Trong file cấu hình config/config.json, bạn có thể chỉ định trường "language":
"language": "vi" (Mặc định): Toàn bộ dàn ý, nhân vật, bối cảnh thế giới, quy chuẩn văn phong chống AI và nội dung từng chương sẽ được sinh ra bằng Tiếng Việt tự nhiên, mượt mà."language": "zh": Nội dung truyện được sinh ra bằng Tiếng Trung nguyên bản (phù hợp nếu bạn viết truyện Trung hoặc muốn dùng công cụ dịch sau).💡 Ghi chú: Bảng điều khiển TUI, thanh trạng thái, menu và các thông báo lỗi luôn hiển thị 100% bằng Tiếng Việt.
File cấu hình đặt tại config/config.json:
@" FROM qwen2.5:14b PARAMETER num_ctx 65536 "@ | Out-File -FilePath "$env:TEMP\ainovel.Modelfile" -Encoding ascii ollama create ainovel-qwen -f "$env:TEMP\ainovel.Modelfile"
config/config.json:
{
"language": "vi",
"provider": "ollama",
"model": "ainovel-qwen",
"providers": {
"ollama": {
"base_url": "http://host.docker.internal:11434/v1",
"stream_idle_timeout": "300s"
}
},
"context_window": 65536,
"thinking": "off",
"style": "default"
}⚠️ Lưu ý mạng Docker: Khi chạy bằng Docker, bắt buộc dùng
http://host.docker.internal:11434/v1. Nếu chạy binary trực tiếp trên máy không qua Docker, dùnghttp://localhost:11434/v1.
{
"language": "vi",
"provider": "openrouter",
"model": "anthropic/claude-3.5-sonnet",
"providers": {
"openrouter": {
"api_key": "sk-or-v1-YOUR_OPENROUTER_API_KEY"
}
},
"context_window": 128000,
"thinking": "off",
"style": "default"
}{
"language": "vi",
"provider": "gemini",
"model": "gemini-2.5-pro",
"providers": {
"gemini": {
"api_key": "YOUR_GEMINI_API_KEY"
}
},
"context_window": 1000000,
"style": "default"
}{
"language": "vi",
"provider": "deepseek",
"model": "deepseek-chat",
"providers": {
"deepseek": {
"api_key": "YOUR_DEEPSEEK_API_KEY"
}
},
"context_window": 64000,
"style": "default"
}Hệ thống cho phép gán model mạnh (Claude 3.5 Sonnet / DeepSeek Reasoner) làm Biên tập / Kiến trúc sư và model rẻ/nhanh (DeepSeek Chat / Ollama) làm Người viết:
{
"language": "vi",
"provider": "ollama",
"model": "ainovel-qwen",
"providers": {
"ollama": { "base_url": "http://host.docker.internal:11434/v1" },
"openrouter": { "api_key": "sk-or-v1-YOUR_KEY" }
},
"roles": {
"architect": { "provider": "openrouter", "model": "anthropic/claude-3.5-sonnet" },
"editor": { "provider": "openrouter", "model": "anthropic/claude-3.5-sonnet" },
"writer": { "provider": "ollama", "model": "ainovel-qwen" }
},
"context_window": 65536,
"style": "default"
}Chạy lệnh:
docker compose run --rm ainovel
Tại màn hình chào mừng:
/: Mở thanh tìm kiếm và thực thi lệnh nhanh (Slash Commands).Ctrl+C 2 lần: Lưu an toàn toàn bộ trạng thái và thoát ra.Khi đang ở trong giao diện TUI, bạn có thể gõ / để mở bảng chọn lệnh:
| Lệnh | Mô tả |
|---|---|
/help |
Mở bảng trợ giúp tra cứu danh sách lệnh và phím tắt |
/model |
Chuyển đổi Model hoặc mức độ suy luận (reasoning/thinking) |
/config |
Quản lý cấu hình Provider, Model ID, API Key, Base URL, Context Window |
/diag |
Xem báo cáo chẩn đoán toàn diện về sức khỏe, tiến độ và chất lượng truyện |
/review [on|off] |
Bật/tắt chế độ nghiệm thu từng chương (dừng lại sau mỗi chương để bạn duyệt) |
/next |
Phê duyệt cho phép viết chương tiếp theo (khi ở chế độ nghiệm thu) |
/start <tệp> |
Đọc tệp dàn ý / ý tưởng bên ngoài để bắt đầu truyện mới |
/import <tệp> |
Nhập tiểu thuyết từ bên ngoài vào để AI phân tích và viết tiếp |
/reopen <hướng> |
Viết tiếp tập mới sau khi tác phẩm đã hoàn thành |
/cocreate |
Tạm dừng để vào chế độ đồng sáng tác định hướng giai đoạn tiếp theo |
/simulate |
Phân tích các file văn mẫu trong ./simulate để mô phỏng văn phong |
/importsim <file> |
Nhập hồ sơ mô phỏng văn phong từ tệp json |
/sync |
Đồng bộ các chỉnh sửa thủ công của bạn trên các file chương vào hệ thống |
/export |
Xuất tác phẩm thành file văn bản hoàn chỉnh (.txt hoặc .epub) |
Trong lúc AI đang viết, bạn có thể nhập trực tiếp ý kiến sửa đổi vào ô nhập liệu bên dưới bất cứ lúc nào mà không cần tạm dừng hay khởi động lại:
❯ Cho nhân vật phụ A hy sinh ở cuối chương này để tạo bước ngoặt cảm xúc lớn
Sau khi nhấn Enter, Arbiter sẽ tự động đánh giá phạm vi ảnh hưởng và điều phối Writer/Editor cập nhật mạch truyện.
Dành cho việc chạy tự động trên VPS, Server hoặc CI:
# Bắt đầu truyện mới docker compose run --rm ainovel --headless --prompt "Tiểu thuyết huyền nghi đô thị phá án" # Viết tiếp truyện đang dở trong thư mục hiện tại docker compose run --rm ainovel --headless
Mặc định output sẽ lưu vào thư mục workspace/. Để viết nhiều bộ truyện khác nhau mà không bị xung đột, hãy đặt biến môi trường NOVEL_DIR:
# Trên Windows PowerShell: $env:NOVEL_DIR = ".\novels\tien-hiep-ky" docker compose run --rm ainovel # Viết bộ truyện khác: $env:NOVEL_DIR = ".\novels\do-thi-di-nang" docker compose run --rm ainovel
Cấu trúc thư mục đầu ra của mỗi truyện:
novels/<tên-truyện>/output/novel/
├── chapters/ # Các chương hoàn chỉnh đã duyệt (.md)
├── drafts/ # Bản nháp và dàn ý chi tiết từng chương
├── reviews/ # Báo cáo đánh giá của Editor
├── summaries/ # Tóm tắt từng Cung và Tập
├── premise.md # Ý tưởng & tiền đề cốt truyện
├── characters.md # Hồ sơ thiết lập nhân vật
├── world_rules.md # Thiết lập quy tắc thế giới
└── meta/ # Checkpoint, tiến độ, nhật ký token
Gõ /diag trong TUI để hệ thống tự động kiểm tra toàn bộ truyện theo 4 chiều:
Đặt các file văn mẫu (truyện của tác giả bạn yêu thích) vào thư mục simulate/ rồi gõ /simulate. AI sẽ phân tích nhịp điệu, cách dùng từ, cấu trúc câu và tạo hồ sơ mô phỏng để áp dụng vào truyện của bạn.
Nếu bạn mở file chapters/05.md ra chỉnh sửa câu chữ trực tiếp, gõ /sync trong TUI. Hệ thống sẽ quét qua SHA-256, tự động cập nhật lại tóm tắt, trạng thái nhân vật và phục bút mà không làm hỏng tiến trình sáng tác.
Gõ /import ./truyen_cu.txt. Hệ thống sẽ:
Gõ /export trong TUI hoặc chỉ định tham số:
/export ./xuat_ban/truyen_full.txt
/export ./xuat_ban/truyen_ebook.epub
/export from=1 to=50 ./tap_1.epub
┌─────────────────────────────────────────────────┐
│ Host / Engine (Xác định) │
│ Đọc Store → Route → Chạy Worker → Lặp chu trình │
│ Khởi động / Can thiệp / Xử lý kẹt → Arbiter │
└────┬──────────┬──────────┬─────────────┬────────┘
│ │ │ │
┌───▼────┐ ┌───▼───┐ ┌────▼────┐ ┌────▼────┐
│Architect│ │Writer │ │ Editor │ │ Arbiter │
│(LLM Vòng)│ │(LLM Vòng)│ │(LLM Vòng)│ │(LLM Hàm)│
└───┬────┘ └───┬───┘ └────┬────┘ └─────────┘
└──────────┼──────────┘
│ Gọi Tools (IO + Checkpoint)
┌───────────────▼─────────────────────────────────┐
│ Store │
│ Tiến độ / Checkpoints / Dàn ý / Bản thảo / ... │
└─────────────────────────────────────────────────┘
| Vai trò | Trách nhiệm | Công cụ sử dụng |
|---|---|---|
| Arbiter | Trọng tài ngữ nghĩa: chọn planner, phân luồng can thiệp, giải quyết bế tắc | Không có (Gọi LLM đơn, trả về quyết định cấu trúc) |
| Architect | Kiến trúc sư: sinh tên truyện, tóm tắt, tiền đề, dàn ý, hồ sơ nhân vật, quy tắc thế giới | novel_context, save_book, save_foundation |
| Writer | Người viết: tự chủ lên kế hoạch chương, viết nháp, tự kiểm tra và bàn giao | novel_context, read_chapter, plan_chapter, draft_chapter, check_consistency, commit_chapter |
| Editor | Biên tập viên: đọc bản thảo, đánh giá chất lượng 7 chiều, lập tóm tắt cung/tập | novel_context, read_chapter, save_review, save_arc_summary, save_volume_summary |
Khác với các công cụ AI thông thường lên dàn ý cứng một lần cho cả trăm chương khiến câu chuyện càng về sau càng rỗng và loãng, ainovel-cli áp dụng cơ chế La bàn (Compass) + Tầm nhìn cuộn:
Để viết được truyện dài 500+ chương mà không bị tràn context window hay mất trí nhớ, hệ thống sử dụng đường ống nén 4 cấp:
Sau mỗi chương, Editor sẽ thẩm định nghiêm ngặt theo 7 tiêu chí (mỗi nhận xét bắt buộc phải trích dẫn câu văn làm bằng chứng):
Mỗi lần một công cụ thực thi thành công, hệ thống sẽ ghi ngay một checkpoint (meta/checkpoints.jsonl). Nếu bị mất điện, tắt máy, rớt mạng hay nhấn Ctrl+C:
progress.json và checkpoint gần nhất.Toàn bộ dữ liệu được lưu trong thư mục output:
output/novel/
├── book.md # Tên sách và tóm tắt giới thiệu
├── chapters/ # Bản thảo hoàn chỉnh từng chương (.md)
│ ├── 01.md
│ └── ...
├── summaries/ # Tóm tắt từng chương, cung, tập (JSON)
├── drafts/ # Bản nháp từng chương
├── reviews/ # Báo cáo đánh giá chi tiết của Editor
├── timeline.jsonl # Nhật ký dòng thời gian
├── premise.md # Tiền đề cốt truyện
├── outline.json # Dàn ý chi tiết các chương
├── layered_outline.json# Dàn ý phân tầng nhiều tập
├── characters.json # Hồ sơ nhân vật
├── world_rules.json # Quy tắc thế giới
└── meta/
├── book.json # Metadata tác phẩm
├── compass.json # La bàn định hướng dài hạn
├── progress.json # Trạng thái tiến độ hiện tại
├── foreshadow.json# Sổ tay quản lý phục bút
└── checkpoints.jsonl # Checkpoint khôi phục từng bước
Tạo file .md bất kỳ trong thư mục ~/.ainovel/rules/ hoặc ./.ainovel/rules/ và viết bằng ngôn ngữ tự nhiên:
Hệ thống sẽ tự động tổng hợp các yêu cầu này vào bộ quy tắc kiểm duyệt của tác phẩm.
Dự án được phân phối dưới giấy phép mã nguồn mở MIT License. Bản Việt hóa và phát triển bởi cộng đồng. Chúc bạn có những tác phẩm tuyệt vời!