跳到主要内容
Engineering Notes2026年6月23日· Deskmate Team

本地优先的数据模型

用一个能被用户检查的目录结构,解释 Deskmate 为什么把数据放在本机。

当一个 AI 工作台开始接触你的文件、终端、浏览器和工作记录时,“数据放在哪里”就不再是工程细节,而是信任问题。Deskmate 的回答很直接:默认放在你自己的机器上。

本地优先不是营销词,而是一个能被用户检查的数据模型。

这句话的关键在“能被检查”。你不需要相信我们的承诺,只需要打开一个目录,看清楚每一份数据以什么格式、存在什么位置。下面就把这个数据模型摊开讲。

为什么不把所有数据放云端

把全部对话、Agent 配置和工具日志放进云端,对厂商来说更省事:统一存储、统一分析、统一计费。但代价由用户承担——你的工作上下文、你打开过的文件路径、你跑过的命令,全都离开了本机。

桌面 AI 工作台和聊天网站不一样。它处理的是真实工作:本地代码库、私有文档、终端会话。这类数据天然属于本机,离开本机既增加泄露面,也让你失去对自己工作记录的控制权。所以 Deskmate 的默认假设是反过来的:数据先留在本地,只有在你明确发起外部调用时才离开。

~/.deskmate/ 的目录结构

所有本地状态集中在一个用户目录下。它就是普通文件夹,你可以用任何文件管理器或终端直接查看:

~/.deskmate/
├── agents/
│   ├── default/
│   │   └── AGENT.md
│   └── research/
│       └── AGENT.md
├── sessions/
│   ├── 2026-06-23-153012/
│   │   └── messages.jsonl
│   └── 2026-06-23-181144/
│       └── messages.jsonl
├── logs/
│   └── deskmate.sqlite
└── config.json

这个结构本身就是文档。agents/ 放 Agent 定义,sessions/ 按会话保存消息,logs/ 保存可观察的运行日志,config.json 是顶层配置。没有隐藏的二进制黑盒,每一类数据都对应一个你能打开的文件。

为什么 Agent 用 AGENT.md

每个 Agent 的定义是一份 AGENT.md——一个普通的 Markdown 文件,写明它的角色、可用工具、启用的 MCP server 和行为约束。

选 Markdown 不是偷懒。它意味着 Agent 配置是人能读、能 diff、能进版本控制的纯文本。你可以用编辑器修改它,可以把它复制给同事,可以在 git 里追踪它的每一次改动。Agent 不是藏在数据库行里的一组字段,而是一份你随时可以审阅的说明书。

为什么消息用 JSONL

对话记录用 JSONL:每行一个 JSON 对象,一行一条消息。

{"role":"user","content":"帮我整理这个目录","ts":1750681812}
{"role":"assistant","content":"好的,我先列出文件…","ts":1750681813}

JSONL 的好处是追加友好、流式可读、易于解析。会话进行时只需往文件尾部追加一行,不必重写整份记录;事后想分析或导出,用任何语言几行代码就能逐行读取。它既适合程序处理,也方便你直接用 tail 或编辑器翻看一段对话发生了什么。

为什么日志用 sqlite

运行日志——工具调用、执行结果、计划任务的触发记录——存进一个 SQLite 文件。

消息是线性追加的文本流,日志却需要查询:按时间筛选、按 Agent 聚合、按工具统计。SQLite 给了你一个零运维的本地数据库:单文件、无服务进程、支持 SQL。它依然在你的机器上,依然可以被你打开(用任意 SQLite 客户端),但比纯文本更适合做可观察性。文本流用 JSONL,结构化查询用 SQLite,各取所长。

本地优先与外部调用边界

本地优先不等于完全离线。模型推理通常发生在外部,你配置的 MCP server 也可能访问网络。诚实的说法是:数据默认留在本机,但有一条清晰的外部调用边界。

这条边界的意义在于它是显式的。离开本机的,是你主动发起的模型请求和你启用的工具调用;不会离开的,是你的 Agent 定义、会话记录和运行日志——它们一直躺在 ~/.deskmate/ 里。你能看到边界在哪,也就能决定什么该跨过去。

Deskmate 仍处于 early access 阶段,目录结构和文件格式仍可能调整。但“数据放在你能检查的地方”这个原则不会变。

这就是本地优先的全部含义:不是一句口号,而是一个你可以打开、阅读、追踪和审计的数据模型。

继续阅读

把这些想法变成你的桌面 Agent

下载 Deskmate,连接模型与工具,开始处理真实任务。