之前发过 InkOS 的帖子,一个开源的自动化小说写作 CLI Agent,5 个 Agent 接力完成 写→审→改 全流程。当时只跑了玄幻题材。
这次是一个比较大的更新,解决了三个核心问题:
之前 writer agent 的 prompt 里 148 行规则全是"杀伐果断""同质吞噬衰减公式"。用这套规则写都市或者恐怖,出来的东西没法看。
现在拆成三层:
通用规则(~25 条,代码内置,适用所有题材)
↓ 合并
题材规范(genres/*.md,按题材定制)
↓ 合并
单本书规则(books/{id}/story/book_rules.md,逐本定制)
↓ 注入 prompt
LLM
通用层保留了人物塑造、叙事技法、逻辑自洽、语言约束这些跟题材无关的规则,大概 25 条。
题材层内置了 5 个 profile:
| 题材 | 特点 |
|---|---|
| 玄幻 | 数值系统、战力体系、同质吞噬衰减公式、全 19 维度审计 |
| 仙侠 | 修炼/悟道节奏、法宝体系、天道规则、数值+战力审计 |
| 都市 | 无数值/战力、启用年代考据、商战/社交/信息差驱动 |
| 恐怖 | 无数值/战力、氛围递进、恐惧层级、克制叙事 |
| 通用 | 最小化兜底 |
每个 profile 用 YAML + markdown 定义,可以自己改:
inkos genre list # 查看所有题材
inkos genre show xuanhuan # 查看玄幻 profile
inkos genre create wuxia --name 武侠 # 创建自定义题材
inkos genre copy xuanhuan # 复制内置 profile 到项目定制
书籍层可以锁主角人设、覆盖疲劳词、追加审计维度等,建筑师 agent 自动生成,也可以手改。
之前审计员就是笼统地"检查一致性"。现在明确了 19 个维度,按题材条件启用:
玄幻全开 19 个,都市 17 个(加年代考据,去数值/战力),恐怖 15 个。不会出现恐怖小说被审计"战力崩坏"这种事了。
用 3 个题材各跑了几章测试,发现 AI 味的核心来源:
对策:通用层加了 5 条铁律,每个题材还有专属语言铁律带 ✗→✓ 示例。比如:
AI 标记词密度限制每 3000 字不超过 1 次,审计会 warning。
之前运行时只有 OpenAI SDK,但 inkos init 默认生成 Anthropic 配置 —— 用 OpenAI SDK 打 Anthropic 端点,直接 Premature close。(感谢 issue #1 报告)
现在加了 Anthropic SDK 原生支持。两种用法:
# OpenAI / 任何兼容接口
INKOS_LLM_PROVIDER=openai
INKOS_LLM_BASE_URL=https://api.openai.com/v1
INKOS_LLM_MODEL=gpt-4o
# Anthropic 直连
INKOS_LLM_PROVIDER=anthropic
INKOS_LLM_BASE_URL=https://api.anthropic.com
INKOS_LLM_MODEL=claude-sonnet-4-5-20250514
provider.ts 内部封装了统一的 chatCompletion() 和 chatWithTools(),所有 agent 和 agent loop(tool-use)都走同一个抽象层,streaming + tool calling 两种 SDK 都支持。
3 个题材各 3 章:
| 题材 | 书名 | 验证点 |
|---|---|---|
| 玄幻 | 烈焰吞天 | 数值追踪正常、战力验算、资源账本 |
| 都市 | 重生2003 | 无数值系统、年代考据、法律术语匹配 2003 年 |
| 恐怖 | 末班地铁 | 无战力审计、氛围递进、克制叙事 |
去 AI 味改进前后对比:词汇疲劳审计从"AI标记词密度偏高"变成"基本未超标",文风检查从"叙述者越位"变成"场景落点具体"。
npm i -g @actalk/inkos
GitHub:https://github.com/nicepkg/inkos
有问题提 issue,欢迎 PR。