dsh-sgme
拾光记忆引擎(SGME)桥接:多智能体共享长期记忆(HTTP)—— L0/L1/L1.5/L2 分层提炼、按场景注入、统一检索、主动关怀信号(memory_search / wiki_search / signal_pull / signal_claim / signal_ack),npm 包名 `dsh-sgme`。
安装
dsh plugin --profile web add dsh-sgme
沙箱测试结果
| 阶段 | 结果 |
|---|---|
| 1 安装 | ✗ |
| 2 列装 | — |
| 3 挂载 | — |
| 4 启动 | — |
dsh: initialized profile web at /home/node/.dsh/profiles/web四阶段在隔离沙箱里跑:安装(有网)→ 列装 → 挂载 → 启动(后三步断网)。
README
dsh-sgme — SGME 记忆引擎 DSH 插件
把 SGME 拾光记忆引擎 接入 DeepSeek Harness(DSH),让 DSH 拥有多智能体共享的长期记忆与主动关怀能力。
你的 AI,从此记得你——聊过的事,它都记得,还会主动关心你。
能力
能力 · 说明
画像自动注入 · agent/pre-step middleware:会话首步自动拉取 SGME 画像 + 相关记忆注入模型上下文(v2,2026-08-16 从"打日志"升级为真注入)
对话冷场修复 · D-72(v0.6.4):首步注入后仅当本地启发式判定可能冷场(最近 2 条 user 均 ≤6 字无问号 / 寒暄词)时,附带会话 history 额外探测一次 /v1/inject;收到 kind=coldstart_repair 块则注入 1 条修补提示(同一会话最多 1 次;普通长对话零额外请求)
自动捕获 · session-sync 监听会话事件,每轮对话自动 append 落盘(零 LLM 成本)
记忆检索 · memory_search 检索 L1.5 标签化记忆池(带溯源)
知识库检索 · wiki_search 检索 L2 场景知识库(比记忆更精炼)
技能按需注入 · skill_search / skill_digest / skill_get / skill_list / skill_coldstart 五工具(v0.4.0)——对齐 SGME 1.1.0 范式:技能不预载,按需检索 → 拉全文注入
聚合答案 · answer(v0.5.0)——跨会话计数/列举/时序推理(「我一共提过几次 X」),比记忆检索多一步 LLM 答案合成
运维观测 · health / stats / config_get / config_update / refine_status / refine_trigger / refine_batch / signal_clear(v0.5.0)——连接自检、记忆水位、提炼监控与配置读写
技能写侧 · skill_materialize(L3 字节保真落盘成真文件)/ skill_put / skill_delete / skill_rename(v0.5.0)
主动关怀 · signal_pull / signal_claim / signal_ack 三工具,消费 SGME 关怀信号——信号消费 = 主动关怀,谁消费谁标记
待审队列 · review_list / review_approve / review_reject / review_auto_resolve 四工具(D-30)——needs_review 闸门的人工放行/拒绝与超期保守直存消化
DSH 规则注入 · 读取 ~/.dsh/dsg-rules/rules.md 注册为 dsg:rules system section(order -70)——身份/铁律/SGME手册/偏好/环境进稳定层,前缀缓存全命中(v0.2,2026-08-16)
前置条件
⚠️ 兼容性(DSH RC 支持矩阵,2026-10-04 实测):
| DSH 版本 | 验证状态 |
|---|---|
| 0.2.0-rc.2 | ✅ typecheck + 228 测试通过(开发基线,当前本机运行版) |
peer 声明 ^0.2.0-rc.2 覆盖 rc.2 → <0.3.0 全部版本;DSH 处于 RC 快速迭代期,新 RC 发布后先跑一遍 rc-N 兼容验证再升级本插件(方法见发布流程文档「RC 兼容验证」一节),验证通过前不承诺新 RC 兼容。0.1.0-rc.6 ~ rc.8 的旧版支持见 dsh-sgme 0.5.x。
⚠️ 本插件依赖 SGME 本体(Python 服务 :9910),没有它插件是空壳——先装本体,再装插件。两种路径任选:
路径 A:Docker 一键部署(推荐)
git clone https://github.com/freehul/sgme.git
cd sgme
docker compose up -d # 首次自动构建镜像并启动(HTTP 9910)
curl http://localhost:9910/v1/health # 返回 {"status":"ok"} 即就绪
需要本机已装 Docker;若 SGME 部署在其他机器/NAS,跳过本机安装,直接把下面的 SGME_BASE_URL 指过去即可。
路径 B:Python 本地开发
git clone https://github.com/freehul/sgme.git cd sgme python -m venv .venv # 需 Python 3.11+ .venv\Scripts\activate # Windows;Linux/macOS: source .venv/bin/activate pip install -e . cp config/.env.example .env # 填入 DEEPSEEK_API_KEY / VOLC_API_KEY 等密钥 python -m sgme # 启动服务(HTTP 9910 常驻) curl http://localhost:9910/v1/health
注册 agent 拿密钥(两条路径都需要):本体启动后运行 adapters/dsh/install.py,注册 DSH agent,把 SGME_AGENT_KEY / SGME_ADMIN_KEY 写入 .env。
服务地址:插件 baseUrl 由环境变量 SGME_BASE_URL 注入(缺省指向 NAS <NAS_IP>:9910,面向多 agent 共享场景)。本地部署时设 SGME_BASE_URL=http://127.0.0.1:9910 即可,无需改代码。
安装
# 安装到 profile(dsh plugin 转发 pnpm) dsh plugin --profile <你的profile> add dsh-sgme
安装后验证(三步自检)
1. 确认插件已挂载:dsh --profile <你的profile> --dump-config,输出应含 dsh-sgme;
2. 一条命令自检:会话内输入 /sgme(或 /sgme status)——显示 SGME 连接状态、版本、LLM、记忆水位;不可达时直接给出本体安装指引;
3. 首次对话观察:对话开始会自动注入画像与相关记忆;可先 /sgme 试试 确认检索链路。
冷启动提示:新装后记忆池是空的,前几轮对话后记忆才开始积累;wiki_search可立即查到 SGME 自带的操作手册,skill_coldstart可拉到技能检索协议 + SGME 操作手册。
故障排查
现象 · 原因 · 处理
/sgme status 显示不可达 · SGME 本体未启动或地址不对 · 按「前置条件」装好本体,确认 curl /v1/health 返回 200;本地部署设 SGME_BASE_URL=http://127.0.0.1:9910
401 / key 无效 · agent key 未注册或过期 · 运行 adapters/dsh/install.py 重新注册
插件加载报版本不兼容 · dsh 版本与插件锁定版本不符 · 本插件面向 dsh 0.2.0-rc.2,升级 dsh 前先确认兼容
注入/检索超时或异常走外网 · 代理劫持 localhost · 插件 fetch 显式禁用代理;检查系统代理是否拦截 127.0.0.1
日志去哪看 · — · 插件日志在 dsh stderr;SGME 日志在 logs/(本机)或 docker logs sgme(容器)
配置
cordis.patch.yml 默认值:
baseUrl: process.env.SGME_BASE_URL ?? 'http://<NAS_IP>:9910' # 环境变量注入,缺省指向 NAS agentKey: process.env.SGME_AGENT_KEY # 环境变量注入,密钥不落盘 adminKey: process.env.SGME_ADMIN_KEY agentId: dsh injectMode: daily syncOnTurnEnd: true
baseUrl与密钥均通过环境变量注入(符合 SGME 密钥不落盘铁律);SGME_BASE_URL缺省指向 NAS(<NAS_IP>:9910),SGME 部署在其他机器时改环境变量即可,无需改代码;- 生产环境请用 SGME 的
adapters/dsh/install.py注册 agent 后覆盖 dev key(install.py 已把SGME_BASE_URL一并写入.env)。
用法
接入后,DSH 自动拥有 53 个工具(与 SGME 能力面对齐,适配器平级对账零漂移):
检索与知识库(7)
memory_search(query, limit, dimensions, match)— 查历史事实/偏好/决策,涉及「之前/以前/还记得」时必用;conversation_search(query, limit)— 检索 L0 原始会话正文(FTS 原文层),与 memory_search 互补(v0.6.0 起);wiki_search(query, limit)— 查提炼后的场景知识(FTS5 BM25 + 中文分词);wiki_pages(category, limit)— 按 category 列知识库手册目录(如 skill/sgme),渐进式披露 L2 索引层(W5);wiki_page(page_id)— 按 page_id 拉取知识库手册全文(技能手册/踩坑记录),索引 skill 引导的加载通道(W5);wiki_page_update(page_id, content, append)— 追加/覆盖知识库手册正文(W5 回写通道);wiki_page_add(title, content, category, tags)— 新建知识库页面(幂等 upsert)。
技能层(5,v0.4.0 新增,对齐 SGME 1.1.0 范式)
skill_search(query, limit)— 检索 SGME 技能库,只返回技能名与触发描述;skill_digest(name)— 技能摘要:字段 + 正文骨架 + uses 依赖,执行前审核用;skill_get(name, section)— 拉技能全文注入上下文(section 可只取一节省 token);skill_list(limit, offset)— 分页浏览技能库索引;skill_coldstart()— 冷启动包:1 个《技能检索协议》+ SGME 操作手册。
⚠️ 技能不预载,按需「先skill_search检索 → 再skill_get拉全文」注入——这是 SGME 1.1.0 的既定范式(B114 技能去 wiki 化后,技能正文已不在 wiki 里,wiki 通道搜不到技能手册)。
主动关怀(3)
signal_pull(signal_type, limit)— 会话开始拉未消费关怀信号;signal_claim(event_id)— 原子认领信号(谁消费谁标记);signal_ack(event_id, status, result)— 写消费回执。
三池登记(3,Agent 主动维护)
idea_add(content, priority, source_ref)— 创意池(仅用户主动提出才记);demand_create(title, content, priority, project_id)— 待办池(跨项目统一,会话中遇到要办的事主动登记);project_register(project_id, path, name, git_repo, milestone)— 项目池(用户立项时登记)。
角色与记忆纠错(10)
inject(mode)— 按场景模式拉画像;role_list()/ `role_assemble(role_id,
…(truncated)
以上内容来自 npm 上的 README,我们只做格式化,不改内容。
版本
npm 上共发布:13,最后更新 2026-11-03