dsh-agent-personality 把一张 Markdown 人格卡变成一个有情绪、有世界观、有自己生活的角色,直接跑在 DeepSeek Harness 的会话管线里。它不另开聊天窗口,也不替换宿主模型:人格写进系统提示词,收尾语长在「本轮费用」右边,记忆写在磁盘上,主动对话走宿主的定时提醒。
它适合这样的用法:你有一个想长期相处的角色(原创角色、游戏角色、或者你自己写的人设),不希望她每轮都像刚认识一样重置,也不希望“好感度”只是一个越刷越高的数字。
为什么是它
1. 情感是一个真正的变量:-10 到 +10,从 0 开始
大多数“好感度”是 0 到 100 的进度条,聊几句就满。这里不是:
- 初始值 0,可以往负走,也可以往正走;
- 每轮模型最多提议 ±1,每天净变化最多 ±3——从 0 爬到 +10 至少要三天,而且中途会掉;
- 五个阶段各有不同的语气规则:冰点只回必要的字,疏远会嘴硬,平常正常接话,亲近会主动分享,依赖会黏人但有分寸;
- 精力独立于好感:低于 35 她会表现出累,并提醒你休息;低于 15 先照顾自己。
情感只改变语气、句长和主动性,不会拿来惩罚你,也不会在正文里报数字。
2. 人格、世界观、角色档案、关系网、日记,各存各的
一份 persona.md 同时装“她是谁”和“她知道什么”,早晚会被学习结果覆盖。这里拆成五份:
| 文件 | 装什么 | 谁写 |
|---|---|---|
persona.md |
性格、说话风格、边界 | 你写;子进程只改末尾的管理块 |
worldview.md |
世界怎么运转、有哪些组织 | 你写;学习结果进管理块 |
character.json |
名字、别名、性别、外观、爱好、所属、关系网 | 你写;学习只补空字段 |
diary.json |
每轮一行日记 | 模型写,可删可清空 |
knowledge.json |
学到的设定、活动、人物事实 | 学习流程写,只读展示 |
学习永远不会重写你的人格卡正文,最多在 <!-- agent-personality:managed:start --> 与 end 之间追加相处记忆和当前情绪。
3. 她会在你离开后自己查资料
资料源不是写死的。空闲超过设定分钟数(默认 45 分钟)后,插件先判断这个角色出自哪部作品,再选路线:
- 能认出来的企划(目前是 Project SEKAI):按系统时区选服务器(
Asia/Shanghai→cn、Asia/Tokyo→jp、台北 →tw、其余 →en),读机器可读的 master DB(metadata.pjsk.moe/<region>/master/*.json),优先取离今天最近的活动,再按同组合补关系网。 - 其它作品、原创角色:走宿主自带的联网搜索(
ctx.web)。插件把「角色设定 / 作品世界观 / 角色关系 / 最近动态」拆成 4 条查询,读前 3 篇能打开正文的页面,再让模型抽成结构化事实写进世界观和关系网。识别不出作品时只按角色名搜;一条都读不到就不编,改成攒一句想当面问你的话。 - 怎么认作品:先让模型读人格卡判断,判断不出再用搜索结果里的线索兜底(标题、摘要里出现「世界计划 / プロセカ / 原神 / 明日方舟…」之类)。你嫌它认错,可以在设置里直接填作品名,或把研究方式改成「只联网搜索」。
角色档案只补空字段,关系网已存在的人不会被覆盖;所有读过的页面都记在 knowledge.json,设置页里能点开看。
4. 收尾语长在费用行右边,而不是正文最后一行
插件接管正文结尾:系统提示词要求正文不要再写“晚安”式的独立收尾,turn/end 之后单独生成一句,塞进 dsh-cost-meter 的 <summary>,和「本轮费用 ≈ ¥…」同一行、同样的灰色小字。费用条被关掉时会退回自己的一行。
5. 她真的会主动找你
每天在你的时间线里随机挑 1–3 个时间点(默认 2 个),通过宿主的 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 包。
快速上手
- 导入人格卡
「人格卡」页点「导入 .md 文件」,或者用「从 AGENT.md 导入」直接沿用你已经在用的~/.dsh/AGENT.md。保存后下一轮生效。 - 补世界观和角色档案
世界观单独一栏;「关系网」里填名字、别名、性别、外观、爱好、所属,再添几个人。这些会写进每一轮的提示词。 - 等一轮对话
正文结束后,费用行右侧会出现这一轮的收尾语;「记忆」页会多一行日记,情感数字会小幅变化。 - 放着不管
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["下一轮提示词"]
提示词是分层拼的,顺序固定:
人格卡(第一依据)
世界观
角色档案 + 关系网
已知设定与最近活动
情感变量(当前阶段 + 该阶段的语气规则)
你自己的状态(会累、有判断、提醒休息)
说话特点(最后套用,优先级最高)
收尾语由插件接管
设置页
| 我想做什么 | 在哪里 |
|---|---|
| 改人格、导人格卡、看情感 | 人格与情感 → 人格卡 |
| 看每轮日记、删记忆 | 记忆(只看角色会话,也能切到全部) |
| 加关系、看关系图 | 关系网 |
| 单独改世界设定 | 关系网 → 世界设定(在最下面) |
| 换资料源、加学习网址、试搜一次、立即学习 | 资料源 |
| 看学习节奏和学习结果 | 资料源 |
| 给角色单独指定工作区 | 设置 → 角色工作区 |
| 开关插件、主动会话、服务器 | 设置 |
设置页一共五页:人格卡 / 记忆 / 关系网 / 资料源 / 设置。
「设置」里的开关都是即时保存的:启用插件、显示收尾语、注入人格、正文不写收尾语、每轮整理记忆、空闲自主学习、主动找你说话;还有每天主动次数、记忆上限、时区和服务器。
「角色工作区」可以点「选择目录…」直接弹资源管理器,也可以手填绝对路径,新开的角色会话就建在那个目录里;留空或点「用默认工作区」就回到 DSH 的默认工作区。卡片里会显示当前生效目录、DSH 默认目录和会话标题,也有「重建角色会话」按钮。
角色会话的标题固定是「中文名 + 英文名」,例如 晓山瑞希Mizuki Akiyama。英文名在「关系网 → 会话标题」里填(留空会自动从英文别名推出来,比如别名 AKIYAMA MIZUKI 会变成 Mizuki Akiyama);改完,已存在的角色会话会被自动改名。
「资料源」里可以填作品名(留空自动判断)、贴一行一个的学习网址(会优先读这些页面,读够了才去搜索)、把研究方式切成「自动 / 只联网 / 关闭」;点「试搜一次」只搜索不写入,点「立即学习」才落盘。下面分「学习节奏」和「学习结果」两块,学习结果里的条目可以直接点开原始资料页。
数据目录
<workspace>/agent-personality/
├── persona.md # 人格卡(你写,子进程只改管理块)
├── worldview.md # 世界观(你写 + 自动学习的管理块)
├── character.json # 名字 / 别名 / 性别 / 外观 / 爱好 / 所属 / 关系网
├── diary.json # 每轮一行,最多 500 条
├── knowledge.json # 学到的事实与活动,最多 400 条
├── emotion.json # 好感 -10..10、心情、精力、每日增量
├── 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
No comments yet. Be the first to write one.