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 服务调用和文本操作。
来源: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 写作命令,每种命令都有特定的行为和用例。
| 命令 | 目的 | 需要选择 | 处理方法 |
|---|---|---|---|
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
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 后端之间的通信。
来源: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 操作时出现。
来源: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辅助、直观的用户交互模式以及强大的错误处理机制。