内容
<p align="center">
<img src="tiro/frontend/static/logo-128.png" alt="Tiro" width="80" height="80">
</p>
<h1 align="center">Tiro</h1>

<p align="center"><strong>一款适用于AI时代的本地优先阅读操作系统。</strong></p>
<p align="center"><em>"...如果没有你,神谕将是沉默的。"<br><small>— 古罗马的西塞罗致Tiro,公元前53年</small></p>
---
Tiro将网页和电子邮件新闻稿保存为干净的markdown文件,存储在您的机器上,丰富它们的人工智能提取标签、实体和摘要,并使用Claude Opus 4.6进行深入的跨文档推理 — 每天的摘要都能发现来源之间的矛盾、按需进行信任分析,并学习阅读偏好以适应您。
以[西塞罗的自由人](https://en.wikipedia.org/wiki/Marcus_Tullius_Tiro)命名,他为后代保存和整理了主人的作品,Tiro为您的数字知识做了同样的事情。
*诞生于[用Opus 4.6构建:Claude Code Hackathon](https://cerebralvalley.ai/e/claude-code-hackathon)(2026年2月10日至16日)— Anthropic和Cerebral Valley举办的为期一周的虚拟黑客马拉松,庆祝Claude Code一周年 — 在那里,它仅用六天就完成了开发,并进入了约500个参赛作品的前30名。*
原始的黑客马拉松提交作品被保留、冻结在[esagduyu/project-tiro](https://github.com/esagduyu/project-tiro)下,其原始的MIT许可证。**此仓库是继续**: 开发在这里继续进行,使用AGPL-3.0-or-later许可证,从下面描述的0.2.0安全和完整性版本开始。
---
## 视频演练(黑客马拉松时代的演示)
▶ **[观看3分钟的黑客马拉松提交视频](https://www.loom.com/share/61ee7ffe076c4b68abeba6dd80423172)**
---
## 为什么是Tiro?
- **本地优先** — 您的数据生活在您的机器上,以纯markdown文件、SQLite和ChromaDB的形式存在。没有云,没有锁定。
- **模型无关的数据层** — 内容存储在开放的格式中,可移植且可与任何AI一起使用。
- **有偏见的智能** — Opus 4.6生成排名摘要,按主题和实体对文章进行聚类,并标记偏见和无来源声明。
- **最小摩擦** — 一条命令即可运行,干净无干扰的阅读器UI,全键盘导航。
- **拥有您的上下文** — 一键导出您的整个图书馆为可移植的markdown + JSON。
---
## 从黑客马拉松到0.2.0
黑客马拉松版本证明了产品;它并不试图在任何地方都安全运行,而是一个可信的本地主机。 0.2.0版本(“第0阶段 - 安全性和完整性”)是一个从头开始的强化通行证 — 七个里程碑,约80个提交,每个提交在落地前都经过审查 — 使Tiro成为您可以信任的阅读生活:
**安全脊柱**
- **密码身份验证**,使用bcrypt哈希,滑动30天会话和哈希API令牌用于非浏览器客户端(Chrome扩展,MCP服务器,脚本)。`tiro set-password`,`tiro token create|list|revoke` CLI。
- **关闭失败路由** — 每个路由都需要身份验证,除登录/设置/状态/注销/健康检查之外;HTML页面重定向到`/login`;FastAPI的文档端点已禁用。路由遍历测试强制执行允许列表作为可执行不变式,因此自动覆盖任何未来路由。
- **CSRF和Host-header强化** — 在cookie身份验证的mutation(包括身份验证路由本身)上进行`Sec-Fetch-Site`/Origin检查和源自有效绑定地址的Host验证。LAN模式如果没有密码则拒绝启动。
- **XSS在两端关闭** — 服务器端[nh3](https://github.com/messense/nh3) sanitization所有获取的HTML在markdown转换之前;客户端[DOMPurify](https://github.com/cure53/DOMPurify)超过标记加上每个`innerHTML`汇聚点的转义。中期审查发现并修复了一个通过未验证LLM输出的存储XSS — 模型响应现在在源头上验证,在汇聚点上转义。
- **完全前端供应商**(marked,DOMPurify,Chart.js,d3)— 运行时从CDN加载的内容为零,经测试强制执行。Tiro运行并保持可审计,完全离线。
**数据完整性**
- **原子摄入** — 保存一篇文章是一个分阶段的管道,如果失败则干净地回滚,在SQLite,ChromaDB,markdown文件和音频之间留下零孤儿。ChromaDB中断是非致命的:文章被标记为`pending`,后台循环重试具有幂等插入。
- **一个删除协调器**清理所有四个存储,由API端点,CLI,UI和摄入回滚共享。
- **`tiro doctor [--fix]`**在两个方向上协调四个存储,隔离到`.orphaned/`的孤儿markdown文件,而不是直接删除它,并且如果文章目录看起来已移动或丢失,则拒绝批量删除行。
- **`persist_config()`** — 每个配置写入(服务器和CLI)都是原子的,保留注释,当它保存秘密时为`0600`。
**透明度和运营**
- **外部API审计日志** — 每次Anthropic,OpenAI TTS,IMAP和SMTP调用都记录为带有令牌,持续时间和成本估算的JSONL;`tiro audit` / `tiro audit --month`将其滚动到每个服务。
- **`tiro status`** — 离线图书馆摘要; `/healthz`详细信息在身份验证后面(未经身份验证的调用者仅获取`{status, version}`)。
- **仅POST生成** — 没有GET请求可以触发Opus调用或写入;摘要和分析生成是明确的POST,具有飞行中的守卫。
- **UX强化** — 自定义主题在端到端连线(带有名称验证),注销权限,设置中全宽秘密掩蔽和扩展弹出/对话框润色。
**验证**
- **169测试pytest套件**(从黑客马拉松的零开始)带有不变式别针:身份验证路由遍历,一个无CDN扫描所有模板和静态JS,以及Python 3.11语法底线保护。
- **Playwright端到端规范**(`playwright-tests/phase0.spec.js`)涵盖首次设置,登录,保存文章和删除它 — 在真正的uvicorn服务器上运行。
---
## 快速入门
**先决条件:** Python 3.11+,[uv](https://docs.astral.sh/uv/),[Anthropic API密钥](https://console.anthropic.com/),可选[OpenAI API密钥](https://platform.openai.com/api-keys)用于TTS:
```bash
git clone https://github.com/esagduyu/tiro.git
cd tiro
uv sync # 创建venv + 安装所有依赖
uv run tiro init # 创建配置、库,提示API密钥
uv run tiro run # 在localhost:8000启动服务器,打开浏览器
```
在第一次启动时,Tiro会打开`/login`并要求您设置密码(带有确认字段)以保护您的图书馆 — 除了它以外,应用程序中的所有内容都需要它。一次性登录后,您就可以进入。
就是这样。通过在输入框中粘贴URL来保存您的第一篇文章。
**用演示内容填充种子:** 要快速将大约22篇文章填充到图书馆中以获得完整的演示体验:
```bash
uv run python scripts/seed_articles.py # 摄入文章,设置评分 + 贵宾
```
然后运行`tiro run`,如果需要,可以评级几篇文章,然后单击“分类输入框”以查看Opus对您的阅读进行分类。
**在手机或平板电脑上阅读:** 使用`--lan`运行Tiro,使其可从您本地网络上的任何设备访问:
```bash
uv run tiro run --lan # 绑定到0.0.0.0,打印您的LAN IP
```
然后在您的手机上打开`http://<your-ip>:8000`。移动UI具有响应式侧边栏和触摸友好控件。
> **提示:** 如果您使用`direnv`,请在您的`.envrc`中设置`ANTHROPIC_API_KEY`,而不是将其添加到`config.yaml`。
>
> **注意:** 所有`tiro`命令都应使用`uv run tiro`运行,以便在项目的虚拟环境中执行。
---
## 安全性和您的数据
Tiro是本地优先的,但“本地”并不意味着“无保护” — 尤其是在您启用`--lan`以便从手机阅读时。以下是已有的保护措施:
- **密码身份验证。** Tiro第一次运行时,`/login`会要求您设置密码。它使用bcrypt进行哈希并存储在`config.yaml`中;会话基于cookie,并且每个使用都会滑动30天。忘记它或想旋转它? `uv run tiro set-password`从命令行重置它(现有会话在过期之前保持有效)。有一个警告:直到设置了第一个密码,任何具有访问您机器本地主机权限的人都可以先设置它 — Tiro仅在存在密码之前绑定到`127.0.0.1`,但请立即在第一次启动时设置密码(或运行`uv run tiro set-password`甚至在启动服务器之前)。
- **非浏览器客户端的API令牌。** Chrome扩展,MCP服务器和您编写的脚本不使用您的密码 — 它们使用令牌。使用`uv run tiro token create <name>`创建令牌(例如`chrome-extension`,`mcp`);原始令牌仅打印一次,因此立即复制它。在扩展程序中通过其弹出齿轮图标粘贴它。 `uv run tiro token list` / `uv run tiro token revoke <id>`管理现有令牌。
- **内容净化。** 保存的页面和电子邮件的HTML在转换为markdown之前会使用[nh3](https://github.com/messense/nh3)进行服务器端净化,客户端渲染的内容会经过[DOMPurify](https://github.com/cure53/DOMPurify)进一步净化。整个前端 — markdown渲染器、净化器、图表、图形 — 都在`tiro/frontend/static/vendor/`下提供;没有任何内容从CDN加载,因此Tiro(并且可审计)可以完全离线运行。
- **`tiro doctor`**协调构成您图书馆的四个存储 — SQLite、ChromaDB、markdown文件和缓存音频 — 在崩溃、手动文件编辑或中断的摄入之后。运行它时关闭服务器:`uv run tiro doctor`报告不一致的情况,`uv run tiro doctor --fix`修复它(孤儿markdown被隔离到`{library}/.orphaned/`,永远不会直接删除)。它故意拒绝批量删除文章行,如果您的`articles/`目录看起来像已被移动或丢失,则不能将错误配置的路径误认为是“所有内容都被删除”。
- **外部API审计日志。** 每次调用Anthropic(Haiku/Opus)、OpenAI TTS、IMAP或SMTP都会记录为 `{library}/audit/YYYY-MM-DD.jsonl`中的一行JSONL — 端点、令牌/字符、持续时间、成功率和最佳估算成本。 `uv run tiro audit`显示今天的调用; `uv run tiro audit --month 2026-07`将一个月汇总成每个服务的总数和预估支出。
- **LAN模式需要密码。** `uv run tiro run --lan`(或`config.yaml`中的`host: 0.0.0.0`)如果没有配置密码,则拒绝启动,因为它将Tiro暴露在您的本地网络上。(仅限受信任的网络存在一个明确的 `--insecure-no-auth`逃生阀 — 不推荐。)
## 功能
### 摄入
- **保存网页** - 粘贴URL,获取干净的markdown文章,并提取元数据
- **导入电子邮件** - 拖放.eml文件或批量导入通讯稿目录
- **Chrome扩展** - 从任意浏览器标签一键保存(参见下面的Chrome扩展)
- **自动丰富** - Haiku在每次保存时提取标签、命名实体和2-3个句子的摘要
### 智能(Opus 4.6)
- **每日摘要** - 三种摘要变体:按重要性排名,按主题分组,按实体分组。Opus查找来源之间的矛盾,连接线程,并显示您会错过的洞察。可调度为自动每日生成 + 电子邮件发送。
- **分析** - 按需进行偏见检测、事实置信度评分和新颖性评估。仅在您要求时运行(节省令牌)。
- **学习偏好** - 评级几篇文章后,Opus根据您表现出的品位将其他文章分类为必读/足够总结/丢弃层。
### 阅读
- **干净的阅读器** - 无干扰的文章视图,完整的markdown渲染
- **听文章** - OpenAI TTS大声朗读文章,流式播放(~2秒内开始),缓存为MP3。如果未配置OpenAI密钥,则回落到浏览器语音合成。
- **语义搜索** - 查找文章的含义,而不仅仅是关键词
- **相关文章** - 自动计算保存时AI生成的连接笔记
- **知识图** - 交互式d3.js力导图显示实体和标签通过文章共现连接。密度滑块,点击-探索文章面板。
- **内容衰减** - 未参与的文章会随着时间的推移从摘要中自然淡出
### 界面
- **侧边栏导航** - 持久的左侧侧边栏,包含输入框、摘要、图表、统计数据、设置。 在较窄的屏幕上折叠为图标,移动设备上为汉堡菜单。
- **过滤面板** - 右侧选项卡打开一个滑动面板,包含11个过滤器:AI层、评级、来源、标签、已读状态、VIP、摄入方法、日期范围。 活动过滤器药丸。 URL同步状态。
- **黑暗模式** - 在Papyrus(温暖的奶油色)和Roman Night(温暖的炭灰色)主题之间切换。 通过localStorage持久化。
- **主题** - 基于CSS变量的主题系统,具有20个 `--tiro-*`变量。 罗马风格的调色板:陶土色调、橄榄色、暖金色链接。 支持自定义主题导入。
- **分页** - 可配置的页面大小(25/50/100或无限),服务器端偏移/限制分页,键盘友好导航。
### 生产力
- **键盘优先** - 完整的`j`/`k`/`Enter`/`Esc`导航,`1`/`2`/`3`评级,`f`过滤面板,`?`快捷键叠加层。
- **Gmail集成** - 通过Gmail SMTP发送摘要邮件,通过IMAP标签监控自动摄入,配置自动同步(每5-60分钟)。
- **摘要调度** - 在设定的时间安排每日摘要生成 + 电子邮件发送。 浏览历史记录下拉列表。
- **设置页面** - 从Web UI配置电子邮件、IMAP同步计划、TTS、摘要计划、外观(主题 + 页面大小)。
- **阅读统计** - 显示已保存/阅读的文章、热门话题、来源参与度、阅读连续记录
- **导出** - 下载您的整个库为可移植的zip(markdown文件 + 元数据JSON)
- **MCP服务器** - 从Claude Desktop或Claude Code查询您的库
---
## 架构
```
Web UI(localhost:8000 - 侧边栏导航、黑暗模式、过滤面板、主题)
↕ REST API
FastAPI 后端
├── 摄入引擎(readability-lxml + markdownify + IMAP)
├── 智能层(Opus 4.6 - 摘要、分析、偏好)
├── 轻量级处理(Haiku - 标签、实体、摘要)
├── TTS引擎(OpenAI TTS流式 + speechSynthesis)
├── 查询层(ChromaDB语义搜索 + SQLite元数据)
├── 知识图(d3.js力导图可视化)
└── MCP服务器(Claude Desktop/Code集成)
↕
存储层(全部本地)
├── articles/*.md (markdown文件YAML前置元数据)
├── audio/*.mp3 (缓存TTS音频文件)
├── tiro.db (SQLite - 元数据、偏好统计数据、音频)
├── chroma/ (ChromaDB - 向量嵌入)
└── config.yaml
```
**技术栈: **MCP协议服务器,用于Claude Desktop/Code集成)
↕
存储层(全部本地)
├── articles/*.md (markdown文件,YAML前置元数据)
├── audio/*.mp3 (缓存TTS音频文件)
├── tiro.db (SQLite - 元数据、偏好、统计数据、音频)
├── chroma/ (ChromaDB - 向量嵌入)
└── config.yaml
```
**技术栈:** FastAPI、SQLite、ChromaDB、sentence-transformers、readability-lxml、markdownify、Anthropic API(Opus 4.6 + Haiku 4.5)、OpenAI TTS API
---
## CLI 命令
| 命令 | 描述 |
|---------|-------------|
| `uv run tiro init` | 初始化库,创建数据库,提示API密钥和电子邮件设置 |
| `uv run tiro run` | 在localhost:8000启动服务器并打开浏览器 |
| `uv run tiro run --lan` | 在本地网络上启动服务器(绑定到0.0.0.0) |
| `uv run tiro run --no-browser` | 在不打开浏览器的情况下启动服务器 |
| `uv run tiro export -o backup.zip` | 将库导出为zip(支持 `--tag`、`--source-id`、`--rating-min`、`--date-from` 过滤器) |
| `uv run tiro import-emails ./newsletters/` | 从目录批量导入.eml文件 |
| `uv run tiro setup-email` | 配置Gmail SMTP + IMAP集成 |
| `uv run tiro check-email` | 检查IMAP收件箱中的新通讯稿 |
| `uv run tiro-mcp` | 启动MCP服务器(用于Claude Desktop/Code集成) |
| `uv run tiro set-password` | 设置或重置Tiro密码 |
| `uv run tiro token create <name>` | 为非浏览器客户端创建API令牌(显示一次) |
| `uv run tiro token list` | 列出现有的API令牌 |
| `uv run tiro token revoke <id>` | 撤销API令牌 |
| `uv run tiro doctor [--fix] [--json]` | 检查(并可选地修复)SQLite、ChromaDB、markdown和音频的一致性 |
| `uv run tiro audit [--date\|--month] [--service] [--json]` | 显示外部API审计日志和成本估算 |
| `uv run tiro status` | 库状态和存储大小 - 无需运行服务器即可工作 |
| `uv run tiro delete <id>` | 从所有存储中按ID删除文章 |
---
## Chrome 扩展
`extension/` 目录中有一个最小的“保存到Tiro”Chrome扩展。
### 功能
- 显示保存时的当前页面标题和URL
- 检测URL是否已保存 - 显示“已在您的库中”并链接到它
- 可选VIP切换以将来源标记为收藏
- 成功确认,显示文章标题、来源和“在Tiro中打开”链接
- 如果Tiro服务器未运行,则显示错误状态
### 安装
1. 在Chrome中打开`chrome://extensions`(或任何基于Chromium的浏览器)
2. 启用**开发者模式**(顶部右侧的切换按钮)
3. 点击 **加载解包**
4. 从此仓库中选择 `extension/` 目录
5. Tiro图标(带有白色“T”的蓝色圆圈)出现在您的工具栏中
> Tiro服务器必须在`localhost:8000`运行,扩展才能正常工作。
---
## MCP 服务器 - 将 Tiro 连接到 Claude
Tiro 包含一个MCP(模型上下文协议)服务器,该服务器将您的阅读库公开给Claude Desktop 和 Claude Code。
一旦您设置了密码(参见 [安全性和您的数据](#安全性和您的数据)),MCP 服务器需要两个额外的环境变量:`TIRO_API_TOKEN` - 使用 `uv run tiro token create mcp` 创建一个并粘贴原始值,因为服务器像其他非浏览器客户端一样进行身份验证。 `TIRO_CONFIG` - 您的 `config.yaml` 的绝对路径,因为Claude Desktop 和 Claude Code 在任意工作目录下启动MCP 服务器,因此相对的 `./config.yaml` 通常解析为错误的位置。
### 可用工具
| 工具 | 描述 |
|------|-------------|
| `search_articles(query, ...)` | 语义搜索,支持可选过滤器(ai_tier, source_id, tag, rating, date range等) |
| `get_article(article_id)` | 获取完整文章内容和元数据 |
| `get_digest(digest_type)` | 今日每日摘要(排名,按主题,按实体) |
| `get_articles_by_tag(tag)` | 按主题标签过滤的文章 |
| `get_articles_by_source(source)` | 按来源名称或域名过滤的文章 |
| `list_filters()` | 可用的过滤器方面及其计数(层级,来源,标签,评分) |
| `save_url(url)` | 将网页保存到您的图书馆 |
| `save_email(file_path)` | 将.eml新闻稿保存到您的图书馆 |
### Claude 代码
将以下内容添加到项目的 `.mcp.json`(或 `~/.claude/settings.json`下的 `mcpServers`):
```json
{
"mcpServers": {
"tiro": {
"command": "uv",
"args": ["run", "--directory", "/path/to/tiro", "tiro-mcp"],
"env": {
"ANTHROPIC_API_KEY": "sk-...",
"TIRO_API_TOKEN": "<from tiro token create mcp>",
"TIRO_CONFIG": "/absolute/path/to/config.yaml"
}
}
}
}
```
### Claude 桌面端
将以下内容添加到Claude桌面端配置文件中:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"tiro": {
"command": "uv",
"args": ["run", "--directory", "/path/to/tiro", "tiro-mcp"],
"env": {
"ANTHROPIC_API_KEY": "sk-...",
"TIRO_API_TOKEN": "<from tiro token create mcp>",
"TIRO_CONFIG": "/absolute/path/to/config.yaml"
}
}
}
}
```
用您实际的克隆路径替换 `/path/to/tiro`,添加您的Anthropic API密钥,并按照上述说明填写 `TIRO_API_TOKEN` 和 `TIRO_CONFIG`。
---
## 导出
将您的整个图书馆(或过滤后的子集)导出为可移植的zip包:
```bash
uv run tiro export --output my-library.zip
uv run tiro export --output ai-articles.zip --tag ai
uv run tiro export --output favorites.zip --rating-min 1
```
zip包中包含:
- `articles/` — 所有markdown文件,带有完整的YAML前言信息
- `metadata.json` — 完整的结构化数据(文章,来源,标签,实体,关系)
- `README.md` — 包格式文档
还可以通过API(`GET /api/export`)和统计页面上的导出按钮提供。
---
## 快捷键
### 收件箱
| 键 | 操作 |
|-----|--------|
| `j` / `k` | 向下/向上移动通过文章 |
| `Enter` | 打开选定的文章 |
| `s` | 在选定的文章的来源上切换VIP |
| `1` / `2` / `3` | 评分:不喜欢 / 喜欢 / 爱 |
| `x` | 删除选定的文章(需确认) |
| `/` | 聚焦搜索栏 |
| `f` | 切换过滤面板 |
| `d` | 转到摘要 |
| `a` | 切换到文章视图 |
| `c` | 分类/重新分类收件箱 |
| `g` | 转到统计 |
| `v` | 转到知识图谱 |
| `?` | 显示快捷键叠加层 |
### 阅读器
| 键 | 操作 |
|-----|--------|
| `b` / `Esc` | 返回收件箱 |
| `s` | 切换VIP |
| `1` / `2` / `3` | 评分:不喜欢 / 喜欢 / 爱 |
| `x` | 删除当前文章(需确认) |
| `p` | 播放/暂停音频 |
| `i` | 切换分析面板 |
| `r` | 运行/重新运行分析(当面板打开时) |
| `d` | 转到摘要 |
| `g` | 转到统计 |
| `v` | 转到知识图谱 |
| `?` | 显示快捷键叠加层 |
### 统计
| 键 | 操作 |
|-----|--------|
| `b` / `Esc` | 返回收件箱 |
| `e` | 导出图书馆 |
| `v` | 转到知识图谱 |
| `?` | 显示快捷键叠加层 |
### 图谱
| 键 | 操作 |
|-----|--------|
| `b` / `Esc` | 返回收件箱 |
| `?` | 显示快捷键叠加层 |
### 设置
| 键 | 操作 |
|-----|--------|
| `b` / `Esc` | 返回收件箱 |
| `v` | 转到知识图谱 |
| `?` | 显示快捷键叠加层 |
---
## 项目结构
```
tiro/
├── tiro/ # Python包
│ ├── app.py # FastAPI应用,路由器注册
│ ├── cli.py # CLI命令(init,run,export,import-emails,setup-email,check-email)
│ ├── config.py # 配置加载(数据类 + YAML)
│ ├── database.py # SQLite模式和帮助器
│ ├── vectorstore.py # ChromaDB初始化
│ ├── auth.py # 密码身份验证,会话,API令牌
│ ├── sanitize.py # 服务器端HTML净化(nh3)
│ ├── lifecycle.py # 文章删除 + 消化回滚(所有四个存储)
│ ├── doctor.py # 跨存储一致性检查 + 修复
│ ├── audit.py # 外部API审计日志(JSONL)+ 成本估算
│ ├── decay.py # 内容衰减系统
│ ├── stats.py # 阅读统计跟踪
│ ├── export.py # 图书馆导出(zip生成)
│ ├── tts.py # OpenAI TTS流媒体 + 缓存
│ ├── api/ # FastAPI路由处理程序
│ ├── ingestion/ # Web + 电子邮件内容提取
│ ├── intelligence/ # Opus 4.6功能(摘要,分析,偏好)
│ ├── search/ # 语义搜索 + 相关文章
│ ├── mcp/ # MCP服务器用于Claude集成
│ └── frontend/ # HTML模板,CSS,JS,主题
├── extension/ # Chrome扩展
├── scripts/ # 实用脚本
├── pyproject.toml # 包配置
└── tiro-library/ # 默认数据目录(gitignored)
```
---
## 测试
`uv run pytest`运行Python测试套件(`tests/`)。一个小的端到端浏览器规范也位于 `playwright-tests/phase0.spec.js`(Playwright),涵盖了首次设置流程,登录,保存文章和删除文章 - 请参阅 `playwright-tests/README.md` 以了解如何运行它。
---
## Tiro的发展方向
> **Tiro是开源的阅读操作系统,它将您阅读的所有内容作为文件保存在您的机器上 - 并在它们上面提供了一个前沿模型研究助手和您自己的代理。**
在这些阶段的背后,Tiro是三个共同发展的组件:一个**阅读器**,您在其中思考(高亮,笔记,一个个人上下文层叠加),一个**代理层**,它学习您的品味并处理您的图书馆(摘要,知识图谱,最终可检查的本地代理),以及一个**收件箱零管理层**,它显示值得您关注的内容 - 在您的手机上也是如此。
完整的计划位于 [PRODUCT_ROADMAP.md](PRODUCT_ROADMAP.md) - 从当前的0.2.0 alpha到具有可选托管层的1.0的十个自成体系的阶段。以下是主要内容:
- **第一阶段 - 本地图书馆完整性(0.3):** 源合并/重命名,作者级VIP,已保存的收件箱视图,备份/恢复快照,完整的导出/导入往返。
- **第二阶段 - 高亮和笔记(0.4):** 锚定高亮和markdown笔记存储为人类可读的边车文件在您的文章旁边 - Tiro成为一个思考的地方,而不仅仅是保存。
- **第二阶段b - Obsidian双向同步(0.4.5):** 您的保险库和阅读图书馆成为一个基板; 任意工具中的编辑都会协调到另一个工具中。 阅读时段空间中没有人提供此功能。
- **第三阶段 - 私有远程访问(0.5):** Tailscale设置向导,QR登录,移动PWA,滑动分类收件箱 - 在您的手机上阅读和突出显示,同时图书馆保留在您的机器上。
- **第四阶段 - RSS和导入(0.6):** 具有OPML的订阅源,以及Readwise,Instapaper和Omnivore图书馆的导入程序 - Tiro不应该从零开始。
- **第五阶段 - 可安装的应用(0.7):** 桌面打包,Docker镜像,背景服务管理,首次运行的入职培训。一个本地的SwiftUI iPhone客户端(薄API客户端,共享表格保存,锁定屏幕音频)计划作为配套程序,一旦第三阶段发布。
- **第六阶段 - 代理运行时(0.8):** 临时AI调用成为可检查的本地代理库,具有可重放的轨迹和成本核算,提供适配器(Anthropic,OpenAI,本地模型通过Ollama)使模型不可知论成为已发货的事实而不是愿望,以及用于社区代理,连接器和主题的插件API。
- **第7a阶段 - 自带云同步(0.9):** 多设备同步对抗您拥有的存储(S3兼容,WebDAV或任何同步文件夹)具有客户端加密。 Tiro永远不会持有您的任何数据。
- **第7b阶段 - Tiro Cloud(1.0):** 一个可选的付费便利层 - 主机同步和始终在线的代理 - 类似于Obsidian Sync:它资助开源产品并控制没有任何内容。 如果用户从未支付,可以使用每个功能。
所有产品承诺的内容:原始文章保持清洁,便携的markdown; 您的记忆(高亮,笔记,评分,摘要)生活在相邻的本地文件和透明的数据库中; 任何付费操作都使Tiro更容易跨设备运行,但永远不会使本地所有权变得更糟。
---
## 贡献
欢迎贡献 - 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 以获取开发设置,测试栏和必须保持不变的不变量。 若要报告安全问题,请参阅 [SECURITY.md](SECURITY.md) (请不要为漏洞打开公共问题)。
---
## 许可证
[GNU Affero General Public License v3.0 或更高版本](LICENSE)(AGPL-3.0-or-later)。
Tiro是免费软件,您可以运行,研究,修改和重新分发。 如果您修改Tiro并作为网络服务提供给其他人,AGPL要求您向这些用户提供您的修改后的源代码。 在您自己的笔记本电脑或家庭服务器上运行Tiro以供自己使用,不会产生此义务。
> *Tiro以前在MIT许可证下分发。 2026-05-28之前现有的贡献仍然在原始的MIT条款下; 之后的贡献是AGPL-3.0-or-later。*
---
<p align="center"><em>"...如果没有你,神谕是沉默的."</em><br><small>— Cicero to Tiro, 53 BC</small></p>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器