123caiji / dsh-memory-toolkit

Listed

Memory and token-optimization plugin toolkit for DeepSeek Harness: cross-session knowledge graph memory + five-layer token-saving orchestration.

mainModelToolSkillSession View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:123caiji/dsh-memory-toolkit

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit cb99d50Synced Aug 18, 2026

This README snapshot could not be refreshed during the latest directory sync.

dsh-memory-toolkit

DeepSeek Harness 记忆与 Token 优化插件工具包:跨会话知识图谱记忆 + 五层省 Token 编排。

Memory and token-optimization plugin toolkit for DeepSeek Harness. Two independent plugins that compose or stand alone:

PluginPackagePurpose
graph-memory@123caiji/dsh-graph-memoryCross-session knowledge graph memory: typed nodes, causal relations, PageRank, communities, dual-path recall (vector + FTS5)
lean-context@123caiji/dsh-lean-contextToken-saving orchestration: five orthogonally-layered capabilities (discipline, convergence, routing, audit, rebuild)

实测数据

以下数据来自实际运行(2026-08-18,Node v24.15.0,Windows 11):

代码规模

指标graph-memorylean-context合计
TypeScript 源码行数5,8134486,261
测试文件数1111
测试用例数107107

测试结果

Test Files  1 failed | 10 passed (11)
     Tests  1 failed | 106 passed (107)
  Duration  8.52s
  • 106/107 测试通过(99.1% 通过率)
  • 唯一失败:migration.test.ts 的临时目录清理(Windows EPERM 权限问题,非代码缺陷)

graph-memory Benchmark

插入 15 个渗透测试知识节点后的实际运行数据:

数据库大小: 4 KB
节点总数: 15 (TASK: 8, SKILL: 6, EVENT: 1)
关系总数: 14 (USED_SKILL: 3, SOLVED_BY: 3, REQUIRES: 3, PATCHES: 3, CONFLICTS_WITH: 2)
向量索引: 15 条 (128 维)

FTS5 搜索 "nmap 扫描" → 返回 3 条:
  - [TASK] nmap-端口扫描: 对 192.168.1.0/24 执行 nmap -sS -sV 全端口扫描
  - [TASK] wpscan-wordpress-扫描: 对 WordPress 站点执行 wpscan
  - [TASK] nikto-web-扫描: 执行 nikto 对 Web 服务进行漏洞扫描

向量搜索 → 返回 5 条:
  - [TASK] nmap-端口扫描
  - [TASK] hydra-smb-暴力破解
  - [SKILL] nuclei-漏洞扫描模板
  - [TASK] sqlmap-注入检测
  - [SKILL] burp-suite-代理抓包

lean-context Token 节约实测

纪律层注入成本(一次性):

Discipline prompt: 2,914 bytes ≈ 911 tokens

对 DSH 仓库的 context_audit 实测(指令链 token 成本):

./AGENTS.md                                    15,997 bytes ≈  4,999 tokens
./docs/AGENTS.md                               10,635 bytes ≈  3,323 tokens
./.agents/skills/dsh-find-simplifications/      14,680 bytes ≈  4,588 tokens
./.agents/skills/dsh-prose-standard/            9,139 bytes ≈  2,856 tokens
./.agents/skills/dsh-translate-docs/           10,316 bytes ≈  3,224 tokens
./.agents/skills/record-browser-gif/           12,195 bytes ≈  3,811 tokens
./.agents/skills/dsh-code-review/                8,278 bytes ≈  2,587 tokens
...(共 14 个文件)
TOTAL: 123,784 bytes ≈ 38,684 tokens

ZeroToken 模式下的输出节约(实测对比):

场景冗长输出精简输出节约降幅
A: "帮我看看这个函数做什么"213 tokens27 tokens186 tokens88%
B: 代码修复任务214 tokens65 tokens149 tokens70%

综合估算(100 轮会话):

平均每轮节约:  168 tokens
纪律层成本:    911 tokens(一次性注入)
100 轮净节约:  15,889 tokens
ROI:          17x(投入 1 倍 token 换回 17 倍节约)
纪律层占比:    2.4%(相对于 38,684 tokens 指令链)

结论:纪律层仅占指令链 2.4% 的 token 成本,但通过 ZeroToken 模式可在每个会话中节约 70%-88% 的输出 token,100 轮会话 ROI 达 17 倍。


目录


快速安装

方式 A:从 GitHub 安装(推荐)

# 安装整个工具包
dsh plugin add github:123caiji/dsh-memory-toolkit

# 或只安装单个插件
dsh plugin add github:123caiji/dsh-memory-toolkit --subdir packages/graph-memory
dsh plugin add github:123caiji/dsh-memory-toolkit --subdir packages/lean-context

