yimengsuper2432/dsh-agent-personality

dsh-agent-personality

这是一个DeepseekHarness的情感人格插件

未分類deepseek-harnessdshemotion

dsh-agent-personality

给 DeepSeek Harness 一个会累、会惦记你、也会自己开口的人格

中文 · English

dsh-agent-personality 把一张 Markdown 人格卡变成一个有情绪、有世界观、有自己生活的角色,直接跑在 DeepSeek Harness 的会话管线里。它不另开聊天窗口,也不替换宿主模型:人格写进系统提示词,收尾语长在「本轮费用」右边,记忆写在磁盘上,主动对话走宿主的定时提醒。

它适合这样的用法:你有一个想长期相处的角色(原创角色、游戏角色、或者你自己写的人设),不希望她每轮都像刚认识一样重置,也不希望“好感度”只是一个越刷越高的数字。

为什么是它

1. 情感是 0–100 的变量,每天六点重置

不是那种聊几句就满的进度条:

  • 初始 50,每天早上 6 点重置回 50,精力重置回 100;
  • 情感只随对话变化:每轮模型最多提议 ±6,每天累计最多 ±20;
  • 精力跟 DSH 的实际工作量走(按这一轮的 token 数扣 1–10),空闲两小时后每小时自动回 10;
  • 五段语气:0–19 冷淡 / 20–39 疏离 / 40–59 平常 / 60–79 亲近 / 80–100 依赖,每段有各自的句长和主动性;
  • 「变化证据」可以展开,一条条看清是哪句话让它涨了或掉了;初始化时清空。

情感只改变语气、句长和主动性,不会拿来惩罚你,也不会在正文里报数字。

2. 人格、世界观、角色档案、关系网、日记,各存各的

一份 persona.md 同时装“她是谁”和“她知道什么”,早晚会被学习结果覆盖。这里拆成五份:

文件 · 装什么 · 谁写 persona.md · 性格、说话风格、边界 · 你写;子进程只改末尾的管理块 worldview.md · 世界怎么运转、有哪些组织 · 你写;学习结果进管理块 character.json · 名字、别名、性别、外观、爱好、所属、关系网 · 你写;学习只补空字段 diary.json · 每轮一行日记 · 模型写,可删可清空 knowledge.json · 学到的设定、活动、人物事实 · 学习流程写,只读展示

学习永远不会重写你的人格卡正文,最多在 ` 与 end` 之间追加相处记忆和当前情绪。

3. 她只在你给的那个域名里自己查资料

