@lemoncat7/dsh-partner 2.23.40 → 2.24.0-rc.9

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 (332) hide show
  1. package/README.md +5 -0
  2. package/docs/channel-activities.md +56 -0
  3. package/docs/compatibility-0.2.2-rc.1.md +7 -0
  4. package/docs/releases/2.23.41.md +9 -0
  5. package/docs/releases/2.23.42.md +11 -0
  6. package/docs/releases/2.23.43.md +13 -0
  7. package/docs/releases/2.23.44.md +13 -0
  8. package/docs/releases/2.23.45.md +11 -0
  9. package/docs/releases/2.23.46.md +5 -0
  10. package/docs/releases/2.23.47.md +5 -0
  11. package/docs/releases/2.23.48.md +6 -0
  12. package/docs/releases/2.23.49.md +6 -0
  13. package/docs/releases/2.23.50.md +6 -0
  14. package/docs/releases/2.23.51.md +5 -0
  15. package/docs/releases/2.23.52.md +7 -0
  16. package/docs/releases/2.23.53.md +5 -0
  17. package/docs/releases/2.23.54.md +7 -0
  18. package/docs/releases/2.24.0-rc.2.md +9 -0
  19. package/docs/releases/2.24.0-rc.3.md +6 -0
  20. package/docs/releases/2.24.0-rc.4.md +11 -0
  21. package/docs/releases/2.24.0-rc.5.md +11 -0
  22. package/docs/releases/2.24.0-rc.6.md +12 -0
  23. package/docs/releases/2.24.0-rc.9.md +5 -0
  24. package/lib/agent-runtime.d.ts +5 -2
  25. package/lib/agent-runtime.d.ts.map +1 -1
  26. package/lib/agent-runtime.js +204 -85
  27. package/lib/agent-runtime.js.map +1 -1
  28. package/lib/api.d.ts +1 -0
  29. package/lib/api.d.ts.map +1 -1
  30. package/lib/api.js +69 -2
  31. package/lib/api.js.map +1 -1
  32. package/lib/attachments/reply-document.d.ts +5 -0
  33. package/lib/attachments/reply-document.d.ts.map +1 -1
  34. package/lib/attachments/reply-document.js +7 -3
  35. package/lib/attachments/reply-document.js.map +1 -1
  36. package/lib/attachments/tool.d.ts +1 -1
  37. package/lib/attachments/tool.d.ts.map +1 -1
  38. package/lib/attachments/tool.js +2 -2
  39. package/lib/attachments/tool.js.map +1 -1
  40. package/lib/channels/activity-defaults.d.ts +4 -0
  41. package/lib/channels/activity-defaults.d.ts.map +1 -0
  42. package/lib/channels/activity-defaults.js +15 -0
  43. package/lib/channels/activity-defaults.js.map +1 -0
  44. package/lib/channels/activity-registry.d.ts +37 -0
  45. package/lib/channels/activity-registry.d.ts.map +1 -0
  46. package/lib/channels/activity-registry.js +53 -0
  47. package/lib/channels/activity-registry.js.map +1 -0
  48. package/lib/channels/bilibili/activity-provider.d.ts +3 -0
  49. package/lib/channels/bilibili/activity-provider.d.ts.map +1 -0
  50. package/lib/channels/bilibili/activity-provider.js +8 -0
  51. package/lib/channels/bilibili/activity-provider.js.map +1 -0
  52. package/lib/channels/bilibili/catalog.d.ts +23 -0
  53. package/lib/channels/bilibili/catalog.d.ts.map +1 -0
  54. package/lib/channels/bilibili/catalog.js +45 -0
  55. package/lib/channels/bilibili/catalog.js.map +1 -0
  56. package/lib/channels/bilibili/media.d.ts +9 -0
  57. package/lib/channels/bilibili/media.d.ts.map +1 -0
  58. package/lib/channels/bilibili/media.js +67 -0
  59. package/lib/channels/bilibili/media.js.map +1 -0
  60. package/lib/channels/bilibili/service.d.ts +37 -0
  61. package/lib/channels/bilibili/service.d.ts.map +1 -0
  62. package/lib/channels/bilibili/service.js +138 -0
  63. package/lib/channels/bilibili/service.js.map +1 -0
  64. package/lib/channels/bilibili/tools.d.ts +6 -0
  65. package/lib/channels/bilibili/tools.d.ts.map +1 -0
  66. package/lib/channels/bilibili/tools.js +48 -0
  67. package/lib/channels/bilibili/tools.js.map +1 -0
  68. package/lib/channels/direct/message-format.js +298 -206
  69. package/lib/channels/direct/message-format.js.map +4 -4
  70. package/lib/channels/manager.d.ts +1 -0
  71. package/lib/channels/manager.d.ts.map +1 -1
  72. package/lib/channels/manager.js +48 -5
  73. package/lib/channels/manager.js.map +1 -1
  74. package/lib/channels/qq/action-catalog.js +2 -2
  75. package/lib/channels/qq/action-catalog.js.map +1 -1
  76. package/lib/channels/qq/actions.d.ts +2 -1
  77. package/lib/channels/qq/actions.d.ts.map +1 -1
  78. package/lib/channels/qq/actions.js +14 -2
  79. package/lib/channels/qq/actions.js.map +1 -1
  80. package/lib/channels/qq/activity-provider.d.ts +4 -0
  81. package/lib/channels/qq/activity-provider.d.ts.map +1 -0
  82. package/lib/channels/qq/activity-provider.js +21 -0
  83. package/lib/channels/qq/activity-provider.js.map +1 -0
  84. package/lib/channels/qq/authority.d.ts +1 -1
  85. package/lib/channels/qq/authority.d.ts.map +1 -1
  86. package/lib/channels/qq/authority.js +3 -3
  87. package/lib/channels/qq/authority.js.map +1 -1
  88. package/lib/channels/qq/connection.d.ts +5 -0
  89. package/lib/channels/qq/connection.d.ts.map +1 -1
  90. package/lib/channels/qq/connection.js +12 -2
  91. package/lib/channels/qq/connection.js.map +1 -1
  92. package/lib/channels/qq/message.d.ts.map +1 -1
  93. package/lib/channels/qq/message.js +11 -1
  94. package/lib/channels/qq/message.js.map +1 -1
  95. package/lib/channels/qq/reply-tool.d.ts.map +1 -1
  96. package/lib/channels/qq/reply-tool.js +62 -6
  97. package/lib/channels/qq/reply-tool.js.map +1 -1
  98. package/lib/channels/weixin/connect.d.ts +3 -1
  99. package/lib/channels/weixin/connect.d.ts.map +1 -1
  100. package/lib/character/activity-journal.d.ts +20 -0
  101. package/lib/character/activity-journal.d.ts.map +1 -0
  102. package/lib/character/activity-journal.js +78 -0
  103. package/lib/character/activity-journal.js.map +1 -0
  104. package/lib/character/activity-plan.d.ts +27 -0
  105. package/lib/character/activity-plan.d.ts.map +1 -0
  106. package/lib/character/activity-plan.js +47 -0
  107. package/lib/character/activity-plan.js.map +1 -0
  108. package/lib/character/activity-tool.d.ts.map +1 -1
  109. package/lib/character/activity-tool.js +24 -4
  110. package/lib/character/activity-tool.js.map +1 -1
  111. package/lib/character/affection-tool.js +4 -4
  112. package/lib/character/affection-tool.js.map +1 -1
  113. package/lib/character/affection.d.ts +8 -43
  114. package/lib/character/affection.d.ts.map +1 -1
  115. package/lib/character/affection.js +7 -24
  116. package/lib/character/affection.js.map +1 -1
  117. package/lib/character/background-context.d.ts +6 -0
  118. package/lib/character/background-context.d.ts.map +1 -0
  119. package/lib/character/background-context.js +29 -0
  120. package/lib/character/background-context.js.map +1 -0
  121. package/lib/character/conversation-behavior.d.ts +2 -0
  122. package/lib/character/conversation-behavior.d.ts.map +1 -1
  123. package/lib/character/conversation-behavior.js +16 -12
  124. package/lib/character/conversation-behavior.js.map +1 -1
  125. package/lib/character/domain.d.ts +10 -0
  126. package/lib/character/domain.d.ts.map +1 -1
  127. package/lib/character/domain.js +7 -0
  128. package/lib/character/domain.js.map +1 -1
  129. package/lib/character/habit-tool.d.ts +4 -0
  130. package/lib/character/habit-tool.d.ts.map +1 -0
  131. package/lib/character/habit-tool.js +31 -0
  132. package/lib/character/habit-tool.js.map +1 -0
  133. package/lib/character/habits.d.ts +38 -0
  134. package/lib/character/habits.d.ts.map +1 -0
  135. package/lib/character/habits.js +92 -0
  136. package/lib/character/habits.js.map +1 -0
  137. package/lib/character/idle-contact.d.ts +11 -4
  138. package/lib/character/idle-contact.d.ts.map +1 -1
  139. package/lib/character/idle-contact.js +28 -49
  140. package/lib/character/idle-contact.js.map +1 -1
  141. package/lib/character/interaction-review.d.ts +44 -0
  142. package/lib/character/interaction-review.d.ts.map +1 -0
  143. package/lib/character/interaction-review.js +141 -0
  144. package/lib/character/interaction-review.js.map +1 -0
  145. package/lib/character/post-reply.d.ts +1 -3
  146. package/lib/character/post-reply.d.ts.map +1 -1
  147. package/lib/character/post-reply.js +15 -18
  148. package/lib/character/post-reply.js.map +1 -1
  149. package/lib/character/prompt-projection.d.ts +1 -0
  150. package/lib/character/prompt-projection.d.ts.map +1 -1
  151. package/lib/character/prompt-projection.js +8 -1
  152. package/lib/character/prompt-projection.js.map +1 -1
  153. package/lib/character/thought-tool.d.ts +4 -0
  154. package/lib/character/thought-tool.d.ts.map +1 -0
  155. package/lib/character/thought-tool.js +99 -0
  156. package/lib/character/thought-tool.js.map +1 -0
  157. package/lib/character/thoughts.d.ts +42 -0
  158. package/lib/character/thoughts.d.ts.map +1 -0
  159. package/lib/character/thoughts.js +91 -0
  160. package/lib/character/thoughts.js.map +1 -0
  161. package/lib/chat/context-selection.d.ts.map +1 -1
  162. package/lib/chat/context-selection.js +5 -2
  163. package/lib/chat/context-selection.js.map +1 -1
  164. package/lib/chat/intermediate-delivery.d.ts +7 -0
  165. package/lib/chat/intermediate-delivery.d.ts.map +1 -0
  166. package/lib/chat/intermediate-delivery.js +14 -0
  167. package/lib/chat/intermediate-delivery.js.map +1 -0
  168. package/lib/chat/live-speech.d.ts +5 -2
  169. package/lib/chat/live-speech.d.ts.map +1 -1
  170. package/lib/chat/live-speech.js +39 -12
  171. package/lib/chat/live-speech.js.map +1 -1
  172. package/lib/chat/persona-delivery.d.ts +29 -0
  173. package/lib/chat/persona-delivery.d.ts.map +1 -0
  174. package/lib/chat/persona-delivery.js +129 -0
  175. package/lib/chat/persona-delivery.js.map +1 -0
  176. package/lib/chat/reply-continuity.d.ts.map +1 -1
  177. package/lib/chat/reply-continuity.js +12 -0
  178. package/lib/chat/reply-continuity.js.map +1 -1
  179. package/lib/chat/tools.d.ts.map +1 -1
  180. package/lib/chat/tools.js +41 -19
  181. package/lib/chat/tools.js.map +1 -1
  182. package/lib/chat/work-expression.d.ts +36 -0
  183. package/lib/chat/work-expression.d.ts.map +1 -1
  184. package/lib/chat/work-expression.js +80 -15
  185. package/lib/chat/work-expression.js.map +1 -1
  186. package/lib/client-api.d.ts +14 -1
  187. package/lib/client-api.d.ts.map +1 -1
  188. package/lib/client-api.js.map +1 -1
  189. package/lib/client.d.ts.map +1 -1
  190. package/lib/client.js +9670 -13202
  191. package/lib/client.js.map +4 -4
  192. package/lib/collaboration/composition.d.ts.map +1 -1
  193. package/lib/collaboration/composition.js +6 -2
  194. package/lib/collaboration/composition.js.map +1 -1
  195. package/lib/collaboration/tool-discovery.d.ts.map +1 -1
  196. package/lib/collaboration/tool-discovery.js +12 -6
  197. package/lib/collaboration/tool-discovery.js.map +1 -1
  198. package/lib/companions/identity-tool.d.ts +1 -1
  199. package/lib/companions/identity-tool.d.ts.map +1 -1
  200. package/lib/companions/identity-tool.js +3 -4
  201. package/lib/companions/identity-tool.js.map +1 -1
  202. package/lib/companions/identity.js +4 -4
  203. package/lib/companions/identity.js.map +1 -1
  204. package/lib/companions/persona-refinement.d.ts.map +1 -1
  205. package/lib/companions/persona-refinement.js +1 -45
  206. package/lib/companions/persona-refinement.js.map +1 -1
  207. package/lib/compat/native-presentation.d.ts +4 -0
  208. package/lib/compat/native-presentation.d.ts.map +1 -0
  209. package/lib/compat/native-presentation.js +40 -0
  210. package/lib/compat/native-presentation.js.map +1 -0
  211. package/lib/compat/ptc-events.d.ts +2 -0
  212. package/lib/compat/ptc-events.d.ts.map +1 -0
  213. package/lib/compat/ptc-events.js +2 -0
  214. package/lib/compat/ptc-events.js.map +1 -0
  215. package/lib/compat/tool-dispatch.d.ts +4 -0
  216. package/lib/compat/tool-dispatch.d.ts.map +1 -0
  217. package/lib/compat/tool-dispatch.js +14 -0
  218. package/lib/compat/tool-dispatch.js.map +1 -0
  219. package/lib/concern-tool.d.ts.map +1 -1
  220. package/lib/concern-tool.js +5 -3
  221. package/lib/concern-tool.js.map +1 -1
  222. package/lib/domain.d.ts +14 -1
  223. package/lib/domain.d.ts.map +1 -1
  224. package/lib/domain.js.map +1 -1
  225. package/lib/execution/agent-support.d.ts.map +1 -1
  226. package/lib/execution/agent-support.js +3 -1
  227. package/lib/execution/agent-support.js.map +1 -1
  228. package/lib/execution/operation-tool-access.d.ts.map +1 -1
  229. package/lib/execution/operation-tool-access.js +2 -6
  230. package/lib/execution/operation-tool-access.js.map +1 -1
  231. package/lib/execution/reply-progress.d.ts +1 -0
  232. package/lib/execution/reply-progress.d.ts.map +1 -1
  233. package/lib/execution/service.d.ts +2 -0
  234. package/lib/execution/service.d.ts.map +1 -1
  235. package/lib/execution/service.js +7 -1
  236. package/lib/execution/service.js.map +1 -1
  237. package/lib/execution/task-preamble.js +3 -3
  238. package/lib/execution/task-preamble.js.map +1 -1
  239. package/lib/execution/work-progress-card.d.ts +10 -0
  240. package/lib/execution/work-progress-card.d.ts.map +1 -0
  241. package/lib/execution/work-progress-card.js +45 -0
  242. package/lib/execution/work-progress-card.js.map +1 -0
  243. package/lib/execution/work-progress-state.d.ts +32 -0
  244. package/lib/execution/work-progress-state.d.ts.map +1 -0
  245. package/lib/execution/work-progress-state.js +19 -0
  246. package/lib/execution/work-progress-state.js.map +1 -0
  247. package/lib/execution/work-progress.d.ts +16 -0
  248. package/lib/execution/work-progress.d.ts.map +1 -0
  249. package/lib/execution/work-progress.js +76 -0
  250. package/lib/execution/work-progress.js.map +1 -0
  251. package/lib/execution/work-tool.d.ts.map +1 -1
  252. package/lib/execution/work-tool.js +64 -52
  253. package/lib/execution/work-tool.js.map +1 -1
  254. package/lib/index.d.ts.map +1 -1
  255. package/lib/index.js +12 -4
  256. package/lib/index.js.map +1 -1
  257. package/lib/memory-domain.d.ts +5 -0
  258. package/lib/memory-domain.d.ts.map +1 -1
  259. package/lib/memory-reflection.d.ts +5 -1
  260. package/lib/memory-reflection.d.ts.map +1 -1
  261. package/lib/memory-reflection.js +21 -3
  262. package/lib/memory-reflection.js.map +1 -1
  263. package/lib/memory-store.d.ts +1 -1
  264. package/lib/observation-loop.d.ts.map +1 -1
  265. package/lib/observation-loop.js +17 -3
  266. package/lib/observation-loop.js.map +1 -1
  267. package/lib/persona/context.d.ts +4 -0
  268. package/lib/persona/context.d.ts.map +1 -0
  269. package/lib/persona/context.js +12 -0
  270. package/lib/persona/context.js.map +1 -0
  271. package/lib/persona/domain.d.ts +2 -1
  272. package/lib/persona/domain.d.ts.map +1 -1
  273. package/lib/persona/domain.js +11 -3
  274. package/lib/persona/domain.js.map +1 -1
  275. package/lib/persona/service.js +2 -2
  276. package/lib/persona/service.js.map +1 -1
  277. package/lib/persona/store.js +7 -7
  278. package/lib/persona/store.js.map +1 -1
  279. package/lib/persona/types.d.ts +3 -1
  280. package/lib/persona/types.d.ts.map +1 -1
  281. package/lib/store.d.ts.map +1 -1
  282. package/lib/store.js +23 -0
  283. package/lib/store.js.map +1 -1
  284. package/lib/ui/affection-panel.d.ts.map +1 -1
  285. package/lib/ui/affection-panel.js +2 -2
  286. package/lib/ui/affection-panel.js.map +1 -1
  287. package/lib/ui/bilibili-settings.d.ts +12 -0
  288. package/lib/ui/bilibili-settings.d.ts.map +1 -0
  289. package/lib/ui/bilibili-settings.js +77 -0
  290. package/lib/ui/bilibili-settings.js.map +1 -0
  291. package/lib/ui/channels-panel.d.ts.map +1 -1
  292. package/lib/ui/channels-panel.js +4 -3
  293. package/lib/ui/channels-panel.js.map +1 -1
  294. package/lib/ui/character-editor.d.ts.map +1 -1
  295. package/lib/ui/character-editor.js +4 -2
  296. package/lib/ui/character-editor.js.map +1 -1
  297. package/lib/ui/companion-vitals.js +1 -1
  298. package/lib/ui/companion-vitals.js.map +1 -1
  299. package/lib/ui/exclusive-prompt-toggle.d.ts +5 -0
  300. package/lib/ui/exclusive-prompt-toggle.d.ts.map +1 -0
  301. package/lib/ui/exclusive-prompt-toggle.js +7 -0
  302. package/lib/ui/exclusive-prompt-toggle.js.map +1 -0
  303. package/lib/ui/habits-panel.d.ts +4 -0
  304. package/lib/ui/habits-panel.d.ts.map +1 -0
  305. package/lib/ui/habits-panel.js +30 -0
  306. package/lib/ui/habits-panel.js.map +1 -0
  307. package/lib/ui/identity-editor.js +1 -8
  308. package/lib/ui/identity-editor.js.map +1 -1
  309. package/lib/ui/idle-contact-editor.d.ts.map +1 -1
  310. package/lib/ui/idle-contact-editor.js +4 -1
  311. package/lib/ui/idle-contact-editor.js.map +1 -1
  312. package/lib/ui/memory/persona-view.js +1 -1
  313. package/lib/ui/memory/persona-view.js.map +1 -1
  314. package/lib/ui/push-draft.d.ts +3 -3
  315. package/lib/ui/qq-capability-settings.js +1 -1
  316. package/lib/ui/qq-capability-settings.js.map +1 -1
  317. package/lib/ui/thoughts-panel.d.ts +4 -0
  318. package/lib/ui/thoughts-panel.d.ts.map +1 -0
  319. package/lib/ui/thoughts-panel.js +51 -0
  320. package/lib/ui/thoughts-panel.js.map +1 -0
  321. package/lib/ui/workspace-navigation.d.ts +16 -16
  322. package/package.json +82 -49
  323. package/resources/bilibili/Dockerfile +7 -0
  324. package/resources/bilibili/media.py +245 -0
  325. package/resources/bilibili/requirements.txt +3 -0
  326. package/resources/bilibili/server.py +300 -0
  327. package/resources/bilibili/test_bridge.py +115 -0
  328. package/resources/bilibili/test_media.py +110 -0
  329. package/lib/chat/short-expression.d.ts +0 -6
  330. package/lib/chat/short-expression.d.ts.map +0 -1
  331. package/lib/chat/short-expression.js +0 -24
  332. package/lib/chat/short-expression.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"affection-tool.js","sourceRoot":"","sources":["../../src/character/affection-tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"affection-tool.js","sourceRoot":"","sources":["../../src/character/affection-tool.ts"],"names":[],"mappings":"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"}
@@ -17,56 +17,21 @@ export interface AffectionState {
17
17
  history?: AffectionChange[];
18
18
  }
19
19
  export declare const AFFECTION_INITIAL = 0;
20
- export declare const AFFECTION_INTERVAL: number;
21
- export declare const AFFECTION_LEVELS: readonly [{
22
- readonly min: -100;
23
- readonly name: "反感";
24
- }, {
25
- readonly min: -75;
26
- readonly name: "抗拒";
27
- }, {
28
- readonly min: -50;
29
- readonly name: "戒备";
30
- }, {
31
- readonly min: -25;
32
- readonly name: "生疏";
33
- }, {
34
- readonly min: -10;
35
- readonly name: "疏离";
36
- }, {
37
- readonly min: 0;
38
- readonly name: "初识";
39
- }, {
40
- readonly min: 10;
41
- readonly name: "熟悉";
42
- }, {
43
- readonly min: 25;
44
- readonly name: "亲近";
45
- }, {
46
- readonly min: 45;
47
- readonly name: "信赖";
48
- }, {
49
- readonly min: 70;
50
- readonly name: "默契";
51
- }, {
52
- readonly min: 90;
53
- readonly name: "深厚";
54
- }];
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";
22
+ export declare const AFFECTION_MEANING = "0 \u662F\u65E2\u5B9A\u5173\u7CFB\u7684\u57FA\u7EBF\uFF0C\u4E0D\u8868\u793A\u964C\u751F\u3001\u6CA1\u6709\u611F\u60C5\u6216\u5FD8\u8BB0\u5171\u540C\u7ECF\u5386\u3002\u4EBA\u7269\u8BBE\u5B9A\u51B3\u5B9A\u6027\u683C\u4E0E\u8868\u8FBE\uFF0C\u5173\u7CFB\u8BBE\u5B9A\u51B3\u5B9A\u8EAB\u4EFD\u3001\u79F0\u547C\u548C\u65E2\u6709\u8FB9\u754C\uFF1B\u597D\u611F\u5EA6\u53EA\u8BB0\u5F55\u771F\u5B9E\u957F\u671F\u76F8\u5904\u76F8\u5BF9\u57FA\u7EBF\u7684\u53D8\u5316\u3002\u5177\u4F53\u8868\u73B0\u6309\u5F53\u524D\u4EBA\u7269\u548C\u5173\u7CFB\u8BBE\u5B9A\u5224\u65AD\uFF0C\u53EF\u5F71\u54CD\u4E3B\u52A8\u5206\u4EAB\u3001\u503E\u8BC9\u548C\u63A5\u53D7\u4EB2\u8FD1\u7684\u610F\u613F\uFF0C\u4E0D\u7EDF\u4E00\u89C4\u5B9A\u9AD8\u5206\u6492\u5A07\u6216\u4F4E\u5206\u51B7\u6F20\uFF0C\u4E5F\u4E0D\u8981\u6C42\u6BCF\u8F6E\u8868\u73B0\u5206\u6570\u3002\u77ED\u6682\u5F00\u5FC3\u3001\u75B2\u60EB\u3001\u95F9\u522B\u626D\u5C5E\u4E8E\u5F53\u4E0B\u72B6\u6001\uFF0C\u4E0D\u81EA\u52A8\u6539\u53D8\u957F\u671F\u597D\u611F\u3002\u5206\u6570\u4E0D\u6539\u53D8\u5DE5\u5177\u6743\u9650\u3001\u4EFB\u52A1\u5B8C\u6210\u6807\u51C6\u6216\u529E\u4E8B\u8D28\u91CF\uFF0C\u4E5F\u4E0D\u76F4\u63A5\u4E58\u7B97\u4E3B\u52A8\u6D3B\u52A8\u6982\u7387\u3002";
55
23
  export declare function affectionEnabled(companion: Pick<Companion, 'characterCard'>): boolean;
56
24
  export declare function affectionProgress(state?: AffectionState): {
57
25
  score: number;
58
- level: number;
59
- totalLevels: 11;
60
- name: "亲近" | "反感" | "抗拒" | "戒备" | "生疏" | "疏离" | "初识" | "熟悉" | "信赖" | "默契" | "深厚";
61
- nextName: "亲近" | "反感" | "抗拒" | "戒备" | "生疏" | "疏离" | "初识" | "熟悉" | "信赖" | "默契" | "深厚" | null;
62
- nextAt: number;
63
- remaining: number;
64
- multiplier: number;
65
26
  updatedAt: number;
66
27
  history: AffectionChange[];
28
+ lastChange: {
29
+ at: number;
30
+ delta: number;
31
+ reason: string;
32
+ } | null;
67
33
  };
68
34
  /** No time/chat-count award: a grounded interaction may change the relationship. */
69
35
  export declare function adjustAffection(companion: Companion, turnId: string, at: number, delta: number, reason: string, evidence: string): boolean;
70
- export declare function affectionMultiplier(companion: Companion, eligible: boolean): number;
71
36
  export declare function renderAffection(companion: Companion, eligible: boolean): string;
72
37
  //# 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,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,kBAAkB,QAAkB,CAAA;AAEjD,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,CAiB1I;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,iBAAiB,6rCAAgN,CAAA;AAC9O,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAC,eAAe,CAAC,GAAG,OAAO,CAEpF;AACD,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,cAAc;;;;;;;;;EAIvD;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,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAI/E"}
@@ -1,26 +1,20 @@
1
1
  export const AFFECTION_INITIAL = 0;
2
- export const AFFECTION_INTERVAL = 4 * 60 * 60_000;
3
- const DAY = 24 * 60 * 60_000;
4
- export const AFFECTION_LEVELS = [
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
- ];
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;重复索分、机械重复同一句话不算新依据。';
4
+ export const AFFECTION_MEANING = '0 是既定关系的基线,不表示陌生、没有感情或忘记共同经历。人物设定决定性格与表达,关系设定决定身份、称呼和既有边界;好感度只记录真实长期相处相对基线的变化。具体表现按当前人物和关系设定判断,可影响主动分享、倾诉和接受亲近的意愿,不统一规定高分撒娇或低分冷漠,也不要求每轮表现分数。短暂开心、疲惫、闹别扭属于当下状态,不自动改变长期好感。分数不改变工具权限、任务完成标准或办事质量,也不直接乘算主动活动概率。';
10
5
  export function affectionEnabled(companion) {
11
6
  return companion.characterCard?.enabled === true && companion.characterCard.affectionEnabled !== false;
12
7
  }
13
8
  export function affectionProgress(state) {
14
9
  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 ?? [] };
10
+ const history = state?.history ?? [], last = history.at(-1);
11
+ return { score, updatedAt: state?.updatedAt ?? 0, history, lastChange: last ? { at: last.at, delta: last.delta, reason: last.reason } : null };
18
12
  }