方式 B:从本地路径安装(开发模式)

git clone https://github.com/123caiji/dsh-memory-toolkit.git
cd dsh-memory-toolkit
pnpm install

# 从本地路径加载到 DSH
dsh plugin add ./packages/graph-memory
dsh plugin add ./packages/lean-context

方式 C:网页端安装

  1. 启动 DSH Web:dsh web
  2. 访问 http://127.0.0.1:3080
  3. 进入 设置 → 插件 → 添加
  4. 填入 github:123caiji/dsh-memory-toolkit
  5. 选择要加载的子包

验证安装

dsh plugin list    # 确认 graph-memory 和 lean-context 处于 active 状态
dsh doctor         # 诊断插件加载错误

插件一:graph-memory(跨会话记忆)

是什么

为 DeepSeek Harness 提供跨会话的长期记忆能力。基于 SQLite 知识图谱,将任务(TASK)、技能(SKILL)、事件(EVENT)存储为节点,通过五种因果关系连接,使用 PageRank 和社区检测进行相关性排序。

核心特性

  • 三类节点:TASK(任务)/ SKILL(技能)/ EVENT(事件)
  • 五种因果关系:USED_SKILL / SOLVED_BY / REQUIRES / PATCHES / CONFLICTS_WITH
  • 双路召回:向量检索(可选)→ 社区扩展 → PageRank 排序;未配置向量时回退 SQLite FTS5 全文检索
  • 自动注入:相关记忆在 Prompt Assembly 阶段自动注入上下文

使用方法

自动模式(无需操作):插件加载后,相关记忆会自动注入到新会话的系统提示中。

工具调用

工具说明示例
gm_status查看数据库状态、节点数、关系数gm_status()
gm_search检索相关记忆gm_search(query="nmap 扫描", limit=5)
gm_record记录新节点gm_record(type="TASK", title="端口扫描", content="对 192.168.1.0/24 执行 nmap")
gm_stats查看图谱统计gm_stats()

向量检索配置(可选)

不配置时自动回退 FTS5 全文检索。配置后启用语义向量召回,召回精度更高:

# 设置环境变量(DeepSeek Embedding API 示例)
setx GRAPH_MEMORY_EMBEDDING_API_KEY "your-api-key"
setx GRAPH_MEMORY_EMBEDDING_BASE_URL "https://api.deepseek.com/v1"
setx GRAPH_MEMORY_EMBEDDING_MODEL "text-embedding-v1"
setx GRAPH_MEMORY_EMBEDDING_DIMENSIONS "1024"

重启 DSH 后生效。验证:调用 gm_statusvectorEnabled 应为 true

数据库位置

默认:~/.dsh/graph-memory/graph-memory.db

覆盖:在 profile 的 cordis.patch.yml 中修改 dbPath

- insert:
    - id: graph-memory
      name: '@123caiji/dsh-graph-memory'
      config:
        dbPath: /your/custom/path/graph-memory.db

完整文档见 packages/graph-memory/README_CN.md


插件二:lean-context(省 Token 编排)

是什么

五层正交的 Token 优化能力,每层独立开关。内置纪律层和审计层,开箱即用;收敛、路由、重建层委托上游社区插件。

五层架构

作用机制实现来源默认风险
discipline(纪律)systemPrompt 注入六模式决策表内置
convergence(收敛)MCP 工具 schema 压缩委托 dsh-mcp-lens
routing(路由)简单问题 flash 直答委托 dsh-model-router
audit(审计)只读上下文成本审计内置(context_audit 工具)
rebuild(重建)Agent Loop 切片重建委托 dsh-slice-agent-loop

使用方法

纪律层(自动)

  • 插件加载后自动注入六模式决策表到系统提示
  • 对 Agent 说"省 token"强化 ZeroToken 模式
  • 说"详细解释"退出省 token 模式

审计层

# 调用 context_audit 工具审计上下文 token 成本
context_audit(cwd=".")

