MemOS/apps/memos-local-plugin

10.8kStar999Fork74Issue45Watching

为 DeepSeek Harness 提供本地四层长期记忆(L1 轨迹 / L2 策略 / L3 世界模型 / 技能),每次用户轮次自动检索并可注册六个记忆工具。

机审证据安装命令仓库已核验dsh-plugin Topic许可证READMEAI 百科
语言
TypeScript
License
Apache-2.0
分支
main
agentagentic-aiaiai-agentschatgptclaudedeepseek-harnessdsh-plugin

安装

$ dsh plugin --profile web add github:MemTensor/MemOS/apps/memos-local-plugin

在终端中运行以上命令,通过 dsh CLI 安装此插件。可在右上角切换 Profile。 第一次用 dsh?看这篇新手教程

对话式安装

帮我安装 DeepSeek Harness 插件 MemTensor/MemOS/apps/memos-local-plugin:先查看仓库 https://github.com/MemTensor/MemOS.git 确认安全性,然后执行安装命令并验证插件加载成功。

把这段指令粘贴给 DSH Web GUI 里的助手,由它代你完成安装与验证。

一句话定位

MemOS 为 DeepSeek Harness 注入本地优先的长期记忆能力:通过 SQLite 把每轮对话、工具结果、用户反馈沉淀为可检索的四层记忆,并在每个用户轮次自动把相关历史回填到上下文,让 DSH 具备跨会话的连续性。

核心能力

  • 在每个被接受的非空用户轮次开始时执行一次有上限的自动检索,把相关历史以 <memos_context> 形式注入到模型提示中
  • 异步捕获对话轮次、工具调用与代码执行结果,写入本地 SQLite 数据库
  • 注册六个面向模型调用的记忆工具(memos_search / memos_get / memos_timeline / memos_environment / memos_skill_list / memos_skill_get),供模型主动查询或加载更详细的历史
  • 提供基于本地 HTTP/SSE 的 Viewer 面板(默认 127.0.0.1:18801),可视化浏览和编辑记忆数据
  • 自动复用宿主 DSH 已配置的模型与凭据作为辅助 LLM(如摘要、反思),无需重复配置 API Key
  • 通过 L1 轨迹 / L2 策略 / L3 世界模型 / 技能 四层结构,从历史中归纳可复用的子任务策略并固化为可调用技能

技术实现

  • 语言: TypeScript(ESM 模块)
  • 关键依赖: @deepseek-ai/cordis(Cordis 注入容器)、better-sqlite3(本地存储)、@huggingface/transformers(本地向量嵌入)、@preact/signals + Vite Viewer(面板 UI)
  • 架构模式: 以 Cordis bundle 形式注入宿主进程;不启动独立守护进程、不走 JSON-RPC sidecar;通过 agent/pre-step / session/event / session/disposed 等宿主事件钩子串联自动检索与后台捕获,并通过 DSH 的 tools 服务注册记忆工具
  • 入口文件: apps/memos-local-plugin/adapters/deepseek-harness/index.ts(apply 钩子),由 cordis.patch.yml 注入到 Cordis bundle 栈

适用场景

当用户希望 DeepSeek Harness 的对话能够在多次会话之间保持上下文连续性,或者希望把项目知识、工具调用结果沉淀为可复用的私有记忆时使用。它特别适合长周期项目协作、个人知识库累积、以及需要让模型记住用户偏好与历史决策的工作流。

前置依赖与兼容性

依赖最低版本说明
DeepSeek Harness>=0.1.0-rc.5 <0.2.0宿主平台,DSH 仍在开发者预览,跨预览版可能需调整适配器
Node.js^22.19.0 || >=24.0.0DSH 0.1.0-rc.5 的硬性要求,覆盖包自身声明的 >=20.0.0
pnpm11.7.0用于原生依赖构建脚本审批;一键安装器在缺失时会临时下载,结束后清理
平台macOS / Linux一键安装脚本仅支持 macOS+Linux;Windows 用户可走 DSH 原生 dsh plugin
原生模块better-sqlite3、onnxruntime-node、esbuild、sharp均为 pnpm 11 需要在 pnpm-workspace.yaml 中显式 allowBuilds 的构建脚本包

安装方式

dsh plugin --profile web add github:MemTensor/MemOS/apps/memos-local-plugin

安装完成后需重启当前 DSH profile(Ctrl+C/SIGINTSIGTERM 后再次启动)才能使新 bundle 生效。

配置项

插件通过 Cordis 的 memos-local-memory 行接收配置,可直接修改 $DSH_HOME/profiles/<profile>/cordis.patch.yml 覆盖默认值。注意:DSH 的 patch 层是整体替换 config,覆盖时需要保留全部字段。

