分析项目 描述功能

分析完成。下面是 OpenNative 的完整功能描述。


OpenNative 功能描述

OpenNative 把「本地推理引擎 + 云端 Agent + 创意工作流 + 浏览器 + 设备协同 + 自动化」整合进一个 Electron 桌面壳。下面按功能模块逐一描述。


一、双 AI 引擎(两条独立推理链路)

项目同时支持两套引擎,互不干扰:

1A. 本地引擎 — Engine 页面(/engine,1059 行)

驱动 node-llama-cpp 本地推理,完全离线:

能力 说明
模型加载 选 GGUF 文件、读取模型元信息(架构/上下文长度/大小)
模型参数 contextSize / gpuLayers / batchSize / threads / chatWrapper / flashAttention
采样参数 temperature / topK / topP / minP / seed / maxTokens / repeatPenalty / frequencyPenalty / presencePenalty / dry 采样
流式对话 逐 token 推送(onChatToken 回调),支持中止/重置历史
工具调用 自研 ⌈tool_name⌋{json}⌋ 文本标记协议,9 个本地工具
工作目录 可绑定工作目录,工具在该目录下执行

IPC 通道:llama:pick-model / load-model / unload-model / chat / abort / reset-history / set-system-prompt / set-tool-cwd / status。

1B. 云端引擎 — Code 页面(/code,1220 行)

桥接 @earendil-works/pi-coding-agent,17+ provider:

anthropic  openai  google-gemini  deepseek  ollama  groq 
openrouter  moonshot  kimi  智谱GLM  xAI  豆包  通义千问 
MiniMax  腾讯混元  百度文心  nvidia  自定义 custom-*
能力 说明
多会话 多 session 管理,按 cwd 归档,可重命名/删除/在 Finder 中打开
多模态输入 文本 + 图片(PNG/JPEG/WEBP/GIF,dataURL 上传)
思考过程 折叠展示 thinking 块,可全局隐藏
图片读取 pi:read-image 读本地图片
消息编辑 回填编辑用户消息重新发送、多选删除
会话持久化 基于 pi 的 sqlite-node session-backends

IPC 通道:pi:start / new-chat / prompt / abort / list-sessions / load-session / get-messages / rename-session / delete-session 等。


二、设计工作流 — Design 页面(/design,2424 行,最大模块)

基于 @xyflow/react 的节点式可视化画布,是项目的核心创意模块。

节点类型(6 种)

节点 图标 功能
text_prompt_node 文本提示词节点
imagenode 图像生成节点(text2img / img_edit / img2img / text23d)
videonode 视频生成节点(text2video / video_edit / img2video)
audionode 音频节点
uploadnode 上传素材节点
ReferenceChip 节点间引用芯片

配套能力

  • 画布(1103 行)— 拖拽连线、缩放、右键菜单(RightClickMenu)
  • 画布设置(1135 行)— 分辨率/输出目录等
  • 画布 AI 助手(canvasagentchat 684 行)— 在画布内与 AI 对话编排节点
  • 历史列表(canvashistorylist)— 版本回溯
  • SketchPad — 草图手绘板
  • GenerateEffect — img-fx 库的生成式视觉特效
  • canvasSerializer — 画布序列化保存

按模型能力位(CAPABILITIES)动态启用对应节点;画布代码 lazy import,切到时才加载。


三、图像生成服务(imageGenerateService.ts)

文生图 / 图生图,按供应商自动适配两种契约:

供应商 协议 端点
千问/DashScope(含 qwen-image) JSON POST,image 字段(1 张字符串 / 2-3 张数组,dataURL 或公网 URL) {base}/images/generations
OpenAI 系(gpt-image 等,默认) multipart/form-data,image 文件字段 {base}/images/edits
  • 无参考图 两种都走 /images/generations
  • 参考图 1-3 张 图生图
  • 错误码中文化(IPInfringementSuspect / ContentPolicyViolation / Throttling 等)
  • 结果自动落盘到 {cwd}/generated-images 或指定 outputDir,转 base64 回传

四、视频生成服务(videoGenerateService.ts)

DashScope 异步任务协议(通义万相 wan2.1 / happyhorse):

  1. POST 提交任务 返回 task_id(PENDING)
  2. 每 5s 轮询任务状态,直到 SUCCEEDED/FAILED(超时 5 分钟)
  3. 下载签名直链 video_url,转 base64 回传

参数:分辨率档(480P/720P/1080P)、宽高比(16:9/9:16/1:1)、时长(3-15s)、数量。


五、网页浏览 — 两条互补路径

5A. Website 页面(/website,613 行)— 站点库

预设站点池按分类组织:

分类 站点
社交 X / Reddit / 微博 / Instagram / TikTok / Facebook / LinkedIn / Discord
开发 GitHub / GitLab / Bitbucket / Stack Overflow / Dev.to / MDN / Hacker News / Vercel
视频 YouTube / Bilibili / Netflix / Twitch / 优酷
资讯 …
购物 / 工具 / 创作 / 系统 …

支持收藏夹增删改、编辑后转自定义、点击在 BrowserView 或系统浏览器打开(local.webLaunchMode 设置)。

5B. Browser 页面(/browse,1570 行)— 内嵌全功能浏览器

基于 Electron BrowserView 原生嵌入,全屏无侧边栏:

