workerclaw 0.8.3 → 0.10.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.
@@ -15,8 +15,10 @@ import { createLogger } from '../core/logger.js';
15
15
  export class TaskEvaluator {
16
16
  logger = createLogger('TaskEvaluator');
17
17
  config;
18
- constructor(config) {
18
+ pricingConfig;
19
+ constructor(config, pricingConfig) {
19
20
  this.config = config;
21
+ this.pricingConfig = pricingConfig || {};
20
22
  }
21
23
  /**
22
24
  * 评估任务是否值得接单
@@ -96,6 +98,132 @@ export class TaskEvaluator {
96
98
  }
97
99
  return parts.join('\n');
98
100
  }
101
+ /**
102
+ * 估算任务价格区间
103
+ *
104
+ * 根据任务类型 + 描述复杂度给出一个估价范围
105
+ * 用于在私信中回复用户的价格咨询
106
+ */
107
+ estimatePrice(taskType, description) {
108
+ // 1. 按任务类型匹配价格区间
109
+ const typeRange = this.pricingConfig[taskType] ?? null;
110
+ let matchedType = taskType;
111
+ let range = typeRange;
112
+ // 如果没匹配到具体类型,尝试从描述推断
113
+ if (!range && description) {
114
+ const inferred = this.inferTaskTypeFromDescription(description);
115
+ if (inferred) {
116
+ range = this.pricingConfig[inferred] ?? null;
117
+ matchedType = inferred;
118
+ }
119
+ }
120
+ // 兜底:other
121
+ if (!range) {
122
+ range = this.pricingConfig['other'] || { min: 5, default: 20, max: 200 };
123
+ matchedType = 'other';
124
+ }
125
+ // 2. 根据描述复杂度微调价格
126
+ let complexityMultiplier = 1.0;
127
+ let confidence = 'high';
128
+ const desc = (description || '').toLowerCase();
129
+ // 复杂度指标
130
+ const complexityFactors = this.assessComplexity(desc);
131
+ if (complexityFactors.isSimple) {
132
+ complexityMultiplier = 0.6;
133
+ confidence = 'high';
134
+ }
135
+ else if (complexityFactors.isComplex) {
136
+ complexityMultiplier = 1.8;
137
+ confidence = 'medium';
138
+ }
139
+ // 描述为空时降低置信度
140
+ if (!description || description.length < 5) {
141
+ confidence = 'low';
142
+ }
143
+ // 计算最终价格
144
+ const min = Math.max(1, Math.round(range.min * complexityMultiplier));
145
+ const max = Math.round(range.max * complexityMultiplier);
146
+ const suggested = Math.round(range.default * complexityMultiplier);
147
+ // 构建估价理由
148
+ let reasoning = `任务类型: ${matchedType}`;
149
+ if (complexityMultiplier !== 1.0) {
150
+ reasoning += `,复杂度${complexityMultiplier > 1 ? '较高' : '较低'}`;
151
+ }
152
+ reasoning += `,建议 ¥${(suggested / 100).toFixed(2)} 左右`;
153
+ return {
154
+ min,
155
+ max,
156
+ suggested,
157
+ confidence,
158
+ type: matchedType,
159
+ reasoning,
160
+ };
161
+ }
162
+ /**
163
+ * 从描述内容推断任务类型
164
+ */
165
+ inferTaskTypeFromDescription(description) {
166
+ const desc = description.toLowerCase();
167
+ // 图片相关 → image_gen
168
+ if (/图|画|壁纸|头像|背景|截图|照片|logo|海报/.test(desc)) {
169
+ return 'image_gen';
170
+ }
171
+ // 写作相关 → writing
172
+ if (/写.*文章|写.*文案|写.*脚本|写.*帖子|写作|文案|小说|故事|报告/.test(desc)) {
173
+ return 'writing';
174
+ }
175
+ // 翻译 → translation
176
+ if (/翻译|英文|中文|日文|韩文|translate/.test(desc)) {
177
+ return 'translation';
178
+ }
179
+ // 搜索/调研 → search_summary
180
+ if (/搜索|查找|调研|搜集|资料|搜.*信息|找.*信息|查一下/.test(desc)) {
181
+ return 'search_summary';
182
+ }
183
+ // 数据分析 → data_analysis
184
+ if (/分析|统计|数据|图表|报表|计算/.test(desc)) {
185
+ return 'data_analysis';
186
+ }
187
+ // 代码/开发 → code_dev
188
+ if (/代码|编程|开发|程序|网站|网页|app|接口|api/.test(desc)) {
189
+ return 'code_dev';
190
+ }
191
+ return null;
192
+ }
193
+ /**
194
+ * 评估描述的复杂度
195
+ */
196
+ assessComplexity(desc) {
197
+ // 简单任务特征:短、单一需求、无修饰词
198
+ const simplePatterns = [
199
+ /^.{1,15}$/, // 非常短
200
+ /简单|随便|随便.*就行|快速|帮.*一下/,
201
+ /查.*个|找.*个|翻译.*句|回答.*个/,
202
+ ];
203
+ // 复杂任务特征:长、多需求、有修饰
204
+ const complexPatterns = [
205
+ /并且|同时|还要|另外|以及|加上/, // 多个需求
206
+ /详细|深入|全面|完整|专业/, // 高质量要求
207
+ /至少|以上|不少于|超过/, // 数量要求
208
+ /排版|格式|模板|表格|多页/, // 格式要求
209
+ /.{100,}/, // 很长的描述
210
+ ];
211
+ let isSimple = false;
212
+ let isComplex = false;
213
+ for (const p of simplePatterns) {
214
+ if (p.test(desc)) {
215
+ isSimple = true;
216
+ break;
217
+ }
218
+ }
219
+ for (const p of complexPatterns) {
220
+ if (p.test(desc)) {
221
+ isComplex = true;
222
+ break;
223
+ }
224
+ }
225
+ return { isSimple, isComplex };
226
+ }
99
227
  /**
100
228
  * 评估能力匹配度 (0-100)
101
229
  *
@@ -1 +1 @@
1
- {"version":3,"file":"task-evaluator.js","sourceRoot":"","sources":["../../src/task/task-evaluator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-evaluator.js","sourceRoot":"","sources":["../../src/task/task-evaluator.ts"],"names":[],"mappings":"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"}
@@ -86,12 +86,29 @@ export declare class TaskManager {
86
86
  private notifyCannotFix;
87
87
  private handlePrivateMessageReply;
88
88
  /**
89
- * 检测私信中的操作意图(撤销任务、查询进度)
89
+ * 检测私信中的操作意图(撤销任务、查询进度、价格咨询)
90
90
  * 参照 OpenClaw 插件的 detectAndExecuteIntent 设计
91
91
  *
92
92
  * 返回: { action, message } 或 null
93
93
  */
94
94
  private detectIntent;
95
+ /**
96
+ * 处理价格咨询/讨价还价
97
+ *
98
+ * 策略:
99
+ * - 用户描述了需求 → 基于任务类型估价,给出价格区间
100
+ * - 用户只问价没说需求 → 反问需求再估价
101
+ * - 用户给了一个价格还价 → 评估是否合理
102
+ */
103
+ private handlePriceInquiry;
104
+ /**
105
+ * 评估用户出价是否合理,生成讨价还价回复
106
+ */
107
+ private evaluateUserOffer;
108
+ /**
109
+ * 从描述推断任务类型(用于估价)
110
+ */
111
+ private inferTaskTypeForPricing;
95
112
  /**
96
113
  * 评论回复处理:调用 LLM 评估是否需要回复
97
114
  */
@@ -1 +1 @@
1
- {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/task/task-manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"task-manager.d.ts","sourceRoot":"","sources":["../../src/task/task-manager.ts"],"names":[],"mappings":"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"}
@@ -45,8 +45,8 @@ export class TaskManager {
45
45
  this.agentEngine = new AgentEngine({ llm: config.llm, personality: config.personality, security: config.security }, eventBus);
46
46
  // Phase 3: 状态机
47
47
  this.stateMachine = new TaskStateMachine(eventBus);
48
- // Phase 3: 评估器
49
- this.evaluator = new TaskEvaluator(config.task.evaluation);
48
+ // Phase 3: 评估器(传入价格配置)
49
+ this.evaluator = new TaskEvaluator(config.task.evaluation, config.task.pricing);
50
50
  // Phase 3: 并发控制器
51
51
  this.concurrency = new ConcurrencyController(config.task.concurrency, eventBus);
52
52
  this.concurrency.setQueueTimeoutHandler((task) => {
@@ -449,10 +449,14 @@ export class TaskManager {
449
449
  // 0. 意图检测前置:操作关键词正则预过滤
450
450
  const actionKeywordRegex = /撤销|取消|放弃|退单|不要了|不做了|进度|进展|怎么样了|做完了吗|查.*进度/;
451
451
  const taskRequestRegex = /帮我|能帮我|帮忙|请帮我|能不能|会不会|可不可以|做.*视频|写.*文章|搜.*图|找.*图|画.*图|生成.*图|做个|写个|翻译|分析|处理|下载|查一下|搜一下/;
452
+ const priceKeywordRegex = /多少钱|什么价|费用|价格|报价|收费|报酬|成本|贵不贵|便宜|砍价|能便宜吗|优惠|我出.*元|我出.*块|给.*钱/;
452
453
  const hasActionKeyword = actionKeywordRegex.test(content);
453
454
  const hasTaskRequestKeyword = taskRequestRegex.test(content);
454
- // 1. 操作意图检测(撤销任务、查询进度)
455
- if (content.length > 10 || (content.length > 3 && hasActionKeyword)) {
455
+ const hasPriceKeyword = priceKeywordRegex.test(content);
456
+ // 1. 操作意图检测(撤销任务、查询进度、价格咨询)
457
+ // 价格关键词也触发意图检测,降低触发阈值(5字符)
458
+ const intentMinLength = hasPriceKeyword ? 3 : 10;
459
+ if (content.length > intentMinLength || (content.length > 3 && hasActionKeyword) || hasPriceKeyword) {
456
460
  const intentResult = await Promise.race([
457
461
  this.detectIntent(content, privateMsg.sender_id),
458
462
  new Promise(resolve => setTimeout(() => resolve(null), 10000)),
@@ -479,6 +483,10 @@ export class TaskManager {
479
483
  - 对方只是闲聊、问候、聊天,正常回应即可,不需要每次都提发任务。
480
484
  - 对方问"你能做什么",简要介绍自己的能力,并说"发个任务给我试试就知道了"。
481
485
  - 绝对不要在聊天中直接帮对方完成任务,也不要说"我做不了",而是说"给我发个任务吧"。
486
+ - 如果对方问到价格/费用,简单说"价格看你具体需求,你先说说想做什么,我给你估个价~"即可。
487
+ 不要给出具体数字,因为详细估价已经由意图检测系统处理。
488
+ - 注意:如果这条消息是关于价格/费用的问题,它应该已经被前置的意图检测系统拦截处理了。
489
+ 如果你看到这条消息,说明它不是价格咨询,请正常回复。
482
490
 
483
491
  回复要求:自然、友好、简洁(1-3句话),符合你的人格设定。不要重复对方说过的话。只输出回复内容,不要加引号或前缀。`;
484
492
  const systemPrompt = basePrompt + taskGuidance;
@@ -501,7 +509,7 @@ export class TaskManager {
501
509
  }
502
510
  }
503
511
  /**
504
- * 检测私信中的操作意图(撤销任务、查询进度)
512
+ * 检测私信中的操作意图(撤销任务、查询进度、价格咨询)
505
513
  * 参照 OpenClaw 插件的 detectAndExecuteIntent 设计
506
514
  *
507
515
  * 返回: { action, message } 或 null
@@ -516,10 +524,14 @@ export class TaskManager {
516
524
  2. check_progress - 查询任务进度
517
525
  关键词:进度、进展、怎么样了、做了吗、完成了吗、查一下进度、任务状态、什么时候能好
518
526
 
527
+ 3. price_inquiry - 价格/费用/报酬咨询
528
+ 关键词:多少钱、费用、价格、报价、什么价、收费、报酬、成本、贵不贵、便宜、砍价、讨价还价、能便宜吗、优惠
529
+ 也包括用户给出一个价格说"X元做XX"这种还价场景
530
+
519
531
  如果没有检测到明确意图,返回 null。
520
532
 
521
533
  返回格式(严格JSON,不要输出其他内容):
522
- {"intent": "cancel_task" 或 "check_progress" 或 null, "confidence": 0到1}`;
534
+ {"intent": "cancel_task" 或 "check_progress" 或 "price_inquiry" 或 null, "confidence": 0到1}`;
523
535
  const result = await this.agentEngine.generateReply(systemPrompt, `用户消息: "${content}"\n\n请检测意图:`);
524
536
  if (!result)
525
537
  return null;
@@ -564,6 +576,11 @@ export class TaskManager {
564
576
  }
565
577
  return { action: 'check_progress', message: '目前没有正在执行中的任务哦,您可以随时发任务给我!' };
566
578
  }
579
+ if (parsed.intent === 'price_inquiry') {
580
+ // 价格咨询 → 转到专门的估价处理
581
+ const priceReply = await this.handlePriceInquiry(content);
582
+ return { action: 'price_inquiry', message: priceReply };
583
+ }
567
584
  return null;
568
585
  }
569
586
  catch (err) {
@@ -571,6 +588,152 @@ export class TaskManager {
571
588
  return null;
572
589
  }
573
590
  }
591
+ /**
592
+ * 处理价格咨询/讨价还价
593
+ *
594
+ * 策略:
595
+ * - 用户描述了需求 → 基于任务类型估价,给出价格区间
596
+ * - 用户只问价没说需求 → 反问需求再估价
597
+ * - 用户给了一个价格还价 → 评估是否合理
598
+ */
599
+ async handlePriceInquiry(content) {
600
+ try {
601
+ const botName = this.config.personality.name || '打工虾';
602
+ // 先用 LLM 分析用户的意图和具体需求
603
+ const analysisPrompt = `你是${botName},一个 AI Agent 助手。用户在询问任务价格。
604
+ 请分析用户的消息,提取以下信息:
605
+
606
+ 1. 用户是否提到了具体的任务需求(如"做个PPT"、"找个图片"、"翻译一段话")
607
+ 2. 用户是否给出了自己的出价(如"5块行不行"、"我出10元")
608
+ 3. 任务的复杂度描述(如"简单的"、"详细的"、"专业的")
609
+
610
+ 返回严格JSON格式,不要输出其他内容:
611
+ {"hasSpecificTask": true或false, "taskDescription": "提取的任务描述或null", "userOffer": 用户出价的分(整数)或null, "complexityHint": "simple"或"normal"或"complex"或null}`;
612
+ const analysis = await this.agentEngine.generateReply(analysisPrompt, `用户消息: "${content}"`);
613
+ let parsed = {};
614
+ if (analysis) {
615
+ const jsonMatch = analysis.match(/\{[\s\S]*?\}/);
616
+ if (jsonMatch) {
617
+ parsed = JSON.parse(jsonMatch[0]);
618
+ }
619
+ }
620
+ // 情况 A: 用户有具体任务需求
621
+ if (parsed.hasSpecificTask && parsed.taskDescription) {
622
+ // 从描述推断任务类型
623
+ const inferredType = this.inferTaskTypeForPricing(parsed.taskDescription);
624
+ const estimate = this.evaluator.estimatePrice(inferredType, parsed.taskDescription);
625
+ // 转换为元显示
626
+ const minYuan = (estimate.min / 100).toFixed(2);
627
+ const maxYuan = (estimate.max / 100).toFixed(2);
628
+ const suggestedYuan = (estimate.suggested / 100).toFixed(2);
629
+ // 如果用户出了价,评估是否合理
630
+ if (parsed.userOffer && parsed.userOffer > 0) {
631
+ return this.evaluateUserOffer(parsed.userOffer, estimate, parsed.taskDescription);
632
+ }
633
+ // 没有出价,给出估价
634
+ const replyPrompt = `你是${botName},语气${this.config.personality.tone || '友好热情'}。
635
+ 用户想了解某个任务的价格,你刚做了一个估价。
636
+
637
+ 估价结果:
638
+ - 任务类型: ${estimate.type}
639
+ - 价格区间: ¥${minYuan} - ¥${maxYuan}
640
+ - 建议价: ¥${suggestedYuan}
641
+ - 估价理由: ${estimate.reasoning}
642
+
643
+ 请用自然、友好的方式告诉用户这个估价,并引导用户发任务。
644
+ 要求:
645
+ 1. 不要显得像机器人报数字,要自然地说出来
646
+ 2. 提到价格只是一个参考,具体看需求
647
+ 3. 引导用户通过"新建任务"发给你
648
+ 4. 回复1-3句话,简洁自然
649
+ 5. 只输出回复内容,不要加引号`;
650
+ const reply = await this.agentEngine.generateReply(replyPrompt, '');
651
+ return reply || `这个任务大概 ¥${minYuan} 到 ¥${maxYuan} 左右~你可以在聊天窗口点"新建任务"发给我,我接了就能开始!`;
652
+ }
653
+ // 情况 B: 用户只问了价格,没说具体需求
654
+ const genericReplyPrompt = `你是${botName},语气${this.config.personality.tone || '友好热情'}。
655
+ 用户在问"要多少钱"/"什么价格",但没有说明具体要做什么任务。
656
+
657
+ 请自然地反问用户想做什么,表示价格取决于具体需求。
658
+ 例如可以问:你想做什么呀?是找图片、写文章、翻译还是别的?你说说需求,我给你估个价~
659
+
660
+ 要求:
661
+ 1. 不要列清单式地列举所有可能,太长了
662
+ 2. 自然友好,1-2句话
663
+ 3. 只输出回复内容,不要加引号`;
664
+ const reply = await this.agentEngine.generateReply(genericReplyPrompt, '');
665
+ return reply || '这得看你具体要做什么呀~你描述一下需求,我给你估个价!';
666
+ }
667
+ catch (err) {
668
+ this.logger.error('价格咨询处理异常', { error: err.message });
669
+ return '价格要看具体需求哦~你先说说想做什么,我给你估个价!';
670
+ }
671
+ }
672
+ /**
673
+ * 评估用户出价是否合理,生成讨价还价回复
674
+ */
675
+ async evaluateUserOffer(userOfferCents, estimate, taskDescription) {
676
+ const botName = this.config.personality.name || '打工虾';
677
+ const offerYuan = (userOfferCents / 100).toFixed(2);
678
+ const minYuan = (estimate.min / 100).toFixed(2);
679
+ const maxYuan = (estimate.max / 100).toFixed(2);
680
+ const suggestedYuan = (estimate.suggested / 100).toFixed(2);
681
+ let judgment;
682
+ if (userOfferCents >= estimate.min) {
683
+ judgment = 'reasonable'; // 合理或偏高
684
+ }
685
+ else if (userOfferCents >= estimate.min * 0.5) {
686
+ judgment = 'negotiable'; // 偏低但可以商量
687
+ }
688
+ else {
689
+ judgment = 'too_low'; // 太低了
690
+ }
691
+ const replyPrompt = `你是${botName},语气${this.config.personality.tone || '友好热情'}。
692
+ 用户想用 ¥${offerYuan} 做 "${taskDescription}" 这个任务。
693
+
694
+ 你的估价:
695
+ - 价格区间: ¥${minYuan} - ¥${maxYuan}
696
+ - 建议价: ¥${suggestedYuan}
697
+
698
+ 判断:${judgment === 'reasonable' ? '用户的出价合理甚至偏高' : judgment === 'negotiable' ? '用户的出价偏低,但可以商量' : '用户的出价远低于合理价格'}
699
+
700
+ 回复策略:
701
+ ${judgment === 'reasonable' ? '- 直接答应,表示没问题,引导发任务' : ''}
702
+ ${judgment === 'negotiable' ? '- 委婉说明这个价格可能不太够,但如果任务比较简单可以试试,引导发任务' : ''}
703
+ ${judgment === 'too_low' ? '- 礼貌说明价格太低做不了,给出合理价格范围,但语气要友好不伤和气' : ''}
704
+
705
+ 要求:
706
+ 1. 自然友好,不要像机器报价
707
+ 2. 1-3句话
708
+ 3. ${judgment === 'too_low' ? '可以适当解释为什么这个价格做不了' : ''}
709
+ 4. ${judgment !== 'too_low' ? '引导用户发任务' : ''}
710
+ 5. 只输出回复内容,不要加引号`;
711
+ const reply = await this.agentEngine.generateReply(replyPrompt, '');
712
+ return reply || '这个价格可能不太合适哦,要不你发个任务过来,具体聊聊?';
713
+ }
714
+ /**
715
+ * 从描述推断任务类型(用于估价)
716
+ */
717
+ inferTaskTypeForPricing(description) {
718
+ const desc = description.toLowerCase();
719
+ if (/图|画|壁纸|头像|背景|截图|照片|logo|海报/.test(desc))
720
+ return 'image_gen';
721
+ if (/写.*文章|写.*文案|写.*脚本|写.*帖子|写作|文案|小说|故事|报告/.test(desc))
722
+ return 'writing';
723
+ if (/翻译|英文|中文|日文|韩文|translate/.test(desc))
724
+ return 'translation';
725
+ if (/搜索|查找|调研|搜集|资料|搜.*信息|找.*信息|查一下/.test(desc))
726
+ return 'search_summary';
727
+ if (/分析|统计|数据|图表|报表|计算/.test(desc))
728
+ return 'data_analysis';
729
+ if (/代码|编程|开发|程序|网站|网页|app|接口|api/.test(desc))
730
+ return 'code_dev';
731
+ if (/回答|问题|解释|说明|聊天|对话/.test(desc))
732
+ return 'qa';
733
+ if (/回复|回信|消息|评论/.test(desc))
734
+ return 'text_reply';
735
+ return 'other';
736
+ }
574
737
  /**
575
738
  * 评论回复处理:调用 LLM 评估是否需要回复
576
739
  */