关于 Ownly
Ownly 是本地优先的所有物记录与决策工具,适合希望自行保存和管理个人记录的人。它以带 YAML frontmatter 的 Markdown 文件为数据源,并通过本地 MCP 服务提供受限读取及预览后提交的写入。
主要功能
- 01以 Markdown 和 YAML 保存记录
- 02追踪物品、经常性支出与体验
- 03执行确定性数据健康检查
- 04默认只读的本地 MCP 服务
- 05预览、备份并提交写入
适用场景
- 01记录物品成本、使用情况和生命周期
- 02整理订阅及即将到期的续费
- 03审阅物品使用或退出后的经验
- 04在 Agent 会话中读取本地记录并确认修改
MCP 相关
本地 MCP 服务通过 STDIO 向兼容客户端提供 Ownly 数据读取工具;默认只读。写入需在启动时显式授权,并分别进行预览与提交。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @ownly-app/mcpOWNLY_DATA_DIRAbsolute path to a parent containing Ownly/ or directly to a custom Ownly data root containing Objects/.OWNLY_MCP_ALLOW_WRITESet to 1 to enable two-phase persistent write commits. Omit for read-only mode.OPENROUTESERVICE_API_KEY密钥OpenRouteService API key used by local Planner travel-leg refresh and travel-time optimization for walking/driving/bicycling.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Ownly
少一些拥有,多一些生活,更明智地做决定。
以本地数据为先的所有权记忆与决策记录簿。
Ownly 可帮助你记录自己拥有什么、花费多少、如何使用,以及从中学到了什么。个人数据以纯 Markdown 和 YAML frontmatter 的形式保存在 Ownly 数据文件夹中。
Ownly 不托管你的数据。你可以自行选择文件的存放位置。
Ownly 数据文件夹可以存放在普通本地目录中,也可以存放在由你控制的个人云服务同步的本地文件夹中。Obsidian 便于查看 Markdown,但使用托管版 Web 应用、已安装的 PWA、Agent CLI 或本地 MCP 服务时,并不需要 Obsidian。
打开 Ownly
| 入口 | 是否需要 Obsidian? | 是否需要本地进程? | 适用场景 |
|---|---|---|---|
| GitHub Pages Web 应用 | 否 | 否 | 在受支持的桌面浏览器中立即使用 |
| 已安装的 PWA | 否 | 否 | 通过独立应用窗口启动,并支持离线加载应用外壳 |
| Obsidian 插件 | 是 | 否 | 原生 Vault 集成和直接处理 Markdown |
| Agent CLI | 否 | 是 | 确定性脚本编写和经过验证的本地修改 |
| 本地 MCP | 否 | 是 | 为兼容的 Agent 提供有限范围的读取功能,以及需主动启用、提交前预览的维护操作 |
Web 应用和 PWA 使用相同的浏览器运行环境。安装只会改变启动方式,不会改变数据模型。产品主页本身不是 PWA 界面。
首次使用:选择数据存放位置
如果 Ownly 启动时没有现有文件夹的访问权限,请先选择存储位置,然后创建新数据或打开现有的 Ownly 数据文件夹。
在此设备上
选择普通的本地文件系统文件夹。Ownly 会直接读取和写入该文件夹。除非你在 Ownly 之外配置同步,否则不会进行同步。
在你的个人云文件夹中
选择一个已由 Dropbox、Google Drive、OneDrive、iCloud Drive 或其他你控制的服务同步的本地文件夹。
Ownly 仍使用普通本地文件,不会调用服务商 API、OAuth 或服务商凭据,也不会使用 Ownly 云端镜像或独立的远程文件系统。同步由服务商依据其自身的隐私和安全政策处理。
如果服务商支持仅在线占位文件,请确保该文件夹可离线使用;并且每个 Ownly 数据文件夹只使用一个同步服务商,以减少文件副本冲突。
创建新数据
选择一个父级位置,例如 Documents、Obsidian Vault 根目录、本地个人云文件夹,或一个已命名为 Ownly 的空文件夹。
Ownly 会初始化:
Ownly/
Objects/
Accounts/
Snapshots/
Reviews/
Trips/
Trip Places/
Trip Visits/
Trip Legs/
Trip Expenses/
Logs/
Object Experiences/
Archive/
Objects/
Accounts/
Snapshots/
Reviews/
Object Logs/
如果所选文件夹已经命名为 Ownly,Ownly 会直接使用该文件夹,不会创建 Ownly/Ownly。
打开现有数据
选择任何受支持的文件系统位置:
- 已初始化且包含
Objects/的 Ownly 数据根目录; - 名为
Ownly的空文件夹或已初始化文件夹; - 包含
Ownly/子文件夹的 Obsidian 库; - 使用插件所配置 Ownly 数据文件夹的 Obsidian 库;
- 以上任一位置中的文件夹,且该文件夹由用户自己的服务商在本地同步。
浏览器会请求明确的读写权限。个人 Markdown 文件不会上传到 GitHub Pages,也不会复制到 PWA 服务工作线程缓存中。如果所选文件夹由第三方服务商同步,该服务商可能会独立于 Ownly 上传和同步这些文件。
托管的 Web/PWA 运行环境会使用 Google Analytics 4 衡量 ID G-KXXVS33FQ2 来衡量产品使用情况;如果在构建时配置了 NEXT_PUBLIC_CLOUDFLARE_WEB_ANALYTICS_TOKEN,也可以加载 Cloudflare Web Analytics,以获取汇总流量和 Web Vitals 数据。Ownly 自定义分析事件绝不会包含 Markdown 内容、本地文件名、表单值、对象记录、评审、账户快照、所选文件夹数据、本地路径、推断出的服务商名称或 MCP 工具结果。Obsidian 插件、Agent CLI 和 MCP 运行环境不会加载上述任一 Web 分析服务。
推荐存储方式
独立本地使用:
<My local folder>/
Ownly/
Objects/
Accounts/
Snapshots/
Reviews/
Trips/
Trip Places/
Trip Visits/
Trip Legs/
Trip Expenses/
Logs/
Archive/
在 Obsidian 库中:
<My Obsidian Vault>/
Ownly/
Objects/
Accounts/
Snapshots/
Reviews/
Trips/
Trip Places/
Trip Visits/
Trip Legs/
Trip Expenses/
Logs/
Archive/
在个人云同步的本地文件夹中:
<My Dropbox / Google Drive / OneDrive / iCloud Drive folder>/
Ownly/
Objects/
Accounts/
Snapshots/
Reviews/
Trips/
Trip Places/
Trip Visits/
Trip Legs/
Trip Expenses/
Logs/
Archive/
这三种布局使用相同的 Ownly 数据模型。个人云存储选项不会引入第二种存储后端;外部服务商会同步常规文件系统文件夹。
产品原则
- 用户掌控存储 — Ownly 不会托管你的个人账本。文件系统文件夹的位置由你决定。
- 默认本地使用 — 不需要云账户、托管数据库、服务商 OAuth 或强制同步。
- 原生 Markdown — 记录保持可移植且便于阅读。
- 以决策为导向 — 观察、购入或放弃、使用、退出和评审。
- 可恢复的变更 — 归档和恢复与永久删除是不同的操作。
- 统一数据模型 — Web、PWA、Obsidian、CLI 和 MCP 使用相同的架构和目录结构。
- 适配事实数据 — 脚本和外部 AI Agent 可以使用确定性数据契约;Ownly 本身不是 AI 助手。
Ownly 跟踪的内容
| 记录 | 用途 |
|---|---|
| 实物 | 购买、使用、成本、状况、退役、转让或丢弃的生命周期 |
| 经常性成本 | 订阅或其他重复性支出、计费周期、状态和年化成本 |
| 一次性体验 | 计划、预算、实际成本、地点、完成情况和评审 |
| 快照 | 特定时间点的净资产和账户余额事实 |
| 评审 | 结构化的使用后、退出后、月度或年度反思 |
| 对象体验日志 | 仅追加的使用、问题、维护、遗憾、经验、比较或退出事件 |
面向事实数据的 Agent CLI
Ownly 为脚本和外部 Agent 提供确定性的 JSON 读写命令。它不包含模型 API、嵌入、AI 聊天或生成式建议。
export OWNLY_VAULT=/path/to/location-containing-Ownly
# Recommended (wyqd remains for backward compatibility)
npm run --silent ownly -- object list --json
# Legacy alias
npm run --silent wyqd -- object list --json
npm run --silent wyqd -- object get --id <id> --json
npm run --silent wyqd -- object history --id <id> --json
npm run --silent wyqd -- object review-needed --json
npm run --silent wyqd -- recurring list --active --json
npm run --silent wyqd -- summary --json
参见:
CLI 数据位置可以指向 Obsidian 库或其他包含 Ownly 数据文件夹的文件系统位置,包括由用户掌控的同步本地文件夹。
Agent / MCP
Ownly 还为 Codex、Claude Code 及其他能够启动本地 STDIO 进程的 MCP 客户端提供本地优先的 MCP 服务。默认情况下,该服务为只读;持久化修改需要明确的启动权限,并且必须单独调用预览和提交。
MCP 服务是基于经过验证的 Ownly 数据模型构建的适配器。它不会创建第二个数据库、托管镜像或内置 AI 助手。
MCP 工具涵盖:
- 数据摘要和 Doctor 健康检查;
- 对象搜索和范围受限的对象事实;
- 包含审查和追加式经验日志的对象历史记录;
- 当前有效的定期费用;
- 即将续订的订阅;
- 按付款账户分组、并将不同货币分开计算的定期费用;
- 确定性的待审查记录。
- Planner 行程、访问记录、预算估算和日历规划,以及两阶段日程编辑和本地 OpenRouteService 路线刷新/优化。
- 选择加入的创建和更新、生命周期变更、追加式日志、审查、快照,以及可恢复的归档/恢复;
- 短期的变更前/变更后预览、写入前备份、过期写入冲突检测,以及幂等提交。
事实来源始终是用户选择的 Ownly 数据文件夹。MCP 工具返回的事实可能进入所连接的外部 Agent 的上下文,因此 Ownly 不会声称在 Agent 会话期间每条选定的事实都始终保留在设备上。
使用 npx -y @ownly-app/mcp --data-dir <vault-or-data-root> 安装(源码位于 packages/mcp)。请参阅 Ownly MCP 指南,了解 Codex 和 Claude Code 的设置、隐私边界及提示词示例。
当前运行时状态
| 区域 | 状态 |
|---|---|
| 产品主页 | 静态双语产品说明,内嵌交互式预览 |
| 托管 Web 应用 | 静态 GitHub Pages 运行时,支持用户选择文件系统 |
| 已安装的 PWA | 仅限应用路由的安装界面、独立启动和缓存的应用外壳 |
| Obsidian 插件 | 基于共享 Ownly 数据模型的原生 Vault 界面 |
| Agent CLI | 稳定且类型严格的事实就绪 JSON 契约 |
| 本地 MCP | 默认只读;可选择在规范的 Ownly 证据存储中进行两阶段写入 |
| 数据存储 | 用户控制的文件系统文件夹中的纯 Markdown + YAML frontmatter |
| 修改安全性 | 验证、预览/提交确认、原子写入、安全备份、审计日志、冲突检测、归档/恢复及 CI 契约 |
当前验证情况和已知覆盖范围缺口详见 质量基线。
浏览器支持
直接访问文件夹使用 File System Access API。
- 推荐:最新版桌面版 Chrome 或 Microsoft Edge。
- 不受支持的浏览器可以查看产品页面和内嵌预览,但无法连接真实的 Ownly 数据文件夹。
- 移动设备上的文件夹直接访问不属于生产支持目标。
- 重启或重置权限后,可能需要重新授予浏览器权限。
- 个人云文件夹必须由其提供商作为可用的本地文件系统文件夹提供;Ownly 不提供远程驱动器 API 备用方案。
请参阅 Web 运行时,了解隐私边界、PWA 行为和部署详情。
Obsidian 插件
可从 Obsidian 社区插件中安装:
👉 安装 Ownly
对于 Web/PWA 用户,插件是可选的。只有在实际的 Vault 或 Obsidian 运行时中才使用术语 Obsidian Vault;跨运行时的存储术语是 Ownly 数据文件夹。
数据健康状况
Ownly 内置确定性的 Doctor 检查,可发现以下问题:
- ID 重复;
- 不受支持的架构版本;
- 无效的费用或日期;
- 缺失的对象/审查引用;
- 过期的快照;
- 缺失的数据目录。
这些检查针对 Ownly 事实和文件系统可访问性进行。Doctor 不会检查云服务提供商账户,也不会使用 AI。
文档
开发
npm ci
npm run validate
npm run test
npm run test:e2e:data
npm run test:mcp
npm run wyqd -- --vault <path> object list --json
仅针对 MCP 特定变更,才会额外运行 MCP 包验证:
npm install --prefix packages/mcp --ignore-scripts --no-audit --no-fund
npm run build --prefix packages/mcp
node packages/mcp/dist/index.js --help
(cd packages/mcp && npm pack --dry-run)
许可证
MIT。请参阅 LICENSE。Ownly 不托管个人账本数据。用户选择的文件系统同步提供商或外部 MCP 客户端可能会根据其自身的隐私和安全政策处理数据。托管的 Web/PWA 可能会使用 GA4 收集有限的产品采用情况事件,并使用 Cloudflare Web Analytics 收集汇总流量和 Web Vitals;Obsidian 插件、CLI 和 MCP 运行时均不会加载这两种分析服务。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。