能力 通道
多标签页 browser-view:open/destroy
前进/后退/刷新/停止 back/forward/reload/stop
收藏夹持久化 app:fav-load/fav-save
多搜索引擎起始页 Bing/Google/百度
全屏/缩放 fullscreen-toggle / zoom-in/out/reset
页内查找 browser-view:find/stop-find
执行 JS / DevTools browser-view:exec-js / open-devtools
权限管理 browser-view:permission-answer(相机/麦克风/通知)
扩展加载 browser-view:load-extension/remove-extension
下载管理 DownloadItemInfo
favicon 抓取 app:fetch-favicon
系统浏览器跳转 app:get-installed-browsers/get-browser-icon/open-url-in-browser

六、自动化 — Automation 页面(/automation,451 行)

定时任务编排器(数据存 localStorage):

  • RRULE 调度 — describeSchedule 解析 FREQ=HOURLY/DAILY/WEEKLY + INTERVAL/BYHOUR/BYMINUTE,生成中文描述("每 2 小时"、"每天 9:30"、"每周一")
  • 任务状态 — ACTIVE/PAUSED,lastStatus: success/failure/running
  • 三 Tab — configured(已配置)/ history(历史)/ templates(模板)
  • 任务本质是 prompt,按计划触发 pi Agent 执行

七、设备协同 — Devices 页面(/devices,381 行)

基于 bonjour mDNS 的局域网设备发现 + 文件互传(AgentLink):

能力 说明
设备发现 mDNS 广播,实时刷新设备列表(onAgentLinkDevicesChanged)
自我信息 名称/端口/地址(agentlink:self/rename/restart)
文件发送 HTTP POST 流式传输,带进度回调(agentLinkSender.ts)
文件接收 内置 HTTP 文件服务器(AgentLinkFileServer),收到文件落盘到保存目录
保存目录 可自定义,open-save-dir 在 Finder 打开
连通性检测 agentlink:ping-http 探活对端

设备类型识别:Laptop / Server,显示地址/哈希/最后在线时间。


八、设置中心 — Settings 页面(/settings,717 行)

采用声明式元数据驱动(SettingDef 定义 key/label/type/options/defaultValue),三大部分:

8A. 通用设置(SettingsPage.tsx)

toggle / select / number / text / textarea 五种控件类型,按 SettingGroup 分组。已见 local.webLaunchMode(网页打开方式)等。

8B. 模型配置(ModelConfigPanel.tsx,1601 行)

  • CRUD 模型(pi:db-create/update/delete-model)
  • 启用/禁用(db-set-model-status)
  • 选中默认模型(db-set-selected-model)
  • 按 provider 设置 API Key(db-set-api-key-for-provider)
  • 设置上下文窗口(pi:set-model-context-window)
  • 能力位管理(CAPABILITIES:text2img/img_edit/text2video 等)
  • 刷新模型列表(pi:refresh-models)
  • 注册自定义 provider(pi:register-custom-provider)

8C. 数据存储(StoragePanel.tsx)

  • 显示 SQLite 数据库文件路径
  • 在 Finder 中打开 / 复制路径 / 刷新

九、底层支撑能力

9.1 自研 Agent 工具集(agentTools/)

9 个工具,类 Anthropic content 数组协议:

工具 mutating 用途
read 否 读文件,支持行范围
write 是 写文件
edit 是 精确文本替换(多 disjoint 块)
ls 否 列目录
grep 否 内容搜索
find 否 文件查找
bash 否 执行命令
system_info 否 系统摘要
preview 否 预览图片/HTML/代码

mutating 标记影响 UI 边框样式(写操作高亮警示)。文本回退模式用 ⌈name⌋{json}⌋ 标记解析。

9.2 持久化层(sqlite/)

全部用 Node 内置 node:sqlite(非第三方依赖):

Store 职责
modelStore provider/model 表 + CAPABILITIES 能力位
sessionStore pi 会话存储(对接 session-backends/sqlite-node)
SqliteSessionManager 会话管理器
settingsStore KV 设置 + DB↔文件同步迁移

数据落盘于 userData/.opennativeai/agent/,默认全本地。

9.3 preload 桥接(850 行)

contextBridge.exposeInMainWorld 暴露三个全局对象:

  • window.pi — pi Agent API(会话/模型/设置/图像视频生成)
  • window.llama — 本地 llama.cpp API(含工具调用事件)
  • window.electron — 应用通用 API + AgentLink 设备 API

十、功能矩阵总览

路由 页面 核心功能 引擎
/website Website 站点库/收藏夹 —
/engine Engine 本地 GGUF 对话+工具 llama.cpp
/code Code 云端 AI 编程会话 pi agent
/design Design 节点画布创意工作流 pi agent + 图像/视频生成
/automation Automation 定时任务 pi agent
/devices Devices 局域网文件互传 bonjour
/browse Browser 内嵌全功能浏览器 BrowserView
/settings Settings 设置+模型+存储 —
/about About 关于 —

功能定位总结

OpenNative 是一个 「AI 操作系统」式桌面工作台:以本地 llama.cpp + 云端 pi agent 为双引擎,向上承载创意画布(图/视频/音频生成)、AI 编程、定时自动化三大生产力场景,横向打通内嵌浏览器与站点库做信息入口,再用 AgentLink 把多设备串成协同网络,全部数据默认留在本地 SQLite。

差异化亮点:

  • 本地+云端双引擎共存(多数同类产品只选其一)
  • 节点式画布把多模态生成编排成可视化工作流
  • AgentLink 局域网协同,无需公网即可跨设备
  • 全本地 SQLite 持久化,隐私优先
  • 自研轻量工具协议,文本标记回退不依赖函数调用 API

需要我针对某个功能深入到代码实现细节(如图生图双协议适配、画布序列化、AgentLink 文件传输协议、或 pi 会话存储迁移机制)吗?