从 Taio 触发“智能成文”功能的数据链

我们来深入探讨一下您这套系统中,从 Taio 触发“智能成文”功能的数据链路。

根据我们对您代码的分析,“智能成文”在您的生态系统中有两种主要的实现路径。我会分别详细拆解它们的数据链路,并重点分析那个更复杂、更自动化的“一键成文”工作流。

场景一:在 Taio 中直接使用 AI 扩展文本

这是由 aiWriter.js 脚本实现的、一个相对直接的数据链路。它更侧重于“辅助写作”。

链路概览:

Taio App -> Cloudflare Worker -> 大语言模型 API (Gemini/Kimi/DeepSeek) -> Cloudflare Worker -> Taio App

分步拆解:

起点 (Taio):

用户操作: 在 Taio 编辑器中选中一段文字(或从剪贴板读取),然后运行“AI问问”脚本 (aiWriter.js)。

数据: 初始文本片段。

前端交互 (Taio 内的 aiWriter.js):

脚本执行: 脚本启动,显示一个原生 UI 界面,并将初始文本填入输入框。

用户操作: 用户点击“Gemini解释”(或其他模型)按钮。

数据: 脚本将输入框中的文本和选择的模型(如 'gemini')打包。

API 请求 (Taio -> Cloudflare):

脚本执行: aiWriter.js 中的 requestJSON 函数向您的 Cloudflare Worker 发起一个 POST HTTP 请求,目标是 /ai/explain 端点。

数据: 请求体是一个 JSON 对象,包含 { "text": "...", "model": "gemini" }。

云端处理 (Cloudflare Worker):

路由分发 (worker.js): Worker 的 fetch 处理器接收到请求,根据路径 /ai/explain 将其交给 handleAiExplain 函数处理。

任务执行 (handleAiExplain):

该函数解析出文本和模型。

核心步骤: 它将用户的文本包装在一个更具体的指令中,例如:"以下面文本为背景,写一篇不少于2500字的文章..."。

它调用 ai.js 模块中的相应函数,如 getGeminiExplanation。

数据: 一个经过包装的、更详细的 Prompt。

AI 生成 (Cloudflare -> LLM API):

API 调用 (ai.js): getGeminiExplanation 函数向 Google Gemini 的官方 API 发起请求。它还处理了 API Key 的轮换和备用模型的降级逻辑。

数据: 发送给 Gemini 的是最终的 Prompt。Gemini 处理后返回生成的长篇文章。

响应返回 (LLM API -> Taio):

数据回流: 生成的文章内容沿着请求路径原路返回:Gemini API -> Cloudflare Worker (ai.js) -> Cloudflare Worker (handleAiExplain) -> Taio (aiWriter.js)。

UI 更新: aiWriter.js 收到响应后,将生成的文章显示在结果区域。

终点 (Taio):

用户操作: 用户关闭脚本窗口。

脚本执行: handleWindowClose 事件被触发,将结果区的内容 (lastResult) 写回到 Taio 编辑器中。

数据: 最终生成的完整文章。

这个链路的核心在于 Cloudflare Worker 作为一个安全的、可编程的代理,它封装了对外部 AI 服务的调用,并允许您在云端对用户的输入进行“二次加工”(即包装成更详细的 Prompt)。

场景二:在管理后台“一键成文”并发布

这是您系统中更强大、更自动化的“智能成文”工作流,它连接了几乎所有的服务模块,是一个完整的内容生产线。

链路概览:

浏览器 (管理后台) -> Cloudflare Worker -> Cloudflare DO (Inspiration/Zhihu) -> Flask API (数据源) -> 浏览器 (显示灵感)

... 用户点击 ...

浏览器 -> Cloudflare Worker -> Cloudflare DO (Toutiao) -> 大语言模型 API -> Cloudflare DO (Toutiao) -> Flask API (发布) -> 外部平台 (头条/博客)

... 发布完成 ...

Cloudflare DO (Toutiao) -> Cloudflare DO (ChatRoom) -> WebSocket -> 浏览器 (聊天室)

分步拆解:

起点 - 灵感获取 (浏览器):

用户操作: 打开 management.html 页面并切换到“知乎”或“热点”标签页。

前端执行 (management.html): 页面 JS 向 Cloudflare Worker 发起 authenticatedFetch 请求,例如 /api/inspirations?source=zhihu。

