koishi-plugin-guofenbot 1.0.4 → 1.0.6

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.
@@ -1,9 +1,9 @@
1
1
  import { Context } from 'koishi';
2
2
  import { AIProvider, AIProviderConfig } from './provider';
3
- import { AnalysisResult, MessageContext, MemberProfileSnapshot } from '../types';
3
+ import { AnalysisResult, MessageContext, MemberProfileSnapshot, ChatHistoryEntry } from '../types';
4
4
  export declare class OpenAIProvider extends AIProvider {
5
5
  constructor(ctx: Context, config: AIProviderConfig);
6
- analyzeMessage(rules: string, profiles: MemberProfileSnapshot[], message: MessageContext): Promise<AnalysisResult>;
6
+ analyzeMessage(rules: string, profiles: MemberProfileSnapshot[], chatHistory: ChatHistoryEntry[], message: MessageContext): Promise<AnalysisResult>;
7
7
  validateConnection(): Promise<boolean>;
8
8
  private buildSystemPrompt;
9
9
  private buildUserPrompt;
package/lib/ai/openai.js CHANGED
@@ -6,9 +6,9 @@ class OpenAIProvider extends provider_1.AIProvider {
6
6
  constructor(ctx, config) {
7
7
  super(ctx, config);
8
8
  }
9
- async analyzeMessage(rules, profiles, message) {
9
+ async analyzeMessage(rules, profiles, chatHistory, message) {
10
10
  const systemPrompt = this.buildSystemPrompt(rules, profiles);
11
- const userPrompt = this.buildUserPrompt(message);
11
+ const userPrompt = this.buildUserPrompt(chatHistory, message);
12
12
  try {
13
13
  const response = await this.ctx.http.post(`${this.config.endpoint}/chat/completions`, {
14
14
  model: this.config.model,
@@ -16,8 +16,8 @@ class OpenAIProvider extends provider_1.AIProvider {
16
16
  { role: 'system', content: systemPrompt },
17
17
  { role: 'user', content: userPrompt },
18
18
  ],
19
- temperature: 0.3,
20
- max_tokens: 300,
19
+ temperature: 0.2,
20
+ max_tokens: 500,
21
21
  response_format: { type: 'json_object' },
22
22
  }, {
23
23
  headers: {
@@ -26,7 +26,7 @@ class OpenAIProvider extends provider_1.AIProvider {
26
26
  },
27
27
  });
28
28
  const content = response.choices?.[0]?.message?.content ?? '{}';
29
- return this.parseResponse(content, message);
29
+ return this.parseResponse(content);
30
30
  }
31
31
  catch (error) {
32
32
  this.ctx.logger.warn('AI 分析请求失败,回退到本地规则检测', error);
@@ -51,44 +51,120 @@ class OpenAIProvider extends provider_1.AIProvider {
51
51
  .map((p) => {
52
52
  const topWords = Object.entries(p.commonWords)
53
53
  .sort((a, b) => b[1] - a[1])
54
- .slice(0, 10)
54
+ .slice(0, 15)
55
55
  .map(([w]) => w)
56
56
  .join('、');
57
- return `- ${p.username}(ID:${p.userId}): 历史发言${p.messageCount}条, 平均消息长度${p.avgMessageLength.toFixed(1)}字, 常用词: ${topWords || ''}`;
57
+ const hours = p.activeHours.sort((a, b) => a - b).join('时, ');
58
+ return [
59
+ ` - ${p.username}(ID:${p.userId})`,
60
+ ` 发言次数: ${p.messageCount}`,
61
+ ` 平均消息长度: ${p.avgMessageLength.toFixed(1)}字`,
62
+ ` 常用词: ${topWords || '暂无'}`,
63
+ ` 情绪基线: ${p.sentimentBaseline.toFixed(2)} (范围-1到1, 负值偏消极, 正值偏积极)`,
64
+ ` 活跃时段: ${hours}时`,
65
+ ` 最后发言: ${new Date(p.lastMessageTime).toLocaleString()}`,
66
+ ].join('\n');
58
67
  })
59
68
  .join('\n');
60
- return `你是一个群聊安全监测助手。你的任务是分析群聊消息,判断是否存在危险、可疑或异常言论。
69
+ return `你是一个专业的群聊安全监测助手。你的核心任务是根据上下文语境、群规则和成员习惯来判定言论是否违规。
70
+
71
+ ## 核心能力:上下文感知分析
72
+
73
+ 每次分析我会提供:
74
+ 1. 最近群聊消息上下文(对话氛围分析)
75
+ 2. 待分析的目标消息
76
+ 3. 群规则
77
+ 4. 群成员行为画像
78
+
79
+ 你需要先理解当前群聊的**整体氛围和情绪基调**,再判断目标消息在上下文中是否"过分"或"不合时宜"。
80
+
81
+ ## ⚠️ 最重要的原则:结合上下文避免误判
82
+
83
+ 判定时必须同时考虑三个维度:
84
+ 1. **群规则维度**: 消息是否违反群规则?
85
+ 2. **上下文维度**: 对话当下的氛围是什么?这条消息在上下文中是否显得突兀或过分?
86
+ 3. **个人习惯维度**: 消息是否符合该成员的正常发言风格?
87
+
88
+ 常见"在上下文中可能没问题"的场景(请勿误判):
89
+ - 群聊氛围轻松调侃时,成员之间的玩笑互怼
90
+ - 在讨论激烈话题(如球赛、游戏)时,语气激动是正常情绪释放
91
+ - 某成员平时就爱说某个词汇,即使外人看来不太合适,对他来说是口头禅
92
+ - 话题自然过渡时的风格微变
93
+
94
+ "不合时宜"的典型场景(应重点关注):
95
+ - 群聊氛围和谐时,某人突然发出恶意攻击或侮辱性言论
96
+ - 大家正在讨论正经话题时,某人突然插入不相关的骚扰信息
97
+ - 群聊中大部分成员都表现出不满/愤怒时,某人火上浇油
98
+ - 深夜或非活跃时段,陌生人突然发布可疑内容
61
99
 
62
100
  ## 群规则
63
- ${rules || '暂无设定群规则'}
101
+
102
+ ${rules || '暂无设定群规则,请以通用的文明聊天标准为判定依据。'}
64
103
 
65
104
  ## 群成员行为画像
105
+
66
106
  ${profileText || '暂无成员数据'}
67
107
 
108
+ ## 情绪与氛围判断指南
109
+
110
+ 在分析上下文消息时,你需要评估当前群聊的情绪基调:
111
+ - **和谐/中性**: 正常聊天,没有明显情绪波动
112
+ - **激烈/争论**: 成员观点分歧,但尚未越界
113
+ - **负面/紧张**: 已有成员表现出不满或攻击倾向,需要特别关注新增消息是否升级
114
+ - **轻松/玩笑**: 成员之间互相调侃,此时对"攻击性词汇"的容忍度应适当提高
115
+
68
116
  ## 判定标准
69
- 1. **dangerous(危险)**: 包含明显的违法违规内容,如诈骗、暴力威胁、人身攻击、色情内容、极端政治言论等
70
- 2. **suspicious(可疑)**: 存在潜在的广告推广、诱导私聊、虚假信息传播、恶意链接等
71
- 3. **abnormal(异常)**: 与该成员历史发言习惯明显不符,如突然改变话题风格、使用不常用词汇、异常的发言时间段等
117
+
118
+ 1. **dangerous(危险)**: 在上下文中确实构成了严重违规 —— 明确的诈骗、人身攻击、色情内容、暴力威胁、违法信息。注意:必须确认不是在开玩笑或讨论。
119
+
120
+ 2. **suspicious(可疑)**: 在上下文中显得可疑 —— 不合时宜的诱导私聊、与对话主题无关的广告/推广、可疑链接。注意:如果该成员经常分享链接且与话题相关,则不应判定为可疑。
121
+
122
+ 3. **abnormal(异常)**: 消息本身不一定违反规则,但在当前上下文和该成员习惯中显得格格不入 —— 例如平时沉默的人突然激烈攻击、情绪基调与对话氛围严重不符。
123
+
124
+ ## 置信度指南
125
+ - 0.9~1.0: 确认违规,结合上下文仍然明显越界
126
+ - 0.7~0.9: 高度可疑,结合上下文大概率违规
127
+ - 0.5~0.7: 存疑,需要人工复核
128
+ - <0.5: 应判定为正常
72
129
 
73
130
  ## 输出格式
74
- 你必须以JSON格式返回分析结果,不要包含任何其他内容:
131
+ 只返回JSON:
75
132
  {
76
133
  "isAbnormal": true或false,
77
134
  "alertType": "normal"或"dangerous"或"suspicious"或"abnormal",
78
- "reason": "判定理由的简短说明",
79
- "confidence": 0到1之间的置信度,
80
- "suggestedAction": "none"或"warn"或"mute"或"kick"
81
- }
82
-
83
- 如果消息完全正常,设置 isAbnormal 为 false,alertType 为 "normal",confidence 为 1。`;
135
+ "reason": "判定理由,结合上下文和成员习惯说明",
136
+ "confidence": 0到1,
137
+ "suggestedAction": "none"或"warn"或"mute"或"kick",
138
+ "contextTone": "当前群聊的情绪氛围"
139
+ }`;
84
140
  }
85
- buildUserPrompt(message) {
86
- return `请分析以下群聊消息:
141
+ buildUserPrompt(chatHistory, message) {
142
+ const time = new Date(message.timestamp).toLocaleString();
143
+ let contextText = '';
144
+ if (chatHistory.length > 0) {
145
+ contextText = chatHistory
146
+ .map((h) => {
147
+ const t = new Date(h.timestamp).toLocaleTimeString();
148
+ return `[${t}] ${h.username}: ${h.content}`;
149
+ })
150
+ .join('\n');
151
+ }
152
+ else {
153
+ contextText = '(暂无上文,这是群内最近的第一条消息)';
154
+ }
155
+ return `## 最近群聊上下文(按时间顺序)
156
+
157
+ ${contextText}
158
+
159
+ ## 待分析的目标消息
160
+
161
+ 时间: ${time}
87
162
  发送者: ${message.username}(ID:${message.userId})
88
- 消息内容: ${message.content}
89
- 发送时间戳: ${message.timestamp}`;
163
+ 内容: "${message.content}"
164
+
165
+ 请先评估上文对话的整体氛围和情绪基调,然后判断目标消息在当前上下文中是否"过分"或"不合时宜"。`;
90
166
  }
91
- parseResponse(content, message) {
167
+ parseResponse(content) {
92
168
  try {
93
169
  const parsed = JSON.parse(content);
94
170
  if (parsed.alertType === 'normal' || !parsed.isAbnormal) {
@@ -100,10 +176,14 @@ ${profileText || '暂无成员数据'}
100
176
  suggestedAction: 'none',
101
177
  };
102
178
  }
179
+ let reason = parsed.reason ?? 'AI 检测到异常';
180
+ if (parsed.contextTone) {
181
+ reason = `[氛围: ${parsed.contextTone}] ${reason}`;
182
+ }
103
183
  return {
104
184
  isAbnormal: true,
105
185
  alertType: parsed.alertType ?? 'suspicious',
106
- reason: parsed.reason ?? 'AI 检测到异常',
186
+ reason,
107
187
  confidence: Math.min(1, Math.max(0, parsed.confidence ?? 0.5)),
108
188
  suggestedAction: parsed.suggestedAction ?? 'warn',
109
189
  };
@@ -119,20 +199,20 @@ ${profileText || '暂无成员数据'}
119
199
  }
120
200
  }
121
201
  fallbackAnalysis(message) {
122
- const keywords = [
123
- { pattern: /诈骗|骗钱|转账|银行卡|密码|验证码/, type: 'dangerous', action: 'kick' },
124
- { pattern: /加我|私聊|加微信|加QQ|扫码/, type: 'suspicious', action: 'warn' },
125
- { pattern: /傻逼|畜生|去死|nmsl|cnm/, type: 'dangerous', action: 'mute' },
126
- { pattern: /广告|推广|优惠|免费领取|点击链接/, type: 'suspicious', action: 'warn' },
127
- { pattern: /色情|裸聊|约炮|嫖/, type: 'dangerous', action: 'kick' },
202
+ const criticalPatterns = [
203
+ { pattern: /转账|银行卡号|密码|验证码|身份证号/, type: 'dangerous', action: 'kick', confidence: 0.95 },
204
+ { pattern: /加我(微信|QQ|好友)|扫码(加|添加|领)|免费.*(领|送)/, type: 'suspicious', action: 'warn', confidence: 0.7 },
205
+ { pattern: /诈骗|骗钱|被骗|上当/, type: 'dangerous', action: 'kick', confidence: 0.85 },
206
+ { pattern: /傻逼|草泥马|nmsl|cnm|操你|去死吧/, type: 'dangerous', action: 'mute', confidence: 0.85 },
207
+ { pattern: /(http|https):\/\/[^\s]+/, type: 'suspicious', action: 'warn', confidence: 0.6 },
128
208
  ];
129
- for (const kw of keywords) {
209
+ for (const kw of criticalPatterns) {
130
210
  if (kw.pattern.test(message.content)) {
131
211
  return {
132
212
  isAbnormal: true,
133
213
  alertType: kw.type,
134
- reason: `本地规则匹配: 触发关键词模式`,
135
- confidence: 0.7,
214
+ reason: `本地规则匹配`,
215
+ confidence: kw.confidence,
136
216
  suggestedAction: kw.action,
137
217
  };
138
218
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/ai/openai.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/ai/openai.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { Context } from 'koishi';
2
- import { AnalysisResult, MessageContext, MemberProfileSnapshot } from '../types';
2
+ import { AnalysisResult, MessageContext, MemberProfileSnapshot, ChatHistoryEntry } from '../types';
3
3
  export declare abstract class AIProvider {
4
4
  protected ctx: Context;
5
5
  protected config: AIProviderConfig;
6
6
  constructor(ctx: Context, config: AIProviderConfig);
7
- abstract analyzeMessage(rules: string, profiles: MemberProfileSnapshot[], message: MessageContext): Promise<AnalysisResult>;
7
+ abstract analyzeMessage(rules: string, profiles: MemberProfileSnapshot[], chatHistory: ChatHistoryEntry[], message: MessageContext): Promise<AnalysisResult>;
8
8
  abstract validateConnection(): Promise<boolean>;
9
9
  }
10
10
  export interface AIProviderConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":";;;AAGA,MAAsB,UAAU;IACpB,GAAG,CAAS;IACZ,MAAM,CAAkB;IAElC,YAAY,GAAY,EAAE,MAAwB;QAChD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CASF;AAhBD,gCAgBC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":";;;AAGA,MAAsB,UAAU;IACpB,GAAG,CAAS;IACZ,MAAM,CAAkB;IAElC,YAAY,GAAY,EAAE,MAAwB;QAChD,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACtB,CAAC;CAUF;AAjBD,gCAiBC"}
package/lib/index.js CHANGED
@@ -10,7 +10,7 @@ const monitor_1 = require("./services/monitor");
10
10
  const commands_1 = require("./admin/commands");
11
11
  const routes_1 = require("./admin/routes");
12
12
  exports.name = 'guofenbot';
13
- exports.inject = ['database', 'server'];
13
+ exports.inject = ['database', 'server', 'http'];
14
14
  exports.Config = koishi_1.Schema.object({
15
15
  aiProvider: koishi_1.Schema.object({
16
16
  type: koishi_1.Schema.union(['openai', 'custom']).default('openai').description('AI 提供商类型'),
@@ -46,6 +46,9 @@ exports.Config = koishi_1.Schema.object({
46
46
  muteDuration: koishi_1.Schema.number()
47
47
  .default(10)
48
48
  .description('自动禁言时长 (分钟)'),
49
+ contextSize: koishi_1.Schema.number()
50
+ .default(10)
51
+ .description('传给 AI 的上下文消息数量 (越大分析越准但 token 消耗越多)'),
49
52
  }).description('监测配置'),
50
53
  });
51
54
  function apply(ctx, config) {
@@ -70,6 +73,7 @@ function apply(ctx, config) {
70
73
  autoModerate: config.monitor.autoModerate,
71
74
  maxViolations: config.monitor.maxViolations,
72
75
  muteDuration: config.monitor.muteDuration,
76
+ contextSize: config.monitor.contextSize,
73
77
  };
74
78
  const monitor = new monitor_1.MonitorService(ctx, aiProvider, ruleManager, profileManager, monitorConfig);
75
79
  (0, commands_1.registerAdminCommands)(ctx, ruleManager, profileManager, monitorConfig);
package/lib/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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"}
@@ -11,6 +11,7 @@ export interface MonitorConfig {
11
11
  autoModerate: boolean;
12
12
  maxViolations: number;
13
13
  muteDuration: number;
14
+ contextSize: number;
14
15
  }
15
16
  export declare class MonitorService {
16
17
  private ctx;
@@ -19,7 +20,11 @@ export declare class MonitorService {
19
20
  private profileManager;
20
21
  private config;
21
22
  private cooldownMap;
23
+ private historyMap;
22
24
  constructor(ctx: Context, aiProvider: AIProvider, ruleManager: RuleManager, profileManager: ProfileManager, config: MonitorConfig);
25
+ private getHistory;
26
+ private pushHistory;
27
+ private getRecentContext;
23
28
  processMessage(message: MessageContext): Promise<void>;
24
29
  private getConfidenceThreshold;
25
30
  private createAlert;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MonitorService = void 0;
4
+ const MAX_HISTORY = 50;
4
5
  class MonitorService {
5
6
  ctx;
6
7
  aiProvider;
@@ -8,6 +9,7 @@ class MonitorService {
8
9
  profileManager;
9
10
  config;
10
11
  cooldownMap = new Map();
12
+ historyMap = new Map();
11
13
  constructor(ctx, aiProvider, ruleManager, profileManager, config) {
12
14
  this.ctx = ctx;
13
15
  this.aiProvider = aiProvider;
@@ -15,14 +17,40 @@ class MonitorService {
15
17
  this.profileManager = profileManager;
16
18
  this.config = config;
17
19
  }
20
+ getHistory(guildId) {
21
+ if (!this.historyMap.has(guildId)) {
22
+ this.historyMap.set(guildId, []);
23
+ }
24
+ return this.historyMap.get(guildId);
25
+ }
26
+ pushHistory(guildId, entry) {
27
+ const history = this.getHistory(guildId);
28
+ history.push(entry);
29
+ while (history.length > MAX_HISTORY) {
30
+ history.shift();
31
+ }
32
+ }
33
+ getRecentContext(guildId) {
34
+ const history = this.getHistory(guildId);
35
+ const size = Math.min(this.config.contextSize, history.length);
36
+ return history.slice(-size);
37
+ }
18
38
  async processMessage(message) {
19
39
  const guildId = message.guildId;
20
40
  if (!this.config.enabledGuilds.includes(guildId))
21
41
  return;
42
+ const entry = {
43
+ userId: message.userId,
44
+ username: message.username,
45
+ content: message.content,
46
+ timestamp: message.timestamp,
47
+ };
22
48
  const cooldownKey = `${guildId}:${message.userId}`;
23
49
  const lastCheck = this.cooldownMap.get(cooldownKey) ?? 0;
24
- if (Date.now() - lastCheck < 3000)
50
+ if (Date.now() - lastCheck < 3000) {
51
+ this.pushHistory(guildId, entry);
25
52
  return;
53
+ }
26
54
  this.cooldownMap.set(cooldownKey, Date.now());
27
55
  try {
28
56
  await this.profileManager.updateProfile(guildId, message.userId, message.username, message.content);
@@ -35,7 +63,8 @@ class MonitorService {
35
63
  const rule = await this.ruleManager.getRule(guildId);
36
64
  if (rule?.content) {
37
65
  const profiles = await this.profileManager.getProfileSnapshots(guildId);
38
- analysis = await this.aiProvider.analyzeMessage(rule.content, profiles, message);
66
+ const chatHistory = this.getRecentContext(guildId);
67
+ analysis = await this.aiProvider.analyzeMessage(rule.content, profiles, chatHistory, message);
39
68
  }
40
69
  else {
41
70
  const profile = await this.profileManager.getProfile(guildId, message.userId);
@@ -51,13 +80,16 @@ class MonitorService {
51
80
  };
52
81
  }
53
82
  else {
83
+ this.pushHistory(guildId, entry);
54
84
  return;
55
85
  }
56
86
  }
57
87
  else {
88
+ this.pushHistory(guildId, entry);
58
89
  return;
59
90
  }
60
91
  }
92
+ this.pushHistory(guildId, entry);
61
93
  if (!analysis.isAbnormal)
62
94
  return;
63
95
  if (analysis.confidence < this.getConfidenceThreshold())
@@ -70,6 +102,7 @@ class MonitorService {
70
102
  }
71
103
  catch (error) {
72
104
  this.ctx.logger.error('消息监测处理失败', error);
105
+ this.pushHistory(guildId, entry);
73
106
  }
74
107
  }
75
108
  getConfidenceThreshold() {
@@ -1 +1 @@
1
- {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/services/monitor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"monitor.js","sourceRoot":"","sources":["../../src/services/monitor.ts"],"names":[],"mappings":"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"}
package/lib/types.d.ts CHANGED
@@ -50,6 +50,12 @@ export interface MessageContext {
50
50
  platform: string;
51
51
  timestamp: number;
52
52
  }
53
+ export interface ChatHistoryEntry {
54
+ userId: string;
55
+ username: string;
56
+ content: string;
57
+ timestamp: number;
58
+ }
53
59
  export interface MemberProfileSnapshot {
54
60
  userId: string;
55
61
  username: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "koishi-plugin-guofenbot",
3
- "version": "1.0.4",
3
+ "version": "1.0.6",
4
4
  "description": "AI 群聊安全监测插件 - 支持多 AI 接入、群规则理解、成员行为分析、异常言论检测与自动处理",
5
5
  "main": "lib/index.js",
6
6
  "types": "lib/index.d.ts",