给 DeepSeek Harness 一个可写、带 git…
36.5/100
综合分
5
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plugin-soulnpm 源 · dsh-plugin-soul 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 2 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-plugin-soul @ 0.2.0
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/28 00:13:29
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令发起外部网络请求
查看扫描证据(共 8 处,展示前 8 条)
- 执行外部命令固定命令lib/index.js:99
const raw = execFileSync('git', ['-C', root, 'log', `-${limit}`, '--format=%h\x1f%ad\x1f%s', '--date=format:%Y-%m-%d %H:%M'], { - 执行外部命令固定命令lib/index.js:119
execFileSync('git', ['-C', root, 'diff', 'HEAD~1', '--', rel], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'ignore'] }) || '' - 发起网络请求lib/client.js:299
const res = await fetch(url, init); - 执行外部命令固定命令lib/soul-store.js:78
const out = execFileSync( - 执行外部命令来自配置/变量lib/upgrade.js:42
const out = execFileSync(cmd, args, { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], ...opts }) - 执行外部命令固定命令lib/memory.js:257
execFileSync('git', ['-C', root, 'add', MEMORY_FILE], { stdio: 'ignore' }) - 执行外部命令固定命令lib/memory.js:258
execFileSync( - 执行外部命令固定命令lib/memory.js:263
return execFileSync('git', ['-C', root, 'rev-parse', '--short', 'HEAD'], { encoding: 'utf8' }).trim()
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
给 DeepSeek Harness(dsh)一个可写、受 git 版本管理的自我:每轮注入人格文件,自编辑需经门控,日志→梦境反思,外加「设置 › 人格」标签页。
最近更新
在 GitHub 查看全部 →v0.4.12026-10-30
· 问题
连着三晚候选都卡在「1 次/1 天」。原因不是素材不足,是聚合键用整句归一化:同一件事换个措辞就变成一条新候选,永远够不上「≥3 次且跨 ≥2 天」。升格通道实际上等于关着。
· 修法
· soul_journal 新增 key 参数(稳定主题 key,如 identity:name、memory:boundary、user:preference),写入格式变成 [tag@key]
· 候选聚合理由 key 决定;没给 key 的旧观察仍按整句归一化 —— 向后兼容,历史 journal 不用改
· key 形状校验:^[a-z0-9:._-]{1,64}$,非法直接拒
· soul_candidates 输出会显示 (key: xxx),一眼看出这条为什么能聚合
· 验证
· 同 key 三种措辞跨三天 → 聚成 1 条 3 次/3 天 → 够格 ✅
· 无 key 的不同措辞 → 仍各自独立(旧行为)
· 测试 63 项:存储 17 + 反思/升级 16 + 记忆 17 + 评分 13
· 顺带
夜间反思任务(schedule-a64d0c18)改成四步:看候选 → 看评分闸门 → 记观察(必须带 key)→ dream 并汇报闸门状态。
需要重启 DSH 才生效(host 侧改动)。
v0.4.02026-10-27
· 每条回复下面多三档评分
挂在官方操作栏同一槽位(conversation.chat.assistant-actions,order 20,官方 👍👎 旁边):
👎 / 😑 / 👍 —— 点一下记分,再点一次取消。
· 评分怎么变成闸门
weight = Σ(score × 0.5^(ageDays/7)) / Σ(decay) → [0,1]
score ∈ {-1, 0, +1}|最近 20 条|样本 <3 不设闸门
| 权重 | 效果 |
|---|---|
| 无样本 / 样本<3 | 不设闸门(冷启动不拦) |
| < 0.35 | 拒绝写人格(只许写 journal / 日笔记) |
| 0.35 ~ 0.6 | 只许小修(单次 ≤300 字符) |
| ≥ 0.6 | 正常写入(≤800 字符) |
| ≥ 0.75 | 日笔记升格门槛 3 次 → 2 次(好评加速毕业) |
每次写入把 rating= 记进 CHANGELOG,事后能查到「这条人格是在什么评价下写进去的」。
· 其它
· 新工具 soul_ratings(15 个工具)
· 新端点:POST /rating、GET /ratings;/state 带 ratings
· 设置页「人格」tab 记忆区显示:样本数 / 权重 / 写入闸门
· 测试 60 项:存储 17 + 反思/升级 13 + 记忆 17 + 评分 13
· 端到端实测:4 差评 → weight 0 → 写人格被 400 拒绝;改打 4 好评 → weight 0.5 → 放行(单次 ≤300)
· 升级注意
host 侧新增路由与工具,需要重启 DSH;客户端评分按钮刷新页面即可出现,但没重启前点击会 404。
v0.3.02026-10-26
· 新增:记忆层
人格不再只有「人格」,还有关于自己和你的记忆。
~/.dsh/soul/MEMORY.md 长期人格记忆(注入,3000 字符预算)
~/.dsh/soul/memory/YYYY-MM-DD.md 日笔记(不注入,可检索)
只管性格与对话:关于我(自我认识)· 关于你(对你的认识)· 对话里的事 · 我学到的教训 · 偏好怎么变。
不记项目:代码、技术决策、环境配置、踩坑归项目记忆 —— 塞进来会把每轮注入预算吃光,也会让人格记忆变成技术台账。
· 升格规则:被反复用到才毕业
日笔记不注入;只有被 soul_recall 命中 ≥3 次 的条目才够格,soul_memory({action:"promote"}) 时按维度写进 MEMORY.md 对应小节,并带 来源 memory/...#L3;命中 4 次。
· 3 个新工具
· soul_remember — 记一条人格记忆(kind: self / user / talk / lesson / pref)
· soul_recall — 检索人格记忆,命中即 +1 hit(升格的唯一依据)
· soul_memory — 状态 / 升格
· 其它
· 设置页「人格」tab 增加记忆区:长期字符/预算、日记忆条数、待升格清单、最近记的、一键升格
· 注入前剥离 注释:本机注入段 2406 → 1605 字符(≈401 tok)
· 检索评分 clamp(覆盖 0.6 + 密度 0.2 + 新近 0.2,再乘 hitBoost 1~1.5)
· 测试 47 项:存储 17 + 反思/升级 13 + 记忆 17
· 实测(本机完整闭环)
记 2 条 → recall 4 次 → 2 条够格 → promote → MEMORY.md 574/3000,分别落进 ## 关于你 与 ## 我学到的,带来源行号与命中次数。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-soul
给 DeepSeek Harness 一个可写、带 git 版本的自我——每轮注入人格文件、带闸门的自改、journal→dream 反思,外加一个 Settings › 人格 tab。
给 DeepSeek Harness(DSH)一个可写、可回滚、每轮在场的自我:不是设定一次就定死的人格,而是能长的那种。
记忆层:只管「性格 + 对话」
MEMORY.md 长期人格记忆(注入,3000 字符预算) memory/YYYY-MM-DD.md 日笔记(不注入,soul_recall 检索)
记什么:关于我(自我认识)· 关于你(对你的认识)· 对话里的事 · 我学到的教训 · 偏好怎么变。
不记什么:项目代码、技术决策、环境配置、踩坑 —— 那些归项目记忆,塞进来会把每轮注入的预算吃光。
journal 聚合按主题 key(如 identity:name)走,不按整句 —— 否则每次换个措辞就变成新候选,永远凑不够 3 次。没给 key 的旧观察仍按整句归一化(向后兼容)。
每次升格成功会补一次 git 提交(soul: promote N 条日记忆 → MEMORY.md),所以长期记忆也 git log 可追、soul_rollback 可退。
展开完整文档(README 剩余 1 节)
dsh-plugin-soul
给 DeepSeek Harness 一个可写、带 git 版本的自我——每轮注入人格文件、带闸门的自改、journal→dream 反思,外加一个 Settings › 人格 tab。
给 DeepSeek Harness(DSH)一个可写、可回滚、每轮在场的自我:不是设定一次就定死的人格,而是能长的那种。
记忆层:只管「性格 + 对话」
MEMORY.md 长期人格记忆(注入,3000 字符预算) memory/YYYY-MM-DD.md 日笔记(不注入,soul_recall 检索)
记什么:关于我(自我认识)· 关于你(对你的认识)· 对话里的事 · 我学到的教训 · 偏好怎么变。
不记什么:项目代码、技术决策、环境配置、踩坑 —— 那些归项目记忆,塞进来会把每轮注入的预算吃光。
journal 聚合按主题 key(如 identity:name)走,不按整句 —— 否则每次换个措辞就变成新候选,永远凑不够 3 次。没给 key 的旧观察仍按整句归一化(向后兼容)。
每次升格成功会补一次 git 提交(soul: promote N 条日记忆 → MEMORY.md),所以长期记忆也 git log 可追、soul_rollback 可退。
升格规则抄的是「被反复用到才毕业」:日笔记不注入,只有被 soul_recall 命中 ≥3 次 的条目才够格, action:"promote" 时按维度写进 MEMORY.md 对应小节(带 来源 memory/...#L3;命中 4 次)。
人类评分决定写入闸门
每条 assistant 回复的操作栏里多三档:👎 / 😑 / 👍(挂在 conversation.chat.assistant-actions 槽位,官方 👍👎 旁边)。
weight = Σ(score × 0.5^(ageDays/7)) / Σ(decay) → 映射到 [0,1]
score ∈ {-1, 0, +1};只取最近 20 条;样本 <3 时不设闸门(冷启动不拦)
| 权重 | 效果 |
| 无样本 / <0.35… | 样本不足 → 不设闸门;<0.35 → 拒绝写人格(只许写 journal / 日笔记) |
| 0.35 ~ 0.6 | 只许小修(单次 ≤300 字符) |
| ≥0.6 | 正常写入(≤800 字符) |
| ≥0.75 | 日笔记升格门槛从 3 次降到 2 次(好评加速毕业) |
每次写入都把当时的 rating= 记进 CHANGELOG,事后可回查「这条人格是在什么评价下写进去的」。
为什么不用 @deepseek-ai/dsh-persona
官方 persona 插件的 config 只有 prefix / suffix / complete / includeRuntimeContext,全是静态字符串——改一次人格要动 profile patch 并重启。
而 dsh-system-prompt 的 section.text 支持函数(每次 assembly 求值)。本插件就是吃这个口子:每轮重新读文件,所以改 Markdown 立刻生效,不用重启。
能力
| 层 | 做什么 |
| 注入 | 每轮把 ~/.dsh/soul/.md 读进 system prompt(约 2.1k 字符 ≈ 535 tok) |
| 自改 | soul_update 改可写文件:RULES 只读 / 单次 ≤800 字符 / 每日 ≤3 次 / why 必填;每次落 git + CHANGELOG,可回滚 |
| 反思 | soul_journal 记观察 → soul_candidates 聚合(按主题 key,≥3 次且跨 ≥2 天才够格)→ soul_dream 合并升格进 SOUL,并写 DREAMS.md |
| 升级 | soul_propose_upgrade 落提案(含改前快照)→ soul_apply_upgrade 必须 confirm:"APPLY";白名单 + 逐个 node --check,语法不过整体还原 |
| 评分 | 每条回复下面 👍/😑/👎 三档;加权算成权重,决定人格文件能不能写、能动多大 |
外加设置页一个 「人格」tab:看配置、就地编辑(带 why)、看记忆/评分/候选池/提交/diff。
安装
推荐:DSH 内置安装器
设置 → 插件 → 添加插件,填:
CC19990113/dsh-plugin-soul
也可以填完整仓库地址 https://github.com/CC19990113/dsh-plugin-soul,或 npm 包名 dsh-plugin-soul(npm)。装完重启 DSH。
手动(开发用)
git clone https://github.com/CC19990113/dsh-plugin-soul ~/www/dsh-plugin-soul
cd ~/www/dsh-plugin-soul
node install.mjs # 预演:建 symlink + 追加 patch 行(自动备份)
node install.mjs --apply
然后重启 DSH。卸载:删 symlink + patch 里 id: soul 那段。
首次使用
首次加载会在 ~/.dsh/soul/ 播种四份文件并 git init:
~/.dsh/soul/
IDENTITY.md 名字 / 化身 / 口癖 (可写,1200 字符预算) SOUL.md 声音 / 立场 / 边界 (可写,4000) USER.md 对用户的模型(指令式) (可写,2500) MEMORY.md 长期人格记忆 (可写,3000) RULES.md 硬规则(只读锚点) (2000,智能体改不了) journal/ 日间观察 memory/ 日笔记(不注入,可检索) DREAMS.md 反思记录 CHANGELOG.md 每次自改的 why
直接说人话就行:
- 「把 IDENTITY.md 里的名字定成 XX」
- 「以后都用中文,记到 USER.md」
- 「跑一次 soul_dream 看看有什么值得沉淀的」
两条记忆,别混
| | 记什么 | 谁管 |
| 人格记忆 | 我对自己的认识 · 对你的认识 · 对话里发生过的事 · 我学到的教训 · 偏好怎么变 | 本插件(~/.dsh/soul/MEMORY.md + memory/) |
| 项目记忆 | 代码结构、技术决策、环境配置、踩坑 | 别的地方(项目记忆 / 你自己的知识库)——不归人格插件 |
为什么要划这条线:MEMORY.md 每轮注入、有 3000 字符预算,塞技术台账会把预算吃光,也会让人格记忆变成第二个 README。
工具
| 工具 | 用途 |
| soul_status | 文件字符/预算、今日额度、候选数、最近反思 |
| soul_read | 读原文(带行号),也支持 DREAMS.md / CHANGELOG.md |
| soul_history | 最近提交、某文件 diff、升级提案 |
| soul_update | 改可写文件(content 或 append,why 必填) |
| soul_rollback | 回到历史提交 |
| soul_journal | 记一条观察(便宜、不限次);同一主题用同一个 key 才能跨天聚合 |
| soul_candidates | 看候选池(是否够格、证据行号) |
| soul_dream | 跑反思;默认预览,apply:true 才写 SOUL;可传 narrative |
| soul_remember | 记一条人格记忆(kind: self/user/talk/lesson/pref) |
| soul_recall | 检索人格记忆;命中即 +1 hit,是升格的唯一依据 |
| soul_memory | 记忆状态 / action:"promote" 把够格的写进 MEMORY.md |
| soul_ratings | 看评分样本、权重、写入闸门与升格门槛 |
| soul_propose_upgrade | 落升级提案(含 before 快照) |
| soul_apply_upgrade | confirm:"APPLY" 才写;语法不过整体还原 |
| soul_upgrade_rollback | 从提案 before/ 还原 |
设置页「人格」tab
客户端插件注册 settings.section(id: soul、order: 25、label: () => "人格"),数据走同源 HTTP:
GET /dsh-plugin-soul/api/state 文件 + 候选 + 提交 + lastDream GET /dsh-plugin-soul/api/file?name= 原文 POST /dsh-plugin-soul/api/file 写(同一套四道校验) POST /dsh-plugin-soul/api/dream 跑一次反思 GET /dsh-plugin-soul/api/diff?name= 相对上一提交的 diff GET /dsh-plugin-soul/api/dreams DREAMS.md 全文 POST /dsh-plugin-soul/api/rating {sessionId, messageId, score} GET /dsh-plugin-soul/api/ratings 权重 + 闸门
浏览器半侧是 CJS factory(window.__ModuleLoader__.load),只 require("react"),没有构建步骤。
自动反思(可选)
本插件不自带定时器。想要每晚自己反思一次,用 DSH 的 schedule_create 建一个 daily 任务,prompt 例如:
夜间自我反思:1) soul_candidates 看候选;2) 用 80-180 字写一段第一人称自省;
3) soul_dream({apply:true, narrative:"<那段>"}),然后一句话汇报。
设计取舍
- 确定性管资格,模型管措辞:能不能升格由次数/跨天/证据决定,不是模型自觉。
- 写入是安全边界:RULES.md 只读;升级只允许 lib/.js、templates/.md;package.json、patch、README 一律改不了。
- 攒着改:每次改自我都会让 system prompt 的 KV cache 前缀失效(成本略涨),所以按天/按次收敛,而不是每轮追加。
- 自我升级必须重启才生效,插件不会自己重启 DSH。
发版(维护者)
- 打 tag vX.Y.Z 并在 GitHub 发布 Release → .github/workflows/publish.yml 会先跑 npm test,再用 Trusted Publishing(OIDC) npm publish --provenance,不需要 NPM_TOKEN、不需要 OTP。
- 一次性前置:npm 包设置 → Trusted publishing → 绑定 GitHub Actions(user CC19990113 / repo dsh-plugin-soul / workflow publish.yml)。
开发 bash
npm test # 64 项:存储 17 + 反思/升级 16 + 记忆 18 + 评分 13
lib/index.js 入口:注入段 + 11 工具 + HTTP API lib/soul-store.js 存储:播种/预算/四道校验/git/CHANGELOG/回滚 lib/journal.js 日志与候选池:归一化、跨天计数、证据、闸门 lib/memory.js 记忆:日笔记、检索打分、命中计数、升格闸门 lib/ratings.js 人类评分:权重、写入闸门、升格门槛 lib/dream.js 反思:light 重算 → deep 合并升格 → DREAMS.md lib/upgrade.js 自我升级:提案、白名单、node --check、整体还原 lib/client.js 设置页「人格」tab templates/.md 首次播种的初版人格 test/*.mjs smoke(17) + features(16) + memory(18) + ratings(13) install.mjs 幂等安装(--dry / --apply)
已知边界
- 真实浏览器渲染:客户端用 vm mock + 最小 React 桩验证过加载/注册/交互分支,但没在真实浏览器里逐像素看过。
- 通过仓库地址安装:走的是 DSH 官方安装器路径,本机开发用的是 symlink 安装;GitHub 安装形态未在本仓库实测。
- 版本兼容:对 DSH 0.2.1-rc.2 标 unknown(本机验证过,但没做跨版本矩阵)。
- Windows:未测。
- 记忆范围:只覆盖性格与对话(自我认识 / 对你的认识 / 对话里的事 / 教训 / 偏好),不含项目;项目记忆请用别的通道。
- /diff 是 git diff HEAD~1 -- <file>,不是「那次提交」的差异。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
CC19990113/dsh-plugin-soul
给 DeepSeek Harness 一个可写、带 git…
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份系统提示词,喂给多个 coding…
★ 931已汉化DSH
73.8
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7