khlilo

Cognitive Writer v3.3 (AI Writing Agent)

2026-08-15
RustTokioLLM APIFSMCF_HTML

一个想法进去,两边文章出来。用 Rust 写的端到端对话式写作 Agent

核心主张:一个想法进去,两边文章出来

从一个模糊的选题意图,到微信公众号排版就绪 + 个人网站 MDX 部署上线,全程不切换任何工具。

你需要的不是"AI 帮你写套话",而是"AI 用你的风格把文章发布到两边"。生成只是手段,发布才是交付。

> 写一篇关于认知偏差在投资中的应用,轻辩风格

Agent:  匹配风格 → 骨架生成 → 渲染全文 → 展示
[全文确认] > 第三段加个具体案例
Agent:  保持上下文一致,执行局部重绘...
[全文确认] > OK
Agent:  微信富文本已注入剪贴板(打开微信后台 Ctrl+V 即排版完成)
        个人网站 MDX 草稿已写入,确认后说「发布」
[发布确认] > 发布
Agent:  git push origin main → 边缘网络自动部署上线
        done. https://khlilo.xyz/signal/cognitive-bias-investing

为什么普通 GPT 提示词写不出好文章?

几乎所有通用 AI 写作工具都受制于两个核心瓶颈:

  1. 单次长文本的逻辑坍缩:一次性让模型写 2000 字,后半段往往充满重复车轱辘话与套话。
  2. 风格硬塞导致上下文污染:把 3000 字范文直接塞进 Prompt,模型抓不住精髓,甚至产生规则冲突。

Cognitive Writer 采用 骨架-渲染(CoT)双通道架构10 维度风格执行 Spec

                         Pass 1 (骨架)              Pass 2 (渲染)
素材 / 选题 ─────────┬─→ outline_system_prompt ─→ 骨架(300-500字) ─┐
                     │   (注入风格 Spec 约束结构)                   ├─→ style_system_prompt ─→ 全文 Markdown ─┬─→ outputs/{slug}_v{N}.md
styles/{name}.md ────┘                                            │   + render_prompt                       ├─→ outputs/{slug}_v{N}.html
(≤600字精简指令) ───────────────────────────────────────────────────┘                                             ├─→ 系统剪贴板 (微信 CF_HTML)
                                                                                                               └─→ 个人网站 MDX (Git Push)
  • Pass 1 骨架生成:LLM 提取核心论点、素材走向与段落衔接,让结构贴合风格。
  • Pass 2 正文渲染:外包通用事实边界与禁止词约束,按骨架展开高信息密度正文。

核心设计特性

1. 自然语言对话状态机(FSM)

不再需要记忆 CLI 参数与子命令。基于 repl.rs 的 4 状态有限状态机(IdleWaitingForOutlineWaitingForFulltextWaitingForPublish),配合 LLM 意图解析器,能够精准识别用户的口语化意图("整一篇"、"拉倒"、"第三段改短"、"换轻辩风格")。

2. 10 维度风格逆向提取(learn

输入任意文章 URL,通过 Jina Reader 抓取正文,LLM 自动逆向解析(整体定位、标题策略、开头模式、段落节奏、句式特征、论证手法、情绪基调、结尾策略、用词偏好、互动方式),提炼为 ≤600 字的可执行规则 Spec。

3. 双检查点与渐进式反悔

  • 检查点 1(全文确认):支持局部重绘(Refine,只修改单段)、换风格整文重写(Update)或放弃。
  • 检查点 2(发布确认):微信富文本已注入系统剪贴板,支持「发布」(推送到网站)、「只发网站」或「暂存」。

4. Tokio 异步事件循环与会话持久化

基于 tokio::select! 实现非阻塞输入与信号监听。按 Ctrl+C 自动序列化会话至 ~/.cognitive-writer/current.json,随时中断、随时恢复,杜绝工作丢失。


工业级工程实践

  • 145+ 单元测试:保证意图解析、MDX 生成、拼音归一化匹配零回归。
  • 跨平台剪贴板注入:WSL2 下使用 PowerShell MemoryStream 绕过 .NET 编码问题,原生支持微信富文本。
  • 轻量解耦:代码从早期的单文件上帝函数拆分为 14 个职责单一的模块。

Core Vision: One Idea In, Dual-Platform Output

From a rough topic idea to WeChat Official Account formatting ready + personal website MDX deployed, without switching tools.

What you need isn't "AI generating generic templates," but "AI publishing in your unique voice to both platforms." Generation is the mechanism; publishing is the true delivery.

> Write an article about cognitive biases in investing, Qingbian style

Agent:  Match style → Skeleton CoT → Render fulltext → Display
[Fulltext Confirm] > Add a concrete case in paragraph 3
Agent:  Context-aware local refinement... V2 generated
[Fulltext Confirm] > OK
Agent:  Rich-text injected into clipboard (WeChat backend Ctrl+V ready)
        Website MDX draft saved. Say "publish" to deploy
[Publish Confirm] > Publish
Agent:  git push origin main → Edge network auto-deployment triggered
        done. https://khlilo.xyz/signal/cognitive-bias-investing

The Bottlenecks of Generic AI Writing

Generic AI tools suffer from two major flaws:

  1. Single-pass logic collapse: Generating 2,000 words in one prompt causes repetition and empty clichés.
  2. Context pollution from raw samples: Cramming 3,000-word samples confuses the LLM.

Cognitive Writer utilizes Skeleton-Render Dual-Channel Architecture paired with a 10-Dimension Executable Style Spec:

  • Pass 1 Skeleton: Extracts core logic and structure aligned with the chosen style spec.
  • Pass 2 Render: Expands high-density prose following the skeleton while obeying boundary rules.

Architectural Highlights

  • Conversational Finite State Machine: 4-state robust guard (IdleWaitingForOutlineWaitingForFulltextWaitingForPublish) with LLM natural language intent classification.
  • 10-Dimension Style Reverse Learning (learn): Reverse-engineers any URL into a concise executable spec (≤600 words).
  • Tokio Async Loop & Session Persistence: tokio::select! event loop with instant state recovery via current.json.
  • Cross-Platform Native Clipboard: Deep CF_HTML support for seamless WeChat Official Account publishing.