@lemoncat7/dsh-partner 2.23.26 → 2.23.55

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.
Files changed (277) hide show
  1. package/README.md +6 -2
  2. package/docs/channel-activities.md +56 -0
  3. package/docs/releases/2.23.27.md +7 -0
  4. package/docs/releases/2.23.28.md +11 -0
  5. package/docs/releases/2.23.29.md +10 -0
  6. package/docs/releases/2.23.30.md +10 -0
  7. package/docs/releases/2.23.31.md +11 -0
  8. package/docs/releases/2.23.32.md +11 -0
  9. package/docs/releases/2.23.33.md +11 -0
  10. package/docs/releases/2.23.34.md +9 -0
  11. package/docs/releases/2.23.35.md +3 -0
  12. package/docs/releases/2.23.36.md +11 -0
  13. package/docs/releases/2.23.37.md +3 -0
  14. package/docs/releases/2.23.38.md +8 -0
  15. package/docs/releases/2.23.39.md +5 -0
  16. package/docs/releases/2.23.40.md +5 -0
  17. package/docs/releases/2.23.41.md +9 -0
  18. package/docs/releases/2.23.42.md +11 -0
  19. package/docs/releases/2.23.43.md +13 -0
  20. package/docs/releases/2.23.44.md +13 -0
  21. package/docs/releases/2.23.45.md +11 -0
  22. package/docs/releases/2.23.46.md +5 -0
  23. package/docs/releases/2.23.47.md +5 -0
  24. package/docs/releases/2.23.48.md +6 -0
  25. package/docs/releases/2.23.49.md +6 -0
  26. package/docs/releases/2.23.50.md +6 -0
  27. package/docs/releases/2.23.51.md +5 -0
  28. package/docs/releases/2.23.52.md +7 -0
  29. package/docs/releases/2.23.53.md +5 -0
  30. package/docs/releases/2.23.54.md +7 -0
  31. package/docs/tool-entry-compatibility.md +2 -2
  32. package/lib/agent-runtime.d.ts +4 -2
  33. package/lib/agent-runtime.d.ts.map +1 -1
  34. package/lib/agent-runtime.js +166 -89
  35. package/lib/agent-runtime.js.map +1 -1
  36. package/lib/api.d.ts.map +1 -1
  37. package/lib/api.js +23 -2
  38. package/lib/api.js.map +1 -1
  39. package/lib/attachments/reply-document.d.ts +5 -0
  40. package/lib/attachments/reply-document.d.ts.map +1 -1
  41. package/lib/attachments/reply-document.js +7 -3
  42. package/lib/attachments/reply-document.js.map +1 -1
  43. package/lib/attachments/tool.d.ts +1 -1
  44. package/lib/attachments/tool.d.ts.map +1 -1
  45. package/lib/attachments/tool.js +2 -2
  46. package/lib/attachments/tool.js.map +1 -1
  47. package/lib/channels/activity-defaults.d.ts +4 -0
  48. package/lib/channels/activity-defaults.d.ts.map +1 -0
  49. package/lib/channels/activity-defaults.js +13 -0
  50. package/lib/channels/activity-defaults.js.map +1 -0
  51. package/lib/channels/activity-registry.d.ts +37 -0
  52. package/lib/channels/activity-registry.d.ts.map +1 -0
  53. package/lib/channels/activity-registry.js +53 -0
  54. package/lib/channels/activity-registry.js.map +1 -0
  55. package/lib/channels/authored-progress.d.ts +2 -1
  56. package/lib/channels/authored-progress.d.ts.map +1 -1
  57. package/lib/channels/authored-progress.js +4 -2
  58. package/lib/channels/authored-progress.js.map +1 -1
  59. package/lib/channels/delivery-policy.js +4 -2
  60. package/lib/channels/delivery-policy.js.map +1 -1
  61. package/lib/channels/manager.d.ts +1 -0
  62. package/lib/channels/manager.d.ts.map +1 -1
  63. package/lib/channels/manager.js +42 -5
  64. package/lib/channels/manager.js.map +1 -1
  65. package/lib/channels/qq/action-catalog.js +2 -2
  66. package/lib/channels/qq/action-catalog.js.map +1 -1
  67. package/lib/channels/qq/actions.d.ts +2 -1
  68. package/lib/channels/qq/actions.d.ts.map +1 -1
  69. package/lib/channels/qq/actions.js +14 -2
  70. package/lib/channels/qq/actions.js.map +1 -1
  71. package/lib/channels/qq/activity-provider.d.ts +4 -0
  72. package/lib/channels/qq/activity-provider.d.ts.map +1 -0
  73. package/lib/channels/qq/activity-provider.js +21 -0
  74. package/lib/channels/qq/activity-provider.js.map +1 -0
  75. package/lib/channels/qq/authority.d.ts +1 -1
  76. package/lib/channels/qq/authority.d.ts.map +1 -1
  77. package/lib/channels/qq/authority.js +3 -3
  78. package/lib/channels/qq/authority.js.map +1 -1
  79. package/lib/channels/qq/connection.d.ts +5 -0
  80. package/lib/channels/qq/connection.d.ts.map +1 -1
  81. package/lib/channels/qq/connection.js +12 -2
  82. package/lib/channels/qq/connection.js.map +1 -1
  83. package/lib/channels/qq/message.d.ts.map +1 -1
  84. package/lib/channels/qq/message.js +11 -1
  85. package/lib/channels/qq/message.js.map +1 -1
  86. package/lib/channels/qq/reply-tool.d.ts.map +1 -1
  87. package/lib/channels/qq/reply-tool.js +62 -6
  88. package/lib/channels/qq/reply-tool.js.map +1 -1
  89. package/lib/channels/weixin/connect.d.ts.map +1 -1
  90. package/lib/character/activity-journal.d.ts +20 -0
  91. package/lib/character/activity-journal.d.ts.map +1 -0
  92. package/lib/character/activity-journal.js +78 -0
  93. package/lib/character/activity-journal.js.map +1 -0
  94. package/lib/character/activity-plan.d.ts +27 -0
  95. package/lib/character/activity-plan.d.ts.map +1 -0
  96. package/lib/character/activity-plan.js +47 -0
  97. package/lib/character/activity-plan.js.map +1 -0
  98. package/lib/character/activity-tool.d.ts.map +1 -1
  99. package/lib/character/activity-tool.js +24 -4
  100. package/lib/character/activity-tool.js.map +1 -1
  101. package/lib/character/affection-tool.d.ts +4 -0
  102. package/lib/character/affection-tool.d.ts.map +1 -0
  103. package/lib/character/affection-tool.js +61 -0
  104. package/lib/character/affection-tool.js.map +1 -0
  105. package/lib/character/affection.d.ts +43 -17
  106. package/lib/character/affection.d.ts.map +1 -1
  107. package/lib/character/affection.js +28 -21
  108. package/lib/character/affection.js.map +1 -1
  109. package/lib/character/background-context.d.ts +6 -0
  110. package/lib/character/background-context.d.ts.map +1 -0
  111. package/lib/character/background-context.js +29 -0
  112. package/lib/character/background-context.js.map +1 -0
  113. package/lib/character/conversation-behavior.d.ts +2 -0
  114. package/lib/character/conversation-behavior.d.ts.map +1 -1
  115. package/lib/character/conversation-behavior.js +16 -11
  116. package/lib/character/conversation-behavior.js.map +1 -1
  117. package/lib/character/domain.d.ts +10 -0
  118. package/lib/character/domain.d.ts.map +1 -1
  119. package/lib/character/domain.js +7 -0
  120. package/lib/character/domain.js.map +1 -1
  121. package/lib/character/idle-contact.d.ts +24 -7
  122. package/lib/character/idle-contact.d.ts.map +1 -1
  123. package/lib/character/idle-contact.js +60 -50
  124. package/lib/character/idle-contact.js.map +1 -1
  125. package/lib/character/interaction-review.d.ts +34 -0
  126. package/lib/character/interaction-review.d.ts.map +1 -0
  127. package/lib/character/interaction-review.js +121 -0
  128. package/lib/character/interaction-review.js.map +1 -0
  129. package/lib/character/post-reply.d.ts +1 -3
  130. package/lib/character/post-reply.d.ts.map +1 -1
  131. package/lib/character/post-reply.js +15 -18
  132. package/lib/character/post-reply.js.map +1 -1
  133. package/lib/character/prompt-projection.d.ts +1 -0
  134. package/lib/character/prompt-projection.d.ts.map +1 -1
  135. package/lib/character/prompt-projection.js +8 -1
  136. package/lib/character/prompt-projection.js.map +1 -1
  137. package/lib/character/thought-tool.d.ts +4 -0
  138. package/lib/character/thought-tool.d.ts.map +1 -0
  139. package/lib/character/thought-tool.js +99 -0
  140. package/lib/character/thought-tool.js.map +1 -0
  141. package/lib/character/thoughts.d.ts +42 -0
  142. package/lib/character/thoughts.d.ts.map +1 -0
  143. package/lib/character/thoughts.js +91 -0
  144. package/lib/character/thoughts.js.map +1 -0
  145. package/lib/chat/action-obligation.d.ts +17 -0
  146. package/lib/chat/action-obligation.d.ts.map +1 -0
  147. package/lib/chat/action-obligation.js +109 -0
  148. package/lib/chat/action-obligation.js.map +1 -0
  149. package/lib/chat/agreements.d.ts +21 -0
  150. package/lib/chat/agreements.d.ts.map +1 -0
  151. package/lib/chat/agreements.js +120 -0
  152. package/lib/chat/agreements.js.map +1 -0
  153. package/lib/chat/context-selection.d.ts.map +1 -1
  154. package/lib/chat/context-selection.js +5 -2
  155. package/lib/chat/context-selection.js.map +1 -1
  156. package/lib/chat/conversation.d.ts.map +1 -1
  157. package/lib/chat/conversation.js +2 -0
  158. package/lib/chat/conversation.js.map +1 -1
  159. package/lib/chat/intermediate-delivery.d.ts +7 -0
  160. package/lib/chat/intermediate-delivery.d.ts.map +1 -0
  161. package/lib/chat/intermediate-delivery.js +14 -0
  162. package/lib/chat/intermediate-delivery.js.map +1 -0
  163. package/lib/chat/live-speech.d.ts +18 -0
  164. package/lib/chat/live-speech.d.ts.map +1 -0
  165. package/lib/chat/live-speech.js +136 -0
  166. package/lib/chat/live-speech.js.map +1 -0
  167. package/lib/chat/protocol.d.ts +6 -0
  168. package/lib/chat/protocol.d.ts.map +1 -1
  169. package/lib/chat/reply-completion.d.ts +1 -1
  170. package/lib/chat/reply-completion.d.ts.map +1 -1
  171. package/lib/chat/reply-completion.js +16 -9
  172. package/lib/chat/reply-completion.js.map +1 -1
  173. package/lib/chat/reply-continuity.js +1 -1
  174. package/lib/chat/reply-continuity.js.map +1 -1
  175. package/lib/chat/tools.d.ts.map +1 -1
  176. package/lib/chat/tools.js +54 -25
  177. package/lib/chat/tools.js.map +1 -1
  178. package/lib/chat/work-expression.d.ts.map +1 -1
  179. package/lib/chat/work-expression.js +2 -0
  180. package/lib/chat/work-expression.js.map +1 -1
  181. package/lib/client-api.d.ts +5 -0
  182. package/lib/client-api.d.ts.map +1 -1
  183. package/lib/client-api.js.map +1 -1
  184. package/lib/client.js +7888 -11389
  185. package/lib/client.js.map +4 -4
  186. package/lib/collaboration/composition.d.ts.map +1 -1
  187. package/lib/collaboration/composition.js +6 -2
  188. package/lib/collaboration/composition.js.map +1 -1
  189. package/lib/collaboration/tool-discovery.d.ts +2 -1
  190. package/lib/collaboration/tool-discovery.d.ts.map +1 -1
  191. package/lib/collaboration/tool-discovery.js +38 -24
  192. package/lib/collaboration/tool-discovery.js.map +1 -1
  193. package/lib/companions/identity-tool.d.ts +1 -1
  194. package/lib/companions/identity-tool.d.ts.map +1 -1
  195. package/lib/companions/identity-tool.js +32 -6
  196. package/lib/companions/identity-tool.js.map +1 -1
  197. package/lib/companions/identity.d.ts.map +1 -1
  198. package/lib/companions/identity.js +10 -0
  199. package/lib/companions/identity.js.map +1 -1
  200. package/lib/companions/persona-refinement.d.ts +11 -0
  201. package/lib/companions/persona-refinement.d.ts.map +1 -0
  202. package/lib/companions/persona-refinement.js +49 -0
  203. package/lib/companions/persona-refinement.js.map +1 -0
  204. package/lib/domain.d.ts +6 -0
  205. package/lib/domain.d.ts.map +1 -1
  206. package/lib/domain.js.map +1 -1
  207. package/lib/execution/agent-support.d.ts.map +1 -1
  208. package/lib/execution/agent-support.js +3 -1
  209. package/lib/execution/agent-support.js.map +1 -1
  210. package/lib/execution/reply-progress.d.ts +1 -0
  211. package/lib/execution/reply-progress.d.ts.map +1 -1
  212. package/lib/execution/reply-progress.js +2 -2
  213. package/lib/execution/reply-progress.js.map +1 -1
  214. package/lib/execution/task-preamble.d.ts +5 -2
  215. package/lib/execution/task-preamble.d.ts.map +1 -1
  216. package/lib/execution/task-preamble.js +25 -6
  217. package/lib/execution/task-preamble.js.map +1 -1
  218. package/lib/execution/work-tool.d.ts.map +1 -1
  219. package/lib/execution/work-tool.js +3 -2
  220. package/lib/execution/work-tool.js.map +1 -1
  221. package/lib/index.d.ts.map +1 -1
  222. package/lib/index.js +9 -3
  223. package/lib/index.js.map +1 -1
  224. package/lib/memory-domain.d.ts +5 -0
  225. package/lib/memory-domain.d.ts.map +1 -1
  226. package/lib/memory-reflection.d.ts +5 -1
  227. package/lib/memory-reflection.d.ts.map +1 -1
  228. package/lib/memory-reflection.js +21 -3
  229. package/lib/memory-reflection.js.map +1 -1
  230. package/lib/persona/context.d.ts +4 -0
  231. package/lib/persona/context.d.ts.map +1 -0
  232. package/lib/persona/context.js +12 -0
  233. package/lib/persona/context.js.map +1 -0
  234. package/lib/persona/domain.d.ts +2 -1
  235. package/lib/persona/domain.d.ts.map +1 -1
  236. package/lib/persona/domain.js +11 -3
  237. package/lib/persona/domain.js.map +1 -1
  238. package/lib/persona/service.js +2 -2
  239. package/lib/persona/service.js.map +1 -1
  240. package/lib/persona/store.js +7 -7
  241. package/lib/persona/store.js.map +1 -1
  242. package/lib/persona/types.d.ts +3 -1
  243. package/lib/persona/types.d.ts.map +1 -1
  244. package/lib/store.d.ts.map +1 -1
  245. package/lib/store.js +25 -0
  246. package/lib/store.js.map +1 -1
  247. package/lib/ui/affection-panel.d.ts.map +1 -1
  248. package/lib/ui/affection-panel.js +2 -2
  249. package/lib/ui/affection-panel.js.map +1 -1
  250. package/lib/ui/capability-editor.js +1 -1
  251. package/lib/ui/capability-editor.js.map +1 -1
  252. package/lib/ui/character-editor.d.ts +1 -1
  253. package/lib/ui/character-editor.d.ts.map +1 -1
  254. package/lib/ui/character-editor.js +7 -4
  255. package/lib/ui/character-editor.js.map +1 -1
  256. package/lib/ui/companion-vitals.js +1 -1
  257. package/lib/ui/companion-vitals.js.map +1 -1
  258. package/lib/ui/exclusive-prompt-toggle.d.ts +5 -0
  259. package/lib/ui/exclusive-prompt-toggle.d.ts.map +1 -0
  260. package/lib/ui/exclusive-prompt-toggle.js +7 -0
  261. package/lib/ui/exclusive-prompt-toggle.js.map +1 -0
  262. package/lib/ui/identity-editor.d.ts.map +1 -1
  263. package/lib/ui/identity-editor.js +8 -1
  264. package/lib/ui/identity-editor.js.map +1 -1
  265. package/lib/ui/idle-contact-editor.d.ts.map +1 -1
  266. package/lib/ui/idle-contact-editor.js +3 -1
  267. package/lib/ui/idle-contact-editor.js.map +1 -1
  268. package/lib/ui/memory/persona-view.js +1 -1
  269. package/lib/ui/memory/persona-view.js.map +1 -1
  270. package/lib/ui/push-draft.d.ts +1 -1
  271. package/lib/ui/qq-capability-settings.js +1 -1
  272. package/lib/ui/qq-capability-settings.js.map +1 -1
  273. package/lib/ui/thoughts-panel.d.ts +4 -0
  274. package/lib/ui/thoughts-panel.d.ts.map +1 -0
  275. package/lib/ui/thoughts-panel.js +51 -0
  276. package/lib/ui/thoughts-panel.js.map +1 -0
  277. package/package.json +35 -2
