精选
为什么选中它
待人工精选——以下事实来自源码仓库。
它能做什么
待人工精选——以下事实来自源码仓库。
适合谁
想用 DSH 获得这项能力的用户;装前建议先看源码和文档。
风险提示
- 没有明确许可证,使用前确认授权。
待人工精选——以下事实来自源码仓库。
待人工精选——以下事实来自源码仓库。
想用 DSH 获得这项能力的用户;装前建议先看源码和文档。
dsh plugin --profile web add github:yangyongzhen/dsh-memory 作者没有声明支持的平台。
preference(偏好,应默认遵守)、fact(项目/环境事实)、summary(会话/任务摘要)、knowledge(可复用知识/经验) - 两种作用域:global(所有项目适用)、project(按项目隔离,slug 自动从会话 cwd 推导) - 四个 Agent 工具:memory_write / memory_read / memory_search / memory_delete - 会话开始自动注入:监听 agent/pre-step,在第一步把全局+项目记忆渲染成带字节预算的 <system-reminder> 注入;内容寻址去重,resume 会话不会重复注入 - 原子持久化:临时文件 + rename,崩溃不产生撕裂文件;损坏的 unit 优雅降级为空而不是崩溃 - 半自动:写入由 Agent 判断(建议先 memory_search 查重再写),符合你的「半自动」选型 ## 安装 sh dsh plugin --profile <name> add dsh-memory # 或从本地 checkout 安装 cd <dsh-memory目录> && dsh plugin --profile <name> add . ## 配置 在 profile 的 cordis.patch.yml(或 --patch 覆盖)中配置: yaml - id: memory config: enabled: true root: C:/Users/<you>/.dsh/memory # 可选;默认 $DSH_HOME/memory(支持 ~ 前缀) maxBytes: 4000 # 注入预算(UTF-8 字节),默认 4000 maxEntryBytes: 512 # 注入时单条内容上限,默认 512 injectOnStart: true # 会话开始自动注入,默认 true searchLimit: 20 # memory_search 默认返回上限,默认 20 ## 工具 ### memory_write json { "type": "preference", "scope": "global", "content": "用户偏好中文回复", "tags": ["language"], "importance": 4 } - type: preference | fact | summary | knowledge(必填) - scope: global | project(必填;project 自动绑定当前会话 cwd) - content: 记忆内容(必填) - id: 已存在记忆的 id,传了则更新该条 - tags: 检索标签(可选) - importance: 1..5 重要度(可选,注入与搜索排序参考) ### memory_read 按作用域(+ 可选类型过滤)列出记忆,最新在前。 ### memory_search 在全局+当前项目记忆中检索:query(内容/标签不区分大小写包含匹配,多词须全命中)、tags(交集)、type 过滤;按重要度、再按更新时间排序。 ### memory_delete 按 id + scope 删除一条记忆。 ## 数据布局 $DSH_HOME/memory/ ├── global.json # 全局记忆(数组,version: 1) └── projects/ └── <slug>.json # 每个项目一个 unit 文件 每条记录: json { "id": "…", "type": "preference", "scope": "global", "content": "…", "tags": [], "importance": 3, "createdAt": "2026-08-20T…", "updatedAt": "2026-08-20T…" } ## 工作原理 1. 存储(src/store.ts):MemoryStore 按作用域管理 JSON unit 文件,put/remove/clear 全部原子写;搜索按重要度+时间排序。 2. 渲染(src/render.ts):renderMemoryBlock 把条目逐条贪心装入 <system-reminder>,严格遵守 maxBytes 预算;放不下的条目跳过而不是丢整个 section。 3. 注入(src/index.ts):agent/pre-step 水瀑布中,仅 step === 1 且尚未注入过时,把渲染块追加到 claimed messages 之后进入第一次请求。source 带 plugin: 'memory' + digest,alreadyInjected 通过扫描会话 surface 去重,resume 安全。 ## 开发 bash pnpm install pnpm run build # tsc → lib/ pnpm test # store 单测(11 项)+ smoke(5 项) ## 设计取舍 - 半自动写入:注入块会提示 Agent「如需更新记忆,使用 memory_write / memory_delete」,由 Agent 判断何时沉淀;不做全自动摘要(那需要额外 LLM 调用)。 - 预算优先:注入默认 4000 字节,宁可少注入也不撑爆上下文;importance 高的条目优先。 - 文件即真相:不用 SQLite/额外服务,global.json 人类可读可手改,和你的 dsh-session-report 风格一致。 ## License MIT不看 Star,人工一条条挑的。
把 DSH 的 settings.yaml 做成可视化看板:所有已注册的 settings namespace——包括官方界面从未覆盖的第三方插件配置——都渲染成可编辑表单。项目还早,但方向很对:告别手改 YAML。
给 DSH 的 DIY 轨迹可视化:把 agent 的计划与执行画成图,不用翻原始日志也能看清它在干嘛。项目还早,但补上了「一眼看懂 agent 在做什么」这个真实缺口。
从 Claude Code / Codex 把活派给 DSH:在宿主内拉起带分级预设的 DSH agent 会话,看原生子代理进度,还能借它的多模态桥给纯文本的 DSH 补上视觉和生图。编排型插件,把 DSH 变成其他编码 agent 的后端。