dsh-daughter 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +164 -3
- package/client.js +65 -0
- package/config.yaml +175 -0
- package/cordis.patch.yml +4 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.js +276 -0
- package/dist/host.d.ts +32 -0
- package/dist/host.js +730 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +690 -0
- package/dist/runtime/body-link.d.ts +33 -0
- package/dist/runtime/body-link.js +78 -0
- package/dist/runtime/content.d.ts +49 -0
- package/dist/runtime/content.js +308 -0
- package/dist/runtime/desktop-input.d.ts +62 -0
- package/dist/runtime/desktop-input.js +258 -0
- package/dist/runtime/desktop-observe.d.ts +79 -0
- package/dist/runtime/desktop-observe.js +262 -0
- package/dist/runtime/filter.d.ts +52 -0
- package/dist/runtime/filter.js +147 -0
- package/dist/runtime/maintenance.d.ts +86 -0
- package/dist/runtime/maintenance.js +895 -0
- package/dist/runtime/memory.d.ts +27 -0
- package/dist/runtime/memory.js +201 -0
- package/dist/runtime/mood-motion.d.ts +32 -0
- package/dist/runtime/mood-motion.js +55 -0
- package/dist/runtime/observability.d.ts +56 -0
- package/dist/runtime/observability.js +111 -0
- package/dist/runtime/panels.d.ts +55 -0
- package/dist/runtime/panels.js +319 -0
- package/dist/runtime/personality.d.ts +70 -0
- package/dist/runtime/personality.js +395 -0
- package/dist/runtime/safety.d.ts +7 -0
- package/dist/runtime/safety.js +67 -0
- package/dist/runtime/state.d.ts +12 -0
- package/dist/runtime/state.js +103 -0
- package/dist/runtime/vpet-control.d.ts +51 -0
- package/dist/runtime/vpet-control.js +170 -0
- package/dist/runtime/vpet-events.d.ts +152 -0
- package/dist/runtime/vpet-events.js +237 -0
- package/dist/store.d.ts +142 -0
- package/dist/store.js +855 -0
- package/dist/types.d.ts +639 -0
- package/dist/types.js +1 -0
- package/dist/util.d.ts +59 -0
- package/dist/util.js +209 -0
- package/icon.svg +13 -0
- package/index.js +8 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +75 -6
- package/web/star-map/index.html +1411 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 han0han0le0ni
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,164 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# dsh-daughter
|
|
2
|
+
|
|
3
|
+
给 DSH 的"大脑"插件:**人格分层、性格演化、长期记忆、运行时状态、技能与反射、安全降级**。它不负责表现层——气泡、形象、动效由桌宠端决定。
|
|
4
|
+
|
|
5
|
+
> 记忆跟着角色走,不跟着会话走:换对话框、换工作区,关系与经历都还在。
|
|
6
|
+
|
|
7
|
+
## 对接对象(先看这张表)
|
|
8
|
+
|
|
9
|
+
| 项 | 具体是什么 |
|
|
10
|
+
| --- | --- |
|
|
11
|
+
| 桌宠软件 | **VPet-Simulator**(虚拟桌宠模拟器,Steam 版,Windows / WPF)。本机实测游戏版本 `11074`,构建引用其 `VPet-Simulator.Windows.Interface.dll` 等 5 个 DLL |
|
|
12
|
+
| 配套 MOD | **`DshDaughter`**(`PluginName = dshdaughter`)——自己写的 **C# 代码 MOD**,不是 Steam 创意工坊的现成 MOD |
|
|
13
|
+
| 是否改游戏本体 | **否**。不替换、不 patch VPet 的任何文件;MOD 只通过 VPet 官方 `MainPlugin` 扩展点加载 |
|
|
14
|
+
| 是否改第三方 MOD | **否**。仓库里的 10 个 `.cs` 全部为新增代码,没有基于别人的 MOD 改造 |
|
|
15
|
+
| 两端怎么通信 | 只有 HTTP:MOD 轮询 `http://127.0.0.1:47612/vpet/events`,处理完 `POST /vpet/events/ack`;状态回传 `/vpet/consumer/report`,身体信号 `/vpet/heartbeat` |
|
|
16
|
+
| 另一个可选前端 | `connectors/pet-shell`(独立 WPF 壳),不启动游戏,直接读 VPet 的 PNG 素材帧;与 MOD **共用一个 ack 游标,只能二选一运行** |
|
|
17
|
+
|
|
18
|
+
## 桌宠联动
|
|
19
|
+
|
|
20
|
+
### A. VPet-Simulator + `DshDaughter` MOD(推荐)
|
|
21
|
+
|
|
22
|
+
**装到哪里**:VPet 安装目录下的 `mod\DshDaughter\`,结构为
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
<VPet 安装目录>\
|
|
26
|
+
└── mod\
|
|
27
|
+
└── DshDaughter\
|
|
28
|
+
├── info.lps # MOD 清单(vupmod#DshDaughter / author / gamever 11074)
|
|
29
|
+
└── plugin\
|
|
30
|
+
└── DshDaughter.dll # .NET 编译产物
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**怎么编译**(MOD 源码在 `connectors/vpet/mod-src/`,目标框架 `net10.0-windows`):
|
|
34
|
+
|
|
35
|
+
```powershell
|
|
36
|
+
cd connectors/vpet/mod-src
|
|
37
|
+
dotnet build -c Release -p:VPetDir="E:\SteamLibrary\steamapps\common\VPet"
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
`VPetDir` 默认就是上面那个路径,装在别处时用参数覆盖。5 个 VPet 程序集以 `Private=false` 引用,**不随 DLL 分发**,运行时由游戏自身提供。
|
|
41
|
+
|
|
42
|
+
**怎么装**:把 `bin/Release/DshDaughter.dll` 复制到 `mod\DshDaughter\plugin\`,把 `info.lps` 复制到 `mod\DshDaughter\`,重启游戏。日志写在游戏目录的 `dsh-daughter-mod.log`。
|
|
43
|
+
|
|
44
|
+
**改了哪些文件**(全部为新增,`connectors/vpet/mod-src/`):
|
|
45
|
+
|
|
46
|
+
| 文件 | 职责 |
|
|
47
|
+
| --- | --- |
|
|
48
|
+
| `Plugin.cs` | 唯一入口,继承 `MainPlugin`;1s 轮询、游标推进、忙闲裁决、置顶自愈 |
|
|
49
|
+
| `DshClient.cs` | HTTP 客户端:`/vpet/events`、`/vpet/events/ack`、`/vpet/consumer/report`、`/vpet/heartbeat` |
|
|
50
|
+
| `EventRouter.cs` | 把 `thinking / tool / reply / error / motion / move` 事件翻译成气泡与待执行指令 |
|
|
51
|
+
| `MotionPlayer.cs` | 播放 VPet 原生 `GraphType` 动画,处理旧动画回调不打断新动画 |
|
|
52
|
+
| `PetWindowController.cs` | 窗口置顶、相对像素平移、头顶锚点 |
|
|
53
|
+
| `InteractionGuard.cs` | 玩家摸头/点击后的短时间内本地优先,DSH 动作排队等待 |
|
|
54
|
+
| `CommandQueue.cs` | 待执行桌宠指令的排队与去重 |
|
|
55
|
+
| `ConsumerState.cs` | 能力清单(支持的 GraphType)、忙闲、玩家交互,上报给 DSH |
|
|
56
|
+
| `CloudBubble.cs` | 头顶云朵气泡:点击穿透、不抢焦点、默认 6s 淡出 |
|
|
57
|
+
| `PetLog.cs` | 异步轻量日志,避免 UI 线程被文件 I/O 拖住 |
|
|
58
|
+
| `info.lps` | MOD 清单(游戏读取的元信息) |
|
|
59
|
+
|
|
60
|
+
**行为边界**:MOD 只调用 VPet 公开 API(`IMainWindow`、`GraphInfo.GraphType`、气泡与窗口句柄),不写 VPet 存档;插件侧对身体信号只做单向只读(见设计文档 §12.1)。
|
|
61
|
+
|
|
62
|
+
### B. `connectors/pet-shell`(独立壳,可选)
|
|
63
|
+
|
|
64
|
+
不启动游戏本体,直接按 VPet 素材目录的 PNG 序列帧播放。
|
|
65
|
+
|
|
66
|
+
- 素材默认探测 `...\VPet\mod\0000_core\pet\vup`,也可在设置里改
|
|
67
|
+
- 配置在 `%LOCALAPPDATA%\DshPet\pet.json`(首次启动生成):素材路径、缩放、置顶、点击穿透、气泡、桥地址
|
|
68
|
+
- 桥地址默认 `http://127.0.0.1:47612`(旧版本写死的 `47614` 是桌面连接器端口,启动时会自动纠正)
|
|
69
|
+
- 与 MOD 共用同一 ack 游标,**同时开会互相抢事件**,只保留一个
|
|
70
|
+
|
|
71
|
+
### C. 其它连接器
|
|
72
|
+
|
|
73
|
+
| 连接器 | 端口 / 入口 | 说明 |
|
|
74
|
+
| --- | --- | --- |
|
|
75
|
+
| `connectors/android` | ADB | 受限动作 + 前台事件,需 `adb` 可用 |
|
|
76
|
+
| `connectors/desktop` | `127.0.0.1:47614` | 窗口/前台/媒体查询、截图、抽帧、ffmpeg 推流、输入注入 |
|
|
77
|
+
| 外部消息通用入口 | `POST /connectors/<source>/ingest` | QQ / 抖音 / Minecraft / 单机暂走这里,来源白名单校验 |
|
|
78
|
+
|
|
79
|
+
## 能力
|
|
80
|
+
|
|
81
|
+
| 模块 | 内容 |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| 人格 | L1 基线 / L2 关系 / L3 认知 / L4 情境子人格 / L5 运行时状态;L1–L4 慢速写回并留演化日志,L5 不写回人格 |
|
|
84
|
+
| 记忆 | 摘要层 + 全文层分离;SQLite FTS5 trigram + Dice 双路;五维加权(语义/近因/权重/情绪/链接);一跳二跳联想 + 概率联想;衰减、归档、情绪历史合并 |
|
|
85
|
+
| 认知滤网 | 写入前四类裁决(屏蔽 / 丢弃 / 合并 / 放行)+ 来源可信度降权 + 显著性 + 习惯化签名 + 定期忘却;存量治理脚本 |
|
|
86
|
+
| 技能与资产 | `draft → active → frozen → deprecated`;按技能形态自动固化为 MAC / CON / CMB / MOT,失败两次自动回退 |
|
|
87
|
+
| 反射 | 关键词 / 正则 / 状态 / 事件四类匹配,毫秒级,不调用模型(短路默认关闭) |
|
|
88
|
+
| 安全 | 三档降级 + 滞回 + 写类工具熔断 + 输出侧诊断词检查;只描述强度与持续时间 |
|
|
89
|
+
| 注入预算 | 硬上限 3000 tokens,按优先级裁剪,`constraint` 永不裁 |
|
|
90
|
+
| 星图 | `/star-map/` 只读可视化:九个星系、Canvas 2D 手写透视、无需联网与 three.js |
|
|
91
|
+
|
|
92
|
+
## 安装
|
|
93
|
+
|
|
94
|
+
三种方式,按需选一种。
|
|
95
|
+
|
|
96
|
+
**1. 通过 DSH 插件市场(推荐)**
|
|
97
|
+
|
|
98
|
+
仓库自带一份 format 1 索引:[`market/index.json`](market/index.json)。在 DSH 里打开 **插件 → 发现 → 索引源 → 添加**,填入:
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
https://cdn.jsdelivr.net/gh/han0han0le0ni/dsh-daughter@main/market/index.json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
之后在「发现」里搜 `daughter` 安装即可。索引里固定了 commit,装到的是可复现的版本。
|
|
105
|
+
|
|
106
|
+
**2. 直接从 git 装**
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
dsh plugin add git+https://github.com/han0han0le0ni/dsh-daughter.git
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**3. 本地开发**
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
npm install
|
|
116
|
+
npm run build # tsc → dist/
|
|
117
|
+
npm test # 112 项
|
|
118
|
+
npm run check:link # 适配性 / 联动性自检,18 项
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
> 仓库里提交了 `dist/`:市场与 git 安装没有构建步骤,必须带一份可直接加载的产物。改了 `src/` 记得 `npm run build` 再提交(`prepare` 脚本也会兜一层)。
|
|
122
|
+
|
|
123
|
+
- 运行配置见 `config.yaml`(数值均有范围校验,非法值回落默认并告警)。
|
|
124
|
+
- 运行时数据写到 `data_root`(默认 `.`),目录按脑区划分:`brain/hippocampus`、`brain/neocortex`、`brain/prefrontal` 等。
|
|
125
|
+
- 桌宠是可选件:没有 MOD、没有 bridge、没有 `vpet` 配置时,插件行为与"完全不知道桌宠存在"一致。
|
|
126
|
+
|
|
127
|
+
## 目录
|
|
128
|
+
|
|
129
|
+
```text
|
|
130
|
+
src/ 插件主体(21 个 TS 文件)
|
|
131
|
+
runtime/ 记忆、人格、状态、安全、滤网、反射、可观测性
|
|
132
|
+
scripts/ 自检与存量治理(link-check / filter-sweep)
|
|
133
|
+
connectors/
|
|
134
|
+
vpet/ VPet MOD 源码(mod-src/,10 个 .cs + info.lps)与桥接脚本(bridge.mjs)
|
|
135
|
+
pet-shell/ 独立 WPF 壳(读 VPet 素材,不启动游戏)
|
|
136
|
+
android/ ADB 受限动作
|
|
137
|
+
desktop/ 桌面观察与输入
|
|
138
|
+
web/ 星图页面(纯静态)
|
|
139
|
+
tests/ 14 个测试文件
|
|
140
|
+
docs/ 设计文档、实现核对、评估、检测报告
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## 文档
|
|
144
|
+
|
|
145
|
+
- [设计文档](docs/dsh-daughter-design.md)——数据模型、检索算法、接口契约、里程碑
|
|
146
|
+
- [实现核对](docs/dsh-daughter-实现核对.md)——完成度、代码落点、剩余缺口
|
|
147
|
+
- [记忆 / 情感评估](docs/dsh-daughter-记忆情感评估.md)——真实数据体检与改进优先级
|
|
148
|
+
- [检测报告](docs/dsh-daughter-检测报告.md)——适配性与联动性自检结果
|
|
149
|
+
|
|
150
|
+
## 性格演化
|
|
151
|
+
|
|
152
|
+
出生时五维按有界区间抽样,并把结果写入 `innate` 锚点;同角色同种子可复现。日常闲聊不动人格,只有累积/关键事件才按通道推动五维,任一项不超出锚点 `±0.6`。依恋底色出生只抽安全/焦虑/回避,混乱型只能靠经历演化。面板只展示证据与数值,不输出"你是 X 型"的结论。完整规则见设计文档 §4.8。
|
|
153
|
+
|
|
154
|
+
## 当前状态
|
|
155
|
+
|
|
156
|
+
P0–P8 已落地并核对(当前 `npm test` **112 项全绿**,`check:link` PASS 18);P9 外部连接 3/7(VPet 桌宠 / Android / 桌面已通,QQ、抖音、Minecraft、单机待适配器)。已知短板与后续优先级见上面两份文档。
|
|
157
|
+
|
|
158
|
+
## 隐私
|
|
159
|
+
|
|
160
|
+
`brain/`、`logs/`、`archive/`、`star_map/`、`docs/screenshots/`、`dist/` 与 C# 的 `bin/obj` 均排除在版本库之外:前四者包含真实对话记忆、人格状态与界面截图,只在本地生成。
|
|
161
|
+
|
|
162
|
+
## License
|
|
163
|
+
|
|
164
|
+
[MIT](LICENSE) © 2026 han0han0le0ni
|
package/client.js
ADDED
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// dsh-daughter 的浏览器侧入口:在侧边栏「面板」列表里加一个「脑星图」按钮,
|
|
2
|
+
// 点开后由宿主的主栏渲染一张同源 iframe(/star-map/),数据由插件自带的路由提供。
|
|
3
|
+
// 模式与 dsh-thoughtdag / dsh-synapse 一致:window.__ModuleLoader__.load +
|
|
4
|
+
// inject 声明依赖的客户端服务。
|
|
5
|
+
window.__ModuleLoader__.load({
|
|
6
|
+
id: 'dsh-daughter',
|
|
7
|
+
factory: (require) => {
|
|
8
|
+
const module = { exports: {} };
|
|
9
|
+
|
|
10
|
+
let React = null;
|
|
11
|
+
try {
|
|
12
|
+
React = require('react');
|
|
13
|
+
} catch {
|
|
14
|
+
React = null;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
module.exports.inject = ['slots', 'locale'];
|
|
18
|
+
module.exports.apply = (ctx) => {
|
|
19
|
+
const NS = 'dsh-daughter';
|
|
20
|
+
const CSS_ID = 'dsh-daughter/client.css';
|
|
21
|
+
let style = document.head.querySelector(`style[data-plugin-css="${CSS_ID}"]`);
|
|
22
|
+
if (!style) {
|
|
23
|
+
style = document.createElement('style');
|
|
24
|
+
style.setAttribute('data-plugin', 'dsh-daughter');
|
|
25
|
+
style.setAttribute('data-plugin-css', CSS_ID);
|
|
26
|
+
document.head.append(style);
|
|
27
|
+
}
|
|
28
|
+
style.textContent =
|
|
29
|
+
'.dsh-dd-frame{display:block;width:100%;height:100%;min-height:100%;border:0;background:#06070b}';
|
|
30
|
+
|
|
31
|
+
if (!React || !ctx.slots || !ctx.locale || typeof ctx.effect !== 'function') {
|
|
32
|
+
console.warn('[dsh-daughter] 当前宿主没有面板插槽,脑星图只能通过 /star-map/ 访问');
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const h = React.createElement;
|
|
37
|
+
const PanelIcon = ({ size }) =>
|
|
38
|
+
h(
|
|
39
|
+
'svg',
|
|
40
|
+
{ width: size ?? 16, height: size ?? 16, viewBox: '0 0 16 16', 'aria-hidden': 'true' },
|
|
41
|
+
h('circle', { cx: 8, cy: 8, r: 6.2, fill: 'none', stroke: '#6d5dfc', 'stroke-width': 1.4 }),
|
|
42
|
+
h('circle', { cx: 8, cy: 8, r: 2.2, fill: '#f0a35a' }),
|
|
43
|
+
h('circle', { cx: 13.2, cy: 4.4, r: 1.4, fill: '#a99cff' }),
|
|
44
|
+
);
|
|
45
|
+
const PanelPage = () => h('iframe', { className: 'dsh-dd-frame', title: '脑星图', src: '/star-map/' });
|
|
46
|
+
|
|
47
|
+
ctx.effect(
|
|
48
|
+
() => ctx.locale.register(NS, { zh: { panel: '脑星图' }, en: { panel: 'Star Map' } }),
|
|
49
|
+
'dsh-daughter:dictionaries',
|
|
50
|
+
);
|
|
51
|
+
const t = ctx.locale.bind(NS);
|
|
52
|
+
ctx.slots.inject('main', () =>
|
|
53
|
+
ctx.slots.register({ name: 'main', key: 'daughter-starmap', locale: NS, inject: () => ({}) }, PanelPage),
|
|
54
|
+
);
|
|
55
|
+
ctx.slots.inject('sidebar.panellist', () =>
|
|
56
|
+
ctx.slots.register(
|
|
57
|
+
{ name: 'sidebar.panellist', id: 'daughter-starmap', order: 31, locale: NS, label: () => t('panel') },
|
|
58
|
+
PanelIcon,
|
|
59
|
+
),
|
|
60
|
+
);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
return module.exports;
|
|
64
|
+
},
|
|
65
|
+
});
|
package/config.yaml
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
# dsh-daughter 默认配置模板(对应设计文档第 11 节)
|
|
2
|
+
#
|
|
3
|
+
# 这里是一份"开箱即用"的保守默认值,不含任何个人偏好:
|
|
4
|
+
# - 所有数值都是代码内置默认值,改这里等价于改默认行为
|
|
5
|
+
# - 想调整请直接改本文件;升级插件会覆盖本文件,个人配置建议另存备份
|
|
6
|
+
# - 未实现的配置项(desktop / backend / shared_across_*)会在启动时告警并忽略
|
|
7
|
+
version: 1
|
|
8
|
+
character_id: daughter-default
|
|
9
|
+
|
|
10
|
+
seed: 42
|
|
11
|
+
random_surprise_enabled: true
|
|
12
|
+
|
|
13
|
+
retrieval:
|
|
14
|
+
top_k: 5
|
|
15
|
+
half_life_days: 7
|
|
16
|
+
surprise_eta: 0.05
|
|
17
|
+
exclude_archived: true
|
|
18
|
+
max_candidates: 1000
|
|
19
|
+
score_weights:
|
|
20
|
+
semantic: 0.42
|
|
21
|
+
recency: 0.22
|
|
22
|
+
weight: 0.16
|
|
23
|
+
emotion_match: 0.10
|
|
24
|
+
link_proximity: 0.10
|
|
25
|
+
min_score: 0.12
|
|
26
|
+
# 命中事件若在全文层有更完整记录,就在摘要行后补一句摘录(§4.4)
|
|
27
|
+
expand_fulltext: true
|
|
28
|
+
fulltext_excerpt_chars: 120
|
|
29
|
+
|
|
30
|
+
association:
|
|
31
|
+
max_depth: 2
|
|
32
|
+
max_injected: 2
|
|
33
|
+
hop_decay: 0.6
|
|
34
|
+
|
|
35
|
+
skills:
|
|
36
|
+
max_main: 1
|
|
37
|
+
max_associated: 2
|
|
38
|
+
maturity_threshold_automate: 0.7
|
|
39
|
+
min_success_for_freeze: 5
|
|
40
|
+
min_main_score: 0.25
|
|
41
|
+
min_associated_score: 0.15
|
|
42
|
+
# 一轮里至少用到几个工具,才把这次工具序列沉淀成技能草稿(§9.1 draft)
|
|
43
|
+
min_steps_to_learn: 2
|
|
44
|
+
|
|
45
|
+
reflex:
|
|
46
|
+
enabled: true
|
|
47
|
+
max_match_ms: 5
|
|
48
|
+
# 命中即跳过模型调用(G4)。注意:宿主 reject 会丢弃该条用户消息,
|
|
49
|
+
# 聊天记录里这条消息和回复都不会留下,只在桌宠气泡里可见。
|
|
50
|
+
short_circuit: false
|
|
51
|
+
|
|
52
|
+
budget:
|
|
53
|
+
max_total_tokens: 3000
|
|
54
|
+
block_caps:
|
|
55
|
+
persona: 300
|
|
56
|
+
state_hint: 150
|
|
57
|
+
event_digest: 1400
|
|
58
|
+
skill_digest: 500
|
|
59
|
+
association: 300
|
|
60
|
+
constraint: 120
|
|
61
|
+
|
|
62
|
+
safety:
|
|
63
|
+
enabled: true
|
|
64
|
+
diagnosis_labels_forbidden: true
|
|
65
|
+
thresholds:
|
|
66
|
+
stress_level1: 0.7
|
|
67
|
+
safety_level2: 0.35
|
|
68
|
+
fatigue_level2: 0.8
|
|
69
|
+
overdraft_level3: 0.8
|
|
70
|
+
hysteresis: 0.1
|
|
71
|
+
level1_min_duration_min: 30
|
|
72
|
+
|
|
73
|
+
storage:
|
|
74
|
+
scope: character # 仅支持 character;其它取值会告警并按角色级运行
|
|
75
|
+
shared_across_sessions: true
|
|
76
|
+
shared_across_workspaces: true
|
|
77
|
+
data_root: . # 相对于插件根目录;运行时数据都写在这里
|
|
78
|
+
backend: sqlite
|
|
79
|
+
# true = 人格/技能/资产/L5/日志写入走文件锁 + 原子写(§5.3);false 会退化为无锁写并告警
|
|
80
|
+
single_writer: true
|
|
81
|
+
|
|
82
|
+
# 认知滤网:写入门控 / 习惯化 / 认知屏蔽 / 忘却(§8.5)
|
|
83
|
+
filter:
|
|
84
|
+
enabled: true
|
|
85
|
+
# 来源可信度:同时用于写入门控与检索降权(真人对话恒为 1,永远不会因显著低被丢弃)
|
|
86
|
+
source_weights:
|
|
87
|
+
chat: 1.0
|
|
88
|
+
qq: 1.0
|
|
89
|
+
douyin_dm: 1.0
|
|
90
|
+
game: 0.9
|
|
91
|
+
minecraft: 0.9
|
|
92
|
+
douyin_content: 0.85
|
|
93
|
+
android: 0.85
|
|
94
|
+
system: 0.4
|
|
95
|
+
# 认知屏蔽:命中即不入库,只记统计
|
|
96
|
+
shield:
|
|
97
|
+
sources: [] # 例如 [system] 直接不收系统事件
|
|
98
|
+
keywords: [] # 例如 [密码, token, 密钥]
|
|
99
|
+
patterns: [] # 正则,例如 ["^窗口标题"]
|
|
100
|
+
# 习惯化:同源同题(数字归一化后)在窗口内重复,只累加计数不新增条目
|
|
101
|
+
habituation:
|
|
102
|
+
window_minutes: 30
|
|
103
|
+
max_repeat: 3
|
|
104
|
+
salience:
|
|
105
|
+
drop_below: 0.2 # 显著性低于此值且来源可信度 ≤0.5 时直接丢弃(0.12 时"前台切换"这类系统事件会漏进来)
|
|
106
|
+
# 忘却:低显著性 + 从未被想起 + 长期闲置 → 归档(不物理删除)
|
|
107
|
+
forget:
|
|
108
|
+
enabled: true
|
|
109
|
+
idle_days: 30
|
|
110
|
+
min_salience: 0.2
|
|
111
|
+
|
|
112
|
+
decay:
|
|
113
|
+
weight_decay_rate: 0.02
|
|
114
|
+
recall_boost: 0.05
|
|
115
|
+
archive_threshold: 0.15
|
|
116
|
+
archive_idle_days: 90
|
|
117
|
+
|
|
118
|
+
# 情绪回落:闲置越久,L5 越靠近下面的基线;连续对话时几乎不生效(§14.7)
|
|
119
|
+
emotion_relax:
|
|
120
|
+
enabled: true
|
|
121
|
+
rate_per_hour: 0.06
|
|
122
|
+
idle_hours: 0.5
|
|
123
|
+
stress_baseline: 0.2
|
|
124
|
+
fatigue_baseline: 0.15
|
|
125
|
+
safety_baseline: 0.7
|
|
126
|
+
|
|
127
|
+
evolution:
|
|
128
|
+
l1_max_delta_per_write: 0.02
|
|
129
|
+
min_turns_between_writes: 20
|
|
130
|
+
log_retention_days: 365
|
|
131
|
+
|
|
132
|
+
# 性格演化:写实为基——日常闲聊不动人格,只有累积/关键事件才推动
|
|
133
|
+
personality:
|
|
134
|
+
enabled: true
|
|
135
|
+
drift_cap: 0.6 # 五维相对出生锚点的最大漂移量(±)
|
|
136
|
+
critical_threshold: 0.6 # 冲击度 ≥ 此值算关键事件(一次性大幅推进)
|
|
137
|
+
cumulative_threshold: 0.3 # 冲击度 ≥ 此值算累积经历(小幅推进)
|
|
138
|
+
critical_step: 0.12
|
|
139
|
+
cumulative_step: 0.02
|
|
140
|
+
same_direction_bonus_after: 3 # 同向经历每攒够几次,额外推一把
|
|
141
|
+
# 修复效率乘数(按依恋底色):越小越难修;伤害侧按 2 - 该值放大
|
|
142
|
+
repair:
|
|
143
|
+
secure: 1.0
|
|
144
|
+
anxious: 0.34
|
|
145
|
+
avoidant: 0.25
|
|
146
|
+
disorganized: 0.2
|
|
147
|
+
# 出生抽样:区间有界,出生不允许单维 >0.8 或 <0.2;混乱型不可出生,只能演化
|
|
148
|
+
initial:
|
|
149
|
+
ranges:
|
|
150
|
+
openness: [0.45, 0.75]
|
|
151
|
+
conscientiousness: [0.4, 0.7]
|
|
152
|
+
extraversion: [0.3, 0.7]
|
|
153
|
+
agreeableness: [0.45, 0.8]
|
|
154
|
+
neuroticism: [0.25, 0.65]
|
|
155
|
+
attachment_priors:
|
|
156
|
+
secure: 0.7
|
|
157
|
+
anxious: 0.18
|
|
158
|
+
avoidant: 0.12
|
|
159
|
+
evidence_cap: 200 # 证据链保留条数(面板只给事实,不给类型标签)
|
|
160
|
+
|
|
161
|
+
# 桌面连接器(P9,尚未实现):打开只会多一条告警,默认关闭
|
|
162
|
+
desktop:
|
|
163
|
+
enabled: false
|
|
164
|
+
bridge_url: http://127.0.0.1:47614
|
|
165
|
+
|
|
166
|
+
# 桌宠联动(可选):任何一项关掉/缺失,插件行为都与"没有桌宠"一致
|
|
167
|
+
# 没装桌宠也不用改这里——没有心跳时 body_link 自动失效
|
|
168
|
+
vpet:
|
|
169
|
+
enabled: true
|
|
170
|
+
body_link:
|
|
171
|
+
enabled: true # 桌宠体力/心情 → L5 疲劳/压力,只抬升不写回人格
|
|
172
|
+
stale_ms: 300000 # 5 分钟没有新心跳视为失效,疲劳/压力自然回落
|
|
173
|
+
fatigue_weight: 0.5 # 体力越低,疲劳抬升越多
|
|
174
|
+
stress_weight: 0.3 # 心情越低,压力抬升越多
|
|
175
|
+
max_influence: 0.6 # 外部信号最多推到 0.6,留余量给对话
|
package/cordis.patch.yml
ADDED
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DaughterConfig } from './types.js';
|
|
2
|
+
import type { Logger } from './util.js';
|
|
3
|
+
export declare const defaultConfig: DaughterConfig;
|
|
4
|
+
export declare function loadConfig(pluginRoot: string, logger?: Logger): DaughterConfig;
|
|
5
|
+
/** 合并宿主下发的 config 补丁,供 cordis 插件入口使用 */
|
|
6
|
+
export declare function mergeConfig(base: DaughterConfig, override: unknown): DaughterConfig;
|
|
7
|
+
/** 配置中的 data_root 相对于插件根目录解析 */
|
|
8
|
+
export declare function resolveDataRoot(pluginRoot: string, config: DaughterConfig): string;
|