Files
MemRelay/projects/ebb54e31-5afe-4f9b-a291-4e3b03ca3b21/curated/development/MemRelay Project Deployment Overview.md
T

8.7 KiB
Raw Blame History

title, type, permalink, stable_id, scope, project_id, workspace_type, usage_profile_id, preference_context, document_type, revision, source_memory_ids, source_checkpoint_ids, source_file_ids, source_git_commit, source_git_commits, source_agent_sync_ids, model_connection, model_name, source_count, source_revisions, source_dispositions, cited_source_ids, job_cited_source_ids, conflicts, supersedes, preferences, source_cursor, source_hash, prompt_version, schema_version, curation_job_id, created_at, updated_at, tags, restored_from_commit
title type permalink stable_id scope project_id workspace_type usage_profile_id preference_context document_type revision source_memory_ids source_checkpoint_ids source_file_ids source_git_commit source_git_commits source_agent_sync_ids model_connection model_name source_count source_revisions source_dispositions cited_source_ids job_cited_source_ids conflicts supersedes preferences source_cursor source_hash prompt_version schema_version curation_job_id created_at updated_at tags restored_from_commit
MemRelay Project Deployment Overview curated main/projects/ebb54e31-5afe-4f9b-a291-4e3b03ca3b21/curated/development/mem-relay-project-deployment-overview b54bd6b0-bbdd-4ab2-92d3-a4f5d58e8f83 project ebb54e31-5afe-4f9b-a291-4e3b03ca3b21 development null development deployment 1
null
Sub2API git-restore 20
memory:7ab8ac01-9e4d-4222-b224-7735fdeafdc8 memory:b9a463d1-5659-4baa-aaf4-6464661ef074 memory:9092af09-6a60-404e-88ad-3344f2fdf0ca memory:c16b8950-20d2-4d3d-87b3-0a8bfd20790d memory:23bcc4c0-4992-41d6-b70e-210937a76a0f memory:b3fc5d7e-f1d7-4a63-860b-37f9f35cb136 memory:41e5bdb5-a67b-49bc-b8a6-ab20b4c66fca
1 1 1 1 1 1 1
processed unchanged unsupported skipped
20 0 0 0
curated_baseline:b54bd6b0-bbdd-4ab2-92d3-a4f5d58e8f83
global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
curated_baseline:08fb4703-1527-4983-bb8e-e4ca735e4316
curated_baseline:eebf38d3-36dc-4b57-b8d7-1f2c8be2f234
memory:b3fc5d7e-f1d7-4a63-860b-37f9f35cb136
memory:41e5bdb5-a67b-49bc-b8a6-ab20b4c66fca
curated_baseline:6b2d8349-7a95-4a18-8e4b-20dd2ab95e2f
curated_baseline:d459e837-b05c-4f31-9b05-7f9d09c71f25
memory:7ab8ac01-9e4d-4222-b224-7735fdeafdc8
memory:23bcc4c0-4992-41d6-b70e-210937a76a0f
memory:b9a463d1-5659-4baa-aaf4-6464661ef074
memory:c16b8950-20d2-4d3d-87b3-0a8bfd20790d
memory:9092af09-6a60-404e-88ad-3344f2fdf0ca
curated_baseline:b54bd6b0-bbdd-4ab2-92d3-a4f5d58e8f83
global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
curated_baseline:08fb4703-1527-4983-bb8e-e4ca735e4316
statement level workspace_types workspace_ids source_ids counterexample_source_ids occurrence_count explicit confidence status
遵循 KISS 与 YAGNI,使用最简单且正确的实现。 scenario
development
global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
1 true 1.0 current
statement level workspace_types workspace_ids source_ids counterexample_source_ids occurrence_count explicit confidence status
默认使用中文沟通,除非明确要求其他语言。 scenario
development
global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
1 true 1.0 current
statement level workspace_types workspace_ids source_ids counterexample_source_ids occurrence_count explicit confidence status
AI 驱动的记忆整理与 Memory‑Git 默认关闭,未配置时系统完整工作且不报错。 scenario
development
global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
2 true 1.0 current
statement level workspace_types workspace_ids source_ids counterexample_source_ids occurrence_count explicit confidence status
在任何登录、SSH、数据库或 API 调用前先查询 Vaultwarden,唯一匹配时直接使用。 scenario
development
global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
2 true 1.0 current
statement level workspace_types workspace_ids source_ids counterexample_source_ids occurrence_count explicit confidence status
`memrelay://capabilities` 包含 datetime、UUID、Pydantic 对象时需先通过 FastAPI `jsonable_encoder` 再 JSON 编码。 scenario
development
global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
2 true 1.0 current
0 cd96d5b27b5d1ef34ff30350e40c12b9d9b7e389c5813755521578d1f2597d9c 2026-08-12.3 3 null 2026-08-08T09:52:44.504144+00:00 2026-09-23T15:13:18.732700+00:00
deployment
development
6a6a895eaf

