koishi-plugin-satori-ai 1.2.2 → 1.2.4

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/lib/index.js CHANGED
@@ -228,6 +228,8 @@ var APIClient = class {
228
228
  }
229
229
  // 发送生成用户画像请求
230
230
  async generateUserPortrait(user, messages) {
231
+ if (user.userid == "Alice")
232
+ return { content: "测试画像", error: false };
231
233
  const enableUserKey = user?.items?.["地灵殿通行证"]?.description && user.items["地灵殿通行证"].description == "on";
232
234
  let keys;
233
235
  let modle;
@@ -307,7 +309,7 @@ var APIClient = class {
307
309
  const responseMsg = { role: "assistant", content };
308
310
  if (payload.messages.some((msg) => msg === responseMsg) && content.length > 5) {
309
311
  const lastMsg = payload.messages[payload.messages.length - 1];
310
- payload.messages[payload.messages.length - 1].content = lastMsg.content + "(system:注意不要重复之前的内容)";
312
+ payload.messages[payload.messages.length - 1].content = lastMsg.content + "(注意不要重复之前的内容)";
311
313
  logger2.warn(`返回内容与之前内容相同,重试(第${i}次)中...`);
312
314
  continue;
313
315
  }
@@ -1094,6 +1096,7 @@ var Sat = class extends import_koishi5.Service {
1094
1096
  visible_favorability: import_koishi5.Schema.boolean().default(true).description("是否开启好感度升降显示"),
1095
1097
  enable_user_portrait: import_koishi5.Schema.boolean().default(true).description("是否启用用户画像功能"),
1096
1098
  portrait_usage: import_koishi5.Schema.number().default(2).description("每天触发第几次对话后触发画像生成(最小为2)"),
1099
+ max_portrait_dialogues: import_koishi5.Schema.number().default(100).description("画像生成获取的最大对话条数"),
1097
1100
  portrait_min_favorability: import_koishi5.Schema.number().default(100).description("触发画像生成的最小好感度"),
1098
1101
  prompt_0: import_koishi5.Schema.string().role("textarea").description("厌恶好感补充设定"),
1099
1102
  favorability_div_1: import_koishi5.Schema.number().default(15).description("厌恶-陌生分界线"),
@@ -1150,9 +1153,9 @@ var UserPortraitManager = class {
1150
1153
  const MemoryContent = await JSON.parse(fs5.readFileSync(memoryPath, "utf-8"));
1151
1154
  const dialoguesContent = MemoryContent.map((msg) => `${msg.content}${msg.role == "user" ? "(未记录时间)" : msg.role}`);
1152
1155
  const level = user.userlevel < 5 ? user.userlevel : 4;
1153
- const usageLimit = this.config.max_usage[level] || 0;
1154
- if (dialoguesContent.length > usageLimit) {
1155
- dialoguesContent.splice(0, dialoguesContent.length - usageLimit);
1156
+ const usageLimit = this.config.max_usage[level] == 0 ? this.config.max_portrait_dialogues : this.config.max_usage[level];
1157
+ if (dialoguesContent.length >= usageLimit || dialoguesContent.length >= this.config.max_portrait_dialogues) {
1158
+ dialoguesContent.splice(0, dialoguesContent.length - Math.min(usageLimit, this.config.max_portrait_dialogues));
1156
1159
  }
1157
1160
  return dialoguesContent;
1158
1161
  }
@@ -1177,13 +1180,14 @@ ${existingPortrait ? "无" : existingPortrait}
1177
1180
  ${history}
1178
1181
 
1179
1182
  注意事项:
1180
- ·需要综合历史画像和用户发言记录,避免重复信息或遗漏信息
1183
+ ·用户一定是人类,其他情况是角色扮演
1184
+ ·需要综合历史画像和用户发言记录,避免重复信息或遗漏信息,并根据发言修正历史画像内容
1181
1185
  ·基于事实推断,避免盲目相信或主观臆测
1182
1186
  ·使用简洁的条目式表达,但内容要全面
1183
- ·保留不确定性的表述(如"可能"、"似乎")
1187
+ ·保留不确定性的表述(如"可能"、"似乎"、"用户自称")
1184
1188
  ·保持中立和客观,避免带有个人情感色彩的描述,不要添加评价或建议
1185
1189
  ·仅给出画像内容,不要添加额外的描述、建议、评价、注解等
1186
- ·不必使用标记语言,直接书写即可`
1190
+ ·不使用markdown等标记语言,直接书写即可`
1187
1191
  }];
1188
1192
  }
1189
1193
  // 执行画像生成
@@ -1204,8 +1208,8 @@ ${history}
1204
1208
  const response = await apiClient.generateUserPortrait(user, messages);
1205
1209
  if (response && !response.error) {
1206
1210
  this.savePortrait(user, response.content);
1207
- if (user.usage > 0)
1208
- session.send(`用户画像更新成功。`);
1211
+ if (user.usage > this.config.portrait_usage - 1)
1212
+ session.send("用户画像更新成功。");
1209
1213
  logger5.success(`用户 ${user.userid} 画像更新成功`);
1210
1214
  }
1211
1215
  } catch (error) {
@@ -1642,10 +1646,10 @@ ${payload}`);
1642
1646
  const userId = options.id || session.userId;
1643
1647
  const level = options.level || 1;
1644
1648
  const user = await ensureUserExists(this.ctx, userId, session.username);
1645
- await updateUserLevel(this.ctx, user, level);
1646
1649
  const enableUserKey = user?.items?.["地灵殿通行证"]?.description && user.items["地灵殿通行证"].description == "on";
1647
1650
  if (enableUserKey)
1648
1651
  await this.portraitManager.generatePortrait(session, user, this.apiClient);
1652
+ await updateUserLevel(this.ctx, user, level);
1649
1653
  return session.text("commands.sat.messages.update_level_succeed", [level]);
1650
1654
  }
1651
1655
  // 处理查询用户使用次数
@@ -1653,7 +1657,18 @@ ${payload}`);
1653
1657
  const user = await ensureUserExists(this.ctx, session.userId, session.username);
