教程DeepSeek Harness

给 DeepSeek Harness 加记忆:用 MCP 接记忆服务,也接别的 MCP 服务器

按 DeepSeek Harness 官方文档整理:它自己不带跨会话的记忆,官方给了三份默认关闭的参考配置,通过 MCP 接上第三方的记忆服务。讲清它负责什么不负责什么、三种服务怎么选怎么装、怎么验证新会话里真的记得,以及用同样的写法接任何别的 MCP 服务器。

发布 · 约 7 分钟读完 · 经人工审核()· 本站的内容怎么来的

本文根据公开分享整理,本站尚未实测。操作前请对照文末的原始来源。

本页目录(8 节)
  1. 先看清楚谁负责什么
  2. 三种服务怎么选
  3. 启用
  4. 各家存在哪里
  5. 验证:新会话里真的记得吗
  6. 接入其他 MCP 服务器
  7. 常见问题
  8. 相关文章

DeepSeek Harness 的每个会话是各自独立的:在一个会话里告诉它的事,到另一个会话里它不知道。想让它跨会话记住东西,官方的办法是通过 MCP 接一个专门的记忆服务。

官方文档给了三份现成的参考配置,都是默认关闭的,启动时带上其中一份就能用:

dsh web --patch "/绝对路径/memorix.cordis.yml"

同样的写法也能接任何别的 MCP 服务器,本文后半部分讲。

还没装的,先看DeepSeek Harness 安装和上手。

先看清楚谁负责什么

官方文档把分工写得很明白,这决定了出问题时该去哪里查。

DeepSeek Harness 负责的:

  • 读你选的那份配置;
  • 启动配置里写的本地命令,或者连上配置里写的远程地址;
  • 发现服务提供了哪些工具,以 mcp__服务器名__工具名 的名字交给模型用。

它不负责的:

  • 下载和安装记忆服务本身;
  • 初始化服务的数据库;
  • 替服务选模型或向量化的提供方;
  • 创建云端账户、迁移数据;
  • 看管一个独立运行的 HTTP 服务。

也就是说,记忆服务要你自己先装好。记不住、记错了、搜不到,多半是记忆服务那一侧的事。

官方文档还有一句声明:这三份配置只是互操作的参考,收录它们不代表 DeepSeek 的认可、推荐、合作关系或持续支持的承诺。

三种服务怎么选

服务 需要先装什么 特点
Memorix Node 22.18 以上,npm install --global memorix@1.3.0 不需要模型或向量服务也能在本地运行
MCP Reference Memory npm install --global @modelcontextprotocol/server-memory@2026.7.4 MCP 官方的参考实现,把内容存成本地的知识图谱
Engram Go 1.25.10 以上,go install 安装,或者下载对应版本的二进制文件 按 Git 项目区分记忆

表里的版本号是官方文档注明测试过的版本。三种都通过本地命令(stdio)连接,数据都存在你自己的电脑上。

选哪个,官方没有给建议。下面是我们按文档里的描述给的参考:

  • 只想先试试效果:MCP Reference Memory 最简单,一条 npm 命令,不依赖别的。
  • 它的短板官方写明了:搜索只是不区分大小写的子字符串匹配,不是按意思检索;没有自动摘要、冲突处理和遗忘策略。记的东西多了、说法不统一时会搜不到。

启用

第一步:装好记忆服务

以 MCP Reference Memory 为例:

npm install --global @modelcontextprotocol/server-memory@2026.7.4

第二步:拿到配置文件

三份配置在官方仓库的 apps/cli/config/examples/mcp-memory/ 目录下:

服务 文件名
Memorix memorix.cordis.yml
MCP Reference Memory mcp-reference-memory.cordis.yml
Engram engram.cordis.yml

官方文档说明,路径可以指向磁盘上任何位置的一份复制文件。所以不用克隆整个仓库,把需要的那一个文件下载到本机就行。

第三步:带着它启动

dsh web --patch "/绝对路径/mcp-reference-memory.cordis.yml"