输出:AGENTS.md / CLAUDE.md / .agents/skills/*/SKILL.md 的 token 成本 + 重复检测。

收敛 / 路由 / 重建层: 安装上游插件后在配置中开启:

dsh plugin add github:labmimors/dsh-mcp-lens          # 收敛层
dsh plugin add github:tianji-qingtian/dsh-model-router # 路由层
dsh plugin add github:TT-Wang/dsh-slice-agent-loop     # 重建层(高风险,单独验证)

完整文档见 packages/lean-context/README.md


配置参考

两个插件的配置都在各自的 cordis.patch.yml 中。可在 profile 层覆盖:

# ~/.dsh/profiles/web/cordis.patch.yml
- insert:
    - id: graph-memory
      name: '@123caiji/dsh-graph-memory'
      config:
        recallMaxNodes: 10        # 召回最大节点数(默认 6)
        recallMaxDepth: 3         # 召回深度(默认 2)
        maintenanceInterval: 12   # 维护周期(小时,默认 6)

    - id: lean-context
      name: '@123caiji/dsh-lean-context'
      config:
        discipline:
          enabled: true
        audit:
          enabled: true
          cacheSeconds: 120
        convergence:
          enabled: true             # 需先安装 dsh-mcp-lens
        routing:
          enabled: false
        rebuild:
          enabled: false            # 高风险,默认关

开发指南

环境要求

  • Node.js >= 20(推荐 22.19+ 或 24+)
  • pnpm >= 9
  • DSH 源码仓库(用于本地集成测试)

本地开发

git clone https://github.com/123caiji/dsh-memory-toolkit.git
cd dsh-memory-toolkit
pnpm install

# 构建
pnpm run build

# 测试
pnpm run test

# 单个包
pnpm --filter @123caiji/dsh-graph-memory run build
pnpm --filter @123caiji/dsh-lean-context run test

目录结构

dsh-memory-toolkit/
├── package.json                 # workspace 根
├── pnpm-workspace.yaml
├── LICENSE                      # MIT
├── README.md                     # 本文件
├── .gitignore
└── packages/
    ├── graph-memory/             # 跨会话知识图谱记忆 (5,813 行 TS)
    │   ├── package.json
    │   ├── cordis.patch.yml      # DSH 插件注册
    │   ├── dsh.ts                # DSH 工具注册入口 (428 行)
    │   ├── index.ts              # 导出入口 (872 行)
    │   ├── src/
    │   │   ├── engine/           # LLM/Embedding 引擎
    │   │   ├── extractor/        # 节点提取器
    │   │   ├── format/           # 格式化与组装
    │   │   ├── graph/            # 图算法(PageRank/社区/去重/维护)
    │   │   ├── recaller/         # 召回逻辑
    │   │   ├── store/            # SQLite 存储层 (643+ 行)
    │   │   └── types.ts          # 类型定义
    │   ├── test/                 # Vitest 测试 (107 用例)
    │   ├── docs/                 # 文档与图片
    │   ├── README.md             # 英文文档
    │   ├── README_CN.md           # 中文文档
    │   └── LICENSE               # MIT(双版权:adoresever + 123caiji)
    └── lean-context/             # 省 Token 编排 (448 行 TS)
        ├── package.json
        ├── cordis.patch.yml
        ├── src/
        │   ├── index.ts          # 统一入口 (126 行)
        │   ├── discipline.ts      # 纪律层:六模式决策表 (65 行)
        │   └── audit.ts          # 审计层:context_audit 工具 (257 行)
        ├── README.md             # 完整文档
        └── LICENSE               # MIT

验证与排查

安装验证

dsh plugin list
# graph-memory    active
# lean-context    active

graph-memory 验证

# 在 DSH 会话中调用
gm_status()
# 期望输出:dbPath, nodeCount, relationCount, vectorEnabled

lean-context 验证

# 纪律层:新会话的系统提示应包含 "Lean Context — Six-Mode Discipline"
# 审计层:context_audit 工具应可用
context_audit(cwd=".")

常见问题

问题原因解决
Cannot find module '@photostructure/sqlite'native binding 未编译pnpm install 时确认 allowBuilds 包含该包
gm_status 返回 vectorEnabled: false未配置 embedding 环境变量设置 GRAPH_MEMORY_EMBEDDING_* 后重启 DSH
纪律层未生效systemPrompt section 未注入检查 cordis.patch.ymldiscipline.enabled: true
委托层报 not wired yet上游插件未安装按上文安装 dsh-mcp-lens / dsh-model-router / dsh-slice-agent-loop

排查命令

dsh doctor                # 诊断插件加载错误
dsh plugin list           # 列出全部插件
dsh plugin reload         # 重载插件
dsh plugin remove <name>  # 卸载

许可证与致谢

许可证

MIT。详见 LICENSE

致谢

上游插件(可选依赖)

插件用途仓库
dsh-mcp-lensMCP 工具 schema 收敛labmimors/dsh-mcp-lens
dsh-model-router模型路由tianji-qingtian/dsh-model-router
dsh-slice-agent-loopAgent Loop 切片重建TT-Wang/dsh-slice-agent-loop

贡献

欢迎提交 Issue 和 PR:

提交前请确保 pnpm run buildpnpm run test 通过。

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
DocumentationDetected

Repository information

Language
TypeScript
License
MIT
Last updated
Aug 18, 2026, 6:02 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.