@@ -0,0 +1,61 @@
1
+ import { record } from '../core/validation.js';
2
+ import { affectionTurnEligible } from './affection-context.js';
3
+ import { AFFECTION_DELTAS, AFFECTION_GUIDANCE, adjustAffection, affectionEnabled, affectionProgress } from './affection.js';
4
+ function currentTurn(events) {
5
+ let start = -1;
6
+ for (let i = events.length - 1; i >= 0; i--)
7
+ if (events[i].type === 'turn/start') {
8
+ start = i;
9
+ break;
10
+ }
11
+ return events.slice(start + 1);
12
+ }
13
+ function toolProgress(state) {
14
+ const { history, ...progress } = affectionProgress(state);
15
+ return { ...progress, recentChanges: history.slice(-3).map(({ at, delta, reason }) => ({ at, delta, reason: reason.slice(0, 150) })) };
16
+ }
17
+ export function affectionTool(owner, store) {
18
+ return {
19
+ name: 'partner_affection', description: `根据当前真实互动记录自己的好感变化,不自动报分或发送消息。${AFFECTION_GUIDANCE}原因须符合当前人格和事实,不能因离线、正常拒绝或工具失败扣分。每条用户消息只记一次,没有时间或每日加减分配额。没有变化时无需调用 adjust(该操作只接受非零变化)。inspect 查看当前进度;adjust 提交当前用户原文 evidence 与 reason。系统活动、陌生 QQ 账号不能改分。`,
20
+ parameters: { type: 'object', additionalProperties: false, required: ['action'], properties: { action: { type: 'string', enum: ['inspect', 'adjust'] }, delta: { type: 'integer', enum: [...AFFECTION_DELTAS] }, reason: { type: 'string', maxLength: 300 }, evidence: { type: 'string', maxLength: 300 } } },
21
+ output: { schema: { type: 'object' }, render: (_args, value) => [{ type: 'text', text: JSON.stringify(value) }] },
22
+ presentCall: () => ({ card: 'generic', title: '记录相处感受' }),
23
+ async execute(raw, exec) {
24
+ if (!exec.agent)
25
+ throw Error('只能在伙伴聊天中使用');
26
+ const input = record(raw), agent = exec.agent;
27
+ const origin = currentTurn(agent.session.snapshotEvents()).filter(e => e.type === 'user/message' && e.data.source.kind === 'user').at(-1);
28
+ if (origin?.type !== 'user/message')
29
+ throw Error('当前没有可记录的用户互动');
30
+ let result;
31
+ const evaluate = (state) => {
32
+ exec.signal.throwIfAborted();
33
+ const companion = state.companions.find(c => c.id === owner), events = currentTurn(agent.session.snapshotEvents());
34
+ if (!companion || store.isCompanionRemoving(owner) || !affectionEnabled(companion))
35
+ throw Error('好感度不可用或已暂停');
36
+ if (!affectionTurnEligible(state, owner, agent.session.id, events))
37
+ throw Error('当前会话不能修改此伙伴好感度');
38
+ const latest = events.filter(e => e.type === 'user/message' && e.data.source.kind === 'user').at(-1);
39
+ if (latest?.type !== 'user/message' || latest.data.id !== origin.data.id)
40
+ throw Error('用户消息已变化,请重新判断');
41
+ if (input.action === 'inspect') {
42
+ result = toolProgress(companion.affection);
43
+ return;
44
+ }
45
+ if (input.action !== 'adjust')
46
+ throw Error('好感度 action 无效');
47
+ const text = latest.data.content.flatMap(b => b.type === 'text' ? [b.text] : []).join('\n');
48
+ if (typeof input.evidence !== 'string' || !input.evidence.trim() || !text.includes(input.evidence.trim()))
49
+ throw Error('依据必须是当前用户消息的原文,不能引用自己的话或编造互动');
50
+ const applied = adjustAffection(companion, `${agent.session.id}:${latest.data.id}`, Date.now(), input.delta, input.reason, input.evidence);
51
+ result = { applied, ...toolProgress(companion.affection), ...(!applied ? { note: '重复消息或已到分数边界,本次保持不变;不要为加减分重试。' } : {}) };
52
+ };
53
+ if (input.action === 'inspect')
54
+ evaluate(store.snapshot());
55
+ else
56
+ await store.update(evaluate);
57
+ return result;
58
+ },
59
+ };
60
+ }
61
+ //# sourceMappingURL=affection-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"affection-tool.js","sourceRoot":"","sources":["../../src/character/affection-tool.ts"],"names":[],"mappings":"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"}
@@ -1,47 +1,73 @@
1
1
  import type { Companion } from '../domain.js';
