在阿里云 ECS 上自建 mem9 记忆服务,并把它接进 DSH
托管端点 api.mem9.ai 省运维,但会话内容不许出 VPC 时它当场出局。mem9 的 server/ 是 Go 写的 mnemo-server,存储、搜索、写入策略都在服务端,DSH 侧只装薄插件——自建只换 apiUrl 与凭据。
站点对它的实装验证是 L4 真实安装,数据截至 2026/10/29;星标 1,236,npm 周下载 30(全网口径,含 CI 与镜像)。
选机器:托管还是自建、规格与出网
托管只要一个 API key,代价是文本出 VPC;自建要一台 ECS 加 MySQL 协议库,安全组、schema、升级自查。只有自建能回答「数据不出内网」。
- 2 vCPU / 4 GiB 起步;dashboard 同机跑上 4 vCPU / 8 GiB,余量给 Node 构建。
- 系统盘 40 GiB 够,数据不落本地盘。
- 出网到 TiDB Cloud Starter 或 RDS 的 4000 / 3306,走 NAT,不绑公网 IP;镜像配 ACR 加速再
docker run。
起 mnemo-server:schema 先于进程
先应用控制面 schema:server/schema.sql(TiDB)、schema_pg.sql、schema_db9.sql;选错文件进程照样起,写入时才 500。
export MNEMO_DB_BACKEND=tidb
export MNEMO_DSN="user:pass@tcp(<host>:4000)/mnemos?parseTime=true"
cd server && ./bin/mnemo-server
数据落 TiDB 而非本地盘:容器重建不丢、多机共库只改 apiUrl、自带向量与全文搜索。
安全组与监听地址
服务只认 X-API-Key,没有账号体系,8080 开到 0.0.0.0/0 等于把读写口交给扫描器。入方向只放 DSH 主机的内网 IP(172.16.0.0/12)的 8080;调试用 ssh -L 8080:127.0.0.1:8080,apiUrl 填 127.0.0.1:8080;公网入口交给 ALB 透传 X-API-Key。
装插件并校验
export MEM9_API_KEY="<key>"
dsh plugin --profile web add @mem9/dsh-plugin
dsh --profile web --dump-config
--dump-config 展开 mem9 那行配置,apiUrl 与 apiKeyEnv 一眼可核;改自建地址在 cordis.patch.yml 里覆盖整段 config。README 那句「发布到 npm 之前从本地 checkout 安装」已过时,@mem9/dsh-plugin@0.1.0 在 2026-08-19 就在 npm。
端到端确认
memory_store 存一条可验证事实,memory_search 用它的独有词搜回来;再开新会话问它——recall 在 agent/pre-step 跑,以 form: recall 的 user/message 进日志,不装插件也能重放。
四个坑
坑一 · 宿主升到 0.2.x 后装不上
现象:add 报 peer 冲突,或装完不加载。原因:peerDependencies 把 5 个 @deepseek-ai/dsh-*(agent、session、tools、llm、credentials)钉死在 0.1.0-rc.7,宿主到 0.2.x 不满足。解决:宿主锁在 0.1.0-rc.7,或另开 profile 装。
坑二 · key 写进 cordis.patch.yml 里不生效
现象:写了 apiKey 仍 401。原因:只认 apiKeyEnv 指的环境变量名,值经 ctx.credentials 解析,配置里没有 apiKey 字段。解决:key 放进程环境(systemd Environment= 或容器 -e),apiKeyEnv 保持 MEM9_API_KEY。
坑三 · 五个字以下的追问永远召不回
现象:问「刚才那个改成什么了」没反应,完整句子正常。原因:recall.minQueryChars 默认 5,短于 5 字符直接跳过。解决:把话问完整,或按需调小。
坑四 · DSN 漏 parseTime=true 时间轴错乱
现象:按时间排序的列表顺序不对,dashboard 时间显示成字符串。原因:驱动不加 parseTime=true 就把 DATETIME 当字符串返回。解决:DSN 补 ?parseTime=true,重启后确认新记录时间正常。
总结
自建的实质是三件事:schema 先落库、DSN 带 parseTime=true、8080 只对内网开;DSH 侧 apiUrl 指对、key 在环境里就行。
适合与不适合
适合:会话内容不能出 VPC 的团队;已有 ECS 与 MySQL 协议库想复用资源的人;多机共享记忆的项目。
不适合:只想让单会话别断片的个人,托管一步到位;不愿把会话内容落到远端 Space 的团队,自建也要落一个远端库;看重社区验证的人慎入——周下载 30,社区实装打卡为空。
标签:mem9、DeepSeek Harness、自建记忆服务、阿里云 ECS
本文由 DeepSeek Harness Hub 自动整理,数据来源于插件详情页。