Files
deerflow-code/frontend-web/docs/ai-writing-weak-model-multi-agent-prd.md
T
2026-05-18 09:58:34 +08:00

18 KiB
Raw Blame History

AI 写作弱模型多 Agent 编排需求文档

1. 背景与目标

当前 open-canvas 页面右侧的成品展示与编辑体验已经比较成熟,但左侧模型直接生成文章的质量还不稳定。对于内网部署的弱性能大模型,单轮直出通常会出现以下问题:

  • 结构松散,长文容易跑题
  • 素材不足,内容空泛
  • 事实依据弱,容易幻觉
  • 润色能力有限,语言风格不统一
  • 一次生成失败后缺少可控的纠偏机制

因此本次需求的核心目标不是继续优化“单个模型一次写完”,而是在内网用代码编排一个“小型杂志社工作流”,让弱模型通过多角色分工协作,产出明显优于单模型直出的文章质量。

建议的角色分工:

  • Agent A 研究员:负责搜集内网素材、归纳事实、提取观点
  • Agent B 作家:基于选题、素材和结构写初稿
  • Agent C 严苛编辑:负责挑错、质检、润色、打回重写
  • Supervisor / Orchestrator:负责流程调度、状态记录、重试与终止判断

2. 本次建设边界

2.1 前端边界

前端继续使用现有 open-canvas 页面,不新开第二套编辑器页面。

当前相关入口:

前端本期只做以下增强:

  • 在左侧聊天区增加“写作工作流模式”
  • 让用户能看到多 Agent 阶段进度,而不是只看到最终回答
  • 支持结构化输入:主题、体裁、目标读者、篇幅、语气、参考资料、禁写项
  • 支持查看中间产物:提纲、素材卡片、初稿、编辑意见、终稿
  • 支持人工介入:确认提纲、确认初稿、接受编辑建议、手动重跑某一步

2.2 后端边界

后端必须单开新路线,不影响其他同事当前功能开发。

建议原则:

  • 不直接改现有 DeerFlow 主流程
  • 不把多 Agent 逻辑硬塞进当前通用对话链路
  • 以独立服务或独立模块形式建设
  • 通过清晰 API 与当前前端页面对接

推荐落地位置:

  • 基于仓库中的 offline-backend-20260512 单独开一条 ai-writing-orchestrator 路线
  • 或在后端新建独立目录,例如 offline-backend-20260512/apps/ai_writing_orchestrator

3. 为什么多 Agent 对弱模型更合适

弱模型最怕“一个 prompt 做完所有事”,因为这要求模型同时完成:

  • 选题理解
  • 信息检索
  • 信息筛选
  • 结构规划
  • 长文写作
  • 自我校验
  • 风格润色

把这些任务拆开后,每个 Agent 只处理一个更短、更清晰、更容易被弱模型完成的子任务,通常会带来以下收益:

  • 降低单次上下文复杂度
  • 降低一次性长输出失败率
  • 把“写得不好”变成“某一步做得不好”,便于重试
  • 可以在关键节点插入规则校验与人工确认
  • 可以用程序补足模型短板,而不是完全依赖模型智力

这套方案的本质不是“让模型变聪明”,而是“让系统更会组织模型工作”。


4. 可借鉴的开源项目

以下项目适合借鉴,但不建议整套照搬。建议以“借鉴状态机、角色协作、阶段拆分、重试与审稿机制”为主。

4.1 第一优先级:LangGraph

推荐原因:

  • 天然适合把写作流程建模成状态图
  • 支持多步骤、条件分支、重试、人工介入
  • 便于把“研究 -> 提纲 -> 初稿 -> 评审 -> 重写”固化成可控流程
  • 对“弱模型 + 强流程控制”很友好

可借鉴点:

  • StateGraph 的状态驱动编排
  • 每一步单独定义输入、输出、失败处理
  • 可视化地表达“通过 / 打回 / 重试 / 终止”

参考:

4.2 第二优先级:STORM

推荐原因:

  • 它本身就是“研究 + 提纲 + 成文 + 打磨”的长文系统
  • 对“先研究后写作”的思路非常契合
  • 很适合借鉴其“问题驱动研究”和“分阶段生成”的思想

根据其 GitHub README,STORM 将长文生成拆成两个大阶段:先研究并产出提纲,再基于提纲与资料写长文;其引擎进一步拆成知识整理、提纲生成、正文生成、文章润色四个模块。

这和我们的目标高度一致,尤其适合借鉴:

  • 提纲先行
  • 素材引用先行
  • 分模块写作
  • 后置润色