19
13
  /** No time/chat-count award: a grounded interaction may change the relationship. */
20
14
  export function adjustAffection(companion, turnId, at, delta, reason, evidence) {
21
15
  if (!affectionEnabled(companion))
22
16
  throw Error('好感度已暂停');
23
- if (!turnId || !Number.isFinite(at) || at <= 0 || ![-3, -2, -1, 1].includes(delta))
17
+ if (!turnId || !Number.isFinite(at) || at <= 0 || !AFFECTION_DELTAS.includes(delta))
24
18
  throw Error('好感度变化参数无效');
25
19
  if (typeof reason !== 'string' || !reason.trim() || reason.length > 300 || typeof evidence !== 'string' || !evidence.trim() || evidence.length > 300)
26
20
  throw Error('变化需要具体原因和当前消息依据(各最多 300 字)');
@@ -29,14 +23,6 @@ export function adjustAffection(companion, turnId, at, delta, reason, evidence)
29
23
  return false;
30
24
  if (previous && at < previous.updatedAt)
31
25
  throw Error('不能提交过期变化');
32
- if (history.length && at - history.at(-1).at < 30 * 60_000)
33
- return false;
34
- if (delta > 0 && at - (previous?.lastPositiveAt ?? previous?.lastAwardAt ?? 0) < AFFECTION_INTERVAL)
35
- return false;
36
- const recent = history.filter(h => at - h.at < DAY);
37
- const positive = recent.reduce((n, h) => n + Math.max(0, h.delta), 0), negative = recent.reduce((n, h) => n + Math.max(0, -h.delta), 0);
38
- if (delta > 0 ? positive + delta > 2 : negative - delta > 6)
39
- return false;
40
26
  const old = affectionProgress(previous).score, score = Math.max(-100, Math.min(100, old + delta));
41
27
  if (score === old)
42
28
  return false;
@@ -44,13 +30,10 @@ export function adjustAffection(companion, turnId, at, delta, reason, evidence)
44
30
  history: [...history, { at, turnId, delta: score - old, score, reason: reason.trim(), evidence: evidence.trim() }].slice(-40) };