不带 --patch 启动,三种记忆就都是关着的。

想每次启动都带上

每次都写 --patch 比较麻烦。官方的办法是把那份文件里的那一段 insert 合并进你自己的配置:

想让它对谁生效 写进哪个文件
只对一种运行方式,比如网页界面 ~/.dsh/profiles/web/cordis.patch.yml
对这台机器上所有的运行方式 ~/.dsh/cordis.patch.yml

官方特意提醒:不要覆盖已有的文件,里面可能已经有别的配置。模型页上的设置就写在第一个文件里,覆盖掉等于把接好的模型也删了。要做的是把那一段加进去。

各家存在哪里

知道数据在哪,才好备份和清理:

服务 默认位置 怎么改
Memorix ~/.memorix/data 启动前设 MEMORIX_DATA_DIR
MCP Reference Memory ~/.dsh-mcp-reference-memory.jsonl 启动前设 MEMORY_FILE_PATH
Engram ~/.engram 设 ENGRAM_DATA_DIR 或 ENGRAM_PROJECT

Memorix 和 Engram 都会根据当前工作目录所在的 Git 项目来区分记忆。

记忆文件里存的是你让它记住的原话,以明文放在本机。别让它记密码、密钥这类东西。这一句是我们的提醒。

验证:新会话里真的记得吗

装上之后要验证的不是“能不能写”,而是“换一个会话还能不能想起来”。官方文档给了一套三步的验证办法,用一个独一无二的值来测,免得模型是蒙对的:

一、在会话 A 里让它记住。

Remember that my validation drink is lapsang-7k2q.

确认它调用了记忆服务的写入工具,并且工具返回成功。

二、新建会话 B,问它。 不要把会话 A 的对话复制过来。

What is my validation drink? Check memory.

确认它调用了搜索或召回的工具,并且答出了那个值。

三、继续在会话 B 里让它用上。

Use that preference to suggest one drink for the meeting.

确认回答里用到了刚才想起来的内容。

官方说明,必须新建会话,但不需要重启程序。另外有一个细节:工具的发现是异步的,发第一条测试消息之前,先等 mcp__ 开头的工具出现,不然它还没有可用的记忆工具。

它不主动用记忆怎么办

有时候模型明明有记忆工具,却不去用。官方给了一段可以加进指令里的话:

用户要求记住某事时调用记忆写入工具;历史信息可能相关时,检索记忆并使用相关结果。

把它加到你的指令文件里,比如项目的 AGENTS.md。DeepSeek Harness 读哪些指令文件,见从 Claude Code、Codex 过来。

接入其他 MCP 服务器

记忆只是 MCP 的一种用途。官方文档说明,同样的写法可以接任何 MCP 服务器,每台服务器一条配置。

本地命令(stdio)

- insert:
    - id: mcp-github
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: github
        transport: stdio
        command: npx
        args: ['-y', '@modelcontextprotocol/server-github']
        env:
          GITHUB_TOKEN: !!js process.env.GITHUB_TOKEN

远程服务(Streamable HTTP)

- insert:
    - id: mcp-web
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: web
        transport: streamable-http
        url: http://localhost:3000/mcp
        headers:
          Authorization: !!js '`Bearer ${process.env.MCP_TOKEN}`'

字段取自官方文档里的例子,最外面那层 insert 是写进配置文件时用的格式。几个字段的意思:

字段 说明
id 这条配置的标识,每条要不一样
serverName 服务器的名字,会出现在工具名里。只能用字母、数字、下划线和连字符,最长 32 个字符,不能重名
transport stdio 或 streamable-http
command、args、env、cwd stdio 用:要运行的程序、参数、额外的环境变量、工作目录
url、headers 远程用:地址和额外的请求头

密钥不要写进配置文件

上面例子里的 !!js process.env.GITHUB_TOKEN,意思是从环境变量里读,而不是把密钥的原文写在文件里。官方文档明确要求这样做。

