@aalis/plugin-persona 0.13.0 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -5,9 +5,15 @@ declare const _default: import("@aalis/core").PluginDefinition<{
5
5
  logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
6
6
  events: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Events, import("@aalis/core").Events>;
7
7
  hooks: import("@aalis/core").ServiceDescriptor<import("@aalis/api-hooks").HookRegistry, import("@aalis/api-hooks").Hooks>;
8
+ /** 登记 /clear 的 persona 类型 */
9
+ contributions: import("@aalis/core").OptionalUse<import("@aalis/api-contributions").ContributionRegistry, import("@aalis/api-contributions").Contributions>;
8
10
  platform: import("@aalis/core").OptionalUse<import("@aalis/api-platform").PlatformAdapter, import("@aalis/api-platform").PlatformAdapter>;
9
11
  storage: import("@aalis/core").OptionalUse<StorageService, import("@aalis/api-storage").BoundStorage>;
10
- sessionManager: import("@aalis/core").OptionalUse<import("@aalis/api-session-manager").SessionManagerService, import("@aalis/api-session-manager").BoundSessionManager>;
12
+ sessionManager: import("@aalis/core").OptionalUse<import("@aalis/api-session-manager").SessionManagerService, import("@aalis/api-session-manager").SessionManagerService>;
13
+ /** 按会话读本插件的四项;缺席时只取插件配置里的值 */
14
+ sessionFields: import("@aalis/core").OptionalUse<import("@aalis/api-session-settings").SessionSettingsService, import("@aalis/api-session-settings").SessionFields>;
15
+ /** 按会话字段的全局层:宿主配置文档里本实例的那一段 */
16
+ document: import("@aalis/core").OptionalUse<import("@aalis/api-host-config").HostConfig, import("@aalis/api-host-config").OwnHostConfig>;
11
17
  }>;
12
18
  export default _default;
13
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAqB,KAAK,cAAc,EAA2C,MAAM,oBAAoB,CAAC;;;;;;;;;;;AA+drH,wBAQG"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAUA,OAAO,EAAqB,KAAK,cAAc,EAA6B,MAAM,oBAAoB,CAAC;;;;;;;IAsdrG,6BAA6B;;;;;IAK7B,8BAA8B;;IAE9B,+BAA+B;;;AAKjC,wBAQG"}
package/dist/index.js CHANGED
@@ -1,45 +1,82 @@
1
1
  import { AsyncLocalStorage } from 'node:async_hooks';
2
+ import { contributions as contributionsCap } from '@aalis/api-contributions';
2
3
  import { hooks as hooksCap } from '@aalis/api-hooks';
3
- import { persona, } from '@aalis/api-persona';
4
- import { getPlatformSelfIdentity, platform as platformService } from '@aalis/api-platform';
5
- import { rootSessionOf, sessionManager as sessionManagerService, } from '@aalis/api-session-manager';
6
- import { isStorageNotFound, storage as storageService, toStorageUri } from '@aalis/api-storage';
4
+ import { ownHostConfig } from '@aalis/api-host-config';
5
+ import { persona } from '@aalis/api-persona';
6
+ import { getPlatformSelfIdentity, platform as platformService, sessionTypeLabel } from '@aalis/api-platform';
7
+ import { rootSessionOf, sessionManager as sessionManagerService } from '@aalis/api-session-manager';
8
+ import { sessionFields } from '@aalis/api-session-settings';
9
+ import { isStorageNotFound, storage as storageService } from '@aalis/api-storage';
7
10
  import { config as configCap, definePlugin, events as eventsCap, logger as loggerCap, optional, provide as provideCap, } from '@aalis/core';
8
11
  import { defineConfig, parseConfig } from '@aalis/schema-config';
12
+ import { textOf, toSource } from '@aalis/schema-i18n';
13
+ import { oneSpeaker } from '@aalis/schema-message';
9
14
  import { extractJsonCandidate, tryParseJsonObject } from '@aalis/util-json-repair';
10
15
  import { parse as parseYaml } from 'yaml';
16
+ import { t } from './texts.js';
11
17
  // ===== 插件元数据 =====
12
- /** 主卡:会话设置「人设」没设时用的角色卡(人设目录里的 default.yaml,没有时用内置的默认角色) */
18
+ /** 主卡:「人设」的作者默认(人设目录里的 default.yaml,没有时用内置的默认角色) */
13
19
  const DEFAULT_PERSONA = 'default';
14
20
  const configSchema = defineConfig({
15
- personasDir: {
16
- type: 'string',
17
- label: '人设目录',
18
- description: "人设文件所在目录的 storage URI(默认 personas:/,即家目录的 self/personas;不含 ':/' 时首段视为存储根名,单段裸名归 data 根)",
19
- default: 'personas:/',
20
- onInvalid: 'error',
21
- },
22
21
  statePersistence: {
23
22
  type: 'boolean',
24
- label: '状态持久化',
25
- description: '启用后,角色状态(心情、当前行为等 outputFormat 字段)会在同一会话内延续并注入到下一轮提示中',
23
+ label: t('statePersistenceLabel'),
24
+ description: t('statePersistenceDescription'),
26
25
  default: false,
27
26
  },
28
27
  timeInjection: {
29
28
  type: 'boolean',
30
- label: '时间注入',
31
- description: '启用后,当前时间会自动注入到系统提示中',
29
+ label: t('timeInjectionLabel'),
30
+ description: t('timeInjectionDescription'),
32
31
  default: true,
33
32
  },
34
33
  timeZone: {
35
34
  type: 'string',
36
- label: '时区 (IANA)',
37
- description: '例如 Asia/Shanghai、Europe/London、America/New_York。留空使用系统本地时区。',
35
+ label: t('timeZoneLabel'),
36
+ description: t('timeZoneDescription'),
37
+ default: '',
38
+ },
39
+ // ----- 按会话字段:人设服务按调用方给的会话读 -----
40
+ persona: {
41
+ type: 'select',
42
+ label: t('personaLabel'),
43
+ description: t('personaDescription'),
44
+ // 可选项是人设服务的 listModels
45
+ dynamicOptions: 'persona',
46
+ allowCustom: true,
47
+ default: DEFAULT_PERSONA,
48
+ session: { prominence: 'common', order: 10, minLevel: 1 },
49
+ },
50
+ systemPromptExtra: {
51
+ type: 'textarea',
52
+ label: t('extraLabel'),
53
+ description: t('extraDescription'),
38
54
  default: '',
55
+ session: { prominence: 'common', order: 40 },
56
+ },
57
+ disableOutputFormat: {
58
+ type: 'boolean',
59
+ label: t('plainLabel'),
60
+ description: t('plainDescription'),
61
+ default: false,
62
+ session: { prominence: 'advanced' },
63
+ },
64
+ clientSideJsonRendering: {
65
+ type: 'select',
66
+ label: t('renderLabel'),
67
+ description: t('renderDescription'),
68
+ options: [
69
+ { value: 'card', label: t('renderCard') },
70
+ { value: 'on', label: t('renderOn') },
71
+ { value: 'off', label: t('renderOff') },
72
+ ],
73
+ default: 'card',
74
+ session: { prominence: 'advanced' },
39
75
  },
40
76
  });