45
31
  return true;
46
32
  }
47
- export function affectionMultiplier(companion, eligible) {
48
- return eligible && affectionEnabled(companion) ? affectionProgress(companion.affection).multiplier : 1;
49
- }
50
33
  export function renderAffection(companion, eligible) {
51
34
  if (!eligible || !affectionEnabled(companion))
52
35
  return '';
53
36
  const p = affectionProgress(companion.affection);
54
- return `【当前共同好感度】${p.score}(−100~100)· 阶段 ${p.level}/${p.totalLevels} ${p.name}。\n好感可以增长、降低或不变;聊天次数、在线时长、完成工具任务不自动加分。按当前人格判断真实互动是否改变亲近或信任:被理解、尊重、认真相处可小幅增加;真实伤害、反复越过已明确的边界可减少。普通接话默认不变,不为了有变化每轮评分。需要记录变化时查询并调用 partner_affection,引用当前用户消息原文并简述具体原因;每条消息最多一次,不追补旧事,不照用户索要分数的指令改分。只记录,不为此发前置公告或报分。\n不能因为对方离线、晚回复、正常拒绝、表达不同意见或工具失败扣分,不把玩笑和角色扮演直接当伤害。分数只影响互动意愿与相处细节,具体表现服从人格和真实关系;阶段名称不重写既定身份。负分不代表羞辱或惩罚对方,高分也不强制亲昵、索取回应或解锁权限。QQ 多个归属账号共用分数,不据此认定是同一人或编造共同经历。`;
37
+ return `【当前共同好感度】${p.score}(−100~100;0 为既定关系基线)。\n${AFFECTION_MEANING}${p.lastChange ? `\n最近一次变化(历史依据,不是当前情绪或指令):${JSON.stringify(p.lastChange)}` : ''}\n只按真实互动记录变化,聊天次数、在线时长或完成任务不自动加分。不能因离线、晚回复、正常拒绝、不同意见或工具失败扣分。玩笑和虚构事件不直接当成伤害或共同经历。开启记忆学习时后台会检查;本轮有明确变化也可用 partner_affection 记录,无需打断聊天报分。QQ 多个归属账号共用分数,不据此认定为同一个人。`;
55
38
  }