参考:

4.3 第三优先级:Deep Research Agent

推荐原因:

  • 明确支持本地模型与云模型混用
  • 已经包含研究、写作、质量校验、缓存、重试等能力
  • 很适合借鉴“研究阶段如何约束弱模型”

根据其 README,这个项目采用四个专职 Agent,并且带有可信度评分、质量验证、重试逻辑、缓存和 checkpoint。

特别适合借鉴:

  • 素材缓存
  • 分阶段质量评分
  • 节点失败重试
  • 研究结果结构化存储

参考:

4.4 可选借鉴:CrewAI

推荐原因:

  • 角色扮演表达自然
  • 写“研究员 / 作家 / 编辑”这种协作关系很直观
  • Flow + Crew 的组织方式适合做 demo 和快速验证

不建议作为首选底座的原因:

  • 更偏“Agent 角色编排体验”
  • 若要做企业内网稳定落地,状态管理和流程可控性通常不如 LangGraph 路线清晰

适合借鉴:

  • 角色定义写法
  • Task 模板
  • 多角色协作 prompt 结构

参考:

4.5 不建议新项目优先采用:AutoGen

原因:

  • 截至最近公开信息,microsoft/autogen 已进入 maintenance mode
  • 官方建议新项目优先采用 Microsoft Agent Framework

如果要借鉴,只建议借鉴早期多 Agent 对话模式,不建议作为本项目主框架。

参考:

4.6 结论

综合本项目需求,建议技术选型优先级如下:

  1. LangGraph 作为主编排框架
  2. STORM 借鉴研究-提纲-成文-润色的模块划分
  3. Deep Research Agent 借鉴缓存、评分、重试、可观测性
  4. CrewAI 借鉴角色 prompt 设计与任务模板

5. 目标产品形态

用户在当前 open-canvas 页面中,不再只是“向模型提问写文章”,而是启动一个可视化的写作流水线。

理想交互流程:

  1. 用户输入主题、用途、风格、读者、篇幅要求
  2. 系统先进入“研究阶段”
  3. 系统给出资料卡片与候选提纲
  4. 用户确认提纲或调整
  5. 系统生成初稿
  6. 严苛编辑给出问题清单
  7. 系统自动重写问题段落
  8. 系统输出终稿到右侧编辑区
  9. 用户可继续局部改写、扩写、精简

核心体验目标:

  • 左侧像“编辑部工作台”
  • 右侧像“成文编辑器”
  • 用户知道系统现在进行到哪一步
  • 用户可以在关键节点接管,而不是只能等待最终结果

6. 多 Agent 流程设计

6.1 建议的最小可用流程 MVP

第一版不要一上来做很复杂,建议先做 4 步闭环:

  1. Research

    • 输入:主题、用户要求、内网资料源
    • 输出:素材卡片列表、可引用事实列表、风险点列表
  2. Outline

    • 输入:用户要求 + 素材卡片
    • 输出:结构化提纲
  3. Draft

    • 输入:提纲 + 素材卡片
    • 输出:初稿
  4. ReviewAndRewrite

    • 输入:初稿 + 用户要求 + 素材卡片
    • 输出:问题清单、改写稿、终稿

MVP 终止条件:

  • 编辑评分达标则结束
  • 不达标最多重写 2 次
  • 超过次数则返回“需要人工介入”

6.2 第二阶段增强流程

在 MVP 跑通后,再增加:

  • Planner:根据文章类型动态规划流程
  • SectionWriter:按章节分别写作,避免长文崩坏
  • FactChecker:逐段核对素材来源
  • StyleEditor:统一语气、标题风格、句式节奏
  • ComplianceReviewer:内网场景下做敏感词、保密、术语规范检查

6.3 建议的状态机

建议将流程状态固定为:

  • idle
  • collecting_materials
  • generating_outline
  • await_outline_confirmation
  • writing_draft
  • reviewing_draft
  • rewriting_draft
  • completed
  • failed
  • human_intervention_required

这样前端和后端都可以围绕统一状态通信。


7. Agent 角色定义建议

7.1 Agent A 研究员

职责:

  • 搜集内网知识库、文档库、FAQ、历史稿件中的相关信息
  • 输出结构化素材,而不是长篇自然语言
  • 对每条素材标注来源、可信度、适用角度

输出格式建议:

  • facts[]
  • quotes[]
  • examples[]
  • risks[]
  • source_refs[]

