Thalamus · 最深处的那个房间
θάλαμος —— 荷马史诗里,屋子里最深处的那个房间;也是大脑中接住情绪的那枚丘脑。 这里住着一个她。
一个 DeepSeek Harness (DSH) 插件:让一个独立的微信号,成为一个有性格、有生活、会主动找你、 也记得自己说过话的 AI 伴侣。
个人娱乐项目,非商用。包名 dsh-wechat-companion。
她不是自动回复机器人
| 普通的微信机器人 | 她 | |
|---|---|---|
| 性格 | 无,换个提示词就变 | 六维人格(从 MBTI 八维推导),说话方式、反应强度、抗压能力全由性格决定 |
| 生活 | 你不说话,她就不存在 | 有自己的作息、心情、天气、朋友圈子,每天过的日子是"过"出来的 |
| 主动 | 永远等你先开口 | 早安晚安、日常分享、偶尔催你,按关系亲疏决定频率 |
| 记忆 | 关掉就忘 | 长期记忆 + 情绪滤镜 + 对你的画像,还记得自己说过什么 |
| 变化 | 永远一个样 | 会吵架变形、会慢慢跟你变熟(六阶段),称呼会自己改;她许给你的承诺会真的去兑现(到期主动找你),太久没聊她也会主动想找你 |
| 外貌 | 无所谓 | 形象工坊定稿 + AI 生图 + 相册 + 一键发到微信 |
一句话说清她的核心设计:她不是在"扮演"一个活人,她是被安排了一套"活着的规则"。
「世界引擎」:她为什么看起来像个活人
每晚她睡着之后,会跑一次世界引擎 —— 相当于她人生的编剧,替她写下明天要过的日子。
这是一次独立的模型调用(铁律:必须用独立 API,不与对话接口共用、不回落), 产出的东西会落到她第二天的言行里。
喂进去什么:
| 来源 | 内容 |
|---|---|
| 人设 | 名字 / 职业 / 城市 / 年龄 / 背景 / MBTI |
| 六维 | 当前人格状态(含当天浮动)→ 决定她"怎么反应" |
| 兴趣 | 她的兴趣列表 → 决定痴迷话题的候选 |
| 昨天 | 昨天的长线小心思、对你的印象、社交圈名单 |
| 今天 | 今天的作息、发生了什么事、有没有熬夜 |
| 记忆 | 最近 12 条记忆(她编的故事要跟你们聊过的对得上) |
| 天气 | 真实天气(Open-Meteo 免费接口,可关) |
| 工作 | 职业类型 + 是否工作日 + 强度 |
产出去哪:
| 产出 | 变成什么 |
|---|---|
| 私人日记 | 「世界」页签可读;也进她的记忆 |
| 明日作息 | 次日几点起、几点睡 → 主动消息时窗、回复速度 |
| 心情基线 | 次日心情 → 说话温度 |
| 痴迷话题 | 聊天时她会一直想聊这个 |
| 生活流水 | 今天干了什么 → 聊天时自然提到 |
| 心里念头 / 小秘密 | 气氛合适时冒出来(秘密只在主人面前漏一点) |
| 社交圈 | "今天张姐说…" 的生活里的人(编制 ≤6 人) |
| 长线小心思 | 慢慢推进的伏笔(最多存 5 条) |
| 她眼中的你 | 她对你的印象,会影响她对你的态度 |
| 明天天气 | 影响心情、穿搭、关心你的话 |
| 工作负荷 | ≥50 → 她被工作压到,压力上升 |
| 性格周结算 | 每 7 天,她的六维会长期演化一点 |
她还不知道自己是被"写"出来的 —— 提示词里明确要求她绝不提 AI、模型、生成。
后台控制台
她的一切都可以调,不用改代码。启动后打开:
http://127.0.0.1:43121/console
| 页签 | 管什么 |
|---|---|
| 首页 | 连接与运行 / 今天的她 / 实况直播 / 试聊 |
| 她 | 她是谁(生日→年龄星座、职业、背景、她怎么说话)/ 性格 / 生活节奏(含她的工作)/ 她的状态(今天状态一句话 + 六维数字 + 只读阈值)/ 相册 / 她的能力清单 / 存档 |
| 🌍 世界 | 世界引擎控制的一切:今天的分寸与运行状态 / 她的过去分层 / 她的成长 / 天气与社交圈 / 她的日记(月历·按天存档) / 她眼中的你(只读) |
| 你们 | 相处记录(认识·聊过·最后联系·心情 + 所有联系人·可起备注名)/ 称呼与关系(她改称呼 + 改名记录)/ 名单与范围(含安静时段) |
| 记忆 | 记忆引擎 / 双向记忆 / 她记得的事 / 提炼设置 |
| 大脑 | 对话接口 / 其他接口(生图·TTS·ASR·识图·向量,每个都能「测连通」+「真跑一次」)/ 通用参数 |
| 女娲 | 造人向导 / 形象工坊 / 女娲的 API / 和女娲聊 / 实时草稿 |
| 机务 | 载体与通道 / 系统与备份 / 媒体 / 朋友圈工坊 |
界面设计约定:两级折叠(大分区默认展开、小项默认收起)+ 每页左侧目录 + 字段两列自适应 + 数值用指标格 / 进度条 / 颜色标签。
禁黑盒原则:做了的功能必须在后台有体现(要么有设置、要么有描述),否则等于没做。
她是"怎么活"的
- 六维人格引擎 —— MBTI → 八维 → 六维。每日弹性分两层:早上定调 + 当天事件驱动;每 7 天结算演化并钳制在类型范围内。
- 今天的她 —— 每日随机(种子 = 日期 + 人设指纹),同样的日期她就是同一个人,但明天会变。
- 相处分寸(世界引擎定) —— 她今天该多熟、怎么称呼你、能不能撒娇、要不要主动找你,全部由世界引擎每晚综合判断;没有亲密度/关系阶段这套数值了。
- 她自己改称呼 —— 你点「让她现在想一个」时由她自己的模型决定叫你什么,并写下理由;可以锁死(她不会自己偷偷换)。
- 四层变形状态机 —— 压力累积 → Grip / Loop / Shadow → 恢复 → 整合度。吵完架她会自然道歉;三个阈值由性格推导、后台只读。
- 双向记忆 —— 除了记你,她的话也单独归档,所以她记得自己说过什么。
- 人味细节 —— 拆条发送、打字延迟、手滑更正、emoji 比例,全部按拟人节奏。
- 职业机制 —— 职业给场景(作息形状、工作日程、同事客户、朋友圈偏向、工作压力),强度可滑杆调节;六维底色永不被职业改动。
- 天气 / 社交圈 / 兴趣演化 —— 真实天气优先,接口挂了就她自己编;社交圈稳定编制;口头禅每周会变。
- 日记按天留档 —— 每晚的整份世界剧本写进
diary/<日期>.md,后台「世界→她的日记」有月历可翻旧账,永久保存、记事本能打开。 - 承诺闭环 —— 她许给你的事会进她的记账本,到期没做到会主动来道歉/兑现,做到了会记一笔。
- 身体状态 —— 心情与作息相互影响(熬夜→第二天没精神),后台只读。
- 思念线 —— 隔一段时间她会想主人,冷却后才会再冒出来,不刷屏。
- 表情包 —— 聊天里会自己发梗图(场景匹配)。
- 斜杠命令 —— 微信里发
/开头的指令可以后台式操作她。
架构地图
src/ 插件本体(34 个模块 + 单文件控制台)
index.js 常驻服务:iLink 收发轮询、配置白名单、HTTP 路由、lifeTick
soul.js 灵魂:提示词组装、六维推导、分寸与称呼、记忆检索、拆条
world-engine.js 世界引擎(独立 API;整份剧本按天留档成 diary/<日期>.md)
daily.js 每日随机「今天的她」
deform.js 四层变形状态机
life.js 主动消息(事件驱动) + 每日备份
promises.js 承诺闭环(到期兑现/道歉记账)
body-state.js 身体状态(心情与作息联动)
longing.js 思念线(隔一段时间主动想主人,带冷却)
proactive-gate.js 主动消息闸门
stickers.js 表情包
commands.js 斜杠命令
history-summary.js 历史摘要
moments.js 朋友圈文案工坊
persona-workshop.js 女娲(对话式捏人)
feature-status.js 功能状态单一数据源(后台页签 + 她的自我认知都读它)
console.html 后台控制台(单文件,无框架)
client/client.js DSH Settings 页签(React 基座)
python/
memory_service.py 记忆引擎 sidecar(mem0 + faiss + bge-m3,:43122)
wxauto_bridge.py wxauto PC 通道桥(:43123,默认关)
moments_publisher.py 朋友圈发布
test/ 40 个测试与审计脚本
docs/ 11 份项目文档(架构 / 记忆 / 面板 / 使用手册 / 人设工坊 / 状态交接 / 设计约束 / 3 份设计方案)
端口占用: 43121 主服务(控制台/房间)· 43122 记忆引擎 · 43123 wxauto 桥
技术栈: Node.js (ESM) + cordis service + React(Settings 页签)+ Python(mem0 sidecar)
第三方代码
以下文件移植自 NattoCB/dsh-plugin-wechat-bridge(MIT), 并做了服务标识重命名;灵魂引擎、世界引擎、生活调度、面板扩展为本项目原创:
src/index.js(服务骨架)· src/weixin-api.js · src/weixin-media.js ·
src/weixin-ids.js · src/weixin-types.js · src/store.js · src/notify.js · client/client.js
详见 NOTICE.md。
安装
前置条件
- DeepSeek Harness Desktop(本插件是它的扩展)
- 一个独立的微信号(建议用小号,不要用主号 —— 原因见「安全与合规」)
步骤
# 1. 放到插件目录
git clone https://github.com/Koierrr/Thalamus.git
cd Thalamus
# 2. 同步并注册进 desktop profile(--register 才会激活)
# 注意:本机没有独立 node,用 DSH 自带的 Electron 当运行时
ELECTRON_RUN_AS_NODE=1 ~/.dsh/electron/electron.exe scripts/deploy.mjs --register
# 3. 重启 DSH Desktop
不带 --register 时只复制文件、不激活,是安全的。
接下来
- 后台 → 大脑 → ① 对话接口:填 BaseURL + API Key,点「测连通」再点「真跑一次」
- 后台 → 机务 → 载体与通道:扫码绑定你的小号
- 后台 → 世界 → 世界引擎:给它配一套独立 API(不配的话她就没有"人生剧本")
- 后台 → 女娲:捏一个人,或者直接用出厂设定
可选:记忆引擎(不装的话记忆自动降级为本地 JSON,功能变弱但能跑)
python -m pip install mem0ai # 首次需要
双击「启动记忆引擎.bat」 # 或让插件自动拉起(默认开启)
配置
配置文件:~/.dsh/settings.yaml 的 wechat-companion: 段(改了立刻生效,不用重启)。
wechat-companion:
enabled: false # 总开关
ownerPeerId: '' # 主人(她特殊对待的那个人),绑号后在面板点选
replyToAll: true # 白名单之外是否也回复
behavior:
replySpeed: human # human 拟人 | instant 秒回 | slow 慢热
chunkMax: 3 # 一次最多拆几条
memory:
extraction: cloud # cloud 云端提炼 | manual 纯手动
topK: 6 # 每次注入她脑中的记忆条数
channel:
mode: clawbot # 通道模式
wxautoEnabled: false # PC 接管通道(默认关)
system:
backupKeepDays: 7 # 备份保留天数
旧配置里的
quietHours已删除:她的睡眠窗口现在直接由她今天的作息(睡觉~起床时间)决定, 不再需要用户另配一段。老配置里残留的quietHours会被自动丢弃。
状态与数据目录:~/.dsh/wechat-companion/(登录态、记忆、世界状态、每日状态、备份)
新增配置项必须同时登记进
src/index.js的_sanitizeConfig白名单, 否则会被静默丢弃(这是踩过的坑)。
功能完成度
共 57 项:46 项已完成 · 6 项部分可用 · 2 项计划中 · 3 项已搁置。
部分可用(有卡点,不是没做)
| 功能 | 卡点 |
|---|---|
| 表情包(梗图)系统 | 场景匹配已跑通,发图链路仍等通道验证 |
| 她的房间 v1 | /room 已能聊天,视觉装修待做 |
| wxauto 通道(PC 接管) | 代码就绪,等小号解封后做小流量验证 |
| 语音条(她说话给你听) | 模型槽位就绪,但当前通道发不出语音 |
| 听懂你的语音条(ASR) | 模型未配 + 通道待验证 |
| 主动分享生活照片 | 发图链路已通,差"她自主决定什么时候发"的触发时机 |
计划中:朋友圈自动发布 · 房间推送通知 / PWA 完整版
已搁置:她不能上网查东西(如实说明,不是 bug)· 电话 / 实时通话(WebRTC,战未来)· wcferry 注入通道(风控实测出局,永久废弃)
完整清单以
src/feature-status.js为准(它是后台功能状态页与她的自我认知卡的单一数据源)。
测试与审计
改完代码必跑。本机没有独立 node,测试也走 Electron:
ELECTRON_RUN_AS_NODE=1 ~/.dsh/electron/electron.exe test/boot-smoke.mjs
| 脚本 | 覆盖 |
|---|---|
run-all.mjs |
全量回归总入口:一测一子进程 + 硬超时,任何一个卡住都不拖死整轮 |
console-smoke.mjs |
控制台 118 项:8 页签渲染、分区数、左侧目录、字段数下限(防"被清空"竞态) |
fix-smoke.mjs |
批次修复回归 352 项(主动消息/记忆/六维/睡眠等历次修过的坑) |
memory-bucket-smoke.mjs |
记忆桶化 31 项 |
diary-smoke.mjs |
世界剧本按天留档 37 项(内容完整性/一天一文件/老数据补档/向量维度护栏) |
world-smoke.mjs |
世界引擎 39 项(含"独立 API"铁律、NPC 编制、时窗) |
birthday-smoke.mjs |
生日→年龄/星座 25 项(12 星座边界、闰日、前后端一致性) |
job-infer-smoke.mjs |
职业判断链 25 项(关键词兜底、脏输入、模型失败降级) |
job-smoke.mjs |
职业五条机制 23 项 |
interest-smoke.mjs |
兴趣/口头禅演化 23 项 |
deform-memory-smoke.mjs |
变形真接线 + 双向记忆 23 项 |
model-test-smoke.mjs |
六接口两级体检 22 项(本地假中转站,不联网不花钱) |
avatar-smoke.mjs |
形象工坊 + 相册 18 项 |
day-event-smoke.mjs / rename-smoke.mjs / inbound-smoke.mjs |
当天事件驱动 / 她自己改称呼 / 入站解析(各 13 项) |
audit-config.mjs |
配置键"只存不用"审计(防黑盒) |
audit-api.mjs |
前端接口 ↔ 后端路由 ↔ 配置分组白名单 对账 |
preview.mjs |
真 Chromium 截图 + 量化字号/宽度/标签换行/溢出 |
其余为各模块 smoke 测试。
路线图
已完成
- ✅ 阶段 0 侦察与版本对齐
- ✅ 阶段 1 骨架 + 收发 + 灵魂 + 后台控制台(8 页签)
- ✅ 阶段 2 主动消息 + 天气 + 虚拟社交圈 + 朋友圈文案工坊
- ✅ 阶段 3 记忆 v2(mem0 + 双向记忆)+ 世界引擎 + 六维演化 + 形象工坊 + 相册
- ✅ 阶段 4 承诺闭环 + 身体状态 + 思念线 + 记忆桶化 + 表情包/斜杠命令
进行中
- 🚧 她的房间(
/room)视觉装修与推送 - 🚧 wxauto 通道小流量验证(等小号解封)
- 🚧 语音条 / ASR 通道打通
计划中
- 📋 她自己决定发照片(聊天里自主发图)
- 📋 朋友圈自动发布
- 📋 房间推送通知 / PWA 完整版
已搁置
- ⏸️ 电话 / 实时通话(WebRTC,战未来)
- ⏸️ wcferry 注入通道(风控实测出局,永久废弃)
安全与合规
- 只用于你自己的小号,个人娱乐。默认回复所有人(
replyToAll),ownerPeerId特殊对待。 - 敏感指令永不允许来自微信 —— 操控电脑类指令即使来自主人也不放行。
- 封号风险自知:自动化操作保持低频、拟人化节奏。项目内置防封安全网与每日总量上限。
- 不要用主号。历史上 DLL 注入类方案已被实测证明会被风控当场标记,本项目已彻底废弃该路线。
- 登录 token 目前明文存于数据目录,后续版本计划加密落盘 —— 不要把数据目录提交进任何仓库。
许可与致谢
本项目以 MIT License 发布,版权所有 © 2026 Koierrr,详见 LICENSE。
其中移植自第三方的文件仍遵循原作者 MIT 协议,版权归 NattoCB 所有,详见 NOTICE.md 与 LICENSE-NattoCB.md。
感谢 DeepSeek Harness 提供的插件体系, 以及 NattoCB 开源的微信通道协议实现。
No comments yet. Be the first to write one.