为笔记打造的 AI 模型
数据不离开设备
每个模型都在用户的手机、平板或笔记本电脑上运行。私密日记、健康笔记和公司数据都不会在服务器上处理,因此任何笔记都能放心使用这些功能。
没有按次调用费用
给每篇笔记起标题、给每张图片分类、转写每一场会议,都不按次计费。你的团队加一项功能,不必先预估云端开支。
离线可用
模型下载完成后,所有功能都无需联网。在飞机上,或在没有信号的会议室里,标题、听写和草图整理照样能用。
示例
每个示例都回放某个模型的真实输出。打开模型页面查看完整详情,也可以用你自己的文本或草图试试 Gist、Emo 或 Shapes。
Title · 标题与描述
为每篇笔记加上标题
用户写作时,Title 会建议一个简短的标题和描述,并随着笔记变长更新两者。Title 只在 Apple 平台上运行,也可能写错细节,所以要让用户能编辑它写的内容。
Gist · 内容主题标注
自动给笔记打标签
Gist 从 36 个主题标签中为每篇笔记分配一个或多个。用这些标签把笔记整理到各个主题分页,并让用户按主题筛选搜索结果。Gist 支持 101 种语言。
Emo · 表情符号建议
为小标题和列表项推荐表情符号
一行写完,Emo 就为它推荐一个表情符号:续办护照配 🛂,电费账单配 💡,团队会议配 👥。每条建议用时不到 2 毫秒,跟得上用户打字的速度。
Eye · 图像分类 · 测试版
给图片加标签并分类
Eye 能识别白板、截图、地图和照片,并认出每张照片里有什么。用它按类型整理图片,用户就能很快找到周二的那张白板。
Voz · 语音识别
直接听写进笔记
用户说话时,Voz 几个词几个词地把语音写进笔记。实时转写只在 Apple 平台上提供;在 Android 和 Web 上,Voz 会在录音结束后转写整段录音。Voz 支持 25 种欧洲语言,可以搭配 Ear 先识别语种。
Who · 谁说了什么 · 测试版
标出谁说了什么
把 Who 和 Voz 搭配使用,会议记录的每一行都会标明是哪位说话人说的。Who 在每五分钟内最多能区分四位说话人,在整场会议中能区分更多。每个人都有自己的麦克风时(比如视频通话),Who 的效果最好。
Shapes · 形状识别
把潦草的草图变成规整的形状
在句子下面划线、圈出一个词,或画一张流程图,Shapes 会在 10 毫秒内把每一笔都变成规整的形状。会议上画的笔记和图表,整洁到可以直接分享。
开始使用
从同一个 SDK 安装你需要的模型,支持 Swift、Kotlin 和 JavaScript。示例用 Gist 和 Emo 给笔记打标签;在 Apple 平台上,还会用 Title 为笔记写标题。
iOS, macOS, Linux, Windows
// Swift Package Manager
.package(url: "https://github.com/Desert-Ant-Labs/desert-ant-core.git", from: "4.3.0",
traits: ["MLX"])
// target dependencies
.product(name: "Title", package: "desert-ant-core")
.product(name: "Gist", package: "desert-ant-core")
.product(name: "Emo", package: "desert-ant-core")
import Title
import Gist
import Emo
let titles = try await Titles(directory: modelFolder)
let gist = Gist()
let emo = Emo()
// after a pause in typing
let card = try await titles.describe(note)
let topic = try await gist.classify(note).first
let emoji = try await emo.suggestions(for: note).first?.emoji
Android
// build.gradle.kts (Maven Central)
implementation("ai.desertant:gist:4.3.0")
implementation("ai.desertant:emo:4.3.0")
import ai.desertant.emo.Emo
import ai.desertant.gist.Gist
val gist = Gist(context)
val emo = Emo(context)
// after a pause in typing
val topic = gist.classify(note).firstOrNull()
val emoji = emo.suggestions(note).firstOrNull()?.emoji
Web, Node.js
npm i @desert-ant-labs/gist @desert-ant-labs/emo @litertjs/core
import { Emo } from "@desert-ant-labs/emo";
import { Gist } from "@desert-ant-labs/gist";
const gist = await Gist.load();
const emo = await Emo.load();
// after a pause in typing
const [topic] = await gist.classify(note);
const [suggestion] = await emo.suggestions(note);
在做笔记应用?
告诉我们你想为用户加上什么,我们会帮你挑选模型、规划集成。