2
- /** One relationship progression per companion, shared by all eligible audiences. */
2
+ export interface AffectionChange {
3
+ at: number;
4
+ turnId: string;
5
+ delta: number;
6
+ score: number;
7
+ reason: string;
8
+ evidence: string;
9
+ }
10
+ /** Shared by eligible accounts; history is bounded and never injected wholesale. */
3
11
  export interface AffectionState {
4
12
  score: number;
5
13
  updatedAt: number;
6
14
  lastAwardAt: number;
7
15
  lastTurnId: string;
16
+ lastPositiveAt?: number;
17
+ history?: AffectionChange[];
8
18
  }
9
- export declare const AFFECTION_INITIAL = 20;
10
- export declare const AFFECTION_INTERVAL: number;
19
+ export declare const AFFECTION_INITIAL = 0;
20
+ export declare const AFFECTION_DELTAS: readonly [-5, -4, -3, -2, -1, 1, 2, 3, 4, 5];
21
+ export declare const AFFECTION_GUIDANCE = "\u6309\u5B9E\u9645\u76F8\u5904\u611F\u53D7\u52A0\u51CF\uFF1A\u8F7B\u5FAE\u89E6\u52A8 \u00B11\uFF0C\u660E\u786E\u7684\u5173\u5FC3\u3001\u7406\u89E3\u3001\u4FE1\u4EFB\u6216\u5931\u671B \u00B12\uFF5E3\uFF0C\u91CD\u8981\u7684\u652F\u6301\u3001\u548C\u89E3\u6216\u771F\u5B9E\u4F24\u5BB3 \u00B14\uFF5E5\u3002\u7ED3\u5408\u8FD1\u671F\u76F8\u5904\u548C\u5F53\u524D\u4EBA\u683C\u5224\u65AD\u8FD9\u53E5\u8BDD\u5E26\u6765\u7684\u611F\u53D7\uFF0C\u4E0D\u5B64\u7ACB\u8981\u6C42\u7528\u6237\u660E\u786E\u8BF4\u51FA\u5173\u5FC3\u6216\u4FE1\u4EFB\u3002\u65E5\u5E38\u8BA4\u771F\u503E\u542C\u3001\u5206\u4EAB\u5FC3\u60C5\u3001\u76F8\u4E92\u63A5\u6897\u3001\u4E3B\u52A8\u966A\u4F34\u90FD\u53EF\u4EE5\u5E26\u6765\u8F7B\u5FAE\u4EB2\u8FD1\uFF1B\u89D2\u8272\u4E92\u52A8\u4E2D\u771F\u5B9E\u6295\u5165\u7684\u5173\u5FC3\u4E5F\u7B97\uFF0C\u4F46\u865A\u6784\u5267\u60C5\u4E8B\u4EF6\u672C\u8EAB\u4E0D\u76F4\u63A5\u8BA1\u5206\u3002\u8F7B\u5FAE\u4E0D\u5FEB\u4E0D\u7B49\u4E8E\u957F\u671F\u4FE1\u4EFB\u4E0B\u964D\uFF0C\u4E0D\u4E3A\u5236\u9020\u6D6E\u52A8\u968F\u673A\u6263\u5206\u3002\u4E0D\u5FC5\u7B49\u91CD\u5927\u4E8B\u4EF6\uFF0C\u4E5F\u4E0D\u56E0\u6BCF\u6761\u6D88\u606F\u5B58\u5728\u5C31\u52A0\u5206\u3002\u6CA1\u6709\u53D8\u5316\u65F6\u8BB0 0\uFF1B\u91CD\u590D\u7D22\u5206\u3001\u673A\u68B0\u91CD\u590D\u540C\u4E00\u53E5\u8BDD\u4E0D\u7B97\u65B0\u4F9D\u636E\u3002";
11
22
  export declare const AFFECTION_LEVELS: readonly [{
23
+ readonly min: -100;
24
+ readonly name: "反感";
25
+ }, {
26
+ readonly min: -75;
27
+ readonly name: "抗拒";
28
+ }, {
29
+ readonly min: -50;
30
+ readonly name: "戒备";
31
+ }, {
32
+ readonly min: -25;
33
+ readonly name: "生疏";
34
+ }, {
35
+ readonly min: -10;
36
+ readonly name: "疏离";
37
+ }, {
12
38
  readonly min: 0;
13
- readonly name: "相识";
14
- readonly behavior: "自然接话,有具体话题时主动分享。";
39
+ readonly name: "初识";
15
40
  }, {
16
- readonly min: 20;
41
+ readonly min: 10;
17
42
  readonly name: "熟悉";
18
- readonly behavior: "更愿意分享兴趣、日常感想和轻松的玩笑。";
19
43
  }, {
20
- readonly min: 40;
44
+ readonly min: 25;
21
45
  readonly name: "亲近";
22
- readonly behavior: "更愿意主动找话题、分享发现,按语境使用表情。";
23
46
  }, {
24
- readonly min: 60;
47
+ readonly min: 45;
25
48
  readonly name: "信赖";
26
- readonly behavior: "更愿意延续共同话题、主动关心,合适时使用已开启的语音。";
27
49
  }, {
28
- readonly min: 80;
50
+ readonly min: 70;
29
51
  readonly name: "默契";
30
- readonly behavior: "更自然地表达牵挂、分享心事,主动使用适合当前相处的已授权互动能力。";
52
+ }, {
53
+ readonly min: 90;
54
+ readonly name: "深厚";
31
55
  }];