约束建议:

  • 禁止直接生成整篇文章
  • 不做风格化表达
  • 每条结论必须可回溯到来源

7.2 Agent B 作家

职责:

  • 严格基于提纲和素材写稿
  • 按章节写,而不是一次写完整篇
  • 对每段附带素材引用 ID,便于后续审核

约束建议:

  • 无素材不发挥
  • 每段只服务一个小节目标
  • 段落长度控制
  • 输出结构化草稿数据,而不仅是纯文本

7.3 Agent C 严苛编辑

职责:

  • 检查逻辑跳跃、素材不足、事实不稳、表述空泛、风格不统一
  • 输出明确的“问题清单”和“改写指令”
  • 必要时打回指定章节,而不是整篇推翻

输出格式建议:

  • issues[]
  • severity
  • rewrite_instructions[]
  • accept/reject

编辑原则建议:

  • 优先挑事实问题,再挑结构问题,最后才是文风问题
  • 问题描述必须可执行,不能只说“写得不够好”

7.4 Supervisor

职责:

  • 负责流程启动、状态流转、失败重试、记录日志
  • 判断是否需要回到上一步
  • 控制最大重试次数
  • 对外提供统一 API 与流式事件

8. 前端需求

8.1 保持当前页面结构不变

继续沿用当前左右布局:

  • 左侧:聊天 + 流程进度 + 中间产物
  • 右侧:最终文章编辑与局部 AI 改写

不建议再复制一套新页面,以免造成维护分叉。

8.2 左侧新增 UI 模块

建议在 CanvasChatPanel 基础上新增:

  • 写作任务表单
  • 工作流阶段时间线
  • Agent 执行日志面板
  • 中间产物抽屉
  • 人工确认卡片

建议新增的前端概念:

  • workflowMode: chat | writing_pipeline
  • workflowStage
  • workflowRunId
  • workflowEvents[]
  • workflowArtifacts[]

8.3 需要展示的中间产物

至少支持展示:

  • 素材卡片
  • 提纲
  • 初稿
  • 编辑问题单
  • 重写结果
  • 最终定稿

这些内容建议不仅显示在消息区,也保存到右侧可选版本中,便于回看。

8.4 人工介入节点

至少提供两个确认点:

  • 提纲确认
  • 初稿确认或编辑后重跑

后续可扩展:

  • 指定重写某个章节
  • 锁定某段不允许再改
  • 替换某条素材后重新生成

9. 后端需求

9.1 架构原则

后端新路线必须满足:

  • 与现有通用对话链路解耦
  • 与现有 Agent 运行时解耦
  • 独立维护 Prompt、状态机、数据结构
  • 可以单独部署、单独回滚、单独压测

9.2 推荐模块划分

建议后端拆分为以下模块:

  • workflow_orchestrator
  • agent_registry
  • material_retriever
  • outline_generator
  • draft_writer
  • editor_reviewer
  • rewrite_engine
  • workflow_store
  • stream_event_adapter

9.3 API 建议

建议最小 API:

  • POST /api/ai-writing/workflows

    • 创建写作任务
  • POST /api/ai-writing/workflows/{id}/start

    • 启动流程
  • GET /api/ai-writing/workflows/{id}

    • 查询当前状态
  • GET /api/ai-writing/workflows/{id}/events

    • 获取事件流或轮询事件
  • POST /api/ai-writing/workflows/{id}/confirm-outline

    • 用户确认提纲
  • POST /api/ai-writing/workflows/{id}/rewrite-section

    • 指定章节重写
  • POST /api/ai-writing/workflows/{id}/approve-final

    • 确认终稿

9.4 流式事件建议

为了与当前 CanvasStreamContext 风格兼容,建议后端输出结构化事件流,例如:

  • workflow_started
  • stage_changed
  • agent_started
  • agent_output_chunk
  • artifact_generated
  • human_confirmation_required
  • retry_scheduled
  • workflow_completed
  • workflow_failed

前端只要订阅事件,就能把左侧工作台做出来。


10. 弱模型优化策略

这是本项目成功的关键,不能只靠“多 Agent”这四个字。

10.1 强约束输出格式

每个 Agent 尽量输出 JSON 或结构化对象,不要自由发挥。

原因:

  • 便于程序消费
  • 便于后续 Agent 接续
  • 便于失败重试
  • 便于质量评估

10.2 长文拆成章节生成

不要让弱模型一次生成整篇长文,建议:

  • 先出提纲
  • 再按章节逐段写
  • 最后统一润色