云端代理 (worker.js & DO): Worker 将请求路由到 InspirationDO。InspirationDO 内部再向您的 Flask API (data_api_all.py) 的 /api/zhihu/combined 等接口请求数据。

数据: Flask API 返回缓存或实时获取的知乎热点/灵感问题列表 (JSON)。

UI 更新: management.html 将返回的数据渲染成一个个“灵感卡片”。

触发 - 任务提交 (浏览器 -> Cloudflare):

用户操作: 用户在某个感兴趣的灵感卡片上,点击“✍️ 一键成文”按钮。

前端执行 (management.html): generateArticleFromInspiration 函数被调用。它收集卡片信息、目标房间名、发布渠道(头条/博客)等,然后向 Cloudflare Worker 发起一个 POST 请求,目标是 /api/inspirations/generate。

数据: 请求体是一个 JSON 对象,包含 { "inspiration": {...}, "roomName": "...", "targets": ["toutiao", "blog"] }。

核心处理 - AI 生成 (Cloudflare DO):

路由分发 (worker.js): Worker 将请求路由到 ToutiaoServiceDO2(负责内容创作与发布的 DO)。

任务创建 (ToutiaoServiceDO2):

DO 接收到请求,创建一个唯一的任务 ID。

它根据收到的灵感信息,构造一个用于生成文章的详细 Prompt。

它调用 ai.js 中的 getGeminiExplanation(或其他 AI 函数),将任务发送给大语言模型。

数据: 一个包含写作指令和背景信息的 Prompt。

内容创作 (Cloudflare -> LLM API):

API 调用 (ai.js): 与场景一类似,脚本向 Gemini/Kimi 等 API 发送请求。

数据: Gemini API 返回一篇完整的、符合要求的 Markdown 格式文章。

分发 - 内容发布 (Cloudflare DO -> Flask API -> 外部平台):

获取结果 (ToutiaoServiceDO2): DO 接收到 AI 生成的文章。

请求发布 (ToutiaoServiceDO2): DO 将文章标题、Markdown 内容、纯文本内容、标签和发布目标 (targets) 打包,向您的 Flask API (data_api_all.py) 的 /api/publish 端点发起请求。

执行发布 (data_api_all.py):

Flask API 的 _execute_publishing_flow 函数被触发。

它根据 targets 列表,分别调用 _post_to_toutiao 和 _post_to_blog 函数。

这两个函数再分别向今日头条的官方 API和您的博客发布接口 (blog.want.biz/new) 发起最终的 HTTP 请求。

数据: 结构化的文章数据在不同服务间传递,最终被格式化为符合各个平台要求的表单或 JSON 数据。

终点 - 结果反馈 (Cloudflare -> 浏览器):

发布回执 (外部平台 -> Flask -> Cloudflare): 发布平台返回结果给 Flask API,Flask API 将成功或失败的状态返回给 ToutiaoServiceDO2。

内部通知 (ToutiaoServiceDO2 -> ChatRoomDO): ToutiaoServiceDO2 构造一条系统消息(例如,“✅ 文章《AI在量化交易中的应用》已成功发布到头条。”),然后向指定房间的 ChatRoomDO 发起一个内部请求 (/api/post-system-message)。

实时广播 (ChatRoomDO): ChatRoomDO 接收到系统消息后,将其保存并立即通过 WebSocket 广播给所有在该房间内的在线用户。

UI 更新 (index.html): 用户的聊天室界面接收到 WebSocket 消息,并实时显示这条系统通知。

数据: 简洁的发布结果状态和链接。

总结

这两个场景的数据链路共同描绘了您“智能成文”功能的强大之处:

链路清晰,职责分离: Taio/浏览器负责用户交互,Cloudflare Worker/DO 负责任务调度和 AI 编排,Flask API 负责数据聚合和对外的“脏活累活”(如模拟App请求头条)。这种分离使得系统非常清晰和可维护。

异步化与解耦: 场景二的“一键成文”是一个完美的异步工作流。前端提交任务后立即得到响应(任务已提交),而复杂的生成和发布流程在后端异步执行,最终通过 WebSocket 将结果推送给用户,体验非常流畅。

智能化与自动化: 您不仅调用了 AI 的生成能力,还围绕它构建了一整套从“发现创意”到“最终发表”的自动化管道,这才是“智能成文”的精髓所在。

总而言之,您所构建的数据链路设计精良,充分利用了不同技术的优势,形成了一个高效、可靠且功能强大的个人内容创作与分发系统。