编者按

lhdrc/dsh-df-memory

这是一个 DeepSeek Harness(DSH)插件。本站汇总其 GitHub README、安装信息、维护状态与公开安全信号。

dsh-df-memory

DeepSeek Harness(Cordis)插件:把 lhdrc-agent-memory(df-memory 核心仓)的记忆能力接入 agent 工具面。

当前版本 0.5.1(npm 已发布)。

安装

方式一:npm 安装(推荐)

dsh plugin --profile web add dsh-df-memory
# 或
cd <profile 目录> && pnpm add dsh-df-memory

核心库会作为依赖自动从 npm 拉取,无需手动安装。

方式二:clone 本地安装(开发用)

git clone https://github.com/lhdrc/lhdrc-agent-memory
git clone (https://github.com/lhdrc/dsh-df-memory.git)
# 本地 link 安装插件(改动插件源码即时生效)
dsh plugin --profile web add ./dsh-df-memory
# 或
dsh --patch ./dsh-df-memory/cordis.patch.yml

clone 方式下插件的核心依赖指向 npm;若需直接使用本地 core 源码,请手动改为 file:../lhdrc-agent-memory/packages/core

安装后若 bundles 列表未自动更新,检查 profile package.jsondsh.profile.bundles 包含 dsh-df-memory

主 API 是工具,不是读仓文件

Agent 应通过以下工具访问记忆,不要cat brains/… 或直接读 markdown 当作主路径:

工具用途
memory_query检索相关记忆;可选 type 过滤(decision|lesson|note|experience|skill),命中带 schema_type 层标签。默认排除 skill 与 *.overview.md/*.abstract.md 侧车(显式 type=skill 时豁免;侧车原文仍可 memory_read)。experience/skill 命中额外带 eta_score/support/source_paths(snippet 优先 trigger)。可选 brain 覆盖本次调用的 brain
memory_read读单个节点原文;可选 brain
memory_rememberLLM 编译写入(默认异步:返回 accepted+task_idwait=true 同步等到 kept;无 Key 且无 bridge → E_DISABLED)。可选 brain
memory_job_status查询 remember/compile 任务状态(.dfmemory/jobs/{brainId}/)。只给 task_id 时只查当前默认 brain,扫其它 brain;可另传 brain
memory_capture零 LLM 显式写一条 L0 笔记(captureNode,ADD-only,llm.provider=off 也可用)。可选 metric/value/unit/period 为该次 facts 记量纲(value 必须有 metricmetric 需至少一条 facts
memory_init在工作区初始化记忆仓(initMemoryRepogit: init|existing|off
memory_tree只读盘点仓内目录/文件(listTree/renderTree
memory_forget软归档节点(status=archived,D17,记 ledger)
memory_sync显式把 dirty 刷进 git 账本(flushRepoLedger explicit,等价 sync --commit
memory_brainbrain 管理:list(含 sources / is_default)/ create(已有则保持)
memory_rebuild_index从 md 重建索引(rebuildIndex;D1 索引可丢可重建)
memory_events列出近期 ledger 事件(listLedgerEvents
memory_skill规则层list / find / read / inject;skill 不混默认 memory_queryinject 经宿主 ctx.skills.register 登记为会话 skill(trigger + procedure 摘要,非全文)。可选 brain
memory_skill_outcome显式打分 { name, success, note? }eta_score/support/status因 success 自动 activate
memory_trend查指标趋势 { metric, threshold?, direction?, brain? } → 扫 facts 的 metric/value 检测回归;points:[] 是合法结果(不报错)。数据用 memory_capture + metric/value 写入

Prompt section df-memory 会在 system prompt 中提醒模型遵守上述约定。

配置(cordis.yml)

repoRoot: null    # 默认从 DSH 会话工作区向上找 memory.yml(不是 dsh 进程 cwd)
brainId: null     # 默认仓内 brain_id
agentId: dsh      # created_by 前缀
llmBridge: true   # provider=off 时用 DSH 的 LLM 跑 memory_remember;false 关闭
llmProvider: deepseek-official   # bridge 路由 provider(可选)
llmModel: deepseek-v4-flash      # bridge 路由 model(可选)
skillInjectMaxChars: 2000  # 单 skill 注入体上限(可选)
skillInjectMaxCount: 3     # 会话级注入 skill 个数上限(可选)
injectTopK: 5              # pre-step 知识注入 top-k(可选)
bootInjectExperiences: true  # session-start 注入成熟经验(可选)
bootInjectTopK: 3            # 启动注入条数(可选)
rememberAsync: true          # false 时 remember 等价 wait:true
# compile.job_timeout_ms: 120000  # 写在 memory.yml 的 compile 段;超时 job 标 failed + E_TIMEOUT,不写 L0

定位顺序:repoRootDF_MEMORY_ROOT → 当前会话 SessionHeader.cwdworkspaceRegistryprocess.cwd()。Web UI 里请把工作区选成含 memory.yml 的目录。若仍报「未找到 memory.yml」,在插件 config 里写绝对 repoRoot,或让 agent 调用 memory_init 建仓。

自动行为(挂钩)

  • 会话摄入autoBuffer 默认 true。session/event 只收 user/model + assistant;达窗 / dispose 入队 compile(任务权威 .dfmemory/jobs/,不进检索、不进 git)。autoBuffer: false 可关。
  • 门控注入:pre-step 命中 shouldQueryMemory → 检索 top-k 注入(injectOnGate / injectTopK),失败 fail-open。
  • 启动注入agent/session-start 注入该 brain active 经验 top-3(bootInjectExperiences 默认 true);与门控注入按 path 去重。不注 skill、不注 L0。
  • LLM bridge:仓内 llm.provider=off 时,memory_remember 自动走 DSH 自己的 LLM(ctx.get("llm")complete()),无需在仓内配 API key;bridge 覆盖 compile 抽取与懒蒸馏。kill_switch 仍优先。

宿主侧注意:ctx.llm 属性不可读(llm 不在插件 inject 列表),必须走规范访问 ctx.get("llm")

测试

bun install
bun test

引用

REPOSITORY SIGNALS

安全与安装证据

该分数只基于公开仓库元数据与本站登记的安装证据,不等同于代码安全审计。

来源可追溯

来自公开插件目录,并链接到公开 GitHub 仓库。

许可证

GitHub 元数据中未检测到许可证。

维护活跃度

最近 180 天内有代码更新。

安装证据

尚未登记可复验的精确安装元数据,请按仓库说明手动检查。

安装生命周期脚本

已检查的包元数据未声明安装生命周期脚本。

需要留意missing-license