MemRelay 部署概览 (development)

目标与技术栈

  • 提供跨设备、项目、AI 客户端的个人规则、记忆、密码库与文件仓储。
  • 后端: Python 3.12, FastAPI, FastMCP, SQLAlchemy, SQLite
  • 前端: Vue 3, TypeScript, Vite, Element Plus, Vue I18n
  • 记忆引擎: Basic Memory v0.22.1(Markdown 存储),MiniLM 语义检索(必要时降级为全文搜索)

部署拓扑

  • 公网入口: https://mr.asio.asia(OpenResty 终止 TLS 并转发至 FRPS)
  • 应用主机: Armbian ARM64 192.168.32.100,监听端口 3003
  • Compose 目录: /opt/1panel/docker/compose/memrelay
  • 持久化存储: /data/memrelay-stack(MemRelay 与 Basic Memory 共享挂载)
  • FRP 栈: OpenWrt FRPC 0.70.1(WebSocket) → FRPS,映射 mr.asio.asia → 192.168.32.100:3003
  • 会话 Cookie: 根据请求协议动态设置 Secure 标记,兼容局域网 HTTP 与公网 HTTPS
  • 缓存策略: OpenResty 对登录、API、MCP、密码库、上传下载等端点不启用代理缓存;静态资源使用 ETag 与浏览器缓存
  • 备份: /data/memrelay-backups/memrelay-20260805T234836Z.tar.gz

密码库索引(Vaultwarden)

条目 用途
MemRelay Administrator Web 管理员
BDYG18Pro Armbian SSH 部署主机
OpenWrt Router SSH FRPC 与局域网路由
Public FRPS Server SSH 公网 FRPS 与 OpenResty
FRP ali.asio.asia Token FRPC/FRPS 认证
Gitea git.asio.asia OAuth Git 访问与令牌刷新
Armbian MySQL Root Docker MySQL

说明:普通记忆仅记录名称、用途与使用方式,敏感值始终保存在 Vaultwarden 中。

可选特性(默认禁用)

  • AI 驱动的记忆整理(AI Curation) 与 Memory‑Git 为可选增强,默认关闭。未开启时系统不探测模型、不创建 .git 目录,也不会因缺失功能报错。

关键决策概览

决策 说明
MCP JSON 序列化 memrelay://capabilities 包含 datetime、UUID 或 Pydantic 对象时,先使用 FastAPI jsonable_encoder 再 json.dumps,避免生产环境序列化错误。
密码库读取性能 引入进程内 Bitwarden 快照,列表延迟从约 20 s 降至 ≈ 420‑431 ms(ARM64)。
Cookie Secure 动态化 根据请求协议动态决定 Secure 标记,解决公网 HTTPS 后局域网 HTTP 会话失效。
ARM64 构建迁移 提供可选构建时代理与 Debian 镜像参数,加速依赖下载;使用 Linux 容器只读挂载方式解决 Windows tar 符号链接问题。
数据库迁移 20260805_0010 为 mcp_tokens 表加入 all_profiles,实现全档案 Token 自动覆盖。

里程碑

  • 2026‑08‑03:完成部署拓扑,源码提交 2d2e35a,验证公网 HTTPS、FRP 映射、健康检查。
  • 2026‑08‑05:全链路审计,修复 JSON 序列化错误,ARM64 滚动发布 95 个 MCP 工具和 3 个资源。
  • 2026‑08‑07:完成全部测试(后端 153 项,前端 34 项),系统运行稳定。

本文档引用的主要来源包括 curated_baseline:b54bd6b0…(部署概览)、global_guidance_memory:bf88c265…(开发实施原则)、global_guidance_memory:3f91189b…(可选 AI 与 Git)等。