AI日记后端

Recto是一个开源、自托管的日记后端,允许开发者通过任何AI助手存储、搜索和反思想法。

  • by KristijanS99
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 KristijanS99/recto

使用说明

recto

Your journal lives where your thoughts already are — in conversation with AI.


名称

正面 --来自拉丁语 rectō,意思 “在右边。”

在装订过程中 正面 这是一本打开的书的右页——首页,你首先看到的那一页。这就是故事的开始。

每一篇日记都是一个新的篇章:新的一页,等待你的思考。


什么是Recto?

Recto是一个 开源、自托管的期刊后端 对于开发者来说。它允许你通过任何人工智能助手存储、搜索和反思你的想法——不需要应用程序。

主日志界面不是UI。这是您的AI助手(Claude、ChatGPT、Cursor等)通过以下方式连接 模型上下文协议(MCP)Recto是一个 数据平台优先,具有用于浏览和查看条目的轻量级web UI。


亮点

  • MCP本地 --从头开始设计,通过模型上下文协议与人工智能助手协同工作
  • 混合搜索 --全文(BM25)+语义向量搜索,与互序融合
  • 自托管 --Docker Compose,一个命令,你的数据永远不会离开你的机器
  • AI不可知论 -带上您自己的API密钥:Anthropic、OpenAI或通过Ollama的本地模型
  • 渐进增强 -使用零AI配置(纯文本+关键字搜索),添加API键会变得更智能
  • 可定制的提示 --内置提示模板(每日签到、每周回顾、感恩等),在连接时自动注入自定义指令
  • 灵活的身份验证 -用于快速设置的单个API密钥,或用于MCP HTTP传输的带有PKCE的OAuth 2.1

建筑

Recto是一个TypeScript单仓库,有三个包:

recto/
├── packages/
│   ├── api/     @recto/api   — Hono REST API, PostgreSQL + pgvector, Drizzle ORM
│   ├── mcp/     @recto/mcp   — MCP server (Streamable HTTP), the AI journaling interface
│   └── web/     @recto/web   — React + Vite dashboard for browsing and managing entries
包 角色 堆栈
@recto/api REST API和数据层 Hono、Drizle ORM、PostgreSQL、pgvector
@recto/mcp AI助手接口 MCP SDK,可流式HTTP传输
@recto/web Web仪表板 React、Vite、顺风CSS、TanStack查询

特性

日记条目

创建、更新和删除日记条目。每个条目都支持内容、标题、标签、情绪、提及的人、媒体附件和任意元数据。

人工智能丰富

配置LLM提供者后,新条目会自动丰富AI生成的标题、标签、情绪检测和人物提取。当设置嵌入提供者时,会生成用于语义搜索的嵌入。

搜索

三种搜索模式:

  • 关键词 --PostgreSQL全文搜索(BM25),突出显示代码段
  • 语义 --基于pgvector的向量相似性搜索
  • 混合 --使用往复式秩融合将两者结合起来(默认)

反映

让你的人工智能助手反思你在任何时间段的日记条目。反射端点检索相关条目并生成深思熟虑的综合。

MCP工具

MCP服务器将这些工具暴露给您的AI助手:

工具 说明
create_entry 创建新日记条目
get_entry 检索特定条目
list_entries 列出带有可选筛选器的条目
search_entries 按关键字、语义相似性或混合搜索
reflect 根据过去的条目生成反映
add_tags 为条目添加标签
get_summary 获取最近条目的AI摘要
add_media 将媒体URL附加到条目

MCP提示

MCP客户可以发现六个内置的提示模板:每日签到、每周回顾、每月回顾、感恩、想法捕捉和目标设定。您还可以创建自定义提示。

指示和提示管理

通过持久指令和提示模板自定义AI助手的行为方式。通过REST API或web面板的“设置”页面管理它们。

Web仪表板

五页用于浏览和管理您的日记:

  • 时间线 (/)--按时间顺序排列的条目提要,带有分页和标签过滤功能
  • 条目详细信息 (/entry/:id)--带元数据的完整条目视图
  • 搜索 (/search)--使用模式选择进行搜索
  • 标签 (/tags)--带有计数的标签浏览器
  • 设置 (/settings)--管理指令和提示模板

快速开始

# Clone the repo
git clone https://github.com/KristijanS99/recto.git
cd recto

# Configure environment
cp .env.example .env
# Edit .env — set RECTO_API_KEY and generate a password hash:
#   docker run --rm caddy:2-alpine caddy hash-password --plaintext 'your-password'
# Set RECTO_WEB_PASSWORD_HASH (escape $ as $$ in .env)

# Start everything with Docker
docker compose up -d

# Recto is now running:
#   Web dashboard: https://localhost (basic auth protected)
#   API:           https://localhost/api
#   MCP server:    https://localhost/mcp

连接您的AI助手

在助手的配置中添加Recto作为MCP服务器。Recto使用流式HTTP传输——所有客户端都通过URL连接。

使用API密钥验证 (Cursor、Claude Code和大多数MCP客户端):

{
  "mcpServers": {
    "recto": {
      "url": "https://localhost/mcp",
      "headers": {
        "Authorization": "Bearer your-api-key"
      }
    }
  }
}

注: 一些客户使用 serverUrl 而不是 url (例如反重力)。检查客户的文件。

使用OAuth (克劳德桌面):

Claude Desktop原生支持OAuth。只需添加MCP URL——它会自动处理授权:

{
  "mcpServers": {
    "recto": {
      "url": "https://your-domain.com/mcp"
    }
  }
}

OAuth需要公开信任的HTTPS证书。请参阅 部署指南 有关设置的详细信息。

然后,通过与你的人工智能对话来开始写日记。就这么简单。


技术栈

层 技术
运行时 Node.js 22、ESM、TypeScript(严格)
API框架 荣誉
数据库 PostgreSQL+ pg向量
ORM 细雨
MCP 模型上下文协议SDK
前端 React+Vite+顺风CSS
Monrepo pnpm工作区+ 涡轮仓库
Linting 生物群系
测试 维测试 +测试容器

发展

先决条件

设置

# Install dependencies
pnpm install

# Copy environment config
cp .env.example .env

# Start the PostgreSQL database (pgvector)
docker compose up -d db

# Run all packages in dev mode
pnpm dev

这 docker compose up -d db 命令只启动带有pgvector的PostgreSQL容器。API、MCP服务器和web仪表板通过 pnpm dev 用于开发过程中的热重载。

命令

pnpm dev          # Run all packages in dev mode
pnpm lint         # Lint & format
pnpm typecheck    # Type check
pnpm test         # Run tests
pnpm build        # Build everything

星史


许可证

麻省理工学院——见 许可证 了解详情。

精心打造 @克里斯蒂安S99.