配置类型说明默认值
enabledboolean是否挂载该适配器;关闭后插件完全不生效true
profileIdstring命名空间回退标识;带 agentPreset 的会话会以会话值为准default
homestring运行时根目录;留空时为 $DSH_HOME/memos-plugin/(默认 ~/.dsh/memos-plugin/""
recallEnabledboolean是否对每个被接受的非空用户轮次执行自动检索;同轮重复进入会去重true
captureEnabledboolean是否在轮次与工具完成后异步写入数据库true
toolsEnabledboolean是否注册六个 memos_* 工具供模型调用;关闭后只能靠自动检索true
hostLlmEnabledboolean是否在 MemOS 未显式配置 LLM 时复用 DSH 已配置的模型与凭据true
viewerEnabledboolean是否启用本地 HTTP/SSE Viewer;关闭后只有无头记忆运行时true
viewerPortnumberViewer 监听端口(1–65535),多 profile 共存需分配不同端口18801
recallTimeoutMsnumber自动检索与 memos_search 共享的请求超时(毫秒,最小 100);实际生效上限 3000ms3000
contextMaxCharsnumber注入到模型的 <memos_context> 内容上限(最小 256)6000
toolResultMaxCharsnumber记忆工具返回给模型的结果体上限(最小 128)1200
failOnStartupErrorboolean启动失败时是否中断 DSH profile 启动;默认只记警告继续运行false

常见问题

Q: 卸载插件会一并删除记忆数据吗?

A: 不会。dsh plugin remove 只移除依赖与 bundle 层,运行时目录($DSH_HOME/memos-plugin/)下的 data/skills/config.yaml 会保留下来供重新安装时复用;只有手动删除目录才会清空记忆。

Q: 安装后是否需要单独配置 API Key?

A: 默认情况下 MemOS 会复用宿主 DSH 已配置的模型凭据,无需在 MemOS 中重复填写;只有在 config.yaml 显式设置了非空的 llm.provider 时,才会使用该 provider 自身的凭据。

Q: 升级插件版本或调整 config.yaml 后需要做什么?

A: 需要重启当前 DSH profile 才能生效;DSH 不会在运行中自动发现新安装的包,导入的模块也会在进程生命周期内被缓存。Viewer 内的 Settings 保存 config.yaml 也会提示需要手动重启宿主。

Q: 自动检索每次都会触发吗?问候语会被跳过吗?

A: 不会跳过。所有被接受的非空用户轮次(含 hello 等问候语,以及恢复的会话与 fork)都会触发一次自动检索;同轮重复进入会做去重,插件与工具生成的消息不会触发。

Q: Viewer 面板能远程访问吗?

A: 不能。Viewer 仅绑定 127.0.0.1localhost 的回环地址,配置文件中 viewer.bindHost 设置为非回环地址会被拒绝;不要把回环端口放到反向代理或隧道后。Viewer 没有内置身份认证,开启密码保护需要写入 .auth.json

Q: 多 DSH profile 同时启用 Viewer 会有冲突吗?

A: 会。多 profile 不能共用同一个 Viewer 端口,需要分配不同的 viewerPort 或仅在一个 profile 中启用 Viewer;不同 profile 共享同一运行时目录时会共用底层记忆,浏览器 cookie 在同主机不同端口间共享,注意登录态互相覆盖。

上手难度

入门 — 仅需一条 dsh plugin 安装命令即可获得自动检索能力,无需手工配置 API Key 或数据库;进阶用户可按需调整 Cordis 配置项或 config.yaml 中的 LLM、embedder、viewer 等设置。

已知问题与限制

  • DSH 仍在开发者预览:适配器针对 DSH 0.1.0-rc.5/rc.6 验证,跨预览版的破坏性变更可能让插件失效
  • 后台队列与重启间隙的捕获缺口:自动检索从不等待上一轮的捕获、关系分类或意图分类;正常 SIGINT/SIGTERM 时 Cordis 会尝试 bounded drain,但 SIGKILL、崩溃或预算耗尽都可能留下未落库的一轮
  • Viewer 仅本地:默认监听 127.0.0.1:18801,不支持远程访问;多 profile 不能共享同一端口,浏览器 cookie 跨端口共享会互相覆盖登录态
  • JSON 输出是提示工程而非强制 schema:DSH 当前没有 provider-neutral 的强制 JSON/Schema 输出,MemOS 在 prompt 内提供 JSON 契约并在本地解析,超时/截断/格式错误会触发失败回退
  • 预请求阶段的路由边界:每轮自动检索跑在 DSH 关闭该轮 agent/request 之前,因此只能读到上一次持久化的请求路由;如果不存在则使用 agent 公开默认
  • 背景恢复没有归属路由:在启用 L2/L3/Skill 结晶的全量模式下,启动期的 stale recovery 与 10 分钟 dirty-episode rescore 不归属于任何 DSH 请求;当 MemOS provider 为 host 时这两个后台任务会被禁用
  • 依赖构建脚本需要审批:首次安装 2.0.16-beta.1 等版本时 pnpm 11 会拦截原生模块构建脚本,需要在 pnpm-workspace.yaml 中明确允许 better-sqlite3esbuildonnxruntime-nodesharpprotobufjs 与 MemOS 自带的 postinstall 提示脚本不应允许
  • 不要降级 Transformers.js:4.x 之前的 3.x / ONNX Runtime 1.21 在 macOS 上 DSH 调用 process.exit() 时存在析构崩溃,使用本地嵌入的 profile 不能降级该组合

收录徽章

Listed on deepseek-plugin.org
[![Listed on deepseek-plugin.org](https://img.shields.io/badge/listed_on-deepseek--plugin.org-007EC6)](https://deepseek-plugin.org/plugins/MemTensor/MemOS/apps/memos-local-plugin)

把这段 markdown 粘贴到你的 GitHub README,链接回本插件详情页。徽章只声明已被本站收录,不代表安全认证。

返回插件目录