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

130 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: MemRelay Project Overview
type: curated
permalink: main/projects/ebb54e31-5afe-4f9b-a291-4e3b03ca3b21/curated/mem-relay-project-overview
stable_id: eebf38d3-36dc-4b57-b8d7-1f2c8be2f234
scope: project
project_id: ebb54e31-5afe-4f9b-a291-4e3b03ca3b21
workspace_type: development
usage_profile_id: null
preference_context: development
document_type: overview
revision: 1
source_memory_ids: []
source_checkpoint_ids: []
source_file_ids: []
source_git_commit: null
source_git_commits: []
source_agent_sync_ids: []
model_connection: Sub2API
model_name: git-restore
source_count: 20
source_revisions:
memory:7ab8ac01-9e4d-4222-b224-7735fdeafdc8: '1'
memory:23bcc4c0-4992-41d6-b70e-210937a76a0f: '1'
source_dispositions:
processed: 20
unchanged: 0
unsupported: 0
skipped: 0
cited_source_ids:
- curated_baseline:eebf38d3-36dc-4b57-b8d7-1f2c8be2f234
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
- curated_baseline:6b2d8349-7a95-4a18-8e4b-20dd2ab95e2f
- curated_baseline:b54bd6b0-bbdd-4ab2-92d3-a4f5d58e8f83
- global_guidance_memory:5ed86f53-b53e-4534-8e51-d3a010069d5e
- global_guidance_document:d3a20d44-6001-4c88-8772-65dbfac75e6e
- global_guidance_document:2b47472d-3ac2-4394-8646-c6bf1c0fc270
- global_guidance_document:6973450e-6ecc-48e3-8cdd-4d7d7707d843
- global_guidance_document:e4fc35f2-1606-4b79-9c1e-367edeea97d0
- memory:7ab8ac01-9e4d-4222-b224-7735fdeafdc8
- memory:23bcc4c0-4992-41d6-b70e-210937a76a0f
- global_guidance_document:8a861a5f-35c3-4f95-bd5b-6b2297888f56
job_cited_source_ids:
- curated_baseline:eebf38d3-36dc-4b57-b8d7-1f2c8be2f234
- global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5
- global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316
- global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823
- global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d
conflicts: []
supersedes: []
preferences: []
source_cursor: 0
source_hash: cd96d5b27b5d1ef34ff30350e40c12b9d9b7e389c5813755521578d1f2597d9c
prompt_version: 2026-08-12.3
schema_version: '3'
curation_job_id: null
created_at: '2026-08-08T09:52:17.157448+00:00'
updated_at: '2026-09-23T15:13:13.078121+00:00'
tags:
- overview
- project
restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2
---
# MemRelay 项目概览
## 目标
- 为多个设备、项目、AI 客户端和聊天窗口提供可继承的个人规则、项目记忆、开发历史、密码库和文件仓储。
## 技术栈
- **后端**: Python 3.12, FastAPI, FastMCP, SQLAlchemy, SQLite
- **前端**: Vue 3, TypeScript, Vite, Element Plus, Vue I18n
- **记忆引擎**: Basic Memory v0.22.1(Markdown 存储),MiniLM 语义检索(必要时降级为全文搜索)
- **容器化**: Docker Desktop (Windows) & Docker‑Compose (Linux),支持 amd64 与 arm64 双平台
## 部署拓扑
- 公网入口: `https://mr.asio.asia`(OpenResty 终止 TLS 并转发至 FRPS)
- 应用主机: Armbian ARM64 `192.168.32.100`,监听端口 `3003`
- 持久化目录: `/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`
## 开发实施原则 (KISS & YAGNI)
- 使用最简单且正确的实现
- 优先复用已有框架、服务、工具和约定,避免重复实现
- 不添加仅服务于假设未来需求的依赖、抽象或基础设施
- 修改范围与当前目标一致,测试覆盖随风险扩大;完成前清理临时内容和无用代码
- 前端以真实工作流、桌面可用性、信息层级和无重叠为验收标准
## 项目记忆与 Git 工作流
- 项目本地记忆位于 `aidocs/project_context.md`,文件顶部保留固定标题,随后按 **最新优先**、秒级时间戳倒序追加记录,描述 **做了什么、为什么、验证、问题与下一步**
- `aidocs/` 已加入 `.gitignore`,记忆文件不提交至 Git
- 完成任务后:清理临时文件 → 更新记忆 → 检查工作树 → 使用 `type: 中文说明` 格式提交有意义的代码改动
## 凭证与记忆边界
- 登录、SSH、数据库和 API 操作前先查询 Vaultwarden;唯一匹配时直接使用,不重复询问
- 新获得、生成或修改的账号、密码、Token、API 密钥和 TOTP 种子立即写入密码库
- 普通记忆仅记录密码库条目 **名称、用途、使用方式**,不保存秘密值
## 可选功能(默认禁用)
- AI 驱动的记忆整理(AI Curation)和 Memory‑Git 为可选增强,默认关闭。未开启时系统完整工作,不会探测模型、不创建 `.git` 目录或报错。
## UI 交互指南
- 表单采用 “标题在左、控件在右” 紧凑横向布局;多行/大块内容使用 “标题在上、内容在下”
- 页面顶部标题区域在滚动时保持可见,操作按钮固定在标题右侧
- 滚动区域局限于控件内部(如 Markdown 预览),避免整页滚动
- 表单标签列、控件列和分组间距保持紧凑一致,避免大面积留白
## 语言与工作方式
- 默认使用中文沟通,除非明确要求使用其他语言
- 开发环境为 Windows,所有命令、路径和验证步骤需兼容 Windows
- 在充分理解现有项目后实施,持续告知关键进展,可独立完成的工作直接完成并验证
## 密码库索引
| 条目 | 用途 |
|------|------|
| `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 |
**来源**: `curated_baseline:eebf38d3-36dc-4b57-b8d7-1f2c8be2f234`, `global_guidance_memory:bf88c265-4749-4c50-85bc-4bae25298cd5`, `global_guidance_memory:105b328f-4bda-4641-90a7-7282ef156316`, `global_guidance_memory:ff34c6eb-6bba-41e5-9e43-ff80941fa823`, `global_guidance_memory:3f91189b-11a1-45bb-8357-4f413dc1609d`