Prism (棱镜) 使用手册
🌈 Prism (棱镜):光的折射与思维的绚烂
随手丢进 Memos 的笔记穿过 Prism,被 AI 折射为标签、结构化 Markdown 和清晰的知识脉络。
第一部分:部署与配置
以下为一次性操作,完成后即可日常使用。
1. 依赖的外部服务
| 服务 | 用途 | 必需 | 环境变量 | 获取方式 |
|---|---|---|---|---|
| 🧠 推理大模型 | AI 整理、标签总结、提醒提取 | ✅ 至少一个 | DEEPSEEK_API_KEY(默认)OPENROUTER_API_KEYOPENAI_API_KEY |
DeepSeek(推荐) OpenRouter OpenAI |
| 📄 MinerU 文档解析 | Office/PDF 附件转 Markdown | ❌ 可选 | MINERU_API_TOKEN |
MinerU |
| 📐 嵌入大模型 | 向量语义检索(默认关闭) | ❌ 可选 | SILICONFLOW_API_KEY |
SiliconFlow |
🧠 推荐先配 DEEPSEEK_API_KEY 即可跑通核心功能。Office/PDF 附件解析需额外配 MINERU_API_TOKEN。
2. 环境变量
cp .env.example .env
| 变量 | 必需 | 说明 |
|---|---|---|
SIDECAR_ADMIN_TOKEN | ✅ | 管理接口 Bearer 令牌,建议 16 字节随机字符串 |
MEMOS_BASE_URL | ✅ | Memos 地址(Docker 内自动设为 http://memos:5230) |
MEMOS_API_TOKEN | ✅ | Memos Personal Access Token(见第 5 节创建) |
DEEPSEEK_API_KEY | ✅ | 默认推理大模型 Key |
MEMOS_WEBHOOK_URL | ❌ | Webhook 回调地址(poll 模式无需配置) |
REMINDER_WEBHOOK_URL | ❌ | 提醒推送地址(Bark 兼容,如 https://api.day.app/your-key/) |
MINERU_API_TOKEN | ❌ | MinerU 文档解析 Token |
SILICONFLOW_API_KEY | ❌ | 向量检索 Key(默认关闭) |
OPENROUTER_API_KEY / OPENAI_API_KEY | ❌ | 备选推理模型 Key |
切勿将包含真实密钥的 .env 提交到 Git。
3. 配置文件
以下 YAML 文件位于 config/ 目录,Compose 已自动挂载到容器:
| 文件 | 作用 | 主要配置项 |
|---|---|---|
app.yaml | 应用主配置 | Memos 连接、入口模式、文档解析、Worker 参数、附件限制 |
models.yaml | 大模型 Provider | 默认 provider、各 provider 的 base_url / model / temperature |
prompts.yaml | AI 提示词 | 整理 memo、标签总结、提醒提取的 system/user 提示词 |
taxonomy.yaml | 标签体系 | 系统标签、正式业务标签、别名、禁用标签 |
多数配置也可在管理页面 /admin/ui 在线修改。详见 配置说明。
4. Docker 部署
开发环境(源码热重载):
npx nx build sidecar
npx nx up sidecar
生产环境(prebuilt 镜像):
docker compose -f docker-compose.release.yml up -d
或使用一键部署脚本:
bash <(curl -s -L https://raw.githubusercontent.com/nabule/Prism/master/deploy.sh)
启动后通过 Caddy 网关访问 Memos 和管理端:开发 Compose 默认是 http://localhost:8080 与 http://localhost:8080/admin/ui,一键生产部署默认是 http://localhost:8085。deploy.sh 会把实际公开网关地址写入 PRISM_PUBLIC_BASE_URL,worker 会用它刷新 Memos 里的管理入口 memo;如需手机或其他电脑访问,建议用 PRISM_PUBLIC_HOST=<局域网IP或域名> bash deploy.sh 或 PRISM_PUBLIC_BASE_URL=https://your.domain bash deploy.sh 显式指定。
开发环境映射了本地 ./src 目录,修改 Python 源码后容器内 Uvicorn 自动重载,无需重新构建镜像。
Memos 初始账号与密码保存位置:一键部署脚本会自动创建 Memos host 账号(默认 admin),登录后签发长期 PAT,并把凭据写入部署目录的 .env:
# Sidecar 管理后台 /admin/ui 使用
SIDECAR_ADMIN_TOKEN=...
# Sidecar / worker 调用 Memos API 使用,不是人工登录密码
MEMOS_API_TOKEN=memos_pat_...
# Memos 前端登录使用(注意:这两行是注释,但就是初始账号和密码)
# MEMOS_HOST_USER=admin
# MEMOS_HOST_PASSWORD=<deploy.sh 随机生成的密码>
登录 Memos 前端时使用 MEMOS_HOST_USER / MEMOS_HOST_PASSWORD;登录 Sidecar 管理端时使用 SIDECAR_ADMIN_TOKEN 或部署 banner 中的一次性登录链接。忘记 Memos 密码时,在部署目录运行:
grep -E '^# MEMOS_HOST_(USER|PASSWORD)=' .env
5. 创建 Memos PAT
npx nx run sidecar:probe-memos -- \
--bootstrap-username test \
--bootstrap-password testtest \
--create-pat \
--pat-output-env-file /tmp/memosima-pat.env
将输出的 MEMOS_API_TOKEN 写入 .env。
6. 选择内容入口模式
在 config/app.yaml 中设置 memos.ingestion_mode:
poll(默认,推荐):Sidecar 主动轮询 Memos,无需公网 webhook。webhook:Memos 推送通知 Sidecar。需要公网可达的MEMOS_WEBHOOK_URL。both:两者同时启用。
7. 多用户隔离
⚠️ 单个 Sidecar 实例仅绑定一个 Memos 账号,不支持多用户共享。
如需为多人部署,为每个用户创建独立的目录和容器栈:
- 独立部署目录(如
/data/prism_userA)和.env - 不同
GATEWAY_PORT(如 8080 / 8081) - 可选:宿主机 Nginx/Caddy 反代不同子域名
第二部分:日常使用
以下为部署完成后反复使用的功能。
1. 打开管理页面
访问 http://localhost:8080/admin/ui,输入 SIDECAR_ADMIN_TOKEN 登录。
管理页面支持锚点直达:#overview、#jobs、#tag-candidates、#tag-summary、#prompts、#models、#reminders、#qa。
2. AI 智能整理
用法:在 Memos 中正常记录笔记。Sidecar 自动发现新 memo 并创建整理任务。
效果:
- 自动生成标题、摘要、要点、待办事项
- 自动从正文提取标签(已有正式标签直接使用,新标签进入候选审核)
- 生成独立的「AI 整理」memo,通过 Memos 原生
REFERENCE关联原 memo
查看任务:
curl -H "Authorization: Bearer $SIDECAR_ADMIN_TOKEN" \
"http://localhost:8080/admin/jobs"
重试失败任务:
curl -X POST -H "Authorization: Bearer $SIDECAR_ADMIN_TOKEN" \
"http://localhost:8080/admin/jobs/1/retry"
待澄清:当 AI 认为内容不明确时,会在原 memo 下写澄清评论,任务进入 waiting_user 状态。
附件解析:
.txt/.md:本地直接解析.doc/.docx/.xls/.xlsx/.ppt/.pptx/.pdf:通过 MinerU 转 Markdown(需配置MINERU_API_TOKEN).drawio/.drawio.svg:本地离线解压 XML 提取文本节点.json(Mind Elixir 脑图):本地递归遍历转 Markdown 大纲
3. 标签管理
候选标签审核:AI 提议的新标签进入候选队列,在管理页面 #tag-candidates 人工审核通过后生效。
按标签生成总结:在管理页面 #tag-summary 选择标签,生成该标签下所有 memo 的整体总结。
业务标签按最后一级名称唯一。例如已有 #项目/数管,不会出现 #数管 或 #其他/数管。
4. 离线问答
管理页面 #qa 提供隐私安全的本地问答面板:
- 多选标签(支持拼音模糊匹配)
- 本地数据库「标签 + 正文模糊」双路检索
- 自动拼装带上下文的 Prompt,一键复制
- 粘贴到任意大模型网页中使用,Sidecar 不托管模型
5. 提醒通知
在 memo 中使用 #提醒 标签并写明时间,Sidecar 自动提取并通过 Webhook 推送。
示例:#提醒 明天上午 10:00 提交周报
6. 开发验证
npx nx test sidecar # 运行测试
npx nx run sidecar:compile # 语法检查
npx nx build sidecar # 构建镜像