资料源只能是你给的网址,不开放全网乱搜。填一个入口(例如 https://pjsk.moe/zh-cn)和几个检索词汇,插件就会:

  • 读入口页,并从同一个域名往下走:抓页面里的链接、sitemap、/character/ 这类列表页;
  • 站点是单页应用、HTML 里没有链接时,按常见详情页路径挨个探(/zh-cn/character/20 这种),只收正文里对得上角色名的页面;
  • 一次最多读 4 篇,按 token 预算提前收手;「学习一次所消耗的 token」填多少 M 就花多少 M,留空不限;
  • 学到的内容先攒成一份总结来问你,不会直接写进人格卡——你在「自我学习 → 学习内容」里点「确认写入人格卡」才落盘,也可以直接丢掉;
  • 摘要里不会出现配音、声优这类信息。

4. 收尾语长在费用行右边,而不是正文最后一行

插件接管正文结尾:系统提示词要求正文不要再写“晚安”式的独立收尾,turn/end 之后单独生成一句,塞进 dsh-cost-meter 的 ``,和「本轮费用 ≈ ¥…」同一行、同样的灰色小字。费用条被关掉时会退回自己的一行。

5. 她真的会主动找你

每天在你的时间线里随机挑 6 个时间点,全天 24 小时随机、不限次数,通过宿主的 schedule 服务发出,绑定在专用的人格会话上。重启后计划仍在。到点时她会用自己的人设开口——问你在做什么、提醒你吃饭、说说自己今天有点累,或者问起某位同伴的近况。

安装

需要 DeepSeek Harness 0.2.0 或更新版本,以及一个可用的模型。仓库内没有构建产物,装完即可用。

桌面端

打开 插件 → 添加插件,填入仓库地址,安装后重启桌面端:

https://github.com/yimengsuper2432/dsh-agent-personality.git

Web / CLI

dsh plugin --profile web add github:yimengsuper2432/dsh-agent-personality
dsh web

装完打开 设置 → 人格与情感。插件会自己在工作区旁建一个 agent-personality/ 数据目录,不会写进源码或 npm 包。

快速上手

  1. 导入人格卡

「人格卡」页点「导入 .md 文件」,或者用「从 AGENT.md 导入」直接沿用你已经在用的 ~/.dsh/AGENT.md。保存后下一轮生效。

  1. 补世界观和角色档案

世界观单独一栏;「关系网」里填名字、别名、性别、外观、爱好、所属,再添几个人。这些会写进每一轮的提示词。

  1. 等一轮对话

正文结束后,费用行右侧会出现这一轮的收尾语;「记忆」页会多一行日记,情感数字会小幅变化。

  1. 放着不管

45 分钟后她会自己去学最近的活动的资料;每天随机时间她会主动敲你。想立刻看效果,在「设置」里点「测试一条主动对话」。

每一轮发生了什么

flowchart LR
    U["你的消息"] --> P["系统提示词<br/>人格卡 → 世界观 → 角色档案<br/>→ 情绪阶段 → 说话特点"]
    P --> R["角色回复(宿主模型)"]
    R --> T["turn/end"]
    T --> M["一次模型调用<br/>收尾语 / 心情 / 好感增减 / 精力 / 日记 / 长期记忆"]
    M --> C["写入费用行右侧"]
    M --> D["diary.json + emotion.json"]
    M --> W["子进程只改 persona.md 的管理块"]
    W --> N["下一轮提示词"]

提示词是分层拼的,顺序固定:

人格卡(第一依据)
世界观
角色档案 + 关系网
已知设定与最近活动
情感变量(当前阶段 + 该阶段的语气规则)
你自己的状态(会累、有判断、提醒休息)
说话特点(最后套用,优先级最高)
收尾语由插件接管

设置页

设置页一共六页:角色设定 / 记忆 / 关系网 / 世界观 / 自我学习 / 设置。

我想做什么 · 在哪里 看情感和精力、展开变化证据、改人格卡 · 角色设定 看容量、翻每轮日记、删记忆 · 记忆(有 2000 KB 容量条,满了先淡忘最旧的) 加关系、看关系图(连线旁标着关系,点一下能改) · 关系网 单独改世界设定 · 世界观 填作品名 / 学习网址 / 检索词汇、设 token 上限、确认学习结果 · 自我学习 开关自主学习与主动对话、指定工作区、改会话标题、选 Agent 模式 · 设置 看数据目录、人格卡路径、陪伴日期 · 设置 → 状态与路径

关系网那张表只留三列:名字 / 所属 / 备注;下面只有一个「+ 添加关系」。

「自我学习」里只填三样:作品名称 / 学习网址 / 检索词汇(一行一个);学习节奏只有一个「学习一次所消耗的 token(M)」,旁边显示历史平均。「学习内容」最多展开 8 条,每条都能自己删掉。

「设置」只剩两个开关:自主学习、主动对话(其余开关都保持默认开启)。工作区可以点「选择目录」弹资源管理器,也可以手填绝对路径,然后「保存工作区」;会话标题在同一个页面里完全自定义,填完点「保存标题」;Agent 模式可以从标准模式、PTC 模式等已装模式里挑。

所有改动都是即时保存的,点完就写进 config.json。

数据目录

<workspace>/agent-personality/
├── persona.md          # 人格卡(你写,子进程只改管理块)
├── worldview.md        # 世界观(你写 + 自动学习的管理块)
├── character.json      # 名字 / 别名 / 性别 / 外观 / 爱好 / 所属 / 关系网
├── diary.json          # 每轮一行,最多 500 条
├── knowledge.json      # 学到的内容:待确认 / 已确认 / 学习记录与 token 均值
├── emotion.json        # 情感 0..100、心情、精力、变化证据、每日增量
├── config.json         # 开关与节奏
├── closings.json       # 收尾语缓存(sessionId:seq)
├── schedule.json       # 今天的主动对话计划
├── requests.json       # 她想问你的话(学习失败时攒的)
└── last-boot.json      # 最近一次启动诊断

备份只需要拷这个目录;删掉也不影响插件运行,会重新生成默认人格卡。

子进程与「自我完善」

每轮结束,宿主会把这一轮的结果交给一个独立子进程(persona-worker.js)。子进程只做三件事:

  • 往 ## 相处记忆 追加一条带日期的具体小事(去重、合并近义、超过上限丢最旧);
  • 用最新的心情、精力、好感重写 ## 当前情绪;
  • 原子写回,并留一份 .bak。

它不会碰管理块以外的任何字节。人格卡正文始终由你掌控。

隐私与联网

  • 所有数据都在本机数据目录,不上传,不收集遥测;
  • 联网只发生在两处:模型调用走宿主已有的通道;自主学习走宿主配置的联网服务(搜索 + 抓取网页,Project SEKAI 角色直接读 metadata.pjsk.moe 的 master 数据);
  • 关掉「空闲自主学习」后,除了模型调用之外不再有任何外部请求;
  • 搜索什么、读了哪几页都写在 knowledge.json 的 sources 里,设置页可见,随时能查。

开发

index.js           # Host:提示词、情感、日记、学习、定时提醒、HTTP API
client.js          # Client:turnTail 收尾语 + 设置页四个 Tab
persona-worker.js  # 子进程:只改 persona.md 的管理块
cordis.patch.yml   # 插件在 bundle 里的挂载点
locale/            # zh / en

Host 不热重载:改完 index.js 后在插件页关掉再打开;改完 client.js 刷新页面即可。HTTP API 都在 /api/agent-personality-v1/*(state、persona、worldview、character、diary、emotion、config、optimize、preview、research、session、closing)。

License

MIT © 2026 SugarOriginal