LangChain 1.0 · LangGraph 1.1 · 支持完全本地部署

让 Agent 写出
有人味的中文长篇

多 Agent 分工 × 四层记忆。写作、审核、改写、建议各司其职; 知识图谱替你记住五十章前埋的伏笔,向量库替你找回某段熟悉的氛围。

演示账号请加微信 15848660673

墨不干,故事不停

写作中 / 《仅自己可见》 主 Agent 写作中
落笔、送审、放行 —— 一整轮

Excerpt

那它写出来的字,到底什么样

上面那段是逐字落笔的过程。这里是另一本书里已经写完、过审、交付的成稿。

他回头看了一眼那台P3主机——机箱贴着桌腿,风扇嗡嗡地响,像一台永远不会停的老式呼吸机。

他没有走过去。他拉开门,走了出去。

走廊里的声控灯随着他的脚步亮了。他走下楼梯,一楼办公区空无一人,但所有机器的指示灯都在亮,红色、绿色、黄色,像一片沉默的星海。

他走到门口,推开门。九月的夜风灌进来,带着荒地的泥土味。

他站在门口,没有动。他只是站着,让风把衬衫吹得贴在背上。

远处,工地的塔吊红灯还在闪。一闪,一闪。

他不需要确认什么还在。他只需要确认,明天早上,所有人还会在这里。

《带着 Claude 回到 2000 年》· 第44章 完整版

Features

为「长」而设计,不是为「快」

长篇创作从来不是单 Agent 任务。需求对齐、图谱维护、章节审核、创作建议——每一步对模型的要求都不一样。

MAIN AGENT

聊着天就把章节写了

主 Agent 直接读写工作区、维护知识图谱、做语义检索,不需要你在几个面板之间来回搬运。

REVIEW LOOP

每章自动过审

章节落笔即送独立审核 Agent,不通过就定向改写再审,直到通过或用满三轮。

STYLE

篇幅与文风可调

极短篇到长篇网文五档篇幅;鲁迅、张爱玲、海明威、古龙、江南——文风按需注入。

ROUTING

模型随时换

角色 → 模型 → 供应商三级映射,前端热切换。同一模型可挂多家供应商,失效自动降级。

RESILIENCE

断线不中断

网断了章节照写。重连时按序号从环形缓冲补发,你不会丢掉任何一段已经生成的正文。

EXPORT

作品随时带走

整个对话的工作区可一键导出为目录树。自己部署时,稿子从头到尾没离开过你的机器。

Memory

四层记忆,各司其职,零重叠

记得五十章前的伏笔,说得清两个人为何反目,还能在二十万字里始终聚焦当下这一章。这三件事需要三种完全不同的存储。

短期 · 工作记忆

滚动摘要

LangGraph checkpoint

上下文逼近阈值时压缩旧轮次、保留当前轮,压缩点绝不切断工具调用与返回的配对。

长期 · 事实

章节正文

SQLite

上一章原文到底怎么写的——需要事务和精确查询的事实数据源。

长期 · 语义

向量检索

ChromaDB

找一段氛围类似的描写——正文切块与实体卡片的模糊召回。

长期 · 结构

知识图谱

FalkorDB

那份诏书现在在谁手上——每个对话一张独立的图,人物关系实时维护。

图谱是边写边长出来的

Agent 一边写一边维护人物、组织、道具的节点与关系——投资、受雇、父女、挖角。写到第六十章时,这张图就是整部小说的骨架。

每个对话独立一张 FalkorDB graph,零隔离配置,docker compose up 一条命令跑起来。

人物 组织 道具
把光标移到节点上,看它牵着谁

林薇

人物

原晨曦投资负责人,林建国的女儿,已全职加入 Search-X 任产品 VP 兼管行政人事。 第60章撰写 K 歌评分计划书,第61章完成 B 轮 BP。

属性
第66章_陪同签约
12月15日陪同陈默在深圳赛格科技园出席 B 轮正式签约
第66章_回京
签约后问「接下来去哪」,随陈默回北京
指向 (21)
投资陈默代表晨曦投资以 40 万占 20% 股份
父女林建国林建国在幕后,林薇在前台
发现sx-monitor在 KVM 切换器上看到进程,没告诉陈默

…… 另有 18 条关系

实体卡片 — 属性与关系都带章节落点

属性带着章节落点

实体属性按章节挂载:第66章_陪同签约第67章_跨年短信。写下一章时 Agent 查一次实体就拿到完整背景,不必回翻前文。

连「她在第十四章就发现了 sx-monitor,但一直没说」这种埋着的线,图谱也替你记着。

Review Loop

没过审的章节,不会交到你手上

01

主 Agent 落笔成章

02

独立上下文的审核 Agent,结论走结构化输出强校验

03

主 Agent 的平行分身,带全部创作记忆进场,但只能定点替换

回炉

改完重审,最多三轮

改写者是从主 Agent fork 出来的平行分身——记得你们聊过的一切,但整套写作工具被换掉了, 它只能对本章做定点替换,不能推倒重写。这样改出来的章节不会跑偏成另一个故事。

Benchmark

写得好不好,拉出来盲比

裸模型与完整系统,同一梗概、同一裁判、匿名对战。裁判只回答一个问题——这两篇里哪篇更好,从不给绝对分。逐维度两两比完,用 Bradley-Terry 折算成排行榜。

完整榜单生成中,近期发布
两阶段解耦
先各自生成章节,再统一比对。生成一次,比对可以反复重跑。
裁判异家族
默认 claude-sonnet-5 当裁判,与被测模型不同家族,位置偏见更小。
降平局设计
每对位置互换各问一遍、多遍采样汇总成连续胜率,而不是硬判谁赢。

Quick Start

五分钟,在自己机器上跑起来

依赖 · docker / uv / pnpm
git clone https://github.com/GodweiLL/storyweaver && cd storyweaver
docker compose up -d          # 启动 FalkorDB
uv sync --frozen --all-extras
cp .env.example .env          # 填 api_key 与鉴权配置
bash scripts/init_db.sh
uv run storyweaver-web        # 后端 127.0.0.1:8765
cd frontend && pnpm i && pnpm dev

已接入百炼(Kimi / GLM)、DeepSeek、硅基流动、OpenAI、Anthropic 五家供应商。 完整的鉴权与 .env 配置见 GitHub README

Stack

技术栈

Python 3.11+ FastAPI LangChain 1.0 LangGraph 1.1 weft Agent runtime FalkorDB 知识图谱 ChromaDB 向量库 SQLite 正文与检查点 React 18 Vite · TypeScript Tailwind zustand