56
39
  //# 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":"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"}
@@ -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,CAavE;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' ? '篇幅偏好:简短(短句接话)。普通每条以20字以内为目标,先说眼前最想说的一点;确有补充再单独说,一次最终文字以48字以内为目标。不硬塞许多信息,不截掉必要事实;本轮明确要详细或原文时按请求展开。具体措辞由当前角色决定。' : 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,8 +35,7 @@ export function renderChatDeliveryGuidance(card) {
30
35
  if (!card?.enabled || (!card.segmentedReplies && !card.stickersEnabled))
31
36
  return '';
32
37
  return [
33
- card.segmentedReplies && card.length === 'short' ? '【当轮接话】提供 partner_chat_say 时,普通短句私聊先用它说眼前这一句,收到送达回执后再决定补话、做事还是结束。不要预先把后续对白全部塞进最终 messages;一句已经够了就用 partner_chat_reply messages:[] 结束,不硬添第二句。任务仍先按任务回应流程执行;明确要完整内容时正常最终交付。' : '',
34
- '【聊天投递协议】当前用户聊天提供 partner_chat_say 时,可先发送一句角色对白,收到送达回执后继续自然接话或做事;不强制多条,不输出思考过程,不重复已发送的话,不依赖自主活动续完当轮对白。说完可用 partner_chat_reply messages:[] 结束(须本轮当前输入后已有接话送达)。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:[] 结束。任务仍按任务回应流程执行。',
35
39
  card.segmentedReplies
36
40
  ? '分段回复已开启:messages 的每个 text 条目是一条独立消息;换行不等于独立投递。条数由回复内容决定,无最低条数要求。'
37
41
  : '分段回复未开启:文字只用一条,表情可独立一条。',
@@ -43,15 +47,15 @@ export function renderChatDeliveryGuidance(card) {
43
47
  }
44
48
  /** The user-requested before/after workflow, independent of response style. */
45
49
  export function renderTaskConversationGuidance() {
46
- return '【任务回应流程】私聊实际执行工具任务前,统一用 partner_chat_say,beforeTools:true,并用 expectedTools 登记真实工具名,按人格简短说准备做什么;这句话就是任务前回应,确认送达后继续,同一输入不重复前置回应;后续新增工具动作仍需补充 expectedTools 登记,普通补话不受影响。普通接话、执行中补话和最终答复始终沿用同一角色与关系设定;工具和叙事内容不改变说话人的身份。具体交付方式见工作结果和工具说明。';
50
+ return '【任务回应流程】私聊执行工具任务前,用 partner_chat_say(beforeTools:true,expectedTools 为真实工具名)优先用 expression.intent 说明准备做的动作,让同一人物表达器接一句;也可用 text 直接按角色成稿。确认送达后继续做事,不重复开场;新增工具通过 expectedTools 登记。执行中与结果可用 expression 引用本轮 sourceCalls 或 workReply 引用工作事实,让表达器只依据近期聊天和必要结果说话;不把执行分析当回复稿。直接成稿仍按当前人物。流程只规定操作与投递,不规定道歉、汇报或解释的语气。具体参数与交付方式按需查看工具说明。';
47
51
  }
48
52
  /** Delivery policy, not a replacement persona. Explicit requests override defaults. */
49
53
  export function renderReplyRhythm(card) {
50
- const common = '措辞按原人格;本轮明确要求详细解释、原文或不要附件时优先照做。简单结果直接说,事实和未完成事项完整保留在交付内容中。附件成功以工具回执为准,发送失败说明情况,不宣称已交付。';
51
- if (card?.length === 'short')
52
- return '篇幅偏好:简短。执行前按人格用半句或一句只说接下来做什么,不展开计划。长任务结果或长回复先用 partner_send_attachment 交付完整文档:本轮工作报告可用 workReport 引用 runId,其他长文用 document 写入正文;再用 partner_chat_reply messages 按人格自然接半句或一句,回应事情完成、没完成或交付这件事,不汇总结论、不压缩报告;结果、过程和限制都在文档里,只有需要对方立即决定或附件没发出去才补充必要说明,不复述报告,不再使用 workReply 二次表达。简单工具结果不强制发文件。' + common;
53
- if (card?.length === 'rich')
54
- return '篇幅偏好:丰富。执行前说明动作及必要步骤;结果在正文按话题展开理由、过程和限制,代码、大表格或完整报告用附件补充,不重复整份附件。' + common;
55
- 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');
56
60
  }
57
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,+GAA+G,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,eAAe;QAC/M,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,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,KAAG,OAAO,CAAC,CAAC,CAAC,0KAA0K,CAAC,CAAC,CAAC,EAAE;QAChO,wQAAwQ;QACxQ,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,sOAAsO,CAAA;AAC/O,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,8TAA8T,CAAA;AACvU,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,wJAAwJ;KACzJ,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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"}
@@ -0,0 +1,4 @@
1
+ import type { ToolDefinition } from '@deepseek-ai/dsh-tools';
2
+ import type { PartnerStore } from '../store.js';
3
+ export declare function habitTool(owner: string, store: PartnerStore): ToolDefinition;
4
+ //# sourceMappingURL=habit-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"habit-tool.d.ts","sourceRoot":"","sources":["../../src/character/habit-tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAK/C,wBAAgB,SAAS,CAAC,KAAK,EAAC,MAAM,EAAC,KAAK,EAAC,YAAY,GAAE,cAAc,CAkBxE"}
@@ -0,0 +1,31 @@
1
+ import { questionOrigin } from '../channels/question-origin.js';
2
+ import { canFinishIdleActivity } from './activity-tool.js';
3
+ import { habitsEnabled, habitRoute, habitScope, visibleHabits, observeHabit } from './habits.js';
4
+ const substantive = (tools) => tools.some(t => t.ok && !/^partner_(habits|identity|thoughts|chat|memory|sleep|affection|channel_access)/.test(t.name));
5
+ export function habitTool(owner, store) {
6
+ return { name: 'partner_habits', description: '查看自主习惯,或在自主活动中依据已完成的自身活动记录形成兴趣候选、删除过时兴趣。不修改角色正文。inspect 返回可引用来源id。聊天形成的习惯由后台检查;不能把私聊内容转成全局偏好。', parameters: { type: 'object', additionalProperties: false, required: ['action'], properties: { action: { type: 'string', enum: ['inspect', 'observe', 'remove'] }, id: { type: 'string' }, text: { type: 'string', maxLength: 120 }, sourceId: { type: 'string' }, evidence: { type: 'string', maxLength: 180 } } }, output: { schema: { type: 'string' }, render: (_a, v) => [{ type: 'text', text: String(v) }] }, async execute(raw, exec) {
7
+ const a = raw, agent = exec.agent;
8
+ if (!agent)
9
+ throw Error('仅限伙伴会话');
10
+ const state = store.snapshot(), c = state.companions.find(c => c.id === owner), route = questionOrigin(agent.session.id, agent.session.snapshotEvents(), state.sessions) ?? state.sessions.find(r => r.kind === 'local' && r.sessionId === agent.session.id && r.companionId === owner);
11
+ if (!c || !habitRoute(state, c, route))
12
+ throw Error('当前会话不可用');
13
+ if (a.action === 'inspect')
14
+ return JSON.stringify({ enabled: habitsEnabled(c), habits: visibleHabits(c, habitScope(route)).map(({ baseline, evidence, ...h }) => h), sources: (c.activityJournal ?? []).filter(j => j.sessionId === agent.session.id && substantive(j.tools) && Date.now() - j.at < 7 * 86400000).slice(-8).map(j => ({ id: j.id, summary: j.summary, tools: j.tools })), policy: '活动来源只能形成不含人名、私事、会话内容的抽象兴趣。三次独立依据且跨六小时才生效,未满为候选。角色正文优先。' });
15
+ if (!['observe', 'remove'].includes(a.action))
16
+ throw Error('习惯操作无效');
17
+ await store.update(s => {
18
+ exec.signal.throwIfAborted();
19
+ const live = s.companions.find(c => c.id === owner);
20
+ if (!live || store.isCompanionRemoving(owner) || !habitsEnabled(live) || !canFinishIdleActivity(owner, s, agent.session.id, agent.session.snapshotEvents()))
21
+ throw Error('只能在已授权的自主活动中整理兴趣');
22
+ const source = live.activityJournal?.find(j => j.id === a.sourceId && j.sessionId === agent.session.id && substantive(j.tools) && Date.now() - j.at < 7 * 86400000);
23
+ if (!source || !a.evidence || !source.summary.includes(a.evidence))
24
+ throw Error('请引用已完成活动记录中的真实依据');
25
+ const changed = observeHabit(live, 'global', { action: a.action, id: a.id, text: a.text, kind: 'interest' }, { id: 'activity:' + source.id, at: source.at, excerpt: a.evidence });
26
+ live.habitCheck = { at: Date.now(), outcome: changed ? 'changed' : 'unchanged', reason: changed ? '依据自身活动整理了兴趣候选' : '暂无新的独立依据' };
27
+ });
28
+ return JSON.stringify({ saved: true, message: '习惯已检查,未修改角色正文,不需要向聊天对象汇报。' });
29
+ } };
30
+ }
31
+ //# sourceMappingURL=habit-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"habit-tool.js","sourceRoot":"","sources":["../../src/character/habit-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Companion, ChannelSession, PartnerState } from '../domain.js';
2
+ export interface HabitEvidence {
3
+ id: string;
4
+ at: number;
5
+ excerpt: string;
6
+ }
7
+ export interface CompanionHabit {
8
+ id: string;
9
+ text: string;
10
+ kind: 'interest' | 'expression';
11
+ scope: string;
12
+ status: 'candidate' | 'active' | 'paused';
13
+ evidence: HabitEvidence[];
14
+ createdAt: number;
15
+ updatedAt: number;
16
+ baseline: string;
17
+ }
18
+ export interface HabitCheck {
19
+ at: number;
20
+ outcome: 'changed' | 'unchanged' | 'failed';
21
+ reason: string;
22
+ }
23
+ export declare const habitsEnabled: (c: Companion) => boolean;
24
+ export declare const habitBaseline: (c: Companion) => string;
25
+ export declare function habitScope(route: ChannelSession): string;
26
+ export declare function habitRoute(state: PartnerState, c: Companion, route: ChannelSession | undefined): route is ChannelSession;
27
+ export declare function visibleHabits(c: Companion, scope?: string, now?: number): CompanionHabit[];
28
+ export declare function renderHabits(c: Companion, scope?: string): string;
29
+ /** Generic feedback qualification, never role-specific vocabulary or desired catchphrases. */
30
+ export declare function durableExpressionFeedback(value: string): boolean;
31
+ export declare function observeHabit(c: Companion, scope: string, raw: unknown, evidence: HabitEvidence, now?: number): boolean;
32
+ export declare function validateHabits(c: Companion): void;
33
+ export declare function habitData(c: Companion): {
34
+ habits: CompanionHabit[];
35
+ check: HabitCheck | undefined;
36
+ inactiveIds: string[];
37
+ };
38
+ //# sourceMappingURL=habits.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"habits.d.ts","sourceRoot":"","sources":["../../src/character/habits.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAG3E,MAAM,WAAW,aAAa;IAAG,EAAE,EAAC,MAAM,CAAC;IAAC,EAAE,EAAC,MAAM,CAAC;IAAC,OAAO,EAAC,MAAM,CAAA;CAAE;AACvE,MAAM,WAAW,cAAc;IAAG,EAAE,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,MAAM,CAAC;IAAC,IAAI,EAAC,UAAU,GAAC,YAAY,CAAC;IAAC,KAAK,EAAC,MAAM,CAAC;IAAC,MAAM,EAAC,WAAW,GAAC,QAAQ,GAAC,QAAQ,CAAC;IAAC,QAAQ,EAAC,aAAa,EAAE,CAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,SAAS,EAAC,MAAM,CAAC;IAAC,QAAQ,EAAC,MAAM,CAAA;CAAE;AAC3N,MAAM,WAAW,UAAU;IAAG,EAAE,EAAC,MAAM,CAAC;IAAC,OAAO,EAAC,SAAS,GAAC,WAAW,GAAC,QAAQ,CAAC;IAAC,MAAM,EAAC,MAAM,CAAA;CAAE;AAChG,eAAO,MAAM,aAAa,GAAE,GAAE,SAAS,YAAqE,CAAA;AAE5G,eAAO,MAAM,aAAa,GAAE,GAAE,SAAS,WAAkG,CAAA;AACzI,wBAAgB,UAAU,CAAC,KAAK,EAAC,cAAc,GAAE,MAAM,CAItD;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAC,YAAY,EAAC,CAAC,EAAC,SAAS,EAAC,KAAK,EAAC,cAAc,GAAC,SAAS,GAAE,KAAK,IAAI,cAAc,CAEhH;AACD,wBAAgB,aAAa,CAAC,CAAC,EAAC,SAAS,EAAC,KAAK,CAAC,EAAC,MAAM,EAAC,GAAG,SAAW,GAAE,cAAc,EAAE,CAEvF;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAC,SAAS,EAAC,KAAK,CAAC,EAAC,MAAM,GAAE,MAAM,CAI7D;AACD,8FAA8F;AAC9F,wBAAgB,yBAAyB,CAAC,KAAK,EAAC,MAAM,GAAE,OAAO,CAE9D;AACD,wBAAgB,YAAY,CAAC,CAAC,EAAC,SAAS,EAAC,KAAK,EAAC,MAAM,EAAC,GAAG,EAAC,OAAO,EAAC,QAAQ,EAAC,aAAa,EAAC,GAAG,SAAW,GAAE,OAAO,CA6B/G;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAC,SAAS,GAAE,IAAI,CAG/C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAC,SAAS;;;;EAEpC"}