1654
1658
  const userUsage = user.usage || 0;
1655
1659
  const maxUsage = this.config.max_usage[user.userlevel || 0] || 0;
1656
- return session.text("commands.sat.messages.usage", [userUsage, maxUsage]);
1660
+ const enableUserKey = user?.items?.["地灵殿通行证"]?.description && user.items["地灵殿通行证"].description == "on";
1661
+ let result = "";
1662
+ result += "用户等级:" + user.userlevel + "\n";
1663
+ if (enableUserKey)
1664
+ result += session.text("commands.sat.messages.usage", [userUsage, "∞"]) + "\n地灵殿通行证生效中\n";
1665
+ else
1666
+ result += session.text("commands.sat.messages.usage", [userUsage, maxUsage]) + "\n";
1667
+ if (this.portraitManager.hasPortrait(user.userid))
1668
+ result += "用户画像生效中\n";
1669
+ else
1670
+ result += "用户画像未生效\n";
1671
+ return result;
1657
1672
  }
1658
1673
  // 随机中间件转接
1659
1674
  async handleRandomMiddleware(session, prompt) {
package/lib/types.d.ts CHANGED
@@ -199,6 +199,7 @@ export declare namespace Sat {
199
199
  offset_of_fafavorability: number;
200
200
  visible_favorability: boolean;
201
201
  enable_user_portrait: boolean;
202
+ max_portrait_dialogues: number;
202
203
  portrait_usage: number;
203
204
  portrait_min_favorability: number;
204
205
  prompt_0: string;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "koishi-plugin-satori-ai",
3
- "description": "基于 Satori 适配器的智能对话插件,具备长期记忆、常识管理和好感度系统",
4
- "version": "1.2.2",
3
+ "description": "基于 Satori 适配器的智能对话插件,具备用户画像、长期记忆、常识管理和好感度系统",
4
+ "version": "1.2.4",
5
5
  "main": "lib/index.js",
6
6
  "typings": "lib/index.d.ts",
7
7
  "types": "lib/index.d.ts",