给侧边栏陪聊加上情绪状态与长期记忆
30.8/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xiaoyeziyinxing/dsh-self该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · platform
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 情绪×自我合一插件:情绪引擎 + 侧边栏陪聊(多 agent / 模拟人生 / 日记 / 微信·飞书·QQ 接入)
README
由 DeepSeek 最新模型翻译生成dsh-self
DeepSeek Harness 情绪×自我合一插件(第一批)。把《情感》《情绪》《记忆》三份设计文档里可工程化的需求融进一个插件,替代旧的 dsh-emotion 单状态机。
诚实边界:本插件做的是识别、状态模拟、策略偏置和表达生成,不是真实主观感受;没有体验连续性。这条边界写进 prompt 段和所有表达出口(受苦/自我意识/思念类声明会被强制改写)。
侧边栏「聊天」入口(v0.4.0 主对话式页内陪聊)
客户端左侧主导航有专属「聊天」项(sidebar.panellist 槽,气泡线条图标)+ 页内陪聊面板(main 槽,白色不透明卡片——主区可能被壁纸插件设成透明背景)。
展开完整文档(README 剩余 1 节)
dsh-self
DeepSeek Harness 情绪×自我合一插件(第一批)。把《情感》《情绪》《记忆》三份设计文档里可工程化的需求融进一个插件,替代旧的 dsh-emotion 单状态机。
诚实边界:本插件做的是识别、状态模拟、策略偏置和表达生成,不是真实主观感受;没有体验连续性。这条边界写进 prompt 段和所有表达出口(受苦/自我意识/思念类声明会被强制改写)。
侧边栏「聊天」入口(v0.4.0 主对话式页内陪聊)
客户端左侧主导航有专属「聊天」项(sidebar.panellist 槽,气泡线条图标)+ 页内陪聊面板(main 槽,白色不透明卡片——主区可能被壁纸插件设成透明背景)。布局对齐主会话界面:顶栏 / 气泡消息区 / 底部输入胶囊:
- 多陪聊 agent:顶栏点名字下拉快速切换;右上 ⚙ 打开聊天设置弹窗集中管理——新建(名字 ≤20 字 + 可选人设 ≤500 字)/ 编辑 / 删除(两步确认),上限 8 个;名册与历史跨重启持久化(chat_agents / chat_hist 表)
- 页内流式对话:气泡消息(agent 头像 + 圆角气泡)+ NDJSON 流式渲染(<think> 前端实时剥离),Enter 发送 / Shift+Enter 换行;单条消息 ≤2000 字;同 agent 回复生成中防重入(409)
- 模型切换(输入胶囊右下):下拉列出宿主 LLM 目录全部分组模型(llm.listProviders / llm.listModels),可选「跟随宿主默认」;选择持久化(chat_settings 表),仅影响聊天面板调用,不改动宿主主会话模型
- 情绪调试条(输入框上方):实时显示当前伙伴的情绪标签/效价、心境、内感受(挫败/谨慎);「调试详情 ▾」展开完整快照——情绪六维、元情绪、调节策略、感情 selfModel 叙事、当前模型与存储位置(数据来自 /self/api/state(v0.10.0 起按当前伙伴 agentId 查询)+ /self/api/settings-get)
- 存储文件夹(设置弹窗):可分别为记忆(聊天记录+名册 → memory.json)、情绪(affect/mood/ico/meta → 宿主 emotion.json + 每 agent emotion.<agentId>.json)、感情(selfModel → 宿主 feeling.json + 每 agent feeling.<agentId>.json)、日记(diary.<agentId>.json)、表情包(图库目录 + index.json 索引)指定文件夹;配置后每次落盘同步镜像 JSON(宿主默认存储仍保留),重启后文件夹数据优先加载;保存时校验文件夹可创建/可写
- 每 agent 独立的内部状态(v0.10.0 实体化):瞬态情绪/心境/内感受/元情绪/自我叙事/动机/解释日志均按实体隔离——宿主(主会话 __host__)与每个陪聊 agent 各一份桶,互不污染:与 A 聊得开心不会让 B 变开心,与 B 争执也不会影响 A;主会话工具(self_state/self_feel/self_log/self_note/self_motive/self_reset)与感知链路作用于宿主桶,陪聊回合同理作用于对应 agent 桶;持久化按实体键 a:<entityId> 落库(v0.9.8 及以前的单例数据自动迁移给第一个陪聊 agent,宿主从纯中性开始),文件夹镜像按实体拆分文件
- 情绪联动:与某个 agent 的对话走该 agent 自己的感知链路(TA 的情绪只由和 TA 的对话与生活塑造),历史窗口最近 20 条送入 LLM
- 微信接入(设置弹窗「微信接入」卡片,v0.5.0;v0.6.0 起三种连接模式可选):用手机微信直接和陪聊 agent 聊天,回复为流式切块发送(v0.5.1)——实时剥 <think> 后按句界(。!?…换行等)逐句推送,微信里连发多条模拟真人节奏;微信历史按 wx:<openid> 独立键存储,v0.9.6 起同步镜像到伙伴页面聊天历史(见下),微信回合与页面聊天作用于同一 agent 的同一份情绪状态
- 公众号测试号(official):绑定 mp.weixin.qq.com 测试号,本机 127.0.0.1:<port>(默认 9527)起独立回调监听(鉴权靠微信验签),收到文本先回 success(MsgId TTL 去重兜底 5s 重推),异步跑陪聊回合后经客服接口回复(48h 窗口);需公网隧道
- 个人微信(personal):由 Python 桥(wechatauto-replica)连接本机微信客户端——DB 轮询收消息、UIA 粘贴发送,白名单过滤联系人;无需公网穿透,但依赖本机微信窗口
- 微信 Bot(扫码)(ilink,推荐):模仿 dsh-weixin 走腾讯官方 iLink Bot 接口——设置页点「扫码绑定微信」出二维码(服务端编码为 dataURL 直显),手机微信扫码确认即绑定;若微信要求配对码,界面会出现输入框,填手机上显示的数字点确认即可继续;「绑定的陪聊伙伴」下拉可选择由哪个 agent 回复微信消息,绑定后改动点「应用」立即生效;纯出站长轮询收消息,无需公网穿透、不依赖本机微信客户端、无封号风险;仅处理扫码账号本人的私聊文本(语音自动转写),凭据失效(ret=-14)时回设置页重扫即可
- 微信 ↔ 页面聊天双向镜像(v0.9.6):微信收到的消息与 agent 的回复会同步镜像一份到该伙伴的页面聊天历史(v0.10.9 起镜像消息不带〔微信〕来源标记,与页面消息统一展示)——客户端聊天框能直接看到微信上聊了什么,且页面聊天时 agent 能接上微信对话的上下文;客户端聊天面板 5s 轮询合并新消息,微信消息到达自动渲染无需重开面板
- 多账号接入(v0.9.7):微信/飞书/QQ 三平台均支持添加多个账号——每账号一行(状态徽标 + 名称 + 回复伙伴 + 操作按钮),独立扫码/凭据/绑定伙伴,互相独立收发;「+ 添加」入口新建,行内「编辑」改配置,「扫码绑定/解除绑定」按账号隔离(iLink 凭据、长轮询、配对码会话全部账号级隔离),「删除」两步确认并自动停循环清凭据;每账号消息独立绑定 agent(编辑表单内下拉,保存即生效);微信历史键唯一账号沿用 wx:ilink/wx:<openid>,多账号后按 wx:<accId>:<openid> 隔离,旧记录不丢;旧版单实例配置自动迁移为第一个账号;回调监听端口三平台共用(卡片底部可改)
- 连发消息防抖合并(v0.10.7,安静窗口 30 秒):一次连发多条消息时,不再第一条就触发思考回复——IM 侧(微信/飞书/QQ)同一会话的消息在 30 秒安静窗口内累积(每条新消息重置计时器,重新等 30s),窗口结束后合并成一条,跑一次回合、只回一次,不会每条都单独思考;页面聊天侧同样生效:每条消息立即上屏显示(不丢气泡),静默 30 秒后合并发送,回复流式生成中再打字会排队,等回复结束后一起发出,不再被静默丢弃
- 短消息分条回复(v0.10.8):回复风格进一步贴近真人发消息——system prompt 明确引导「只说关键的话、一条不超过 30 字、内容多时拆成 2~3 条短消息,每条独占一行」;发送侧微信 iLink Bot 与个人微信从整条发送改为按行拆成多条短消息逐条发送(条间 500~600ms 间隔,模拟真人节奏,个人微信发送失败自动中止后续);测试号/飞书/QQ 的流式切块天然按换行+句界逐条推送,无需改动;页面聊天同步支持:多行回复按换行渲染成多个独立气泡(同一条消息首行带头像、后续行缩进对齐,真人连发样式)
- 回复融合当前状态(v0.10.10):回复不再是「通用语气模板」——system prompt 把四路状态全部注入并强制融合:当前活动(v0.10.9 硬约束:正在家陪猫就不能说在上班)、情绪(新增强约束「回复必须与情绪一致」:低落/烦躁时明显话少、平淡、没耐心,开心时轻快爱打趣,禁止任何情绪都用元气语气、禁止直接报告情绪名词)、内感受(烦躁/防备超阈值时让语气自然带出)、记忆(对用户的关系认知 + 最近成长,自然呼应,不生硬背诵)——语气随状态真实波动,像真人一样有「今天心情不好就懒得聊」的状态差
- 颜文字保护(v0.10.11):修复微信/飞书/QQ 分条发送时颜文字被拦腰切断的问题(如 (´;ω;`) 被 ; 句界切成两半、~/… 同理)——流式切块与整条拆分均改为括号深度感知:句界字符落在括号内(颜文字/注释)不算断句,只在括号外切;超长硬切也优先选括号外句界
- 生活时间线补洞 + 情绪生活双向联动(v0.10.12):①修复上午活动空洞(如 7:34 早餐后直接跳到 11:04)——新增通勤过渡事件(工作日 8:30-9:30「出门上班」、18:00-19:00「下班回家」,每天各一条)与到岗事件(上午/下午进入工作槽各一条「到公司了,泡了杯咖啡准备开始干活」),工作事件触发概率 2%→5%(期望间隔 250 分钟→100 分钟,配合 2 小时节流,上午时段不再静默);②情绪↔生活双向联动:agent 当前情绪喂给生活模拟——低落/烦躁时工作事件 30% 概率带「有点心不在焉/没什么干劲」小尾巴、晚间社交意愿下降(0.4→0.15,低落更宅),轻快时带「干劲满满/哼着歌干活」、社交意愿上升(0.4→0.55,开心爱约人);反向:有色彩的生活事件(被夸/赶需求/约会等 |效价|≥0.2)自动微调瞬时情绪(单次 ≤0.06,全天自然波动)——生活过得开心情绪就上扬、赶需求就烦躁,情绪与生活真正长在一起
- 表情包(本地图库)(v0.10.13):agent 会在聊天里主动发表情包图片——system prompt 引导它在想表达情绪又觉得文字不够时,单独写一行标记 [[sticker:分类]](分类写此刻的情绪词,如 开心/晚安/安慰),宿主侧解析标记后从本地图库挑一张近期没用过的,在文字之后作为图片气泡发出去(页面按换行拆多气泡 + 末尾追加图片气泡);图库=用户自备表情包,用 node scripts/seed-stickers.mjs <图片目录|zip> [图库目录] 一次性导入(默认 ~/.dsh/stickers,内容哈希去重、可重复导入不重图),图片放在 <图库>/<分类>/ 子目录即按情绪分类匹配(v0.10.14 起只发贴合分类的图,未命中就安静不发、不再整库随机兜底);不联网抓取,图库为空或未命中就安静不发图;每 agent 有发图频率闸(两次间隔 ≥90s、10 分钟内 ≤3 张)防刷屏;IM 侧支持公众号测试号 / 飞书 / QQ 发图(微信 iLink Bot 图片协议未公开、个人微信桥 UIA 不支持发图,两条支线降级为只发文字)
- 表情包匹配收紧 + 睡眠不回消息(v0.10.14):①表情包只发贴合的图——修复「随便挑一张导致图文不符」:匹配改为分类精确命中优先、其次标签/分类子串模糊,命中不了就这次不发图(不再整库兜底、也不再把未知情绪词归一到默认分类乱发);同时把图库真实分类注入 system prompt,明确要求分类必须从图库现有分类里选、不许自己造词,并对「通用」兜底分类加免责说明(只在想随便发张图活跃气氛、且不在意画面内容时才用);②睡觉时段不回消息——agent 处于睡眠槽位(含每日作息抖动,工作日约 23:00~7:00、周末约 23:30~8:30)时像真人一样不回复:不跑情绪感知、不调 LLM、不生成也不存 assistant 消息(用户消息仍存档,醒来能看到并接着聊);页面侧状态行提示「{名字} 睡着了,没有回复」,微信/飞书/QQ/iLink 侧同样静默不发图不发字
- 图片表情包总开关(v0.10.15,默认关闭):设置页「存储」卡片新增复选框「启用图片表情包」。缺省为关闭(按用户要求暂时停用该功能)——关闭时 system prompt 完全不下发发图指引、回复里万一出现的 [[sticker:…]] 标记也不再解析,聊天一条图都不发;勾选打开后恢复「按分类从本地图库挑选」的发图行为。开关状态存在 chat_settings 的 sticker 键,跨重启保留;另给 settings-set 加了目录守卫,只改开关的调用不会清空已有存储目录配置
- 模拟人生(v0.8.0 起各处状态栏;v0.9.0 生活丰富度大扩充;v0.9.1 起设定非定死):每个陪聊智能体都有一段模拟生活,与现实同步流逝——工作日上下班、三餐、睡觉、周末休息;需求条(精力/饱腹/社交)随时间衰减,吃饭睡觉回补;同事/朋友/家人 NPC 关系网(人设自动派生职业与 NPC,可改职业/公司、可重新生成人生);宠物系统(人设提到养猫/狗/仓鼠则必得对应宠物,否则按名确定性生成,约七成有;撸宠/铲屎/半夜跑酷/遛狗等事件混入休闲与随机池,prompt 注入宠物信息);生活事件大扩充:游戏(开黑上分/连跪/单机剧情)、追剧、短视频、小说、听歌、健身、奶茶火锅、剧本杀、演唱会抢票、快递、暴雨没带伞等 60+ 种贴近真实日常的事件;活动具体化:晚间/周末不再笼统显示「自由时间」,按天确定性轮换为「打游戏/追剧/逛街/看电影」等具体活动;事件节流(v0.9.2):生活事件符合现实频率——工作事件 ≥2 小时一条、晚间休闲/随机事件 ≥1.5 小时一条(冷却跨调用持久,用餐/睡起事件不受影响);作息抖动(v0.9.3):起床/睡觉时刻每天确定性微抖(工作日 23:00±12 分钟睡、7:00±9 分钟起;周末赖床约 8:30 起、23:30 睡),同一天内稳定、跨天自然变化,上班时间固定不变;睡眠↔情绪联动:入睡时情绪/心境生理性平复(标签转「困倦·平静」、唤醒度与强度大幅回落、心境唤醒下降),睡醒时恢复清醒(唤醒度回升至晨间水平)——由生活模拟跨入睡眠边界时自动触发并落库;设定非定死(v0.9.1):新建智能体时从人设派生爱好(游戏/追剧/健身/小说/音乐/画画/购物/刷视频关键词)与宠物;聊天中聊到「养了只猫叫团子」「周末一起打游戏」等会自动沉淀为宠物/爱好/约定事件(爱好上限 5 个,最新优先),爱好反哺晚间活动与休闲事件文案;懒推进引擎不跑后台定时器,聊天回合与查询时把模拟补算到当前(5 分钟步长,离线超 48h 折叠摘要),跨重启状态保留;最近生活近况自动注入聊天 system prompt(TA 知道自己「刚下班在路上」),被追问时诚实承认是模拟设定;设置弹窗「模拟人生」卡片可视化需求条/当前活动/宠物/爱好/事件流水;伙伴列表每行「人生」按钮一键查看该伙伴的人生详情(卡片标题锁定显示对象,可一键恢复跟随当前选中伙伴,v0.9.7);状态栏三处展示「每个伙伴正在干什么」——聊天顶栏常驻条(当前伙伴)、伙伴切换下拉每项副行、设置弹窗伙伴列表每行,60s 自动刷新(查询即推进懒引擎)
- 备份与恢复(v0.10.3,设置弹窗「备份与恢复」卡片;v0.10.4 起可选导出范围):一键导出把陪聊数据打包为单个 JSON 文件下载——伙伴名册、聊天历史(含微信/飞书/QQ 聊天键)、日记、模拟人生状态、每实体情绪/自我状态桶(含宿主)、模型与存储配置;导出范围可选(v0.10.4):卡片内伙伴 chip 多选,不勾选=全部导出,勾选后仅导出所选伙伴(文件名带「N伙伴」标记;部分导出不含宿主状态桶、飞书/QQ 聊天键——无法可靠归属单伙伴,微信聊天按账号绑定归属);一键恢复选择备份文件(确认弹窗提示导出日期与覆盖范围)——全量备份=整体替换当前数据,部分备份=合并式导入(按 id upsert 所选伙伴的聊天/日记/人生/情绪,不影响其他伙伴与本机模型/存储配置,快照里没有的键保持现状),恢复后名册/历史/日记/情绪调试条自动刷新,镜像文件同步重写;不含 IM 接入凭据(微信/飞书/QQ token 等敏感信息),换机后在设置页重新接入即可
- 智能体日记(v0.9.8;v0.10.1 起每天一篇;v0.10.2 起可导出;v0.10.5 起文件存储+独立窗口):每个陪聊伙伴有自己的日记本——每天一篇:每晚 21 点后自动生成当天的日记,当天没来得及写则次日交互/定时器懒补昨天(每小时定时器+聊天回合+启动 30 秒后都会推进,均不阻塞回复);素材:目标日聊天记录(含微信镜像消息)+ 模拟人生目标日生活事件 + 写作时刻情绪;内容:生活经历、心情变化(写入时快照情绪标签/效价)、与用户聊天的感受与感悟——没聊天的日子同样成篇,重点写智能体自己的生活、心情与所思所想,第一人称按人设口吻成文(150~320 字);文件化存储(v0.10.5):日记不再存进插件域存储/设置弹窗,唯一存储为 diary.<agentId>.json(默认 ~/.dsh/diaries,「存储设置」可自定义日记文件夹,修改后已有日记立即迁移写入新位置;旧域存储单键启动时一次性自动迁移,旧键保留兼容回滚);独立窗口展示:设置弹窗内不再有日记卡片,点伙伴行「日记」按钮打开居中小窗(v0.10.6:约 520px 宽 × 72vh 高的圆角卡片 + 半透明遮罩,不占满客户端;点遮罩空白处或 ✕ 关闭;此刻才懒加载读取日记文件),窗口含伙伴名标题/篇数统计/「写一篇」(生成后落文件并刷新)/「导出 Markdown」(# 名字的日记 + 每篇 ## 日期 星期(心情) 一节、篇间分隔线,文件名 日记-名字-日期.md)/关闭按钮;日记按 day/weekday/时刻/心情徽标/正文卡片展示,每 agent 有界 100 篇 FIFO;备份导出/删除伙伴时同步处理日记文件;删除伙伴时日记一并清理
- 飞书接入(v0.7.0,企业自建应用事件订阅;v0.9.7 起多应用):创建应用 → 开通机器人 + im:message 权限 → 事件订阅请求地址填 https://<公网地址>/self/api/feishu/callback/<账号ID>(与微信共用回调端口,需内网穿透;也支持配置 Encrypt Key 的加密模式,AES-256-CBC 解密+来源校验)→ 添加 im.message.receive_v1 事件 → 发布版本;url_verification 握手自动应答,私聊机器人文本即对话;tenant_access_token 内存缓存(提前 5 分钟续期,按账号隔离);飞书历史按 fs:<chat_id> 独立存储;回复同样流式切块发送
- QQ 接入(v0.7.0,OneBot v11 / NapCat;v0.9.7 起支持多机器人):本地跑 NapCat(扫码登录机器人 QQ,无头运行)→ 开启「HTTP 服务」(默认 3000)与「HTTP 上报」,指向 http://127.0.0.1:9527/self/api/qq/onebot/<账号ID> → 在插件设置页添加机器人,填 API 地址与 access token;私聊直接回,群聊需白名单群号 + @ 机器人才回;每 10s 探测 get_login_info 显示连接状态(按账号);QQ 历史按 qq:<user_id|group_id> 独立存储;全程本地回环,无需公网穿透
- API(POST /self/api/*,围栏同兄弟插件):state / agents-list / agents-create / agents-update / agents-delete / chat-history / chat-send(NDJSON 流:{meta} → {delta}… → {done,reply,affect})/ models / model-set / settings-get / settings-set / backup-export(v0.10.3 全量备份快照)/ backup-import(快照整体恢复)/ wechat-get / wechat-save / wechat-account-delete / wx-port-set / wechat-ilink-qr(action: start/poll/cancel/unbind,按 accountId 隔离)/ feishu-get / feishu-save / feishu-account-delete / qq-get / qq-save / qq-account-delete / life-status(批量状态栏)/ life-get / life-set / diary-list / diary-generate;另有 GET /self/api/sticker?path=<分类/文件名>,直接在页面渲染图库里的表情包(带目录穿越防护,404 兜底)
微信接入配置步骤
微信 Bot(扫码)— 推荐:聊天设置 ⚙ → 微信接入 → 启用 → 选「微信 Bot(扫码)」→ 保存 → 点「扫码绑定微信」→ 手机微信扫码并确认(若提示配对码,在界面输入框填手机上显示的数字点确认)→ 显示「已绑定微信 Bot」即完成,直接发消息开聊。
公众号测试号:
1. mp.weixin.qq.com 开通公众号测试号(即时开通,无需认证)
2. 聊天设置 ⚙ → 微信接入:勾选启用,选「公众号测试号」,填 Token(自定义)、测试号页的 appID / appSecret,选择绑定的陪聊伙伴(默认第一个),保存
3. 内网穿透到本机回调端口(如 ssh -R 80:127.0.0.1:9527 serveo.net,需出网 22 端口),把公网地址 + /self/api/wechat/callback 填进测试号「接口配置信息」,Token 与插件一致,消息加解密选明文模式,提交完成接入验证
4. 个人微信扫码关注测试号,发一条消息即可开始对话(先发消息 = 开启 48h 客服回复窗口)
个人微信:聊天设置 ⚙ → 微信接入 → 选「个人微信」→ 填联系人白名单(逗号分隔备注/昵称,留空收全部私聊)→ 保存;插件自动拉起 Python 桥连接本机微信(需已登录桌面端微信 4.1.12+),首次连接显示微信昵称即成功。
内部链路(两批全部完成)
感知(词典快评 + LLM 复核) → 评价(威胁/奖赏/可控/确定性/归因) → 候选生成(心境一致性偏置)
→ 仲裁(多候选竞争 + 混合 mixed) → 内感受偏置(工具调用/受阻/失败 → 挫败/谨慎) → 调节(过载暂停/混合澄清/强负性重评/内感受复盘) → 元情绪(对自身状态的二阶反应) → 总 prompt 段(统一编排 + token 预算截断) + 动机(主动聊天) + 自传体叙事(self_note)
第二批新增
- 元情绪(metaEvaluate):观察到自身情绪状态的二阶反应——过载→愧疚、混合→好奇、强负性→不安、挫败→担忧、正性→平和。落 meta/meta_log 表,prompt 段独立一行。
- 自传体叙事(self_model 表 + self_note 工具):模型主动沉淀"我如何工作 / 我们如何相处 / 我学到了什么"三类稳定认识(各类有界 20 条 FIFO)。诚实边界:工作记忆中的自我描述,非真实人格。
- 动机模块(主动聊天):触发源(闲置回归→接续话题 / 守卫连续受阻 ≥2→反思 / 定时器闲置→问候)→ prompt 段诚实框架呈现(说明触发来源,禁止暗示"一直在等待/想念用户")→ 用户回复视为送达。约束:默认关(proactiveEnabled)、免扰时段(quietHours,跨午夜支持)、每日上限(dailyCap)、同类去重、48h 过期、有界 20 条。
- 动机送达现实约束:插件无向会话注入 assistant 消息的 API → 动机以 prompt 段呈现,时机自然时由模型带出;真实"用户未开口先推送"需宿主侧支持,属后续扩展。
- 仲裁支持混合情绪:极性相反且强度接近 → mixed 双标签;LLM 复核/模型自报声明混合时放宽极性要求(烦躁+低落等复合负性合法)。
- 内感受:插件拿不到宿主全局统计,用 tools/pre-execute 钩子统计本会话工具调用与守卫拦截次数;失败事件靠 LLM 复核/模型自报补充。
- 心境:长期基线滑动平均,同日微调 k=0.08、跨日隔夜重整 k=0.35。
- explain_log:每次感知/仲裁/调节落一条决策解释(触发 → 候选 → 仲裁 → 调节 → 内感受),可追溯。
工具 ×6
| 工具 | 说明 | 确认级别 |
| self_state | 查询完整内部状态(瞬态情绪/心境/内感受/调节/元情绪/动机/自我叙事) | 只读自动 |
| self_feel | 模型自报情绪(最终表达权;display 过安全过滤) | 可逆自动 |
| self_log | 查询决策解释日志 | 只读自动 |
| self_note | 沉淀自我认知到自传体叙事(identity/relations/growth) | 可逆自动 |
| self_motive | 查看未表达动机 / 手动标记完成 | 只读/可逆自动 |
| self_reset | 重置到中性(解释日志与自我叙事保留,未送达动机清空) | 可逆自动 |
守卫
强负面情绪(v<-0.5 且强度>0.7)+ 风险类工具 → 追加 ask 人工确认(fail-closed),可通过 guardOnNegative: false 关闭。
配置
| 键 | 默认 | 说明 |
| decayPerHour | 0.15 | 瞬态情绪每小时衰减 |
| llmRecheckEvery | 6 | 每 N 轮最多 1 次 LLM 复核 |
| promptBudget | 320 | 总 prompt 段字符预算(超预算砍低优先级段) |
| maxLogRows | 200 | explain_log 行数上限 |
| guardOnNegative | true | 强负面 + 风险工具追加确认 |
| llmProvider / llmModel | minimax / MiniMax-M2 | LLM 复核后端(须显式传 model) |
| proactiveEnabled | false | 动机模块(主动聊天)总开关,默认不打扰 |
| quietHours | '23:00-08:00' | 免扰时段(跨午夜支持),时段内不生成/不注入动机 |
| dailyCap | 3 | 动机每日送达上限 |
| idleHours | 4 | 距上次对话多少小时生成接续/问候动机 |
存储
单 domain self v1 多表:affect(当前情绪)/ mood(心境基线)/ ico(内感受)/ explain_log(决策解释,有界数组)/ meta + meta_log(元情绪)/ self_model(自传体叙事)/ motive(动机,有界数组)/ chat_agents(陪聊名册)/ chat_hist(聊天历史快照)/ chat_settings(聊天模型选择 + 存储文件夹配置)。同一 domain 加表不改版本。
与兄弟插件分工
- dsh-emotion(旧单状态机):本插件稳定后停用,避免双状态机漂移
- dsh-emotion-memory(情绪记忆腿):保持不动,心境一致性检索由其承接
- 第二批:元情绪、自传体叙事、动机模块(主动聊天,免扰时段/每日上限/默认关/诚实框架)
开发
npm install && npm run build && npx vitest run # 174 项单测(含微信验签/XML/去重/token/客服/iLink 重试策略/飞书加解密/QQ OneBot 解析/模拟人生推进/状态栏去重/宠物与活动具体化/人设派生与聊天沉淀/事件节流/作息抖动/日记日期键与自动写作条件)
node smoke.mjs # Fake 宿主冒烟(13 步全链路)预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xiaoyeziyinxing/dsh-self
给侧边栏陪聊加上情绪状态与长期记忆
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7
这是你的仓库?认领条目