VibeKnow数据流是以自然语言意图为起点、经AI Agent解析后在本地CLI/内存信号链/远程服务间动态分发与反馈的闭环系统。用户输入触发Intent Parser生成结构化意图,Signal Graph实时维护依赖关系并驱动级联更新,Action Dispatcher分发至多出口;所有写操作须经signal流,SQLite仅为只读缓存,云同步通过delta_patch反馈,未解析输入则记录错误码VKB-403用于模型迭代。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要用图解方式说明VibeKnow中数据的流向,必须先明确其底层逻辑:它不是传统客户端→服务端→数据库的单向管道,而是以“自然语言意图”为起点,经AI Agent解析后,在本地CLI、内存信号链、远程服务三者间动态分发与反馈的闭环系统。
第一步:从用户输入开始画起
在白板或绘图工具中,画一个带阴影的椭圆,标注【用户说:“把上周所有含‘焦虑’的日记生成情绪热力图”】。这句自然语言是整个流程唯一的原始输入,【不可跳过语义解析环节,否则后续所有节点都会错位】。
从该椭圆引出一条粗箭头,指向右侧一个矩形框,标注“VibeKnow Agent Core”。不要在这里写“AI模型”或“大语言模型”,因为VibeKnow实际调用的是alien-signals构建的轻量响应式内核——它不加载完整LLM权重,而是按需触发预编译的intent handler微模块。
第二步:拆解Agent Core内部信号流转
在“VibeKnow Agent Core”框内,用双向箭头连接三个平行组件:左侧【Intent Parser】→中间【Signal Graph】→右侧【Action Dispatcher】。
Intent Parser接收原始语句,输出结构化intent对象(如{action: "chart", target: "journal", filter: {keyword: "焦虑", time: "last_week"} })。这一步失败会导致整个流程中断,所以Parser必须带fallback机制——比如当时间表述模糊时,自动弹出时间选择UI,而不是报错退出。
Signal Graph是核心。它不是静态树,而是一个运行时构建的有向图:每个signal节点(如journal_list、filtered_entries、heatmap_data)都维护自己的依赖链(in-degree)和订阅链(out-degree)。当filtered_entries更新,heatmap_data自动重算;当用户手动修改某条日记,journal_list signal触发级联更新。这正是alien-signals用双向链表实现的图结构优势——删除/插入节点开销O(1),不像Set依赖遍历。
Action Dispatcher负责把计算结果分发到不同出口:控制台输出→本地文件写入→调用curl发往VibeKnow云API→触发macOS通知中心。注意:它不直接操作DOM或React组件,所有UI更新由外部监听signal变化后驱动。
第三步:标出关键跨层边界与数据形态转换
在Signal Graph下方,画一条虚线,标注“Runtime Boundary”。虚线下方并列三个图标:终端CLI窗口(含$符号)、SQLite数据库文件图标、云API图标(带闪电标记)。
从Signal Graph向下引出三条带标签的箭头:
→ “JSON序列化 → fs.writeFileSync” 指向SQLite图标(实际写入的是journal.db中的entries表,但VibeKnow强制要求所有写操作经signal流触发,禁止直连DB);
→ “字符串流 → process.stdout” 指向CLI窗口(这是调试模式默认出口,生产环境关闭);
→ “Base64编码+JWT签名 → fetch()” 指向云API图标(只有开启同步开关且用户授权后才启用,未授权时箭头打叉)。
特别提醒:SQLite中的数据永远是只读缓存,真实source of truth是内存中的signal graph。重启App后,所有signal从SQLite重新hydrate,但用户实时编辑行为只影响内存graph,不立刻落盘——这是为了防止高频编辑导致I/O阻塞主线程。
第四步:补全反馈环与异常路径
从云API图标反向画一条细虚线箭头,回到Signal Graph,标注“sync_ack + delta_patch”。这条线只在成功同步后触发,用于合并远程变更(如多端编辑冲突时,采用last-write-wins策略,timestamp精度到毫秒)。
在Intent Parser上方单独画一个红色三角警告图标,标注“Unparseable Input”。从此图标引出两条线:一条指向弹窗UI组件(显示“请换种说法,比如‘过去7天’”),另一条指向本地日志文件(写入原始输入文本+时间戳+错误码VKB-403)。【此错误码不可忽略,它是后续训练intent parser微模块的唯一标注数据源】。

