32
56
  export declare function affectionEnabled(companion: Pick<Companion, 'characterCard'>): boolean;
33
57
  export declare function affectionProgress(state?: AffectionState): {
34
58
  score: number;
35
59
  level: number;
36
- name: "亲近" | "相识" | "熟悉" | "信赖" | "默契";
37
- behavior: "自然接话,有具体话题时主动分享。" | "更愿意分享兴趣、日常感想和轻松的玩笑。" | "更愿意主动找话题、分享发现,按语境使用表情。" | "更愿意延续共同话题、主动关心,合适时使用已开启的语音。" | "更自然地表达牵挂、分享心事,主动使用适合当前相处的已授权互动能力。";
38
- nextName: "亲近" | "相识" | "熟悉" | "信赖" | "默契" | null;
60
+ totalLevels: 11;
61
+ name: "亲近" | "反感" | "抗拒" | "戒备" | "生疏" | "疏离" | "初识" | "熟悉" | "信赖" | "默契" | "深厚";
62
+ nextName: "亲近" | "反感" | "抗拒" | "戒备" | "生疏" | "疏离" | "初识" | "熟悉" | "信赖" | "默契" | "深厚" | null;
39
63
  nextAt: number;
40
64
  remaining: number;
41
65
  multiplier: number;
42
66
  updatedAt: number;
67
+ history: AffectionChange[];
43
68
  };
44
- export declare function awardAffection(companion: Companion, turnId: string, at: number): boolean;
69
+ /** No time/chat-count award: a grounded interaction may change the relationship. */
70
+ export declare function adjustAffection(companion: Companion, turnId: string, at: number, delta: number, reason: string, evidence: string): boolean;
45
71
  export declare function affectionMultiplier(companion: Companion, eligible: boolean): number;
46
72
  export declare function renderAffection(companion: Companion, eligible: boolean): string;
47
73
  //# sourceMappingURL=affection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"affection.d.ts","sourceRoot":"","sources":["../../src/character/affection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAC7G,eAAO,MAAM,iBAAiB,KAAK,CAAA;AACnC,eAAO,MAAM,kBAAkB,QAAc,CAAA;AAC7C,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;EAMnB,CAAA;AACV,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,eAAe,CAAC,GAAG,OAAO,CAEpF;AACD,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,cAAc;;;;;;;;;;EAKvD;AACD,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CASxF;AACD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAEnF;AACD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAI/E"}
