PL-PRISM
Manifest validLLM-based Cyber Companion Control Hub, supporting multi-channel memory isolation, PAD emotional dynamics engine, and zero-token GIF classification—ready to use out of the box.
🎉 PL-PRISM v1.0.0 已通过全链路自检与隐私审计,欢迎使用!
PL-PRISM · 人设 / 记忆 / 进化主处理层
一句话:别的插件只出素材,不出结论。这个插件独占四件事——记什么、怎么想、怎么变、怎么说不错。
v1.0.0 新功能亮点:
-
🎭 角色库多角色管理:一张卡不够?新建多张角色,切换即换人格;卡片上自动标黄角提醒缺失字段。
-
🌐 联网多源捏人:输入角色名,自动并发抓取百度百科 / 萌娘百科 / 必应,白名单 + DOM 双层清洗,杜绝"萌娘百科欢迎您 / P站id / S级美少女"等网页垃圾。
-
🎂 动态年龄与纪念日:填
birthdate,后端实时算周岁注入;生日、相识 100 天 / 一周年自动触发情绪飙升指令,不占记忆配额。 -
💾 草稿防丢:手动表单输入实时存
localStorage,刷新 / 切页 / 误关都不丢;点保存或清空才释放。 -
🔌 AST 反向握手:DSH 启动时静默探测 AstrBot 6185 端口,装了
year_image就主动注册端口与 Token,不再让 AST 扫日志;2 秒超时静默放弃,不卡主线程。 -
🖼️ 表情包双库:角色专属库 + 通用兜底库,批量导入 / 文件夹导入 / AI 视觉自动打标,聊天只注入
[表情包: 分类名]标签,图片路径永不进上下文。 -
🩺 右侧诊断面板:保存失败的后端错误实时顶到顶部红卡片,点"点击定位"跳到对应字段;硬错误(配额超 100%、空名、非法字符、birthdate 格式错)拦截保存;软警告黄色提示不强制。
-
宿主:DSH(Cordis 插件体系),
index.js挂载 +ctx.webServer注册路由。 -
前端:
ui/prism-panel.js(唯一真源)→tools/build-panel.mjs内联成可独立打开的ui/prism-panel.html。 -
无框架、无外链、无 node_modules 依赖,纯原生 ES 模块 + Shadow DOM。
一、安装(三步)
-
把整个目录放进宿主 userdir 的
plugins/下,目录名建议prism:<你的宿主 userdir>/plugins/prism/ index.js package.json config.default.json cordis.patch.yml src/ ui/ lib/ pure_chat_preset/ README.md LICENSE 参考文献.md -
重启宿主(DSH)。
-
打开
<你的宿主地址>/prism/ui(或/prism/panel独立面板)。 状态区显示「已连接」= 就绪;显示「预览模式」= 后端没挂上,看下面的排查。
目录里不含任何人的机器路径、账号或群号,也没有预置角色数据。
二、首次配置(建议按这个顺序)
| 步骤 | 在哪里 | 做什么 |
|---|---|---|
| 1 | 第 3 板块「全局与生命周期」 | 填 主人 QQ(identity.ownerQq)。默认为空 = 还没设主人,此时任何人都不被当作主人(安全侧,不会误认)。 |
| 2 | 角色档案 → 「手动创建 / 编辑」 | 填名字、性格、口头禅、喜好、背景、核心设定。全新安装自带一个通用空壳:名字「助手」、性格「温和、耐心,说话简洁直接」,其余留空,等你改成自己想要的角色。 |
| 3 | 顶部「内容模式」 | 选 极简 / 标准 / 完全体。极简=省上下文(设定按滑块截断),标准=日常推荐,完全体=参数全展开。进度条下面的「三档对照」会同时显示三个数字。 |
| 4 | 第 5 板块「上下文预算控制」 | 需要更省就调「极简档设定截断字数」(600–2000,默认 800);超了会在面板底部给一行暗色提示。 |
| 5 | 第 11 / 14 板块 | 配静默、午休、说说发布/互动/总结的时间窗(见下节)。 |
| 6 | 右上「💾 保存当前配置」 | 只改草稿不生效;点保存才写入本机并同步引擎。想反悔点「↺ 撤销修改」。 |
数据写在宿主给的 ctx.dataDir;没给就落本插件目录下的 data/live/。不会改宿主的配置文件(只写本插件自己的覆盖层)。
三、时间配置:全部自由,可跨夜
所有与「几点」相关的设置都是成对的时间选择器(开始 + 结束),没有写死的档位:
| 窗口 | 默认 | 作用 |
|---|---|---|
| 静默 / 低功耗 | 01:00–07:00 | 耗资源的活(生成心情图、深度整理)只在这段时间跑 |
| 午休免打扰 | 12:00–14:00(可关) | 这段时间不打扰你 |
| 说说安静 | 22:00–08:00(可关) | 这段时间绝不发说说 |
| 说说发布 | 10:30–11:30 | 在这段里随机挑时刻发,不像闹钟 |
| 互动浏览 | 18:00–18:45 | 刷空间 / 看动态 |
| 每日总结 | 23:30–23:59 | 当天收尾写心情日记 |
| 心情图取样 | 02:00–06:30 | 在静默时段里随机挑一点生图 |
- 跨夜自动识别:结束早于开始就是跨夜(如
23:15–07:45),面板会标「跨夜」;开始=结束会判「时段无效」,不会当成 24 小时。 - 防重复:按日期记录
last_post_date,今天已经发过就绝不重发。 - 错过补发:只要今天还没发、且不在「说说安静 / 静默」里,机器重新开机后下一轮检查会补发一次。
- 图片白名单:说说配图只允许 AI 心情图目录(
assets/mood_images/,当天主图除外),聊天用的表情包绝不会混进说说配图;视频只认assets/mood_videos/。 - 怎么让后端生效:面板改完会自动同步(700ms 防抖),也可以点「⬆️ 立即同步到后端」;生成成功会显示同步到的配置文件路径。这套时间配置与 Python 侧共用同一个
gen_config.json。
想核对后端当前口径(装了 year_image 引擎时):
python <你的引擎目录>/year_image.py schedule
会打印当前生效的 7 个时间窗,以及此刻「今天该不该发」。
四、AST 心情图联动(可选)
面板第 14 板块「AST 心情图联动」可以:
- 自动检测:扫环境变量
PRISM_AST_FEELINGS/PRISM_QZONE_DIR与 AstrBot 的标准plugin_data目录; - 也可以直接填
feelings.md的绝对路径(默认留空 = 自动检测,开源版不写任何人的盘符); - 「测试连通」会在同目录写一个临时文件再读回,不污染真实日记;
- 落盘格式严格是
第N天:…,与心情图引擎一致。
五、通用大模型接口(可选)
「🧠 诊断大脑接口」支持任意 OpenAI 兼容端点(OpenAI / Ollama / LM Studio / vLLM / 中转网关…):
- 填 Base URL / API Key / 模型 →「测试」看真实 HTTP 状态码与延迟;
- 点「💾 保存配置」会同时写浏览器本机配置与后端
brain.json.interface,保存即驱动真实对话; - 优先级:请求体覆盖 > 已保存配置 > 环境变量(
PRISM_BRAIN_BASE_URL/PRISM_BRAIN_MODEL/PRISM_BRAIN_API_KEY/PRISM_BRAIN_TIMEOUT_MS)> 默认值; - 后端没连上时,右侧栏【参数详情】下方的「诊断与建议」区会显示「后端未响应」红色细条:点「▾ 详情」可看逐个基址的探测结果(
GET <基址>/api/brain/config),在宿主里重载本插件或重启宿主即可;该区用固定的「显示/隐藏 诊断与建议」按钮展开或折叠,状态会记住,提示不会被关闭后丢失; - 想回退到环境变量:把
brain.json里的interface段删掉(或留空串),下一句对话自动回落。
六、目录与数据
index.js 宿主入口(挂 UI + 路由 + Brain API)
src/ 引擎:记忆/检索/情感/安全/预算/PAD/人格卡解析…
brain/ 通用大模型接口层(provider / service / server / config)
timeBridge.js 时间配置桥(把面板的时间窗写进 gen_config.json,带白名单与原子写)
ui/prism-panel.js 前端唯一真源
ui/prism-panel.html 构建产物(自包含,可直接双击打开)
ui/assets/ 静态资源(宿主 /prism/assets 前缀路由直接服务,带目录穿越防护)
themes/ 内置主题壁纸(bg_theme.jpg;水晶/月夜/日光共用底图 + 各自叠加层)
icons/ Logo 与介绍图(prism_logo.png、intro.png)
tools/build-panel.mjs 构建:prism-panel.js → prism-panel.html
隐私与数据:
- 默认配置里没有任何人的盘符、QQ 号、Token、API Key;
ownerQq默认为空。 - 运行期数据(
data/live/、brain.json、*.bak、日志)一律不进安装包,打包脚本会直接拒绝。 - 内置的「第三人称脱离检测」用的是通用词(
这个角色/本角色是/作为AI…),不含任何具体角色名。
七、自测与验收
npm test # 纯逻辑:算法 / 人格卡解析 / 羁绊日历 / 时间桥 / 主体 / Brain / Lifecycle…
npm run test:tier # 三档上下文占用对照(真浏览器,空人设 + 重人设两场景)
npm run test:stage2 # 六维断言(预算守恒 / PAD 映射 / 跨年闰年 / 多频道隔离 / 异常兜底 / 时间窗)
npm run test:fold-ui # 折叠模式 + 导航分组
npm run test:persona-ui # 人格卡解析端到端
npm run test:brain-diag # 通用接口诊断器
node tools/build-panel.mjs # 重建 ui/prism-panel.html
node tools/pack-release.mjs # 打纯净包(默认输出到当前用户的指定目录,见脚本内 OUT_DIR)
⚠️ 上面这些自测脚本只在源码仓库里;为保持安装包干净,
tools/与test/不会打进 ZIP。 拿到安装包的使用者只需要node tools/build-panel.mjs之外的两步:装目录、重启宿主;面板与引擎都不依赖这两个目录。 需要跑自测就用仓库版(或把这两目录单独拷进去)。
浏览器类用例需要本机有 Edge 或 Chrome;脚本会起临时静态服务 + headless 浏览器,跑完即清理临时 profile。
八、排查
| 现象 | 原因 / 处理 |
|---|---|
| 右侧栏「诊断与建议」出现「后端未响应」红条 | 后端没连上:点「▾ 详情」看逐基址探测结果;重载插件或重启宿主;确认 /prism/health 能返回 200;用「显示/隐藏 诊断与建议」按钮折叠该区(状态记住,不会丢) |
| 显示「预览模式」 | webServer 没注入成功;检查宿主版本与 cordis.patch.yml |
| 时间改了但没生效 | 看「今日活动安排」下方是否显示「✅ 已同步到后端」;没有就点「立即同步到后端」 |
| 说说一直不发 | 可能落在「说说安静」或「静默」窗内;或今天已经发过(防重复,不会重发) |
| AST 检测不到路径 | 留空让它自动检测,或手动填 feelings.md 绝对路径;也可设 PRISM_AST_FEELINGS |
九、边界说明
- 面板只写本插件自己的覆盖层,绝不写宿主的
config.default.json。 - 「极简模式」会按滑块截断人设
[设定](默认 800 字),这是省上下文的代价;需要完整设定就切到标准/完全体,或把滑块调大。 - 历史消息不在本插件控制范围内,占用会随聊天增长。
- 本插件不做「无人值守的社交动作」:说说/互动默认关闭,需要你自己在面板里打开并配好时间窗。
十、外观调节与自检
- 顶部「内容模式 / 折叠方式 / 搜索框 / 外观调节」共用一个物理容器(
top-control-panel),一张背景卡片、一圈边框,里面不再套分隔框。 - 透明度:卡片与全局背景用
color-mix真实变半透明,壁纸透得出来;模糊度:所有毛玻璃面(卡片、顶栏、弹窗、全局背景)都读同一个--prism-bg-blur变量,0 = 清晰、拉高 = 变糊;字体颜色:取色后穿透全部文本节点,按钮主色与红/绿/黄语义色保留不变。 - 工具栏下方有「🧪 外观生效自检」区块:条纹底上的毛玻璃样品 + 字体色样品 + 实时计算样式读数。拖滑块时样品与读数同步变化,用来证明变量真的挂上了,不是假样式。
- 「诊断与建议」固定在右侧栏【参数详情】下方:后端未响应红条、连接状态条、一键优化建议都收在这里;用固定的「显示/隐藏 诊断与建议」按钮展开或折叠,折叠状态会记住,提示不会关一次就丢。
- 外观设置只存浏览器本机(localStorage);「恢复默认外观」一键清空回主题默认。
- 主题资源全部内置:壁纸与图标在
ui/assets/themes/、ui/assets/icons/,面板只按相对路径引用,不依赖桌面或本机任何其它位置的文件;删掉外部原图后,水晶 / 月夜 / 日光三套主题照常切换显示。 - 外观设置区另有【上传自定义主题】:选一张本地图片,转 Base64 存浏览器本机并立即应用(不上传任何服务器);【恢复默认主题】:清除自定义壁纸、切回内置水晶主题,三套内置主题可继续自由切换。
十一、配置导入 / 导出(人格 + 外观一键搬家)
- 【导出配置】生成
PRISM_Config_[角色名]_[日期].json,内容是全量状态:所有面板参数、当前角色卡与整个角色库、外观设置(透明度 / 模糊度 / 字体颜色)、自定义壁纸(Base64)、时间调度配置,以及折叠 / 排序 / 档位等本机状态。不含 API Key,不含表情包缓存。 - 【导入配置】就在导出按钮旁边:选 JSON 后先校验格式,不是合法 PL-PRISM 配置会红色提示拦截,现有设置一个字节都不动。
- 校验通过即全量覆盖本机状态与角色库,界面瞬间重绘:滑块、开关、输入框、主题与外观同步到位,随后自动保存并绿色提示「✅ 配置导入成功,已应用最新人格与外观!」。
- 也兼容旧版只含面板参数的导出文件(只还原参数,不动角色卡与外观)。
- 用途:备份自己的人格、换机迁移、把角色卡分享给别人(对方导入即得完整人格 + 外观)。
- 注意:外观与自定义壁纸存浏览器本机,换浏览器要重新导入一次;面板参数与角色卡导入时还会同步保存到插件后端。
十二、表情包:批量导入、自动分拣与智能调用
- 批量导入:表情包工作台提供【🗂 批量导入】与【📁 导入文件夹】(
webkitdirectory)。前端按 8 张一批异步读取、批间让出主线程,几百张也不会卡死;单张上限 8MB,单次最多 1000 张。 - 文件名自动分拣:含「开心 / 笑 / happy…」进 [开心],含「哭 / 难过 / sad…」进 [难过],含「生气 / 怒 / angry…」进 [生气];自定义分类名优先匹配(文件夹名如
考试挂了_1.png会直接归到该分类);认不出的全部进 [未分类]。 - 自定义分类:分类标签横排显示张数,末尾【+ 新建分类】可建「傲娇」「无语」「考试挂了」等任意名字(≤16 字);图片可直接拖到分类标签上,或右键弹出菜单移动;右键还能切角色专属 / 通用兜底库、删除。
- AI 自动打标:接入支持视觉的 OpenAI 兼容接口后,点【🤖 AI 自动打标】让模型看图归类(每次最多 20 张);没接后端或模型不支持视觉时如实报错,不伪造标签。
- Prompt 只注入分类目录:系统提示里只有「当前可用的分类有:[开心]、[生气]…」和
[表情包: 分类名]的输出格式;图片文件名、相对路径、URL 一律不进上下文。图库为空时不注入任何表情包指令。 - 输出拦截与兜底:回复里的
[表情包: X]由拦截器整段移除;分类有图 ⇒ 随机抽一张(角色专属优先,没有再落通用库);分类没图 ⇒ 自动落 [未分类] 随机抽一张;连 [未分类] 也空 ⇒ 静默去掉标签只留文字。聊天框永远不会出现原始标签乱码。 - 存储:索引
dataDir/emojis/index.json,图片在ui/assets/emojis/<scope>/<分类>/;面板里的「🧪 表情包标签测试」可直接输入一段模拟回复,验证真实拦截与兜底。
十三、独立主视图与左侧图标
- 入口已从「聊天顶部 Tab」迁移到 DSH 左侧图标栏:水晶三棱镜图标(
ui/assets/prism-icon.svg,默认currentColor跟随亮暗主题,悬浮/选中显示青蓝→紫渐变)。 - 点击图标后,右侧主工作区(Main Editor Area)渲染 PL-PRISM 控制台;左侧原生导航(对话 / 插件 / 自动化任务 / 工作区)保持原样可点,随时能切回聊天。不使用全屏遮罩,不覆盖任何原生侧边栏。
- 聊天顶部不再出现「PL-PRISM 面板」Tab;
lib/client.js只注册main(key=prism)与sidebar.panellist(id=prism),与宿主的「自动化任务」使用同一套视图契约。 - 宽屏布局:≥1280 / 1600 / 1900px 三档自动加宽左右栏与内边距,导航、参数区与诊断栏按 IDE 工作区比例展开(仍保留 ≤1100px 的单列响应式)。
- 左侧导航按四大类分组(🎭 灵魂设定 / 🧠 记忆与算力 / 🛡️ 社交与底线 / 🔌 外设与生态),编号 1–15 连续;拖拽只在当前分类内部排序,跨分类拖拽会被拦截并提示「⚠️ 板块只能在当前分类内部排序」,卡片头部的 ▲▼ 到分类边界也停止。顺序按分类嵌套保存(
prism_panel_order_v4.groups),旧的扁平顺序首次加载会自动迁移并按分类矫正。 - 切换视图时 iframe 会重新挂载,但面板状态保存在本机 localStorage 与插件
data/live/,回来不会丢;聊天输入框随对话视图一起隐藏,主视图不显示它。 - 更新客户端后需要刷新一次 DSH 窗口;若图标仍未出现,再重启宿主(宿主会缓存客户端 bundle)。
十四、角色库与联网捏人(v1.0.0)
- 我的角色库:面板「当前角色档案」右上角「📂 打开我的角色库」。多角色并存,点卡片切换为当前编辑;每张卡显示性格 / 喜好 / 背景 / 口头禅的完整度,缺关键项时在标签下方贴黄色角标「⚠ 缺:性格、喜好」。
- 草稿防丢:手动编辑页所有
<input>/<textarea>绑input事件,实时写入localStorage(keyprism_draft_persona)。刷新页面、切到别的网站再回来、误关面板,草稿都在;点「存为新卡」「保存当前配置」「清空粘贴框」才释放。 - 联网多源检索:输入角色名(如「水原千鹤」「明日香」)点「🔍 联网多源检索」,后端并发抓百度百科 / 萌娘百科 / 必应,DOM 层物理切除导航栏 / 侧边栏 / 信息框 / 编辑按钮,正文按句过滤,再喂给大模型做白名单提取。不会把"萌娘百科欢迎您"、"P站id"、"S级美少女"、"12.333 个人打分"等网页元数据填进人设。
- 核心设定兜底:即使网页没写系统提示词,大模型也会结合性格 / 外貌 / 背景生成 200 字左右的
corePrompt注入系统提示词;后端兜底检测到网页词会自动清空重拼。 - 抓回来的是碎片,不是终稿:检索结果列在「网页碎片列表」,勾选需要的碎片后点「🌟 合并选中碎片并生成角色」,解析结果只填表,不自动建卡——你确认无误再点「存为新卡」。
十五、动态年龄与纪念日(v1.0.0)
birthdate字段:手动编辑页在「背景与经历」下方多了「出生日期」输入框(YYYY-MM-DD)。后端computeAge()实时算周岁(今天已过生日则 +1),在系统提示词里注入:
年份限定 1900–2200、月日范围校验;未来生日 / 离谱日期不注入(返回 null,不崩)。[当前年龄] 今天是 2026/11/10,你今年 14 岁(生日:2011-12-04)。- 保存角色时自动同步生日日历:
profile.birthdate的月日写入bond-calendar.json的charBirthdays[characterId],与已有的相识 100 天 / 365 天、主人生日、节日共用一个注入器。 - 纪念日高优先级注入:当天是角色生日 / 相识 100 天 / 一周年时,系统提示词末尾追加一段独立指令(按性格调整语气:傲娇嘴硬、温柔直白、三无短句),PAD 愉悦度飙升,主动表达依赖。这段不占记忆配额。
十六、打包与产物
- Encrypted 包:
PL-PRISM-v{ver}-Release-Encrypted.zip,src/与lib/client.js的 JS 经过控制流平坦化 + 字符串数组 base64 加密 + 死代码注入;index.js/package.json/config.default.json/cordis.patch.yml保持明文(宿主契约)。 - 不含
node_modules/、data/、tools/、test/、*.bak、brain.json、日志。
Comments
Loading…
Similar plugins
by RaganaBloodedge
DeepSeek Harness 长期记忆插件:分层任务记忆 + 关系图谱 + 索引常驻稳定前缀;零运行时依赖,另附同源的 Agent skill 形态
★ 0
MIT
TypeScript
Oct 15, 2026
dsh plugin --profile web add dsh-lmmarrby qmy777
DeepSeek Harness 可插拔推理等级设置分节——为第三方模型逐模型配置思考力度与线格式映射,不动源码、即插即用。
★ 0
MIT
TypeScript
Aug 18, 2026
dsh plugin --profile web add dsh-ui-models-reasoningby c-ling
DeepSeek Harness 桌面电子宠物插件:跟随 agent 状态变换心情的内置/自定义/Codex 精灵图伙伴。
★ 4
↓ 53/wk
MIT
JavaScript
Oct 22, 2026
dsh plugin --profile web add dsh-plugin-petby HOWILLMAKEIT
DeepSeek Harness 插件:维护 llm-pi-ai 模型的准确上下文窗口,避免长会话被误判为上下文溢出。
★ 30
↓ 372/wk
MIT
JavaScript
Nov 10, 2026
dsh plugin --profile web add dsh-model-context-catalogby sanshanya
Per-model capability declaration for DeepSeek Harness: reasoning-effort levels (wire spellings) + request modalities (vision) for OpenAI-compatible providers. Settings section, zero runtime harness de
★ 13
↓ 248/wk
MIT
TypeScript
Oct 9, 2026
dsh plugin --profile web add better-model-providerby Hu9956
切换供应商、模型与思考强度,每个模型各自记住档位。
★ 1
MIT
JavaScript
Oct 28, 2026
dsh plugin --profile web add @kewen/dsh-model-controls