Add scheduled task automation skill with worker execution pipeline.
Memind CI / Test, build, and release guards (push) Failing after 18s
Memind CI / Test, build, and release guards (push) Failing after 18s
Introduce scheduled-task-automation for H5 and WeChat, persist tasks in h5_scheduled_tasks, and run due jobs via a dedicated worker that executes agent tasks and delivers results. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -4,6 +4,7 @@ import {
|
||||
isPageDataIntent,
|
||||
} from '../../chat-skills.mjs';
|
||||
import { shouldUseScheduleAssistant } from '../../schedule-intent.mjs';
|
||||
import { shouldUseScheduledTaskAutomation } from '../../scheduled-task-intent.mjs';
|
||||
import { buildCurrentTimeAgentPrefix } from '../../user-memory-profile.mjs';
|
||||
import { isPageGenerateText, wantsDocxDownload } from '../intent/patterns.mjs';
|
||||
import { buildWechatStandaloneImageInstruction } from '../image-generation-policy.mjs';
|
||||
@@ -81,6 +82,17 @@ export function buildWechatAgentPrompt(intent, {
|
||||
'',
|
||||
].filter(Boolean).join('\n')
|
||||
: '';
|
||||
const scheduledTaskAutomationHint = shouldUseScheduledTaskAutomation(agentText)
|
||||
? [
|
||||
'【定时自动任务要求】这条消息是 Scheduled Automation(到点自动执行并推送结果),不是待办提醒。',
|
||||
'开始前先加载 `scheduled-task-automation` skill,并严格按 skill 边界执行。',
|
||||
'先澄清缺失的执行时间或 taskSpec,再调用 scheduled_task_create / scheduled_task_list / scheduled_task_cancel。',
|
||||
'禁止在当前对话立即执行长任务;工具成功返回后才能确认已设置。',
|
||||
'一次性任务用 runAtLocal;循环任务用 hour/minute/weekday,禁止自行估算 Unix 毫秒。',
|
||||
intent?.msgId ? `调用 scheduled_task_create 时必须传入 sourceMessageId: ${intent.msgId}` : '',
|
||||
'',
|
||||
].filter(Boolean).join('\n')
|
||||
: '';
|
||||
const imageGenerationHint = buildWechatStandaloneImageInstruction(imagePolicy, {
|
||||
sourceMessageId: intent?.msgId,
|
||||
});
|
||||
@@ -92,6 +104,7 @@ export function buildWechatAgentPrompt(intent, {
|
||||
pageDataRepairHint,
|
||||
currentTimeHint,
|
||||
scheduleAssistantHint,
|
||||
scheduledTaskAutomationHint,
|
||||
imageGenerationHint,
|
||||
'【微信服务号语音消息】用户通过语音输入,以下是微信识别结果。',
|
||||
'',
|
||||
@@ -105,6 +118,7 @@ export function buildWechatAgentPrompt(intent, {
|
||||
docxDownloadHint,
|
||||
currentTimeHint,
|
||||
scheduleAssistantHint,
|
||||
scheduledTaskAutomationHint,
|
||||
'【微信服务号图片消息】用户发送了图片。',
|
||||
'如用户没有明确要求,请先根据图片内容给出简短理解,并询问下一步。',
|
||||
'',
|
||||
@@ -132,6 +146,7 @@ export function buildWechatAgentPrompt(intent, {
|
||||
return [
|
||||
currentTimeHint,
|
||||
scheduleAssistantHint,
|
||||
scheduledTaskAutomationHint,
|
||||
'【微信服务号位置消息】用户发送了当前位置。',
|
||||
location.label ? `地址:${location.label}` : '',
|
||||
location.latitude !== null && location.latitude !== undefined
|
||||
@@ -150,6 +165,7 @@ export function buildWechatAgentPrompt(intent, {
|
||||
return [
|
||||
currentTimeHint,
|
||||
scheduleAssistantHint,
|
||||
scheduledTaskAutomationHint,
|
||||
'【微信服务号链接消息】用户分享了链接。',
|
||||
link.title ? `标题:${link.title}` : '',
|
||||
link.description ? `描述:${link.description}` : '',
|
||||
@@ -171,6 +187,7 @@ export function buildWechatAgentPrompt(intent, {
|
||||
if (sessionPageContinuationHint) lines.push(sessionPageContinuationHint);
|
||||
if (pagePublishHint) lines.push(pagePublishHint);
|
||||
if (scheduleAssistantHint) lines.push(scheduleAssistantHint);
|
||||
if (scheduledTaskAutomationHint) lines.push(scheduledTaskAutomationHint);
|
||||
if (imageGenerationHint) lines.push(imageGenerationHint);
|
||||
lines.push(
|
||||
'【微信服务号新消息】请只回答下面这条用户消息,不要主动延续无关的历史话题。',
|
||||
|
||||
Reference in New Issue
Block a user