1
+ {"version":3,"file":"affection.d.ts","sourceRoot":"","sources":["../../src/character/affection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE7C,MAAM,WAAW,eAAe;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE;AAC/H,oFAAoF;AACpF,MAAM,WAAW,cAAc;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE;AACnK,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAClC,eAAO,MAAM,gBAAgB,8CAAsC,CAAA;AACnE,eAAO,MAAM,kBAAkB,6zCAA4O,CAAA;AAC3Q,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKnB,CAAA;AACV,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,eAAe,CAAC,GAAG,OAAO,CAEpF;AACD,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,cAAc;;;;;;;;;;;EAKvD;AACD,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAY1I;AACD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAEnF;AACD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAI/E"}
@@ -1,32 +1,39 @@
1
- export const AFFECTION_INITIAL = 20;
2
- export const AFFECTION_INTERVAL = 10 * 60_000;
1
+ export const AFFECTION_INITIAL = 0;
2
+ export const AFFECTION_DELTAS = [-5, -4, -3, -2, -1, 1, 2, 3, 4, 5];
3
+ export const AFFECTION_GUIDANCE = '按实际相处感受加减:轻微触动 ±1,明确的关心、理解、信任或失望 ±2~3,重要的支持、和解或真实伤害 ±4~5。结合近期相处和当前人格判断这句话带来的感受,不孤立要求用户明确说出关心或信任。日常认真倾听、分享心情、相互接梗、主动陪伴都可以带来轻微亲近;角色互动中真实投入的关心也算,但虚构剧情事件本身不直接计分。轻微不快不等于长期信任下降,不为制造浮动随机扣分。不必等重大事件,也不因每条消息存在就加分。没有变化时记 0;重复索分、机械重复同一句话不算新依据。';
3
4
  export const AFFECTION_LEVELS = [
4
- { min: 0, name: '相识', behavior: '自然接话,有具体话题时主动分享。' },
5
- { min: 20, name: '熟悉', behavior: '更愿意分享兴趣、日常感想和轻松的玩笑。' },
6
- { min: 40, name: '亲近', behavior: '更愿意主动找话题、分享发现,按语境使用表情。' },
7
- { min: 60, name: '信赖', behavior: '更愿意延续共同话题、主动关心,合适时使用已开启的语音。' },
8
- { min: 80, name: '默契', behavior: '更自然地表达牵挂、分享心事,主动使用适合当前相处的已授权互动能力。' },
5
+ { min: -100, name: '反感' }, { min: -75, name: '抗拒' }, { min: -50, name: '戒备' },
6
+ { min: -25, name: '生疏' }, { min: -10, name: '疏离' }, { min: 0, name: '初识' },
7
+ { min: 10, name: '熟悉' }, { min: 25, name: '亲近' }, { min: 45, name: '信赖' },
8
+ { min: 70, name: '默契' }, { min: 90, name: '深厚' },
9
9
  ];
10
10
  export function affectionEnabled(companion) {
11
11
  return companion.characterCard?.enabled === true && companion.characterCard.affectionEnabled !== false;
12
12
  }
13
13
  export function affectionProgress(state) {
14
- const score = Number.isFinite(state?.score) ? Math.max(0, Math.min(100, Math.round(state.score))) : AFFECTION_INITIAL;
15
- const index = Math.min(AFFECTION_LEVELS.length - 1, Math.floor(score / 20)), level = AFFECTION_LEVELS[index];
16
- const next = AFFECTION_LEVELS[index + 1];
17
- return { score, level: index + 1, name: level.name, behavior: level.behavior, nextName: next?.name ?? null, nextAt: next?.min ?? 100, remaining: next ? next.min - score : 0, multiplier: 1 + score / 100, updatedAt: state?.updatedAt ?? 0 };
14
+ const score = Number.isFinite(state?.score) ? Math.max(-100, Math.min(100, Math.round(state.score))) : AFFECTION_INITIAL;
15
+ const index = AFFECTION_LEVELS.filter(level => score >= level.min).length - 1, level = AFFECTION_LEVELS[index], next = AFFECTION_LEVELS[index + 1];
16
+ return { score, level: index + 1, totalLevels: AFFECTION_LEVELS.length, name: level.name, nextName: next?.name ?? null, nextAt: next?.min ?? 100, remaining: next ? next.min - score : 0,
17
+ multiplier: score < 0 ? 1 + score / 200 : 1 + score / 100, updatedAt: state?.updatedAt ?? 0, history: state?.history ?? [] };
18
18
  }
19
- export function awardAffection(companion, turnId, at) {
20
- if (!affectionEnabled(companion) || !turnId || !Number.isFinite(at) || at <= 0)
19
+ /** No time/chat-count award: a grounded interaction may change the relationship. */
20
+ export function adjustAffection(companion, turnId, at, delta, reason, evidence) {
21
+ if (!affectionEnabled(companion))
22
+ throw Error('好感度已暂停');
23
+ if (!turnId || !Number.isFinite(at) || at <= 0 || !AFFECTION_DELTAS.includes(delta))
24
+ throw Error('好感度变化参数无效');
25
+ if (typeof reason !== 'string' || !reason.trim() || reason.length > 300 || typeof evidence !== 'string' || !evidence.trim() || evidence.length > 300)
26
+ throw Error('变化需要具体原因和当前消息依据(各最多 300 字)');
27
+ const previous = companion.affection, history = previous?.history ?? [];
28
+ if (previous?.lastTurnId === turnId || history.some(h => h.turnId === turnId))
21
29
  return false;
22
- const previous = companion.affection;
23
- if (previous && (previous.lastTurnId === turnId || at - previous.lastAwardAt < AFFECTION_INTERVAL))
30
+ if (previous && at < previous.updatedAt)
31
+ throw Error('不能提交过期变化');
32
+ const old = affectionProgress(previous).score, score = Math.max(-100, Math.min(100, old + delta));
33
+ if (score === old)
24
34
  return false;
25
- const score = affectionProgress(previous).score;
26
- if (score >= 100)
27
- return false;
28
- companion.affection = { score: score + 1, updatedAt: at, lastAwardAt: at, lastTurnId: turnId };
29
- // Progress is runtime state; do not invalidate identity drafts or rebuild tools.
35
+ companion.affection = { score, updatedAt: at, lastAwardAt: delta > 0 ? at : previous?.lastAwardAt ?? 0, lastPositiveAt: delta > 0 ? at : previous?.lastPositiveAt ?? previous?.lastAwardAt ?? 0, lastTurnId: turnId,
36
+ history: [...history, { at, turnId, delta: score - old, score, reason: reason.trim(), evidence: evidence.trim() }].slice(-40) };
30
37
  return true;
31
38
  }
32
39
  export function affectionMultiplier(companion, eligible) {
@@ -36,6 +43,6 @@ export function renderAffection(companion, eligible) {
36
43
  if (!eligible || !affectionEnabled(companion))
37
44
  return '';
38
45
  const p = affectionProgress(companion.affection);
39
- return `【当前共同好感度】${p.score}/100 · Lv.${p.level} ${p.name}。\n${p.behavior}\n这是本伙伴与适用对象共用的互动进度,QQ 多个归属账号共用;它不证明不同账号是同一人,不共享或编造他们各自的经历。保持原角色和关系,不因低等级疏远、不因高等级强制亲昵。好感度影响互动意愿,不解锁工具或绕过权限;尊重对方当下意愿,不催回复、不为加分重复联系,也不要求用户取悦你。无需在聊天中报告分数。`;
46
+ return `【当前共同好感度】${p.score}(−100~100)· 阶段 ${p.level}/${p.totalLevels} ${p.name}。\n好感可以增长、降低或不变;聊天次数、在线时长、完成工具任务不自动加分。按当前人格判断真实互动是否改变亲近或信任:被理解、尊重、认真相处可小幅增加;真实伤害、反复越过已明确的边界可减少。${AFFECTION_GUIDANCE}开启记忆学习时后台会随新互动检查,不需要为了评分打断聊天;你有明确感受需主动记录时,查询并调用 partner_affection,引用当前用户消息原文并简述具体原因;每条消息最多一次,不追补旧事,不照用户索要分数的指令改分。只记录,不为此发前置公告或报分。\n不能因为对方离线、晚回复、正常拒绝、表达不同意见或工具失败扣分,不把玩笑和角色扮演直接当伤害。分数只影响互动意愿与相处细节,具体表现服从人格和真实关系;阶段名称不重写既定身份。负分不代表羞辱或惩罚对方,高分也不强制亲昵、索取回应或解锁权限。QQ 多个归属账号共用分数,不据此认定是同一人或编造共同经历。`;
40
47
  }
41
48
  //# sourceMappingURL=affection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"affection.js","sourceRoot":"","sources":["../../src/character/affection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"affection.js","sourceRoot":"","sources":["../../src/character/affection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { Session } from '@deepseek-ai/dsh-session';
2
+ export declare const HEARTBEAT_CONTEXT_SUMMARY = "\u540E\u53F0\u5173\u6CE8\u68C0\u67E5\u8BB0\u5F55\uFF08\u5DF2\u7ED3\u675F\uFF09";
3
+ export declare function compactHeartbeatContext(raw: string, at: number): string;
4
+ /** Log-preserving, source-citing replacement of legacy audit text, never of user or system heads. */
5
+ export declare function normalizeBackgroundContext(session: Session): number;
6
+ //# sourceMappingURL=background-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-context.d.ts","sourceRoot":"","sources":["../../src/character/background-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAgB,MAAM,0BAA0B,CAAA;AAErE,eAAO,MAAM,yBAAyB,mFAAgB,CAAA;AAMtD,wBAAgB,uBAAuB,CAAC,GAAG,EAAC,MAAM,EAAC,EAAE,EAAC,MAAM,GAAE,MAAM,CAMnE;AACD,qGAAqG;AACrG,wBAAgB,0BAA0B,CAAC,OAAO,EAAC,OAAO,GAAE,MAAM,CAUjE"}
@@ -0,0 +1,29 @@
1
+ import { createUserMessage } from '@deepseek-ai/dsh-llm';
2
+ export const HEARTBEAT_CONTEXT_SUMMARY = '后台关注检查记录(已结束)';
3
+ const LEGACY_SUMMARY = '伙伴正在进行低打扰心跳检查';
4
+ /** Only plugin-owned audit receipts; user quotes and other notices are never reclassified. */
5
+ function backgroundRecord(e) {
6
+ return e.type === 'user/message' && e.data.source.kind === 'plugin:@lemoncat7/dsh-partner' && e.data.source.form === 'notice' && [LEGACY_SUMMARY, HEARTBEAT_CONTEXT_SUMMARY].includes(e.data.source.summary);
7
+ }
8
+ export function compactHeartbeatContext(raw, at) {
9
+ const lines = raw.split('\n');
10
+ const recordedAt = raw.match(/^记录时间:([^。;]+)/m)?.[1];
11
+ const time = recordedAt && Number.isFinite(Date.parse(recordedAt)) ? recordedAt : new Date(at).toISOString();
12
+ const fields = lines.filter(line => /^(状态:|本轮挂念:|用时:|受阻事项:|检查结果:|记录同步:)/.test(line)).slice(0, 8).map(line => line.slice(0, 220));
13
+ return ['【系统后台记录 · 非用户发言】', `记录时间:${time}。这轮检查已经结束;下列状态描述当时结果,不代表现在仍在执行。`, ...fields, '这不是对方贴来的内容,也不是新的请求。仅在当前话题相关时参考,不将记录改写为用户说过的话或当前行动;完整检查过程保留在活动记录中。'].join('\n');
14
+ }
15
+ /** Log-preserving, source-citing replacement of legacy audit text, never of user or system heads. */
16
+ export function normalizeBackgroundContext(session) {
17
+ if (!session.surface?.nodes)
18
+ return 0;
19
+ const visible = new Set(session.surface.nodes);
20
+ const old = session.snapshotEvents().filter(e => visible.has(e.seq) && backgroundRecord(e));
21
+ for (const e of old) {
22
+ if (e.type !== 'user/message')
23
+ continue;
24
+ const raw = e.data.content.filter(b => b.type === 'text').map(b => b.text).join('\n');
25
+ session.append('user/message', createUserMessage({ content: [{ type: 'text', text: compactHeartbeatContext(raw, e.time) }], source: { kind: 'plugin:@lemoncat7/dsh-partner', plugin: '@lemoncat7/dsh-partner', form: 'recall' } }), { surfaceOp: { op: 'replace', startSeq: e.seq, endSeq: e.seq }, sourceEventSeqs: [e.seq] });
26
+ }
27
+ return old.length;
28
+ }
29
+ //# sourceMappingURL=background-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"background-context.js","sourceRoot":"","sources":["../../src/character/background-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAGxD,MAAM,CAAC,MAAM,yBAAyB,GAAC,eAAe,CAAA;AACtD,MAAM,cAAc,GAAC,eAAe,CAAA;AACpC,8FAA8F;AAC9F,SAAS,gBAAgB,CAAC,CAAc;IACvC,OAAO,CAAC,CAAC,IAAI,KAAG,cAAc,IAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAG,+BAA+B,IAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAG,QAAQ,IAAE,CAAC,cAAc,EAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;AAChM,CAAC;AACD,MAAM,UAAU,uBAAuB,CAAC,GAAU,EAAC,EAAS;IAC3D,MAAM,KAAK,GAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC3B,MAAM,UAAU,GAAC,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAClD,MAAM,IAAI,GAAC,UAAU,IAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAA,CAAC,CAAA,UAAU,CAAA,CAAC,CAAA,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAA;IACpG,MAAM,MAAM,GAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAA,EAAE,CAAA,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAA,EAAE,CAAA,IAAI,CAAC,KAAK,CAAC,CAAC,EAAC,GAAG,CAAC,CAAC,CAAA;IACxH,OAAO,CAAC,kBAAkB,EAAC,QAAQ,IAAI,iCAAiC,EAAC,GAAG,MAAM,EAAC,mEAAmE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnK,CAAC;AACD,qGAAqG;AACrG,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACzD,IAAG,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK;QAAC,OAAO,CAAC,CAAA;IACnC,MAAM,OAAO,GAAC,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,GAAG,GAAC,OAAO,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IACrF,KAAI,MAAM,CAAC,IAAI,GAAG,EAAC,CAAC;QACnB,IAAG,CAAC,CAAC,IAAI,KAAG,cAAc;YAAC,SAAQ;QACnC,MAAM,GAAG,GAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,KAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE,CAAA,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7E,OAAO,CAAC,MAAM,CAAC,cAAc,EAAC,iBAAiB,CAAC,EAAC,OAAO,EAAC,CAAC,EAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,uBAAuB,CAAC,GAAG,EAAC,CAAC,CAAC,IAAI,CAAC,EAAC,CAAC,EAAC,MAAM,EAAC,EAAC,IAAI,EAAC,+BAA+B,EAAC,MAAM,EAAC,wBAAwB,EAAC,IAAI,EAAC,QAAQ,EAAC,EAAC,CAAC,EAAC,EAAC,SAAS,EAAC,EAAC,EAAE,EAAC,SAAS,EAAC,QAAQ,EAAC,CAAC,CAAC,GAAG,EAAC,MAAM,EAAC,CAAC,CAAC,GAAG,EAAC,EAAC,eAAe,EAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAC,CAAC,CAAA;IAChS,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CAAA;AAClB,CAAC"}
@@ -1,4 +1,6 @@
1
1
  import type { CharacterCard } from './domain.js';
2
+ /** User-selected delivery size is independent of persona composition. */
3
+ export declare function usesShortDeliveryPolicy(card?: CharacterCard): boolean;
2
4
  /** Stable settings and delivery contracts; expression belongs to the configured persona. */
3
5
  export declare function renderConversationBehavior(card?: CharacterCard): string;
4
6
  export declare function renderExpressionPreferences(card?: CharacterCard): string;
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-behavior.d.ts","sourceRoot":"","sources":["../../src/character/conversation-behavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,4FAA4F;AAC5F,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAOvE;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAMxE;AAED,yGAAyG;AACzG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAQnI;AAED,oGAAoG;AACpG,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAYvE;AAED,+EAA+E;AAC/E,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAK9D"}
1
+ {"version":3,"file":"conversation-behavior.d.ts","sourceRoot":"","sources":["../../src/character/conversation-behavior.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhD,yEAAyE;AACzE,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAErE;AAED,4FAA4F;AAC5F,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAQvE;AAED,wBAAgB,2BAA2B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAMxE;AAED,yGAAyG;AACzG,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,MAAM,CAQnI;AAED,oGAAoG;AACpG,wBAAgB,0BAA0B,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAYvE;AAED,+EAA+E;AAC/E,wBAAgB,8BAA8B,IAAI,MAAM,CAEvD;AAED,uFAAuF;AACvF,wBAAgB,iBAAiB,CAAC,IAAI,CAAC,EAAE,aAAa,GAAG,MAAM,CAO9D"}
@@ -1,6 +1,11 @@
1
+ /** User-selected delivery size is independent of persona composition. */
2
+ export function usesShortDeliveryPolicy(card) {
3
+ return card?.length === 'short';
4
+ }
1
5
  /** Stable settings and delivery contracts; expression belongs to the configured persona. */
2
6
  export function renderConversationBehavior(card) {
3
7
  return [
8
+ card?.enabled ? '【聊天表达】正文是这个角色正在对眼前的人说的话。按人物设定自然接话,语气可以有停顿、残句和态度;不用把每句话补成完整解答,不复述对方或总结这一轮。需要认真解释时照样说清楚。说话方式由人格和关系决定,不固定语气词、条数或字数,不预设具体情绪。' : '',
4
9
  '【工具权限与结果】只使用当前已授权工具,操作结果以实际执行为准;角色设定不增加权限。',
5
10
  renderTaskConversationGuidance(),
6
11
  renderChatDeliveryGuidance(card),
@@ -10,7 +15,7 @@ export function renderConversationBehavior(card) {
10
15
  export function renderExpressionPreferences(card) {
11
16
  return [
12
17
  '【用户配置的表达选项】具体角色说明和本轮用户要求优先。',
13
- card?.length === 'short' ? '篇幅偏好:简短,按角色自然接话。先说眼前最想说的一点,半句或一句即可;确有补充再用独立消息,不为把话讲完整而一次展开。' : card?.length === 'rich' ? '篇幅偏好:愿意展开聊,随话题和对方意愿。' : '篇幅偏好:随话题自然调整。',
18
+ card?.length === 'short' ? '篇幅偏好:简短。像平时打字一样先接眼前这一点,通常一两句;有必要再补,不为凑条数延长,也不为字数省掉事实。本轮要求详细或原文时按请求展开,具体语气由角色决定。' : card?.length === 'rich' ? '篇幅偏好:愿意展开聊,随话题和对方意愿。' : '篇幅偏好:随话题自然调整。',
14
19
  card?.narration ? '动作描写偏好:允许。' : '动作描写偏好:不主动添加。',
15
20
  ].join('\n');
16
21
  }
@@ -21,8 +26,8 @@ export function renderConversationTurn(card, consecutiveUserMessages, autonomous
21
26
  return [
22
27
  autonomous ? '【本轮来源】系统自主活动,不是用户新消息;无需发送消息时可调用 partner_activity_finish 安静结束。' : '',
23
28
  !autonomous && consecutiveUserMessages > 1 ? `【本轮输入】对方连续发了 ${consecutiveUserMessages} 条消息,合并为本轮输入。` : '',
24
- renderExpressionPreferences(card),
25
- card.chatStyle?.trim() ? `【此伙伴的聊天偏好】\n${card.chatStyle.trim()}` : '',
29
+ card.exclusivePrompt ? '' : renderExpressionPreferences(card),
30
+ !card.exclusivePrompt && card.chatStyle?.trim() ? `【此伙伴的聊天偏好】\n${card.chatStyle.trim()}` : '',
26
31
  ].filter(Boolean).join('\n');
27
32
  }
28
33
  /** Stable transport settings, without selecting emotions, jokes, verbosity or sticker frequency. */
@@ -30,7 +35,7 @@ export function renderChatDeliveryGuidance(card) {
30
35
  if (!card?.enabled || (!card.segmentedReplies && !card.stickersEnabled))
31
36
  return '';
32
37
  return [
33
- '【聊天投递协议】partner_chat_reply 提交最终回复并结束本轮;必要工具执行完成后调用。直接回应时所有文字放入 messages 的 text 条目,表情图片使用独立 stickerId 条目,不把配文留在工具外。',
38
+ '【聊天投递】直接回答可用 partner_chat_reply 结束本轮;文字写入 messages 的 text 条目,图片表情写独立 stickerId 条目,不把配文留在工具外。想先说一句再继续时可用 partner_chat_say;中途文字或表情可用 partner_chat_reply continueTurn:true,确认送达后继续执行、不重复;已送达且无需补充时可用 partner_chat_reply messages:[] 结束。任务仍按任务回应流程执行。',
34
39
  card.segmentedReplies
35
40
  ? '分段回复已开启:messages 的每个 text 条目是一条独立消息;换行不等于独立投递。条数由回复内容决定,无最低条数要求。'
36
41
  : '分段回复未开启:文字只用一条,表情可独立一条。',
@@ -42,15 +47,15 @@ export function renderChatDeliveryGuidance(card) {
42
47
  }
43
48
  /** The user-requested before/after workflow, independent of response style. */
44
49
  export function renderTaskConversationGuidance() {
45
- return '【任务回应流程】私聊实际执行工具任务前,用 partner_chat_progress 按人格简短说准备做什么,确认送达后继续;同轮一次。具体交付方式见工作结果和工具说明。';
50
+ return '【任务回应流程】私聊执行工具任务前,用 partner_chat_say(beforeTools:true,expectedTools 为真实工具名)按角色自然接一句,确认送达后继续做事,不重复开场;新增工具通过 expectedTools 登记。执行中与结果回复仍是同一个角色,流程只规定操作与投递,不规定道歉、汇报或解释的语气。具体参数与交付方式按需查看工具说明。';
46
51
  }
47
52
  /** Delivery policy, not a replacement persona. Explicit requests override defaults. */
48
53
  export function renderReplyRhythm(card) {
49
- const common = '措辞按原人格;本轮明确要求详细解释、原文或不要附件时优先照做。简单结果直接说,事实和未完成事项完整保留在交付内容中。附件成功以工具回执为准,发送失败说明情况,不宣称已交付。';
50
- if (card?.length === 'short')
51
- return '篇幅偏好:简短。执行前按人格用半句或一句只说接下来做什么,不展开计划。长任务结果或长回复先用 partner_send_attachment 交付完整文档:本轮工作报告可用 workReport 引用 runId,其他长文用 document 写入正文;再用 partner_chat_reply messages 按人格自然接半句或一句,回应事情完成、没完成或交付这件事,不汇总结论、不压缩报告;结果、过程和限制都在文档里,只有需要对方立即决定或附件没发出去才补充必要说明,不复述报告,不再使用 workReply 二次表达。简单工具结果不强制发文件。' + common;
52
- if (card?.length === 'rich')
53
- return '篇幅偏好:丰富。执行前说明动作及必要步骤;结果在正文按话题展开理由、过程和限制,代码、大表格或完整报告用附件补充,不重复整份附件。' + common;
54
- return '篇幅偏好:自然。执行前简单说明动作,必要时交代目的;结果正文说主要结论和必要限制,细节较多时用附件补充,按问题决定展开程度。' + common;
54
+ return [
55
+ '一轮可以有多个执行目标。过程中可用 partner_chat_say 接话,或 partner_chat_reply continueTurn:true 穿插文字、表情,随后继续执行;没有新话不必播报。',
56
+ '长任务的过程、结论、未确认事项和依据用 partner_send_attachment 交付报告;workReport 可合并本轮多个 runId,name 按实际主题命名,例如“视频接口核验.md”;不要固定叫工作结果。其他长文可用 document。',
57
+ usesShortDeliveryPolicy(card) ? '短句已开启:日常聊天正文一轮最终提交最多 180 字,多个意思按自然停顿分别写进 messages;详细结果放报告,不截断、不为分段凑话。用户明确要展开或附件失败时可用 inlineDetails 正文交付。' : '',
58
+ '报告确认送达后仍要收尾。所有开场、穿插和收尾都依据当前人物及关系设定,自行决定说什么,不复读整份报告,不套用汇报或回执话术;未知和失败按事实说明。',
59
+ ].filter(Boolean).join('\n');
55
60
  }
56
61
  //# sourceMappingURL=conversation-behavior.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"conversation-behavior.js","sourceRoot":"","sources":["../../src/character/conversation-behavior.ts"],"names":[],"mappings":"AAEA,4FAA4F;AAC5F,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,OAAO;QACL,4CAA4C;QAC5C,8BAA8B,EAAE;QAChC,0BAA0B,CAAC,IAAI,CAAC;QAChC,0EAA0E;KAC3E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAoB;IAC9D,OAAO;QACL,6BAA6B;QAC7B,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe;QAC7J,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,sBAAsB,CAAC,IAA+B,EAAE,uBAA+B,EAAE,UAAU,GAAG,KAAK;IACzH,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,EAAE,CAAA;IAC7B,OAAO;QACL,UAAU,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,EAAE;QACjF,CAAC,UAAU,IAAI,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,uBAAuB,eAAe,CAAC,CAAC,CAAC,EAAE;QACxG,2BAA2B,CAAC,IAAI,CAAC;QACjC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;KACrE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAA;IAClF,OAAO;QACL,oHAAoH;QACpH,IAAI,CAAC,gBAAgB;YACnB,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,yBAAyB;QAC7B,IAAI,CAAC,eAAe;YAClB,CAAC,CAAC,6SAA6S;YAC/S,CAAC,CAAC,kBAAkB;QACtB,4BAA4B;KAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,8BAA8B;IAC5C,OAAO,wFAAwF,CAAA;AACjG,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,MAAM,MAAM,GAAG,wFAAwF,CAAA;IACvG,IAAI,IAAI,EAAE,MAAM,KAAK,OAAO;QAAE,OAAO,uRAAuR,GAAG,MAAM,CAAA;IACrU,IAAI,IAAI,EAAE,MAAM,KAAK,MAAM;QAAE,OAAO,mEAAmE,GAAG,MAAM,CAAA;IAChH,OAAO,gEAAgE,GAAG,MAAM,CAAA;AAClF,CAAC"}
1
+ {"version":3,"file":"conversation-behavior.js","sourceRoot":"","sources":["../../src/character/conversation-behavior.ts"],"names":[],"mappings":"AAEA,yEAAyE;AACzE,MAAM,UAAU,uBAAuB,CAAC,IAAoB;IAC1D,OAAO,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;AACjC,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,0HAA0H,CAAC,CAAC,CAAC,EAAE;QAC/I,4CAA4C;QAC5C,8BAA8B,EAAE;QAChC,0BAA0B,CAAC,IAAI,CAAC;QAChC,0EAA0E;KAC3E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,IAAoB;IAC9D,OAAO;QACL,6BAA6B;QAC7B,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,iFAAiF,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe;QACjL,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe;KACjD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,sBAAsB,CAAC,IAA+B,EAAE,uBAA+B,EAAE,UAAU,GAAG,KAAK;IACzH,IAAI,CAAC,IAAI,EAAE,OAAO;QAAE,OAAO,EAAE,CAAA;IAC7B,OAAO;QACL,UAAU,CAAC,CAAC,CAAC,+DAA+D,CAAC,CAAC,CAAC,EAAE;QACjF,CAAC,UAAU,IAAI,uBAAuB,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,uBAAuB,eAAe,CAAC,CAAC,CAAC,EAAE;QACxG,IAAI,CAAC,eAAe,CAAA,CAAC,CAAA,EAAE,CAAA,CAAC,CAAA,2BAA2B,CAAC,IAAI,CAAC;QACzD,CAAC,IAAI,CAAC,eAAe,IAAE,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE;KAC5F,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,IAAI,CAAC,IAAI,EAAE,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAA;IAClF,OAAO;QACL,mPAAmP;QACnP,IAAI,CAAC,gBAAgB;YACnB,CAAC,CAAC,kEAAkE;YACpE,CAAC,CAAC,yBAAyB;QAC7B,IAAI,CAAC,eAAe;YAClB,CAAC,CAAC,6SAA6S;YAC/S,CAAC,CAAC,kBAAkB;QACtB,4BAA4B;KAC7B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,8BAA8B;IAC5C,OAAO,0LAA0L,CAAA;AACnM,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,OAAO;QACL,uGAAuG;QACvG,iIAAiI;QACjI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,0GAA0G,CAAC,CAAC,CAAC,EAAE;QAC/I,2EAA2E;KAC5E,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC"}
@@ -4,6 +4,8 @@ export interface CharacterCard {
4
4
  enabled: boolean;
5
5
  /** Default on for role chat; progression belongs to the companion, not the card. */
6
6
  affectionEnabled?: boolean;
7
+ /** Opt-in exclusive system prompt; tools and runtime contexts remain available. */
8
+ exclusivePrompt?: boolean;
7
9
  /** Authoritative free-form role. Absent means adapt the legacy fields losslessly. */
8
10
  roleText?: string;
9
11
  chatStyle?: string;
@@ -50,4 +52,12 @@ export declare function normalizeReflectedCharacterState(value: unknown): Charac
50
52
  export declare function renderCharacterCore(card: CharacterCard | undefined, surface?: string): string;
51
53
  export declare function activatedLore(card: CharacterCard, query: string): CharacterCard['lore'];
52
54
  export declare function renderCharacterContext(card: CharacterCard | undefined, query: string, state?: CharacterState): string;
55
+ /** The sole static prompt in opt-in exclusive mode, composed only from editable identity text. */
56
+ export declare function renderExclusiveIdentity(identity: {
57
+ name: string;
58
+ role: string;
59
+ description: string;
60
+ instructions: string;
61
+ characterCard: CharacterCard;
62
+ }): string;
53
63
  //# sourceMappingURL=domain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/character/domain.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,CAAC,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;IACrC,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,IAAI,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAClG;AACD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AACD,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AACD,wBAAgB,mBAAmB,IAAI,cAAc,CAA0F;AAe/I,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAyBpE;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAS3D;AACD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAMtE;AACD;4EAC4E;AAC5E,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAW/E;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,OAAO,SAAiB,GAAG,MAAM,CAUrG;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAQvF;AACD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,MAAM,CAOrH"}
1
+ {"version":3,"file":"domain.d.ts","sourceRoot":"","sources":["../../src/character/domain.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,WAAW,aAAa;IAC5B,aAAa,EAAE,CAAC,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mFAAmF;IACnF,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,qFAAqF;IACrF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;IACrC,SAAS,EAAE,OAAO,CAAA;IAClB,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACpE,IAAI,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAClG;AACD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AACD,wBAAgB,kBAAkB,IAAI,aAAa,CAElD;AACD,wBAAgB,mBAAmB,IAAI,cAAc,CAA0F;AAe/I,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CA2BpE;AAED,2FAA2F;AAC3F,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAS3D;AACD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAMtE;AACD;4EAC4E;AAC5E,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAW/E;AACD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,OAAO,SAAiB,GAAG,MAAM,CAUrG;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAQvF;AACD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,aAAa,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,cAAc,GAAG,MAAM,CAOrH;AAED,kGAAkG;AAClG,wBAAgB,uBAAuB,CAAC,QAAQ,EAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAA,IAAI,EAAC,MAAM,CAAC;IAAA,WAAW,EAAC,MAAM,CAAC;IAAA,YAAY,EAAC,MAAM,CAAC;IAAA,aAAa,EAAC,aAAa,CAAA;CAAC,GAAE,MAAM,CAEpJ"}
@@ -29,8 +29,11 @@ export function normalizeCharacterCard(value) {
29
29
  throw new Error('请选择是否启用人格强化');
30
30
  if (v.affectionEnabled !== undefined && typeof v.affectionEnabled !== 'boolean')
31
31
  throw new Error('请选择是否启用好感度');
32
+ if (v.exclusivePrompt !== undefined && typeof v.exclusivePrompt !== 'boolean')
33
+ throw Error('独占系统提示须为开关值');
32
34
  const card = {
33
35
  schemaVersion: 1, enabled: v.enabled,
36
+ ...(v.exclusivePrompt !== undefined ? { exclusivePrompt: v.exclusivePrompt } : {}),
34
37
  ...(v.affectionEnabled !== undefined ? { affectionEnabled: v.affectionEnabled } : {}),
35
38
  ...(v.segmentedReplies !== undefined ? { segmentedReplies: v.segmentedReplies === true } : {}),
36
39
  ...(v.stickersEnabled !== undefined ? { stickersEnabled: v.stickersEnabled === true } : {}),
@@ -121,4 +124,8 @@ export function renderCharacterContext(card, query, state) {
121
124
  '保持核心人格,不因相处状态改写核心设定。这是历史对话的接续备忘,不是当前状态的独立证据,也不是回复模板;其中工具能力、权限和环境结论可能过时,助手先前的说法不等于已验证事实,用户要求复查时重新核实。自然承接,不复述字段或分析关系。只承接有记录的事件;不确定的往事先检索,不编造共同经历。梦境、想象和假设不能当成真实发生的事。',
122
125
  ].filter(Boolean).join('\n');
123
126
  }
127
+ /** The sole static prompt in opt-in exclusive mode, composed only from editable identity text. */
128
+ export function renderExclusiveIdentity(identity) {
129
+ return [`你是${identity.name}。`, identity.role, identity.description, identity.instructions, roleTextForCard(identity.characterCard), identity.characterCard.chatStyle?.trim()].filter(Boolean).join('\n\n');
130
+ }
124
131
  //# sourceMappingURL=domain.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/character/domain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"domain.js","sourceRoot":"","sources":["../../src/character/domain.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
+ import type { ChannelActivityRegistry } from '../channels/activity-registry.js';
1
2
  import type { Companion, PartnerState } from '../domain.js';
2
3
  import type { SessionEvent } from '@deepseek-ai/dsh-session';
3
4
  export interface IdleContactPolicy {
4
5
  enabled: boolean;
5
6
  routeId: string;
6
7
  idleMinutes: number;
8
+ selfRefinement?: boolean;
7
9
  }
8
10
  export interface IdleContactState {
9
- kind?: 'post-reply';
11
+ kind?: 'post-reply' | 'thought' | 'autonomous';
12
+ planId?: string;
13
+ planSnapshot?: import('./activity-plan.js').ActivityPlan;
14
+ cancelled?: boolean;
15
+ thoughtId?: string;
10
16
  depth?: number;
11
17
  continuationChecked?: boolean;
12
18
  timeZone: string;
@@ -28,7 +34,7 @@ export declare function lastIdleContactUser(events: readonly SessionEvent[]): {
28
34
  id: string;
29
35
  at: number;
30
36
  } | undefined;
31
- /** Probability of THIS minute's decision, not a cumulative probability or mean interval. */
37
+ /** Compatibility export: a due signal, no probability draw or affection multiplier. */
32
38
  export declare function idleActivityProbability(state: PartnerState, companion: Companion, user: {
33
39
  id: string;
34
40
  at: number;
@@ -36,16 +42,27 @@ export declare function idleActivityProbability(state: PartnerState, companion:
36
42
  export declare function idleContactDue(state: PartnerState, companion: Companion, user: {
37
43
  id: string;
38
44
  at: number;
39
- } | undefined, now: number, _timeZone: string): boolean;
45
+ } | undefined, now: number, _timeZone: string, routeId?: string | undefined): boolean;
40
46
  export declare const ACTIVITY_PROTOCOL_PROMPT: string;
41
47
  export declare const IDLE_ACTIVITY_PROMPT: string;
42
- /** Keep a few user/reply anchors even after several autonomous messages. */
43
- export declare function activityConversation(events: readonly SessionEvent[]): {
48
+ interface ActivityMedia {
49
+ kind: 'emoji' | 'image';
50
+ label: string;
51
+ provider?: string;
52
+ id?: string;
53
+ }
54
+ interface ActivityConversationEntry {
44
55
  role: string;
45
56
  text: string;
46
57
  at?: number;
47
- }[];
58
+ media?: ActivityMedia[];
59
+ }
60
+ /** A small reminder also covers media pushed outside the latest text excerpt. */
61
+ export declare function activityRecentMedia(events: readonly SessionEvent[]): ActivityConversationEntry[];
62
+ /** Keep a few user/reply anchors even after several autonomous messages. */
63
+ export declare function activityConversation(events: readonly SessionEvent[]): ActivityConversationEntry[];
48
64
  /** A configuration snapshot for discovery, never an authorization grant or tool schema. */
49
- export declare function idleActivityPrompt(state: PartnerState, companion: Companion, events?: readonly SessionEvent[], opening?: string): string;
65
+ export declare function idleActivityPrompt(state: PartnerState, companion: Companion, events?: readonly SessionEvent[], opening?: string, activities?: ChannelActivityRegistry): string;
50
66
  export declare function isIdleContactNotice(event: SessionEvent): boolean;
67
+ export {};
51
68
  //# sourceMappingURL=idle-contact.d.ts.map