笔触AI创作软件技术选型深度解析
一款融合AI、本地优先、隐私安全的现代化写作软件,其技术栈是如何炼成的?
引言
在AI大模型蓬勃发展的今天,将AI能力无缝集成到日常创作工具中已成为开发者的热门方向。我们团队正在开发的“笔触”软件,正是一款旨在赋能写作者、内容创作者的AI辅助工具——支持小说创作、公众号文章、小红书图文、视频脚本等多种内容类型,通过智能体动态理解用户意图,自动生成高质量内容。
作为一款桌面端应用,“笔触”需要在跨平台、性能、安全、AI能力、开发效率之间找到最佳平衡。本文将深入解析“笔触”的技术选型,分享我们在Electron、Vue、AI集成、数据存储等方面的思考与实践,希望能为正在构思类似项目的开发者提供参考。
一、核心架构:稳中求进,现代而不激进
客户端框架:Electron
选型理由:跨平台、成熟生态、可复用Web技术栈。Electron允许我们使用HTML/CSS/JavaScript构建桌面应用,一次开发,打包成Windows、macOS、Linux安装包。对于需要深度访问操作系统(如文件系统、系统托盘、自动更新)的创作软件,Electron是稳妥之选。
版本:使用最新稳定版,享受性能改进和安全性更新。
前端框架:Vue 3 + TypeScript
选型理由:Vue 3的Composition API带来更好的逻辑复用与类型推断,配合<script setup>语法,代码简洁且易于维护。TypeScript提供全栈类型安全,减少运行时错误,提升协作效率。
构建工具:Vite,极速启动与热更新,开发体验极佳。
UI组件库与状态管理
-
• Naive UI:一款高质量的Vue 3组件库,内置深色主题,与TypeScript完美集成,组件丰富且API设计友好。 -
• Pinia:Vue官方推荐的状态管理库,与Composition API无缝衔接,模块化清晰。 -
• Vue Router:管理多页面视图(如作品列表、编辑器、设置页)。
二、Electron主进程:安全隔离,服务化设计
Electron的架构核心是主进程(Node环境)与渲染进程(浏览器环境)的分离。我们严格遵循安全最佳实践:渲染进程通过预加载脚本(preload.ts)调用主进程暴露的有限API,所有敏感操作(文件读写、数据库访问、密钥管理)均封装在主进程的服务模块中。
关键服务模块
|
|
|
|
|---|---|---|
|
|
ipcMain
contextBridge |
window.electronAPI.work.save |
|
|
electron-store |
|
|
|
safeStorage自封装 |
|
|
|
winston |
|
|
|
fs模块 |
|
|
|
child_process |
|
三、数据存储:三层架构,各司其职
SQLite:结构化元数据与流程持久化
选型理由:轻量、嵌入式、单文件,无需独立服务,完美契合桌面应用场景。使用better-sqlite3驱动,性能优异且API同步易用。
存储内容:
-
• 作品元数据(标题、类型、风格、标签等) -
• 角色关系表(支持历史版本追溯) -
• 智能体流程实例( flow_instances),保存创作状态
LanceDB:向量数据库,语义检索的基石
选型理由:嵌入式向量数据库,基于列存储,查询性能极高,支持复杂元数据过滤。与Electron主进程无缝集成(通过vectordb npm包)。
存储内容:
-
• 文本片段的向量嵌入(使用本地BGE模型生成) -
• 元数据关联(所属作品、章节、角色等)
应用场景:AI创作时检索相似段落,保持风格一致;用户灵感搜索;情节连贯性检测。
四、AI与智能体:轻量自研,灵活可控
我们不希望被某个特定AI框架(如LangChain)锁定,因此决定在核心部分自研一套轻量级智能体系统,同时保持对多模型的支持。
LLM服务封装
class LLMService { async chat(messages: { role: string; content: string }[], options?: any): Promise<string> { // 根据配置选择 DeepSeek、OpenAI 等 // 从加密存储获取API Key // 调用 HTTP 客户端(axios) }}
支持DeepSeek、OpenAI、智谱等主流模型,通过配置切换。
本地嵌入模型
使用@xenova/transformers,在用户设备本地运行BGE系列中英文嵌入模型(量化版本,约300MB),实现完全离线的语义向量生成。
优势:隐私安全、零延迟、无API费用。
动态智能体系统
用户通过自然语言描述创作需求(如“写一篇创业经验分享的公众号文章”),系统自动识别意图,路由到对应工作流。
-
• 意图识别器:调用LLM分析用户输入,输出结构化JSON(动作类型、创作类型、主题等)。若信息不足,自动启动多轮对话引导。 -
• 工作流定义库:JSON格式,每个创作类型对应一个流程定义(如新建公众号文章、为已有作品添加章节)。节点支持LLM调用、工具调用(如向量检索)、流程控制(foreach)。 -
• 模板管理器:从服务器增量下载提示词模板,支持多语言。模板中包含占位符(如 {{topic}}、{{genre}}),运行时结合作品元信息动态生成最终提示词。 -
• 动态提示词生成器:根据模板ID、作品元数据、上下文变量替换占位符,生成适配当前场景的提示词。
优势:无需为每个创作类型编写硬编码逻辑,新增类型只需添加工作流定义和模板,即可无缝扩展。
五、工具链与支持库
-
• Markdown渲染: marked,轻量且生态丰富,支持代码高亮扩展。 -
• 数据验证: zod,在IPC边界、配置加载等场景进行运行时类型检查。 -
• 唯一ID: uuid,用于流程实例、会话等。 -
• HTTP客户端: axios,封装LLM API调用。 -
• 打包与分发: electron-builder,配置简单,支持NSIS、dmg、AppImage等格式。 -
• 自动更新: electron-updater,实现增量更新。 -
• 测试: Vitest(单元测试)、Playwright(E2E测试),保证代码质量。 -
• 开发协调: concurrently+wait-on,同时启动Vite和Electron。
六、开发环境与部署
-
• Node.js:18+(推荐20 LTS) -
• 包管理器:pnpm(硬链接节省磁盘,依赖解析快) -
• Python:3.11(用于编译部分原生模块,如 better-sqlite3) -
• 构建输出:支持Windows(x64/arm64)、macOS(x64/arm64)、Linux(可选) -
• 安装包大小:通过优化(如量化模型、按需打包)控制在合理范围
七、总结:本地优先、隐私安全、可扩展
“笔触”的技术选型贯穿了三个核心原则:
-
1. 本地优先:所有用户数据(作品、向量、配置)均存储在用户设备,无需云服务,保护隐私。 -
2. 隐私安全:API密钥使用操作系统加密存储,LLM调用只在用户主动触发时进行;本地嵌入模型确保语义计算不离开设备。 -
3. 可扩展:基于工作流定义的智能体系统,新增创作类型只需添加模板和流程定义;工具集可插拔,未来可集成图像生成、音频处理等功能。
这套技术栈既保证了开发效率,又兼顾了用户体验和长期可维护性,为“笔触”成为一款强大的AI创作伙伴奠定了坚实基础。
如果你也对类似项目感兴趣,或想探讨某个技术点的实现细节,欢迎留言交流!
邀请你:一起打磨真正属于写作者的AI
目前“笔触”还在开发中,正在邀请第一批种子用户内测。
如果你是:
-
• 公众号/自媒体运营者,每天为日更发愁,又不想丢掉个人风格 -
• 小说作者,经常卡文,希望有个助手能顺着你的风格续写 -
• 兼职写手/内容创业者,想提高效率,又怕AI写的东西太“塑料” -
• 或者只是一个在意自己文字的普通人
——你就是我想找的人。
加入我们的创作者社群,你可以:
-
• 抢先体验内测版本 -
• 告诉我你的写作习惯,帮算法更懂创作者 -
• 和一群重视风格的写作者交流心得
关注下方公众号,回复“笔触”,获取入群方式。
夜雨聆风
