菜单

AI 写作助手

相关源文件

目的与范围

AI 写作助手系统在 AppFlowy 的文档编辑器中提供了智能文本编辑功能。它允许用户选择文本并应用 AI 驱动的操作,例如提高写作质量、修正语法、续写文本以及回答关于所选内容的问题。该系统支持本地 AI 模型(通过 Ollama 集成)和云端 AI 服务。

有关通用的 AI 集成架构,请参阅 AI 集成。有关 AI 聊天功能,请参阅 AI 聊天系统。有关 AI 模型管理,请参阅 AI 架构和管理

系统架构

AI 写作助手作为文档编辑器中的一个叠加系统运行,由三个主要层组成:带有 Flutter 组件的 UI 层、处理 AI 操作的服务层以及管理 AI 补全的后端层。

核心组件概述

来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_cubit.dart25-48 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/ai_writer_block_component.dart54-81 frontend/rust-lib/flowy-ai/src/completion.rs22-38

状态管理架构

AI 写作助手使用 BLoC 模式,以 AiWriterCubit 作为中央状态管理器,协调用户交互、AI 服务调用和文本操作。

AI 写作助手状态流

来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_cubit.dart742-816 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_cubit.dart92-119

AI 命令和操作

该系统支持多种 AI 写作命令,每种命令都有特定的行为和用例。

命令类型和处理

命令目的需要选择处理方法
continueWriting扩展文档内容使用从顶部到光标的文档内容
improveWriting提高文本质量替换选定的文本
fixSpellingAndGrammar纠正错误替换选定的文本
makeLonger扩展文本替换选定的文本
makeShorter精简文本替换选定的文本
explain提供解释在下方插入解释
userQuestion回答内容相关问题可选在下方插入答案

来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_entities.dart frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_cubit.dart134-168 frontend/appflowy_flutter/lib/ai/service/appflowy_ai_service.dart55-104 frontend/rust-lib/flowy-ai/src/completion.rs108-188

命令执行流程

来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_cubit.dart121-169 frontend/appflowy_flutter/lib/ai/service/appflowy_ai_service.dart55-104 frontend/rust-lib/flowy-ai/src/completion.rs108-188

文本处理和 Markdown 转换

MarkdownTextRobot 处理所有文本操作,提供实时预览功能和最终文本替换功能。

文本机器人操作

来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/markdown_text_robot.dart63-128 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/base/markdown_text_robot.dart322-555

服务层集成

服务层抽象了 AI 操作,并处理 Flutter 前端与 Rust 后端之间的通信。

AI 服务架构

来源:frontend/appflowy_flutter/lib/ai/service/appflowy_ai_service.dart27-52 frontend/appflowy_flutter/lib/ai/service/appflowy_ai_service.dart166-259 frontend/rust-lib/flowy-ai/src/completion.rs22-79

用户界面组件

AI 写作助手提供了一个复杂的覆盖界面,该界面在触发 AI 操作时出现。

UI 组件层级结构

来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/ai_writer_block_component.dart83-178 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/ai_writer_block_component.dart408-604 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/widgets/ai_writer_scroll_wrapper.dart14-47

用户交互流程

来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/ai_writer_block_component.dart106-113 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_cubit.dart219-300

后端补全系统

Rust 后端负责管理 AI 补全任务,支持流式响应和任务取消。

补全任务生命周期

来源:frontend/rust-lib/flowy-ai/src/completion.rs40-78 frontend/rust-lib/flowy-ai/src/completion.rs108-188

错误处理和状态

系统处理各种错误情况和 AI 服务状态。

错误类型前端处理用户体验
ai_response_limit显示达到限制错误暂时禁用 AI 功能
ai_image_response_limit显示图像限制错误禁用图像生成
local_ai_not_ready显示本地 AI 未就绪建议使用云 AI 或等待
local_ai_disabled显示本地 AI 已禁用重定向到云 AI
一般性错误显示错误消息允许重试

来源:frontend/rust-lib/flowy-ai/src/completion.rs191-207 frontend/appflowy_flutter/lib/ai/service/appflowy_ai_service.dart198-258

与文档编辑器的集成

AI 写作助手通过基于节点的架构和选择管理无缝集成到 AppFlowy 的文档编辑器中。

节点管理

来源:frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/ai_writer_block_component.dart40-52 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_block_operations.dart10-49 frontend/appflowy_flutter/lib/plugins/document/presentation/editor_plugins/ai/operations/ai_writer_node_extension.dart9-26

AI写作助手为AppFlowy文档内的智能文本编辑提供了一个全面的解决方案,它结合了实时的AI辅助、直观的用户交互模式以及强大的错误处理机制。