跨会话记住用户偏好并自动沉淀可复用技能
29.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add DSH-Cortex-Lab/DSH-Cortex该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
是什么
dsh 原生插件 · chat
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 55 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
⚠︎ 实装验证未通过(unknown · 2026/10/2) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 58 处,展示前 50 条)
- 写入本地文件dsh-cortex-ui/src/index.ts:65
mkdirSync(dirname(file), { recursive: true }) - 写入本地文件dsh-cortex-ui/src/index.ts:67
writeFileSync(tmp, text, 'utf8') - 写入本地文件dsh-cortex-ui/src/index.ts:69
renameSync(tmp, file) - 写入本地文件dsh-cortex-ui/src/index.ts:71
writeFileSync(file, text, 'utf8') - 执行外部命令固定命令dsh-cortex-ui/src/index.ts:120
child = spawn('explorer.exe', ['/select,', target], { stdio: 'ignore', detached: true }) - 执行外部命令固定命令dsh-cortex-ui/src/index.ts:122
child = spawn('open', ['-R', target], { stdio: 'ignore', detached: true }) - 执行外部命令固定命令dsh-cortex-ui/src/index.ts:124
child = spawn('xdg-open', [dirname(target)], { stdio: 'ignore', detached: true }) - 读取本地文件dsh-cortex-ui/src/index.ts:153
if (!existsSync(stagedDir)) return rows - 读取本地文件dsh-cortex-ui/src/index.ts:154
for (const entry of readdirSync(stagedDir)) { - 读取本地文件dsh-cortex-ui/src/index.ts:156
if (existsSync(skillPath)) { - 读取本地文件dsh-cortex-ui/src/index.ts:158
const raw = readFileSync(skillPath, 'utf8') - 读取本地文件dsh-cortex-ui/src/index.ts:161
rows.push({ name, description, createdAt: statSync(skillPath).mtimeMs, kind: 'skill' }) - 读取本地文件dsh-cortex-ui/src/index.ts:169
rows.push({ name, description: '', createdAt: statSync(join(stagedDir, entry)).mtimeMs, kind: 'delete' }) - 写入本地文件dsh-cortex-ui/src/index.ts:199
mkdirSync(dirname(logFile), { recursive: true }) - 写入本地文件dsh-cortex-ui/src/index.ts:200
appendFileSync(logFile, '[' + new Date().toISOString() + '] ' + msg + '\n') - 删除本地文件递归dsh-cortex-ui/src/index.ts:640
rmSync(dirname(src), { recursive: true, force: true }) - 删除本地文件递归dsh-cortex-ui/src/index.ts:647
rmSync(join(skillRootPath, name), { recursive: true, force: true }) - 删除本地文件dsh-cortex-ui/src/index.ts:648
rmSync(marker, { force: true }) - 删除本地文件递归dsh-cortex-ui/src/index.ts:676
rmSync(join(stagedPath, name), { recursive: true, force: true }) - 删除本地文件dsh-cortex-ui/src/index.ts:677
rmSync(join(stagedPath, `${name}.delete`), { force: true }) - 读取本地文件dsh-memory-harness/src/index.ts:84
if (existsSync(limitsFile)) { - 读取本地文件dsh-memory-harness/src/index.ts:85
const saved = JSON.parse(readFileSync(limitsFile, 'utf8')) as { memoryLimit?: unknown; userLimit?: unknown } - 读取本地文件dsh-memory-harness/src/soul.ts:47
if (this.defaultText.length === 0 || existsSync(this.file)) return - 读取本地文件dsh-memory-harness/src/soul.ts:50
if (dir !== '.' && !existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件dsh-memory-harness/src/soul.ts:50
if (dir !== '.' && !existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件dsh-memory-harness/src/soul.ts:52
writeFileSync(tmp, this.defaultText, 'utf8') - 写入本地文件dsh-memory-harness/src/soul.ts:53
renameSync(tmp, this.file) - 读取本地文件dsh-memory-harness/src/soul.ts:68
mtime = statSync(this.file).mtimeMs - 读取本地文件dsh-memory-harness/src/soul.ts:76
const text = readFileSync(this.file, 'utf8') - 读取本地文件dsh-memory-harness/src/store.ts:47
existsSync(path: string): boolean - 写入本地文件dsh-memory-harness/src/store.ts:48
mkdirSync(path: string, opts?: { recursive?: boolean }): unknown - 读取本地文件dsh-memory-harness/src/store.ts:49
readFileSync(path: string, encoding: 'utf8'): string - 写入本地文件dsh-memory-harness/src/store.ts:50
writeFileSync(path: string, data: string, encoding: 'utf8'): void - 写入本地文件dsh-memory-harness/src/store.ts:51
renameSync(oldPath: string, newPath: string): void - 读取本地文件dsh-skill-forge/src/forge.ts:38
existsSync(path: string): boolean - 写入本地文件dsh-skill-forge/src/forge.ts:39
mkdirSync(path: string, opts?: { recursive?: boolean }): unknown - 读取本地文件dsh-skill-forge/src/forge.ts:40
readFileSync(path: string, encoding: 'utf8'): string - 写入本地文件dsh-skill-forge/src/forge.ts:41
writeFileSync(path: string, data: string, encoding: 'utf8'): void - 写入本地文件dsh-skill-forge/src/forge.ts:42
renameSync(oldPath: string, newPath: string): void - 删除本地文件dsh-skill-forge/src/forge.ts:43
rmSync(path: string, opts?: { recursive?: boolean; force?: boolean }): void - 读取本地文件dsh-skill-forge/src/forge.ts:44
readdirSync(path: string): string[] - 读取本地文件dsh-skill-forge/src/review.ts:400
if (!existsSync(this.checkpointFile)) return - 读取本地文件dsh-skill-forge/src/review.ts:401
const raw = JSON.parse(readFileSync(this.checkpointFile, 'utf8')) as Record<string, unknown> - 读取本地文件dsh-skill-forge/src/review.ts:424
if (dir !== '.' && !existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件dsh-skill-forge/src/review.ts:424
if (dir !== '.' && !existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件dsh-skill-forge/src/review.ts:428
writeFileSync(tmp, JSON.stringify(data, null, 2) + '\n', 'utf8') - 写入本地文件dsh-skill-forge/src/review.ts:429
renameSync(tmp, this.checkpointFile) - 读取本地文件dsh-skill-forge/src/review.ts:443
if (dir !== '.' && !existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件dsh-skill-forge/src/review.ts:443
if (dir !== '.' && !existsSync(dir)) mkdirSync(dir, { recursive: true }) - 写入本地文件dsh-skill-forge/src/review.ts:444
appendFileSync(this.activityFile, `[${new Date().toISOString()}] [review] ${line}\n`, 'utf8')
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 跨会话记忆持久化
- 记忆注入与记忆工具
- 后台复盘提炼技能
给 DeepSeek Harness(dsh)用的长期记忆与自动技能 Cordis 插件:SOUL/MEMORY/USER 持久化与注入、记忆工具、分阶段技能编写,以及后台复盘,提炼可复用技能与记忆。
README
由 DeepSeek 最新模型翻译生成DSH-Cortex
DeepSeek Harness(dsh)的「长期记忆 + 自动技能化 + 管理面板」插件集。
纯 Cordis 插件叠加、通过 profile 装配,不修改 dsh 核心。
GitHub stars
license
最新 Release · dsh-plugin 生态 · 反馈
DeepSeek Harness 是 DeepSeek AI 开源的 agent harness(Cordis 插件框架,"everything is a plugin")。DSH-Cortex 补齐 dsh 缺失的两个能力——跨会话长期记忆与经验自动沉淀,并提供统一的管理面板。
特性
- 长期记忆:MEMORY.md / USER.md 持久化(文件 + 审计事件双写),首 step 快照注入,写入后快照 update 即时生效;
- 人格管理:SOUL 档案级人格(懒重载,改文件即时生效)+ core:personality 机器底线人格(全局静态);
- 自动技能化:技能写端(create/patch/edit/delete)+ staged 写入 + 会话边界 promote + 后台 review 三路输出(技能 / MEMORY / USER);
展开完整文档(README 剩余 1 节)
DSH-Cortex
DeepSeek Harness(dsh)的「长期记忆 + 自动技能化 + 管理面板」插件集。
纯 Cordis 插件叠加、通过 profile 装配,不修改 dsh 核心。
GitHub stars
license
最新 Release · dsh-plugin 生态 · 反馈
DeepSeek Harness 是 DeepSeek AI 开源的 agent harness(Cordis 插件框架,"everything is a plugin")。DSH-Cortex 补齐 dsh 缺失的两个能力——跨会话长期记忆与经验自动沉淀,并提供统一的管理面板。
特性
- 长期记忆:MEMORY.md / USER.md 持久化(文件 + 审计事件双写),首 step 快照注入,写入后快照 update 即时生效;
- 人格管理:SOUL 档案级人格(懒重载,改文件即时生效)+ core:personality 机器底线人格(全局静态);
- 自动技能化:技能写端(create/patch/edit/delete)+ staged 写入 + 会话边界 promote + 后台 review 三路输出(技能 / MEMORY / USER);
- 管理面板:侧栏「插件管理」入口 + 全屏 overlay(人格 / 记忆 / 用户画像 / 技能 / MCP 五个 tab);
- 缓存友好:人格分层设计(静态在前、动态靠后)、快照渲染纯函数、review 默认 idle/session-end 触发,KV 缓存命中率不劣化。
包结构
| 包 | 职责 | 形态 |
| @dsh-cortex/dsh-memory-harness | MEMORY/USER 持久化、SOUL 人格注入、memory_add/replace/remove 工具、档案隔离 | host 插件 |
| @dsh-cortex/dsh-skill-forge | 技能写端 + staged/promote + 后台 review 三路输出 | host 插件 |
| @dsh-cortex/dsh-review-core | 共享基建:digest / 去重 / 安全扫描 / review prompt 与解析(纯 TS,无 dsh 依赖) | 纯库 |
| @dsh-cortex/dsh-cortex-ui | 管理面板:侧栏入口 + 全屏 overlay 五 tab(host 桥 + client UI) | host+client |
依赖方向:skill-forge → review-core、memory → review-core、cortex-ui → memory(读取 core:personality 文本)。
快速开始
快速安装(源码)
当前版本从源码装配(npm 发布后提供 dsh plugin --profile web add dsh-cortex 一键安装):
git clone https://github.com/DSH-Cortex-Lab/DSH-Cortex.git
按下方「装配」两节,把四个包 link 进 profile 并写入 cordis.patch.yml 重启 dsh web 生效
环境要求
- Node.js 22+
- dsh 源码 checkout(构建用,DSH_CHECKOUT 环境变量指向)
- 每个包 npm install(构建依赖)
装配
注意:本插件集的包是功能插件(含 apply 的代码包),不能放进 dsh.profile.bundles(那是配置 bundle 专用通道,会报 declares no dsh.bundle 导致启动崩溃)。正确装配分两步:
① 依赖链接:$DSH_HOME/profiles//package.json
{
"dependencies": {
"@dsh-cortex/dsh-memory-harness": "link:/abs/path/dsh-memory-harness",
"@dsh-cortex/dsh-skill-forge": "link:/abs/path/dsh-skill-forge",
"@dsh-cortex/dsh-review-core": "link:/abs/path/dsh-review-core",
"@dsh-cortex/dsh-cortex-ui": "link:/abs/path/dsh-cortex-ui"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-headless"]
}
}
}
(dsh.profile.bundles 只保留官方配置 bundle;依赖链接也可用 junction: node_modules/@dsh-cortex/ → /abs/path/。)
② 插件装配:$DSH_HOME/profiles//cordis.patch.yml
- insert:
- id: dsh-memory-harness
name: '@dsh-cortex/dsh-memory-harness'
- id: dsh-skill-forge
name: '@dsh-cortex/dsh-skill-forge'
- id: dsh-cortex-ui
name: '@dsh-cortex/dsh-cortex-ui'
约束:
- memory 插件须装配在 agent-instructions / tool-skill 之后(注入顺序 baseline→catalog→memory);
- dsh-cortex-ui 需要双装配(同一包两个装配点,角色按“能否看到 live agents”自动判定):
1. include 层(上面 cordis.patch.yml 的 insert)——提供浏览器端 client(dsh.client 声明);
2. agent preset 的 standing composition($DSH_HOME/.agent-presets//agent.cordis.yml 末尾追加同 id 行)——preset 层能看到 skills/agents/webServer 等 host 单例,负责数据桥。
原因:include 子树的 ctx 与根隔离(拿不到 skills/agents),而 client-modules 只扫描 host loader entries(preset 层插件没有 client 注册通道)。
使用
装配并重启 dsh 后,左侧栏设置上方出现「插件管理」入口,点击打开全屏面板:
- 人格:SOUL(档案人格)与 core:personality(机器底线)卡片;
- 技能:ctx.skills 技能目录(搜索、来源、调用策略、展开详情);
- MCP:loader 装配的 mcp-client 实例清单;
- 记忆 / 用户画像:功能接入中。
人格分层
系统提示词最前部的人格结构(顺序即渲染顺序):
| order | 层 | 归属 | 说明 |
| -200 | soul | DSH-Cortex | 档案级人格(SOUL.md,懒重载即时生效) |
| -100 | harness:identity | dsh 原生 | 系统身份声明 |
| -90 | core:personality | DSH-Cortex | 机器底线人格(全局静态,跨档案公共前缀) |
| 0 | deployment:persona | dsh 原生 | 预设人格(agent preset 可 shadow) |
关键机制
- 记忆:MEMORY.md 持久化(文件 + memory/write 审计双写)+ 首 step 快照注入 + 写入后快照 update;SOUL 懒重载(mtime 检测,没变零成本);
- 技能:写端一律进 staged(扫描根之外,Chokidar 不监视),会话边界 promote 才触发 skills/change → 目录更新;
- review:session-end / idle 触发,ctx.jobs 后台 + 一次 digest 三路输出(技能/MEMORY/USER),去重(相似度 ≥ 0.8)+ no-change 过滤;
- 缓存:静态人格在前(跨会话公共前缀)、动态内容靠后(消息层 append-only);快照渲染纯函数(无时间戳/路径);工具 schema 不含运行时数据。
配置
- 记忆插件:memoryLimit(默认 2200 字符)、userLimit(默认 1375)、writeApproval(默认 false,全自动落盘);
- 技能插件:reviewTrigger(默认 idle)、reviewModel(独立端点可选)、dedupeSimilarity(默认 0.8);
- 管理面板凭证/数据:webServer 路由 /cortex/api/status、/cortex/api/soul(SOUL.md 路径默认 $DSH_HOME/SOUL.md)。
开发
构建单个包(host tsc + client tsdown)
cd && DSH_CHECKOUT=/path/to/deepseek-harness bash scripts/build.sh
cd dsh-cortex-ui && npm run build:client # 含 client 的包
测试(纯逻辑运行时脚本,无需装配)
node dsh-memory-harness/tests/store.runtime.mjs
node dsh-review-core/tests/review-core.runtime.mjs
node dsh-skill-forge/tests/forge.runtime.mjs
开发准则
见 docs/开发准则.md。当前准则:严禁使用 emoji。
反馈
问题、需求、设计讨论:提交到 GitHub Issues。
贡献者
| 贡献者 | 贡献 |
| QinYun165 | 插件实现(memory-harness / skill-forge / review-core) |
| LAN-TINA-WS | 管理面板 UI(dsh-cortex-ui)/ 装配集成 / 文档 |
开发者文档
| 文档 | 内容 |
| docs/架构说明.md | 架构设计与关键机制 |
| docs/自动技能化机制设计.md | 自动总结(review)机制设计定稿:节律触发 / checkpoint / 写入层去重 / staged 人控入库 |
| docs/skill-forge现状与启停说明.md | skill-forge 开发日志:验证矩阵 / Hermes 对比 / 停机与启动条件 |
| docs/验收报告.md | 四层验收记录 |
| docs/交付与交接.md | 交付物与交接说明 |
| docs/开发准则.md | 开发准则(严禁 emoji + review 四项铁律) |
| dsh-memory-harness/README.md | 记忆插件包档案 |
| dsh-skill-forge/README.md | 技能插件包档案 |
| dsh-review-core/README.md | 共享基建包档案 |
| dsh-cortex-ui/README.md | 管理面板包档案 |
仓库结构:dsh-memory-harness/、dsh-skill-forge/、dsh-review-core/、dsh-cortex-ui/(四个包)、M0/(环境验证示例)、docs/(文档)。
许可
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
DSH-Cortex-Lab/DSH-Cortex
跨会话记住用户偏好并自动沉淀可复用技能
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这是你的仓库?认领条目