还有一个容易踩的地方。官方说明,stdio 方式启动子进程之前,会主动去掉环境里名字看起来像凭据的变量,以及所有 DSH_ 开头的变量。所以你 shell 里设好的某个 token,MCP 服务器默认是拿不到的,必须像例子里那样在 env 里明确写出来传给它。

工具的名字

接上之后,工具以 mcp__服务器名__工具名 的形式出现,比如 mcp__github__create_issue。两台服务器都有叫 search 的工具也不冲突,它们分别是 mcp__github__search 和 mcp__web__search。

连不上的时候

官方文档描述的行为:

  • 启动时连不上:DeepSeek Harness 照常启动,只是这台服务器的工具不出现,并记一条错误。
  • 用着用着断了:自动重连,间隔从半秒开始逐次加倍,最多连续试 10 次。断开期间工具还列着,但调用会失败。
  • 重连次数用完:工具被注销,不再重试,直到重新加载或重启。
  • 单次调用超时:默认 60 秒。

第一条值得留意:服务器没连上时不会有醒目的提示。发现工具不见了,去看日志。

常见问题

现象 原因和办法
启动后没有 mcp__ 开头的工具 记忆服务没装好,或者启动时没连上。看日志里的错误
第一条消息它没用记忆 工具的发现是异步的,等工具出现再发
新会话里想不起来 先确认会话 A 里写入工具返回了成功;再看是不是换了项目目录,有的服务按项目区分记忆
换个说法就搜不到 MCP Reference Memory 只做子字符串匹配,不按意思检索
它有工具但不主动用 把官方那段指令加进指令文件
MCP 服务器报没有权限 凭据类的环境变量默认不传给子进程,在 env 里明确写出来
合并配置后模型没了 覆盖了原来的 cordis.patch.yml。要追加,不要替换
两条配置冲突 serverName 重名了,后加载的那条会报错

相关文章

来源

通过 API 中转站使用这些模型?到 Veridrop 免费检测中转站给你的是不是它声称的模型,或者看看中转站排行榜前 100 名。

相关文章

  • 从 Claude Code、Codex 过来:DeepSeek Harness 认哪些现成的配置教程 · DeepSeek Harness · 约 10 分钟

    按 DeepSeek Harness 官方文档整理:项目里的 AGENTS.md 和 CLAUDE.md 默认就读;技能要放在 .agents/skills;Claude Code、Codex 的钩子有实验性桥接,只支持部分事件;模组兼容层只是演示;还能把 Claude Code、Codex 当子智能体调用。

  • DeepSeek Harness 的自动化:定时提醒怎么建,GitHub 有新 PR 自动开评审教程 · DeepSeek Harness · 约 7 分钟

    按 DeepSeek Harness 官方文档整理两种自动化:在对话里让它建定时提醒,到点自己把任务发回原来的会话;配一个 GitHub Webhook,PR 转为可评审时自动开一个只读的评审会话。讲清怎么开启、支持哪些时间规则、关掉程序会怎样,以及发送记录不等于执行结果。

  • DeepSeek Harness 的命令行用法:一条命令跑完一个任务,接进脚本和 Python 程序教程 · DeepSeek Harness · 约 6 分钟

    按 DeepSeek Harness 官方文档整理:除了桌面和网页界面,dsh 还能在命令行里一次跑完一个任务就退出,适合放进脚本和 CI;也能用 Python SDK 从自己的程序里调用。讲清 headless 模式的输入输出、退出码、JSON 事件流、怎么接着上一段对话,以及 SDK 的最小例子。

  • DeepSeek Harness 的权限怎么设:三档权限、沙箱管什么不管什么、计划模式教程 · DeepSeek Harness · 约 7 分钟

    按 DeepSeek Harness 官方文档整理:权限选择器的三档其实是“沙箱模式”和“审批策略”两个开关的组合。讲清仅可查看、工作区内修改、完全权限各自意味着什么,沙箱只管文件不管网络,实验性的自动审查怎么工作,以及计划模式为什么不算限制。