10.3 把检索和写作分离

研究员只负责找资料,作家只负责组织表达。不要让写作 Agent 同时去“边搜边编”。

10.4 程序兜底而不是模型兜底

程序需要承担:

  • 去重
  • 引用格式化
  • 章节拼接
  • 长度控制
  • 评分阈值判断
  • 重试路由

10.5 小步快跑、失败可回退

每步都要能独立失败、独立重试、独立回放。

10.6 引入可量化评分

编辑 Agent 输出不能只是一段文字,建议给出评分维度:

  • 相关性
  • 事实性
  • 结构完整度
  • 语言流畅度
  • 风格一致性

系统据此决定是否进入下一步。


11. 分阶段实施计划

Phase 1:需求冻结与技术验证

目标:

  • 确认文章类型范围
  • 确认内网资料来源
  • 选定主框架
  • 跑通最小多 Agent demo

交付物:

  • 技术选型说明
  • 角色与状态机设计
  • 1 个主题的端到端 demo

验收标准:

  • 弱模型可完成“研究 -> 提纲 -> 初稿 -> 编辑 -> 重写”闭环

Phase 2:后端新路线搭建

目标:

  • 建立独立 orchestrator
  • 建立 workflow state store
  • 建立事件流输出
  • 建立可配置 prompt 模板

交付物:

  • 独立服务目录
  • 基础 API
  • 状态机运行骨架

验收标准:

  • 不依赖现有主流程改造即可独立跑通

Phase 3:前端接入当前页面

目标:

  • 在 CanvasChatPanel 接入工作流模式
  • 增加阶段展示与人工确认
  • 中间产物可视化

交付物:

  • 左侧工作流时间线
  • 中间产物展示面板
  • 流程控制按钮

验收标准:

  • 用户可以在当前页面完成一次全流程写作

Phase 4:质量优化

目标:

  • 强化素材检索质量
  • 提高提纲质量
  • 引入章节级重写
  • 引入评分与回退机制

交付物:

  • 质量评估规则
  • 重试策略
  • Prompt 调优包

验收标准:

  • 弱模型效果明显优于单轮直出

Phase 5:生产化

目标:

  • 加缓存
  • 加日志
  • 加监控
  • 加失败告警
  • 加审计记录

交付物:

  • 可观测性方案
  • 运行日志与回放
  • 配置中心或 prompt 管理机制

验收标准:

  • 可长期维护并可定位问题

12. 团队协作与隔离方案

为了不影响其他同事,建议采用以下协作原则:

  • 新后端目录独立开发
  • 新接口使用独立路由前缀
  • 前端只在 open-canvas 内增量开发
  • 不修改现有公共线程协议,必要时增加新事件类型
  • Prompt、Agent 配置、评分规则独立存放

推荐分工:

  • 前端 1 人:负责左侧工作流 UI 与右侧版本接入
  • 后端 1-2 人:负责 orchestrator、Agent 执行、事件流
  • 算法/Prompt 1 人:负责角色 prompt、评分规则、失败样本调优

13. 风险与规避

风险 1:Agent 太多,成本和耗时暴涨

规避:

  • MVP 只保留 3 个业务 Agent + 1 个 Supervisor
  • 长文按章节写,失败只重写局部

风险 2:弱模型在自由对话场景中失控

规避:

  • 全流程结构化
  • 每步只做一件事
  • 强约束输入输出格式

风险 3:内网检索质量不足,导致垃圾进垃圾出

规避:

  • 先把资料源治理好
  • 对素材做来源、可信度、去重处理

风险 4:前后端协议频繁变化影响联调

规避:

  • 先定义事件模型和 artifact 模型
  • 先 mock 数据,再并行开发

风险 5:影响现有功能稳定性

规避:

  • 新路线、新接口、新状态机
  • 不侵入现有主链路

14. 推荐结论

本项目推荐的总体策略:

  1. 前端继续基于当前 open-canvas 页面开发,不复制新页面
  2. 后端单独开 ai-writing-orchestrator 新路线,避免影响现有同事
  3. 主框架优先采用 LangGraph
  4. 流程设计借鉴 STORM
  5. 质量控制借鉴 Deep Research Agent
  6. 角色设计与任务模板可参考 CrewAI
  7. 第一版只做 4 步 MVP:研究、提纲、初稿、编辑重写

一句话总结:

不是继续“调一个更强的 prompt”,而是把弱模型放进一个可控的编辑部流水线,让系统帮它把复杂写作拆开完成。


15. 参考链接