41
77
  // ===== 实现 =====
42
78
  class PersonaServiceImpl {
79
+ settingsOf;
43
80
  card;
44
81
  _outputFormat;
45
82
  statePersistence;
@@ -53,7 +90,10 @@ class PersonaServiceImpl {
53
90
  sessionStates = new Map();
54
91
  /** 当前处理消息的会话身份(按异步上下文隔离,杜绝并发会话间串档)。 */
55
92
  identityStore = new AsyncLocalStorage();
56
- constructor(card, options) {
93
+ constructor(card, options,
94
+ /** 调用方给的会话的四项:插件按会话读,不给会话时按插件配置 */
95
+ settingsOf) {
96
+ this.settingsOf = settingsOf;
57
97
  this.card = card;
58
98
  this.statePersistence = options.statePersistence;
59
99
  this.timeInjection = options.timeInjection;
@@ -108,12 +148,9 @@ class PersonaServiceImpl {
108
148
  clearAllStates() {
109
149
  this.sessionStates.clear();
110
150
  }
111
- /** 根据 options 获取生效的角色卡(不查 session-manager,由调用方传入) */
112
- getEffectiveCard(options) {
113
- if (options?.persona && options.persona !== DEFAULT_PERSONA) {
114
- return this.loadCard(options.persona) ?? this.card;
115
- }
116
- return this.card;
151
+ /** 「人设」指的角色卡:主卡之外的卡找不到时回落主卡 */
152
+ cardFor(persona) {
153
+ return persona !== DEFAULT_PERSONA ? (this.loadCard(persona) ?? this.card) : this.card;
117
154
  }
118
155
  /** 按名称动态加载角色卡(仅查 cache,启动时预填) */
119
156
  loadCard(name) {
@@ -136,7 +173,8 @@ class PersonaServiceImpl {
136
173
  return this.identityStore.run(identity, fn);
137
174
  }
138
175
  getSystemPrompt(options) {
139
- const effectiveCard = this.getEffectiveCard(options);
176
+ const settings = this.settingsOf(options);
177
+ const effectiveCard = this.cardFor(settings.persona);
140
178
  let prompt = '';
141
179
  if (effectiveCard.name) {
142
180
  prompt += `你的名字是 ${effectiveCard.name}。`;
@@ -149,11 +187,11 @@ class PersonaServiceImpl {
149
187
  }
150
188
  prompt += effectiveCard.prompt;
151
189
  // 会话级额外提示:接在人设之后、格式说明之前,格式说明仍是整段的收尾
152
- const extra = options?.systemPromptExtra?.trim();
190
+ const extra = settings.systemPromptExtra.trim();
153
191
  if (extra)
154
192
  prompt += `\n\n${extra}`;
155
- // 追加结构化输出指令 — 尊重调用方传入的 disableOutputFormat
156
- const effectiveFormat = options?.disableOutputFormat ? undefined : this.getCardOutputFormat(effectiveCard);
193
+ // 追加结构化输出指令 — 这个会话设了不用结构化输出时不加
194
+ const effectiveFormat = settings.disableOutputFormat ? undefined : this.getCardOutputFormat(effectiveCard);
157
195
  if (effectiveFormat) {
158
196
  // 角色卡若提供 outputFormatPrompt,则用其替换默认 header/footer;
159
197
  // schema 块仍由插件根据 fields 自动生成,避免与字段定义脱节。
@@ -246,8 +284,9 @@ class PersonaServiceImpl {
246
284
  const selfLabel = id.selfNickname ? `${id.selfNickname}${id.selfId ? `(${id.selfId})` : ''}` : id.selfId;
247
285
  prompt += `你在当前平台的账号:${selfLabel}\n`;
248
286
  }
249
- if (id.sessionType === 'group') {
250
- prompt += '会话类型:群聊\n';
287
+ if (id.sessionType)
288
+ prompt += `会话类型:${id.sessionType}\n`;
289
+ if (id.multiParty) {
251
290
  if (id.groupName)
252
291
  prompt += `群名称:${id.groupName}\n`;
253
292
  if (id.groupId)
@@ -261,12 +300,6 @@ class PersonaServiceImpl {
261
300
  prompt += `你在该群的专属头衔:${id.selfTitle}\n`;
262
301
  }
263
302
  }
264
- else if (id.sessionType === 'private') {
265
- prompt += '会话类型:私聊\n';
266
- }
267
- else if (id.sessionType === 'channel') {
268
- prompt += '会话类型:频道\n';
269
- }
270
303
  if (id.entryPlatform) {
271
304
  prompt += `当前消息经 ${id.entryPlatform} 发来\n`;
272
305
  }
@@ -283,13 +316,12 @@ class PersonaServiceImpl {
283
316
  if (id.senderTitle) {
284
317
  prompt += `当前消息发送者群头衔:${id.senderTitle}\n`;
285
318
  }
286
- if (id.sessionType === 'group') {
319
+ if (id.multiParty) {
287
320
  // 防误认:群名片可被改成「群主」等字样,曾导致把普通成员当群主。
288
321
  prompt +=
289
322
  '身份判定:「群身份」由平台核验,可信;昵称与头衔只是可自定义的显示文本,可能出现「群主」「管理员」等与真实身份不符的字样,历史消息前缀里的名字同理。判断成员真实身份只认群身份字段,未标注时不要凭名字或头衔推断。\n';
290
323
  }
291
- prompt +=
292
- '短期历史范围:上下文中的历史消息均来自当前会话,即上述群聊/私聊/频道;跨会话或跨群内容只会以长期记忆片段形式单独标注。\n';
324
+ prompt += '短期历史范围:上下文中的历史消息均来自当前会话;跨会话或跨群内容只会以长期记忆片段形式单独标注。\n';
293
325
  }
294
326
  // 状态持久化注入
295
327
  if (this.statePersistence) {
@@ -309,96 +341,48 @@ class PersonaServiceImpl {
309
341
  return prompt.replace(/^\n+/, '');
310
342
  }
311
343
  getPersonaName(options) {
312
- const card = this.getEffectiveCard(options);
313
- return card.name || `${card === this.card ? DEFAULT_PERSONA : options?.persona},未设置名字`;
344
+ return this.cardFor(this.settingsOf(options).persona).name;
314
345
  }
315
- /** 该角色卡是否配置为客户端渲染 JSON */
346
+ /** 这个会话是否客户端渲染 JSON:「客户端渲染 JSON」为开或关时按它,按角色卡时看卡上的 */
316
347
  isClientSideJsonRendering(options) {
317
- if (options?.clientSideJsonRendering !== undefined) {
318
- return options.clientSideJsonRendering;
319
- }
320
- const effectiveCard = this.getEffectiveCard(options);
321
- return !!effectiveCard.clientSideJsonRendering;
348
+ const settings = this.settingsOf(options);
349
+ if (settings.clientSideJsonRendering !== 'card')
350
+ return settings.clientSideJsonRendering === 'on';
351
+ return !!this.cardFor(settings.persona).clientSideJsonRendering;
322
352
  }
323
353
  getOutputFormat(options) {
324
- if (options?.disableOutputFormat)
354
+ const settings = this.settingsOf(options);
355
+ if (settings.disableOutputFormat)
325
356
  return undefined;
326
- const effectiveCard = this.getEffectiveCard(options);
327
- return this.getCardOutputFormat(effectiveCard);
357
+ return this.getCardOutputFormat(this.cardFor(settings.persona));
328
358
  }
329
359
  getNickNames(options) {
330
- return this.getEffectiveCard(options).nick_name ?? [];
331
- }
332
- isTimeInjectionEnabled() {
333
- return this.timeInjection;
334
- }
335
- getPersonaSkills(options) {
336
- const effectiveCard = this.getEffectiveCard(options);
337
- return effectiveCard.skills;
360
+ return this.cardFor(this.settingsOf(options).persona).nick_name ?? [];
338
361
  }
339
362
  async listModels() {
340
363
  return [...this.cardCache.keys()];
341
364
  }
342
365
  }
343
366
  // ===== 插件入口 =====
344
- /**
345
- * 本插件登记的会话设置项:人设、额外提示与结构化输出的两个开关。都由人设服务生效,各种会话都适用;
346
- * 人设的可选项来自人设服务的 listModels
347
- */
348
- const SESSION_SETTINGS = [
349
- {
350
- key: 'persona',
351
- field: {
352
- type: 'select',
353
- label: '人设',
354
- dynamicOptions: 'persona',
355
- allowCustom: true,
356
- default: DEFAULT_PERSONA,
357
- description: '角色卡名(不含后缀);没设置时用 default 卡',
358
- },
359
- appliesTo: ['owner', 'room', 'task'],
360
- prominence: 'common',
361
- order: 10,
362
- },
363
- {
364
- key: 'systemPromptExtra',
365
- field: { type: 'textarea', label: '额外提示', description: '追加在人设提示之后、结构化输出格式说明之前' },
366
- appliesTo: ['owner', 'room', 'task'],
367
- prominence: 'common',
368
- order: 40,
369
- unset: '不追加',
370
- },
371
- {
372
- key: 'disableOutputFormat',
373
- field: { type: 'boolean', label: '不用结构化输出', description: '不用角色卡的结构化输出格式,回复纯文本' },
374
- appliesTo: ['owner', 'room', 'task'],
375
- prominence: 'advanced',
376
- },
377
- {
378
- key: 'clientSideJsonRendering',
379
- field: {
380
- type: 'boolean',
381
- label: '客户端渲染 JSON',
382
- description: '结构化输出的 JSON 原样交给客户端渲染,不提取回复字段;没设置时按角色卡',
383
- },
384
- appliesTo: ['owner', 'room', 'task'],
385
- prominence: 'advanced',
386
- unset: '按角色卡',
387
- },
388
- ];
389
367
  const uses = {
390
368
  provide: provideCap,
391
369
  config: configCap,
392
370
  logger: loggerCap,
393
371
  events: eventsCap,
394
372
  hooks: hooksCap,
373
+ /** 登记 /clear 的 persona 类型 */
374
+ contributions: optional(contributionsCap),
395
375
  platform: optional(platformService),
396
376
  storage: optional(storageService),
397
377
  sessionManager: optional(sessionManagerService),
378
+ /** 按会话读本插件的四项;缺席时只取插件配置里的值 */
379
+ sessionFields: optional(sessionFields),
380
+ /** 按会话字段的全局层:宿主配置文档里本实例的那一段 */
381
+ document: optional(ownHostConfig),
398
382
  };
399
383
  export default definePlugin({
400
384
  name: '@aalis/plugin-persona',
401
- displayName: '人设系统',
385
+ displayName: t('displayName'),
402
386
  subsystem: 'persona',
403
387
  configSchema,
404
388
  provides: [persona],
@@ -408,10 +392,10 @@ export default definePlugin({
408
392
  async function run(caps) {
409
393
  const { provide, config, logger, events, hooks } = caps;
410
394
  const cfg = parseConfig(configSchema, config.use, logger.use);
411
- const personasDirRaw = cfg.personasDir || configSchema.personasDir.default;
412
395
  const { statePersistence, timeInjection, timeZone } = cfg;
413
396
  const storage = caps.storage.use;
414
- const personasDir = toStorageUri(personasDirRaw);
397
+ /** 人设卡所在的目录:存储的内容目录 self:/persona/ */
398
+ const cardsDir = storage.content.uri();
415
399
  /** 读到了但解析不出卡的标记——与"文件不存在"区分开,避免坏卡被当成没有卡 */
416
400
  const INVALID = 'invalid';
417
401
  async function tryLoadCardFromUri(uri) {
@@ -466,7 +450,6 @@ async function run(caps) {
466
450
  : undefined,
467
451
  nick_name: asNickNames(parsed.nick_name, uri),
468
452
  clientSideJsonRendering: parsed.clientSideJsonRendering,
469
- skills: parsed.skills,
470
453
  };
471
454
  }
472
455
  function joinUri(base, sub) {
@@ -476,7 +459,7 @@ async function run(caps) {
476
459
  async function findCard(name) {
477
460
  let sawInvalid = false;
478
461
  for (const ext of ['.yaml', '.yml']) {
479
- const uri = joinUri(personasDir, `${name}${ext}`);
462
+ const uri = joinUri(cardsDir, `${name}${ext}`);
480
463
  const card = await tryLoadCardFromUri(uri);
481
464
  if (card === INVALID) {
482
465
  sawInvalid = true;
@@ -492,7 +475,7 @@ async function run(caps) {
492
475
  const seenNames = new Set();
493
476
  let result;
494
477
  try {
495
- result = await storage.list(personasDir);
478
+ result = await storage.list(cardsDir);
496
479
  }
497
480
  catch (err) {
498
481
  if (!isStorageNotFound(err))
@@ -535,13 +518,8 @@ async function run(caps) {
535
518
  logger.use.info(`未找到角色卡 "${DEFAULT_PERSONA}",使用内置默认角色`);
536
519
  }
537
520
  }
538
- const service = new PersonaServiceImpl(card, {
539
- statePersistence,
540
- timeInjection,
541
- timeZone,
542
- });
543
- for (const setting of SESSION_SETTINGS)
544
- caps.sessionManager.use.registerSetting(setting);
521
+ const fields = caps.sessionFields.use.fields(configSchema, caps);
522
+ const service = new PersonaServiceImpl(card, { statePersistence, timeInjection, timeZone }, options => fields.get(options?.sessionId, { platform: options?.platform }));
545
523
  provide.use(persona, service);
546
524
  /** 全量扫描 → cache(listModels / 动态切换用),剔除已消失的卡,并按 cache 刷新主卡 */
547
525
  async function scanOnce(reason) {
@@ -591,11 +569,11 @@ async function run(caps) {
591
569
  // 首启人设目录尚不存在时 watch 会 ENOENT:先补建。
592
570
  // 与监听分开:只读根 / 符号链接目录上 mkdir 会抛,不能连带放弃对已存在目录的监听。
593
571
  try {
594
- await storage.stat(personasDir);
572
+ await storage.stat(cardsDir);
595
573
  }
596
574
  catch {
597
575
  try {
598
- await storage.mkdir(personasDir);
576
+ await storage.mkdir(cardsDir);
599
577
  }
600
578
  catch {
601
579
  /* 建不了就照旧:下面的监听会给出失败原因 */
@@ -605,10 +583,10 @@ async function run(caps) {
605
583
  return;
606
584
  // 先挂监听再扫描:扫描期间的改动不会漏掉(由它触发的重扫排在本次扫描之后)
607
585
  try {
608
- offs.push(storage.watch(personasDir, () => void refresh(`目录变化已重新加载(${personasDir})`)));
586
+ offs.push(storage.watch(cardsDir, () => void refresh(`目录变化已重新加载(${cardsDir})`)));
609
587
  }
610
588
  catch (err) {
611
- logger.use.warn(`persona 目录监听失败(${personasDir}):${err}`);
589
+ logger.use.warn(`persona 目录监听失败(${cardsDir}):${err}`);
612
590
  }
613
591
  await refresh('扫描完成');
614
592
  })();
@@ -621,7 +599,8 @@ async function run(caps) {
621
599
  });
622
600
  await first;
623
601
  });
624
- // 参与 memory:clear 清除当前会话的 persona 状态
602
+ // 参与 memory:clear 清除当前会话的 persona 状态;登记 persona 类型,/clear -t 才选得中
603
+ caps.contributions.use.contribute('memory:clear-type', { id: 'persona', label: t('clearType') });
625
604
  hooks.use.middleware('memory:clear', async (data, next) => {
626
605
  // 类型过滤:仅在清除 context/persona/全部 时参与
627
606
  if (data.types && !data.types.includes('context') && !data.types.includes('persona')) {
@@ -631,98 +610,74 @@ async function run(caps) {
631
610
  try {
632
611
  if (data.scope === 'all') {
633
612
  service.clearAllStates();
634
- data.results.push({ source: 'persona', type: 'persona', success: true, message: '所有会话角色状态已清空' });
613
+ data.results.push({ source: 'persona', type: 'persona', success: true, message: t('clearedAll') });
635
614
  }
636
615
  else if (data.sessionId) {
637
616
  service.clearSessionState(data.sessionId);
638
- data.results.push({ source: 'persona', type: 'persona', success: true, message: '当前会话角色状态已清空' });
617
+ data.results.push({ source: 'persona', type: 'persona', success: true, message: t('clearedSession') });
639
618
  }
640
619
  }
641
620
  catch (err) {
642
- const msg = err instanceof Error ? err.message : String(err);
643
- data.results.push({ source: 'persona', type: 'persona', success: false, message: `角色状态清空失败: ${msg}` });
621
+ data.results.push({
622
+ source: 'persona',
623
+ type: 'persona',
624
+ success: false,
625
+ message: t('clearFailed', { error: textOf(err) }),
626
+ });
644
627
  }
645
628
  await next();
646
629
  });
647
- // 跟踪当前会话信息(始终启用):身份装进 AsyncLocalStorage 的异步上下文,
630
+ // 跟踪当前会话信息(始终启用):一轮开始时把身份装进 AsyncLocalStorage 的异步上下文,
648
631
  // 穿透 await 不串、并发会话各自隔离——杜绝跨会话身份泄漏进他人 LLM 提示。
649
- // 会话事实(平台、自身账号、会话类型与群号)按会话记下的来源字段取:出生平台取根会话的(房间里的子任务也在房间的
650
- // 平台上),聊天窗口只取会话自己的(子任务不是群里的对话);从 WebUI 往群里插话时回复发进群里。没有来源字段的会话
651
- // 按消息。说话人事实(发送者 ID、昵称、群身份)照旧取自消息。
652
- hooks.use.middleware('agent:input:before', async (data, next) => {
653
- const { message } = data;
632
+ // 会话事实(平台、自身账号、会话类型与群号)按根会话记下的来源字段取(房间里的子任务也在房间的平台、账号与聊天窗口上);
633
+ // 从 WebUI 往群里插话时回复发进群里。没有出生平台的会话按开轮那条输入的平台;没有聊天窗口的(WebUI、终端,或没装会话管理)
634
+ // 不写会话类型与群信息,不看消息上的类型名。说话人事实(发送者 ID、昵称、群身份与头衔)取自开轮的输入,只在它们的说话人
635
+ // 相同时写:几个人的话一起开的一轮没有单一的当前发送者。
636
+ hooks.use.middleware('agent:turn:before', async (data, next) => {
637
+ const [{ message }] = data.inputs;
654
638
  const sm = caps.sessionManager.present ? caps.sessionManager.use : undefined;
655
639
  const session = sm?.getSession(message.sessionId);
656
- const origin = sm && rootSessionOf(session, id => sm.getSession(id))?.originPlatform;
657
- const chat = session?.originChat;
640
+ const root = sm && rootSessionOf(session, id => sm.getSession(id));
641
+ const origin = root?.originPlatform;
642
+ const chat = root?.originChat;
658
643
  const sessionPlatform = origin ?? message.platform;
659
- const selfIdentity = getPlatformSelfIdentity(caps.platform, sessionPlatform, message.sessionId);
644
+ const selfIdentity = getPlatformSelfIdentity(caps.platform, sessionPlatform, root?.id ?? message.sessionId);
660
645
  const identity = {
661
646
  sessionId: message.sessionId,
662
647
  platform: sessionPlatform,
663
648
  entryPlatform: origin !== undefined && origin !== message.platform ? message.platform : undefined,
664
- // 合成回合(定时任务、编排、闲置)与经别的入口发来的消息不带类型名:按会话记下的聊天窗口。只用于提示词,不回写消息
665
- sessionType: message.sessionType ?? chat?.type,
666
- groupId: chat?.multiParty ? chat.targetId : message.groupId,
649
+ // 只用于提示词,不回写消息
650
+ sessionType: chat && toSource(sessionTypeLabel(caps.platform, sessionPlatform, chat.type) ?? chat.type),
651
+ multiParty: chat?.multiParty,
652
+ groupId: chat?.multiParty ? chat.targetId : undefined,
667
653
  selfId: selfIdentity?.selfId,
668
654
  selfNickname: selfIdentity?.nickname,
669
- userId: message.userId,
670
- nickname: message.nickname,
671
655
  groupName: message.groupName,
672
656
  selfRole: message.selfRole,
673
657
  selfTitle: message.selfTitle,
674
- senderRole: message.senderRole,
675
- senderTitle: message.senderTitle,
658
+ ...(oneSpeaker(data.inputs.map(input => input.message))
659
+ ? {
660
+ userId: message.userId,
661
+ nickname: message.nickname,
662
+ senderRole: message.senderRole,
663
+ senderTitle: message.senderTitle,
664
+ }
665
+ : {}),
676
666
  };
677
667
  await service.runWithIdentity(identity, () => next());
678
668
  });
679
- // agent:reply:before 钩子:统一处理 JSON 解析
680
- // 1. 有 outputFormat 时:结构化解析 + 状态持久化
681
- // 2. 无 outputFormat 时:回退提取(模型意外用 JSON 包裹回复时自动解包)
669
+ // agent:reply:before 钩子:会话的卡有 outputFormat 时做结构化解析、校验重试与状态持久化
682
670
  const baseFormat = service.getOutputFormat();
683
671
  if (baseFormat) {
684
672
  logger.use.info(`角色卡启用结构化输出 (回复字段: ${baseFormat.replyField})`);
685
673
  }
686
674
  hooks.use.middleware('agent:reply:before', async (data, next) => {
687
675
  await next();
688
- // 从 session-manager 构造 PersonaSessionOptions,统一传给 service 方法
689
- let personaOpts;
690
- try {
691
- const sm = caps.sessionManager.present ? caps.sessionManager.use : undefined;
692
- if (sm && data.sessionId) {
693
- const resolved = sm.resolveConfig(data.sessionId, data.platform);
694
- personaOpts = {
695
- persona: resolved.persona,
696
- disableOutputFormat: resolved.disableOutputFormat,
697
- clientSideJsonRendering: resolved.clientSideJsonRendering,
698
- };
699
- }
700
- }
701
- catch {
702
- /* session-manager 不可用,使用全局默认 */
703
- }
676
+ // 按这一轮的会话取卡与两个结构化输出开关
677
+ const personaOpts = { sessionId: data.sessionId, platform: data.platform };
704
678
  const outputFormat = service.getOutputFormat(personaOpts);
705
- // ===== 无 outputFormat:回退 JSON 提取 =====
706
- // 当角色卡未定义 outputFormat 时,模型偶尔仍会用 JSON 包裹回复
707
- // 此处自动解包,提取回复字段
708
- if (!outputFormat) {
709
- const trimmed = data.content.trim();
710
- if (!trimmed.startsWith('{'))
711
- return;
712
- const { parsed: obj } = tryParseJsonObject(trimmed);
713
- if (!obj)
714
- return;
715
- const replyKeys = ['response', 'reply', 'content', 'answer', 'text', 'msg', 'message'];
716
- for (const key of replyKeys) {
717
- if (typeof obj[key] === 'string') {
718
- data.content = obj[key];
719
- logger.use.debug(`JSON 回退提取: 使用字段 "${key}"`);
720
- return;
721
- }
722
- }
679
+ if (!outputFormat)
723
680
  return;
724
- }
725
- // ===== 有 outputFormat:结构化解析 =====
726
681
  const clientRendered = service.isClientSideJsonRendering(personaOpts);
727
682
  const persistStateFromParsed = (parsedObj, fmt) => {
728
683
  const state = {};
@@ -760,96 +715,69 @@ async function run(caps) {
760
715
  try {
761
716
  if (!parsed)
762
717
  throw new Error('JSON 解析失败');
763
- let reply = parsed[outputFormat.replyField];
764
- // 回退:模型可能使用了错误的字段名(如 response 代替 message)
765
- if (typeof reply !== 'string') {
766
- const aliases = ['response', 'reply', 'content', 'answer', 'text', 'msg'];
767
- for (const alias of aliases) {
768
- if (alias !== outputFormat.replyField && typeof parsed[alias] === 'string') {
769
- reply = parsed[alias];
770
- logger.use.debug(`outputFormat 回退:模型使用了 "${alias}" 而非 "${outputFormat.replyField}",已自动纠正`);
771
- break;
772
- }
773
- }
774
- }
775
- // 仍未找到:若 JSON 中只有一个字符串字段,使用它
718
+ // 只认声明的回复字段。主动不回话的合法写法是回复字段为空字符串(如 {"message":"","state":"..."})
719
+ const reply = parsed[outputFormat.replyField];
776
720
  if (typeof reply !== 'string') {
777
- const stringEntries = Object.entries(parsed).filter(([, v]) => typeof v === 'string');
778
- if (stringEntries.length === 1) {
779
- reply = stringEntries[0][1];
780
- logger.use.debug(`outputFormat 回退:仅一个字符串字段 "${stringEntries[0][0]}",作为回复使用`);
781
- }
721
+ throw new Error(`JSON 合法但找不到回复字段 "${outputFormat.replyField}"(实际字段: ${Object.keys(parsed).join(',')})`);
782
722
  }
783
- if (typeof reply === 'string') {
784
- if (parsed[outputFormat.replyField] !== reply) {
785
- parsed[outputFormat.replyField] = reply;
723
+ // 严格字段校验:声明的所有字段都必须出现且类型正确,缺一不可 → 否则 retry。
724
+ // 这样可以避免模型养成省略 state/mood 等状态字段的坏习惯,让上下文信号始终完整。
725
+ const missing = [];
726
+ const typeMismatch = [];
727
+ for (const [key, def] of Object.entries(outputFormat.fields)) {
728
+ const val = parsed[key];
729
+ if (val === undefined || val === null) {
730
+ missing.push(key);
731
+ continue;
786
732
  }
787
- // 严格字段校验:声明的所有字段都必须出现且类型正确,缺一不可 → 否则 retry。
788
- // 这样可以避免模型养成省略 state/mood 等状态字段的坏习惯,让上下文信号始终完整。
789
- const missing = [];
790
- const typeMismatch = [];
791
- for (const [key, def] of Object.entries(outputFormat.fields)) {
792
- const val = parsed[key];
793
- if (val === undefined || val === null) {
794
- missing.push(key);
795
- continue;
796
- }
797
- const expectedType = def.type ?? 'string';
798
- const actualType = typeof val;
799
- if (expectedType === 'number') {
800
- if (actualType !== 'number' && !(actualType === 'string' && !Number.isNaN(Number(val)))) {
801
- typeMismatch.push(`${key}(期望 number, 实际 ${actualType})`);
802
- }
733
+ const expectedType = def.type ?? 'string';
734
+ const actualType = typeof val;
735
+ if (expectedType === 'number') {
736
+ if (actualType !== 'number' && !(actualType === 'string' && !Number.isNaN(Number(val)))) {
737
+ typeMismatch.push(`${key}(期望 number, 实际 ${actualType})`);
803
738
  }
804
- else if (expectedType === 'boolean') {
805
- if (actualType !== 'boolean' && !(actualType === 'string' && (val === 'true' || val === 'false'))) {
806
- typeMismatch.push(`${key}(期望 boolean, 实际 ${actualType})`);
807
- }
808
- }
809
- else if (actualType !== 'string') {
810
- typeMismatch.push(`${key}(期望 string, 实际 ${actualType})`);
811
- }
812
- }
813
- if (missing.length > 0 || typeMismatch.length > 0) {
814
- const parts = [];
815
- if (missing.length > 0)
816
- parts.push(`缺失字段: ${missing.join(',')}`);
817
- if (typeMismatch.length > 0)
818
- parts.push(`类型错误: ${typeMismatch.join(',')}`);
819
- throw new Error(parts.join('; '));
820
739
  }
821
- data.archiveContent = JSON.stringify(parsed);
822
- // 可见正文单独交给 agent 落库:客户端渲染模式下 content 仍是整串 JSON
823
- data.visibleContent = reply;
824
- // 客户端渲染模式:保留完整 JSON 给前端,不提取回复字段
825
- if (!clientRendered) {
826
- data.content = reply;
827
- }
828
- // 输出所有字段概要
829
- const fieldSummary = Object.entries(parsed)
830
- .filter(([k]) => k !== outputFormat.replyField)
831
- .map(([k, v]) => {
832
- const s = typeof v === 'string' ? v : JSON.stringify(v);
833
- return `${k}=${s.length > 60 ? `${s.slice(0, 60)}...` : s}`;
834
- })
835
- .join(', ');
836
- if (reply.length > 0) {
837
- logger.use.debug(`outputFormat 解码成功 [${fieldSummary}] → ${outputFormat.replyField}: ${reply.slice(0, 100)}`);
838
- }
839
- else {
840
- logger.use.debug(`outputFormat 解码成功 [${fieldSummary}] → ${outputFormat.replyField}: (空,静默)`);
740
+ else if (expectedType === 'boolean') {
741
+ if (actualType !== 'boolean' && !(actualType === 'string' && (val === 'true' || val === 'false'))) {
742
+ typeMismatch.push(`${key}(期望 boolean, 实际 ${actualType})`);
743
+ }
841
744
  }
842
- // 状态持久化:保存非回复字段(按 field type 强制类型)
843
- if (statePersistence) {
844
- persistStateFromParsed(parsed, outputFormat);
745
+ else if (actualType !== 'string') {
746
+ typeMismatch.push(`${key}(期望 string, 实际 ${actualType})`);
845
747
  }
846
748
  }
749
+ if (missing.length > 0 || typeMismatch.length > 0) {
750
+ const parts = [];
751
+ if (missing.length > 0)
752
+ parts.push(`缺失字段: ${missing.join(',')}`);
753
+ if (typeMismatch.length > 0)
754
+ parts.push(`类型错误: ${typeMismatch.join(',')}`);
755
+ throw new Error(parts.join('; '));
756
+ }
757
+ data.archiveContent = JSON.stringify(parsed);
758
+ // 可见正文单独交给 agent 落库:客户端渲染模式下 content 仍是整串 JSON
759
+ data.visibleContent = reply;
760
+ // 客户端渲染模式:保留完整 JSON 给前端,不提取回复字段
761
+ if (!clientRendered) {
762
+ data.content = reply;
763
+ }
764
+ // 输出所有字段概要
765
+ const fieldSummary = Object.entries(parsed)
766
+ .filter(([k]) => k !== outputFormat.replyField)
767
+ .map(([k, v]) => {
768
+ const s = typeof v === 'string' ? v : JSON.stringify(v);
769
+ return `${k}=${s.length > 60 ? `${s.slice(0, 60)}...` : s}`;
770
+ })
771
+ .join(', ');
772
+ if (reply.length > 0) {
773
+ logger.use.debug(`outputFormat 解码成功 [${fieldSummary}] → ${outputFormat.replyField}: ${reply.slice(0, 100)}`);
774
+ }
847
775
  else {
848
- // JSON 合法但找不到回复字段(无 replyField、无 alias、也不是单字符串字段)
849
- // 视为模型违约 → 抛错让 catch 触发 retry,要求重新输出符合 outputFormat 的 JSON。
850
- // 注意:agent 主动静默的合法表达是 reply 字段=空字符串(如 {"message":"","state":"..."}),
851
- // 那种情况会走上面的 typeof reply === 'string' 分支并被识别为"(空,静默)"。
852
- throw new Error(`JSON 合法但找不到回复字段 "${outputFormat.replyField}"(实际字段: ${Object.keys(parsed).join(',')})`);
776
+ logger.use.debug(`outputFormat 解码成功 [${fieldSummary}] → ${outputFormat.replyField}: (空,静默)`);
777
+ }
778
+ // 状态持久化:保存非回复字段(按 field type 强制类型)
779
+ if (statePersistence) {
780
+ persistStateFromParsed(parsed, outputFormat);
853
781
  }
854
782
  }
855
783
  catch (err) {
@@ -876,12 +804,10 @@ async function run(caps) {
876
804
  }
877
805
  else {
878
806
  // 重试用尽:静默丢弃(避免原始 JSON 被当成回复发出)
879
- // 同时通过 archiveContent 写入一条"系统提醒",让下一轮 LLM 看到自己上次因格式不符被丢弃
880
807
  logger.use.warn(`outputFormat 解码连续 ${attempt + 1} 次失败(已用尽 ${maxRetries} 次重试),静默丢弃回复:${message}; json=${preview}`);
881
808
  data.retryRequested = false;
882
809
  data.retryFeedback = undefined;
883
810
  data.content = '';
884
- data.archiveContent = `(系统提示:上一条回复因不符合 outputFormat 规定被丢弃,原因:${message}。下次回复请严格按照 system prompt 中规定的 JSON 格式输出,所有声明的字段都必须出现。)`;
885
811
  }
886
812
  }
887
813
  });
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ declare const _default: {
2
+ readonly displayName: "Persona system";
3
+ readonly statePersistenceLabel: "State persistence";
4
+ readonly statePersistenceDescription: "When on, the persona state (mood, current activity and other outputFormat fields) carries over within the same session and is injected into the next prompt";
5
+ readonly timeInjectionLabel: "Time injection";
6
+ readonly timeInjectionDescription: "When on, the current time is injected into the system prompt automatically";
7
+ readonly timeZoneLabel: "Time zone (IANA)";
8
+ readonly timeZoneDescription: "For example Asia/Shanghai, Europe/London, America/New_York. Empty uses the system's local time zone.";
9
+ readonly personaLabel: "Persona";
10
+ readonly personaDescription: "Persona card name (without the extension); default is the default card in the persona directory, or the built-in default persona when there is none";
11
+ readonly extraLabel: "Extra prompt";
12
+ readonly extraDescription: "Appended after the persona prompt and before the structured output instructions; nothing is appended when empty";
13
+ readonly plainLabel: "No structured output";
14
+ readonly plainDescription: "Ignore the card’s structured output format and reply in plain text";
15
+ readonly renderLabel: "Client-side JSON rendering";
16
+ readonly renderDescription: "Hand the structured output JSON to the client as is, without extracting the reply field";
17
+ readonly renderCard: "Per card";
18
+ readonly renderOn: "On";
19
+ readonly renderOff: "Off";
20
+ readonly clearType: "Session persona state";
21
+ readonly clearedAll: "Cleared the persona state of all sessions";
22
+ readonly clearedSession: "Cleared the persona state of this session";
23
+ readonly clearFailed: "Clearing persona state failed: {error}";
24
+ };
25
+ export default _default;
26
+ //# sourceMappingURL=en.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAGA,wBA2BG"}
@@ -0,0 +1,26 @@
1
+ import { defineLocale } from '@aalis/schema-i18n';
2
+ export default defineLocale()({
3
+ displayName: 'Persona system',
4
+ statePersistenceLabel: 'State persistence',
5
+ statePersistenceDescription: 'When on, the persona state (mood, current activity and other outputFormat fields) carries over within the same session and is injected into the next prompt',
6
+ timeInjectionLabel: 'Time injection',
7
+ timeInjectionDescription: 'When on, the current time is injected into the system prompt automatically',
8
+ timeZoneLabel: 'Time zone (IANA)',
9
+ timeZoneDescription: "For example Asia/Shanghai, Europe/London, America/New_York. Empty uses the system's local time zone.",
10
+ personaLabel: 'Persona',
11
+ personaDescription: 'Persona card name (without the extension); default is the default card in the persona directory, or the built-in default persona when there is none',
12
+ extraLabel: 'Extra prompt',
13
+ extraDescription: 'Appended after the persona prompt and before the structured output instructions; nothing is appended when empty',
14
+ plainLabel: 'No structured output',
15
+ plainDescription: 'Ignore the card’s structured output format and reply in plain text',
16
+ renderLabel: 'Client-side JSON rendering',
17
+ renderDescription: 'Hand the structured output JSON to the client as is, without extracting the reply field',
18
+ renderCard: 'Per card',
19
+ renderOn: 'On',
20
+ renderOff: 'Off',
21
+ clearType: 'Session persona state',
22
+ clearedAll: 'Cleared the persona state of all sessions',
23
+ clearedSession: 'Cleared the persona state of this session',
24
+ clearFailed: 'Clearing persona state failed: {error}',
25
+ });
26
+ //# sourceMappingURL=en.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en.js","sourceRoot":"","sources":["../../src/locales/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAe,YAAY,EAAU,CAAC;IACpC,WAAW,EAAE,gBAAgB;IAC7B,qBAAqB,EAAE,mBAAmB;IAC1C,2BAA2B,EACzB,6JAA6J;IAC/J,kBAAkB,EAAE,gBAAgB;IACpC,wBAAwB,EAAE,4EAA4E;IACtG,aAAa,EAAE,kBAAkB;IACjC,mBAAmB,EACjB,sGAAsG;IACxG,YAAY,EAAE,SAAS;IACvB,kBAAkB,EAChB,qJAAqJ;IACvJ,UAAU,EAAE,cAAc;IAC1B,gBAAgB,EACd,iHAAiH;IACnH,UAAU,EAAE,sBAAsB;IAClC,gBAAgB,EAAE,oEAAoE;IACtF,WAAW,EAAE,4BAA4B;IACzC,iBAAiB,EAAE,yFAAyF;IAC5G,UAAU,EAAE,UAAU;IACtB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,KAAK;IAChB,SAAS,EAAE,uBAAuB;IAClC,UAAU,EAAE,2CAA2C;IACvD,cAAc,EAAE,2CAA2C;IAC3D,WAAW,EAAE,wCAAwC;CACtD,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ declare const SOURCE: {
2
+ readonly displayName: "人设系统";
3
+ readonly statePersistenceLabel: "状态持久化";
4
+ readonly statePersistenceDescription: "启用后,角色状态(心情、当前行为等 outputFormat 字段)会在同一会话内延续并注入到下一轮提示中";
5
+ readonly timeInjectionLabel: "时间注入";
6
+ readonly timeInjectionDescription: "启用后,当前时间会自动注入到系统提示中";
7
+ readonly timeZoneLabel: "时区 (IANA)";
8
+ readonly timeZoneDescription: "例如 Asia/Shanghai、Europe/London、America/New_York。留空使用系统本地时区。";
9
+ readonly personaLabel: "人设";
10
+ readonly personaDescription: "角色卡名(不含后缀);default 是人设目录里的 default 卡,没有时用内置的默认角色";
11
+ readonly extraLabel: "额外提示";
12
+ readonly extraDescription: "追加在人设提示之后、结构化输出格式说明之前;为空时不追加";
13
+ readonly plainLabel: "不用结构化输出";
14
+ readonly plainDescription: "不用角色卡的结构化输出格式,回复纯文本";
15
+ readonly renderLabel: "客户端渲染 JSON";
16
+ readonly renderDescription: "结构化输出的 JSON 原样交给客户端渲染,不提取回复字段";
17
+ readonly renderCard: "按角色卡";
18
+ readonly renderOn: "开";
19
+ readonly renderOff: "关";
20
+ readonly clearType: "会话角色状态";
21
+ readonly clearedAll: "所有会话角色状态已清空";
22
+ readonly clearedSession: "当前会话角色状态已清空";
23
+ readonly clearFailed: "角色状态清空失败:{error}";
24
+ };
25
+ export type Source = typeof SOURCE;
26
+ export declare const t: import("@aalis/schema-i18n").TextFactory<{
27
+ readonly displayName: "人设系统";
28
+ readonly statePersistenceLabel: "状态持久化";
29
+ readonly statePersistenceDescription: "启用后,角色状态(心情、当前行为等 outputFormat 字段)会在同一会话内延续并注入到下一轮提示中";
30
+ readonly timeInjectionLabel: "时间注入";
31
+ readonly timeInjectionDescription: "启用后,当前时间会自动注入到系统提示中";
32
+ readonly timeZoneLabel: "时区 (IANA)";
33
+ readonly timeZoneDescription: "例如 Asia/Shanghai、Europe/London、America/New_York。留空使用系统本地时区。";
34
+ readonly personaLabel: "人设";
35
+ readonly personaDescription: "角色卡名(不含后缀);default 是人设目录里的 default 卡,没有时用内置的默认角色";
36
+ readonly extraLabel: "额外提示";
37
+ readonly extraDescription: "追加在人设提示之后、结构化输出格式说明之前;为空时不追加";
38
+ readonly plainLabel: "不用结构化输出";
39
+ readonly plainDescription: "不用角色卡的结构化输出格式,回复纯文本";
40
+ readonly renderLabel: "客户端渲染 JSON";
41
+ readonly renderDescription: "结构化输出的 JSON 原样交给客户端渲染,不提取回复字段";
42
+ readonly renderCard: "按角色卡";
43
+ readonly renderOn: "开";
44
+ readonly renderOff: "关";
45
+ readonly clearType: "会话角色状态";
46
+ readonly clearedAll: "所有会话角色状态已清空";
47
+ readonly clearedSession: "当前会话角色状态已清空";
48
+ readonly clearFailed: "角色状态清空失败:{error}";
49
+ }>;
50
+ export {};
51
+ //# sourceMappingURL=texts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;CAwBF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;EAAmG,CAAC"}
package/dist/texts.js ADDED
@@ -0,0 +1,29 @@
1
+ // 本插件自己的原文字典:显示名、配置项,按会话字段的称呼、说明与选项,/clear 的类型显示名与结果行
2
+ import { defineTexts } from '@aalis/schema-i18n';
3
+ import en from './locales/en.js';
4
+ const SOURCE = {
5
+ displayName: '人设系统',
6
+ statePersistenceLabel: '状态持久化',
7
+ statePersistenceDescription: '启用后,角色状态(心情、当前行为等 outputFormat 字段)会在同一会话内延续并注入到下一轮提示中',
8
+ timeInjectionLabel: '时间注入',
9
+ timeInjectionDescription: '启用后,当前时间会自动注入到系统提示中',
10
+ timeZoneLabel: '时区 (IANA)',
11
+ timeZoneDescription: '例如 Asia/Shanghai、Europe/London、America/New_York。留空使用系统本地时区。',
12
+ personaLabel: '人设',
13
+ personaDescription: '角色卡名(不含后缀);default 是人设目录里的 default 卡,没有时用内置的默认角色',
14
+ extraLabel: '额外提示',
15
+ extraDescription: '追加在人设提示之后、结构化输出格式说明之前;为空时不追加',
16
+ plainLabel: '不用结构化输出',
17
+ plainDescription: '不用角色卡的结构化输出格式,回复纯文本',
18
+ renderLabel: '客户端渲染 JSON',
19
+ renderDescription: '结构化输出的 JSON 原样交给客户端渲染,不提取回复字段',
20
+ renderCard: '按角色卡',
21
+ renderOn: '开',
22
+ renderOff: '关',
23
+ clearType: '会话角色状态',
24
+ clearedAll: '所有会话角色状态已清空',
25
+ clearedSession: '当前会话角色状态已清空',
26
+ clearFailed: '角色状态清空失败:{error}',
27
+ };
28
+ export const t = defineTexts({ ns: '@aalis/plugin-persona', language: 'zh-CN', source: SOURCE, locales: { en } });
29
+ //# sourceMappingURL=texts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,sDAAsD;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,MAAM;IACnB,qBAAqB,EAAE,OAAO;IAC9B,2BAA2B,EACzB,uDAAuD;IACzD,kBAAkB,EAAE,MAAM;IAC1B,wBAAwB,EAAE,qBAAqB;IAC/C,aAAa,EAAE,WAAW;IAC1B,mBAAmB,EAAE,6DAA6D;IAClF,YAAY,EAAE,IAAI;IAClB,kBAAkB,EAAE,kDAAkD;IACtE,UAAU,EAAE,MAAM;IAClB,gBAAgB,EAAE,8BAA8B;IAChD,UAAU,EAAE,SAAS;IACrB,gBAAgB,EAAE,qBAAqB;IACvC,WAAW,EAAE,YAAY;IACzB,iBAAiB,EAAE,+BAA+B;IAClD,UAAU,EAAE,MAAM;IAClB,QAAQ,EAAE,GAAG;IACb,SAAS,EAAE,GAAG;IACd,SAAS,EAAE,QAAQ;IACnB,UAAU,EAAE,aAAa;IACzB,cAAc,EAAE,aAAa;IAC7B,WAAW,EAAE,kBAAkB;CACvB,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,uBAAuB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aalis/plugin-persona",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -24,31 +24,39 @@
24
24
  "dist"
25
25
  ],
26
26
  "dependencies": {
27
- "@aalis/schema-config": ">=0.15.0 <1.0.0",
28
- "@aalis/api-persona": ">=0.9.0 <1.0.0",
29
- "@aalis/api-platform": ">=0.10.0 <1.0.0",
30
- "@aalis/api-session-manager": ">=0.11.0 <1.0.0",
31
- "@aalis/api-storage": ">=0.8.0 <1.0.0",
32
- "@aalis/util-json-repair": ">=0.5.4 <1.0.0",
27
+ "@aalis/schema-config": ">=0.16.0 <1.0.0",
28
+ "@aalis/api-persona": ">=0.10.0 <1.0.0",
29
+ "@aalis/api-platform": ">=0.11.0 <1.0.0",
30
+ "@aalis/api-session-manager": ">=0.12.0 <1.0.0",
31
+ "@aalis/api-storage": ">=0.10.0 <1.0.0",
32
+ "@aalis/util-json-repair": ">=0.6.0 <1.0.0",
33
33
  "yaml": "^2.7.0",
34
- "@aalis/api-hooks": ">=0.2.0 <1.0.0"
34
+ "@aalis/api-hooks": ">=0.3.0 <1.0.0",
35
+ "@aalis/api-contributions": ">=0.2.0 <1.0.0",
36
+ "@aalis/api-host-config": ">=0.3.0 <1.0.0",
37
+ "@aalis/api-session-settings": ">=0.1.0 <1.0.0",
38
+ "@aalis/schema-i18n": ">=0.1.0 <1.0.0",
39
+ "@aalis/schema-message": ">=0.11.0 <1.0.0"
35
40
  },
36
41
  "devDependencies": {
37
42
  "@types/node": "^22.0.0",
38
43
  "typescript": "^5.7.0",
39
- "@aalis/core": "0.20.0",
40
- "@aalis/api-agent": "0.10.0",
41
- "@aalis/api-memory": "0.8.0"
44
+ "@aalis/core": "0.21.0",
45
+ "@aalis/api-memory": "0.9.0",
46
+ "@aalis/api-agent": "0.11.0"
42
47
  },
43
48
  "peerDependencies": {
44
- "@aalis/core": ">=0.20.0 <1.0.0"
49
+ "@aalis/core": ">=0.21.0 <1.0.0"
45
50
  },
46
51
  "aalis": {
47
52
  "service": {
48
53
  "optional": [
49
54
  "platform",
50
55
  "storage",
51
- "session-manager"
56
+ "session-manager",
57
+ "host-config",
58
+ "session-settings",
59
+ "contributions"
52
60
  ],
53
61
  "provides": [
54
62
  "persona"