mirror of
https://github.com/mfish-qf/mfish-nocode.git
synced 2026-08-30 17:12:14 +08:00
feat: 增加前端操作
This commit is contained in:
@@ -280,6 +280,14 @@ public abstract class BaseAssistant implements IClientAssistant, ToolCapable {
|
||||
+ "\n用户问题:" + prompt;
|
||||
}
|
||||
|
||||
// 在用户 prompt 前注入当前日期,防止 LLM 使用训练数据中的过期日期
|
||||
// LLM 对 user message 的关注度高于 system message,在此注入比仅靠系统提示词更可靠
|
||||
java.time.LocalDate today = java.time.LocalDate.now();
|
||||
java.time.LocalDate tomorrow = today.plusDays(1);
|
||||
java.time.LocalDate dayAfter = today.plusDays(2);
|
||||
prompt = "【当前真实日期】今天=" + today + ",明天=" + tomorrow + ",后天=" + dayAfter
|
||||
+ "。用户提到相对日期时必须使用这些日期,严禁使用你训练数据中的日期。\n\n用户输入:" + prompt;
|
||||
|
||||
final String finalPrompt = prompt;
|
||||
final String messageId = aiRequest.getId();
|
||||
// 清理上次请求可能残留的前端操作指令和 emitter
|
||||
|
||||
@@ -144,8 +144,8 @@ public class Executor {
|
||||
return "原始需求:" + plan.getOriginalPrompt() + "\n\n" +
|
||||
"当前是第 " + (stepIndex + 1) + " 步,共 " + plan.getSteps().size() + " 步。\n" +
|
||||
"这一步的任务:" + step.getDescription() + "\n\n" +
|
||||
"当前日期:今天=" + today + ",明天=" + tomorrow + ",后天=" + dayAfter +
|
||||
"(用户提到相对日期时请转换为具体日期,格式 yyyy-MM-dd HH:mm:ss)\n\n" +
|
||||
"【当前真实日期】今天=" + today + ",明天=" + tomorrow + ",后天=" + dayAfter
|
||||
+ "(必须使用这些日期,严禁使用训练数据中的日期;用户提到相对日期时转换为具体日期,格式 yyyy-MM-dd HH:mm:ss)\n\n" +
|
||||
"""
|
||||
# 执行要求(必须严格遵守)
|
||||
1. **必须实际调用工具**:你已被注入了完成本步骤所需的全部工具,工具列表已在上方列出。必须从中选择匹配的工具并实际调用,不得仅描述"建议调用"或"需要调用"而不执行。
|
||||
|
||||
@@ -48,11 +48,12 @@ public class MfishAssistant extends BaseAssistant {
|
||||
3. 技术支持人员
|
||||
4. 客户服务
|
||||
|
||||
## 当前日期
|
||||
## 当前日期(必须使用此日期,禁止使用你的训练数据中的日期)
|
||||
今天:""" + today + "(" + today.getDayOfWeek().getDisplayName(java.time.format.TextStyle.FULL, java.util.Locale.CHINESE) + ")\n" +
|
||||
"明天:" + tomorrow + "\n" +
|
||||
"后天:" + dayAfter + """
|
||||
当用户提到"明天"、"后天"等相对日期时,请转换为上述具体日期。
|
||||
【强制】当用户提到"今天"、"明天"、"后天"等相对日期时,必须使用上方提供的真实日期,
|
||||
严禁使用你训练数据中的日期(如2025年的日期)。所有日期计算必须基于上方今天的日期。
|
||||
时间格式要求:yyyy-MM-dd HH:mm:ss(如 """ + tomorrow + " 00:00:00)\n\n" +
|
||||
"""
|
||||
## 工具使用与交互规则
|
||||
|
||||
@@ -185,7 +185,10 @@ public class ToolRuntime {
|
||||
sb.append("3. 没有合适工具时,直接回答用户。\n");
|
||||
sb.append("4. 工具调用失败时,根据错误信息调整参数或选择其他工具。\n");
|
||||
if (hasSkill && hasFrontend) {
|
||||
sb.append("5. 如果调用 skill.* 获取到操作指南,必须继续按指南调用业务工具和 frontend.* 工具,不要只返回指南内容。\n");
|
||||
sb.append("5. 【强制】如果工具列表中包含 skill.* 开头的工具,且用户需求属于该 skill 对应的领域(如请假、代码生成),\n");
|
||||
sb.append(" 必须优先调用 skill 工具获取操作指南。获取指南后,必须立即按指南中的步骤顺序逐个调用对应工具\n");
|
||||
sb.append(" (包括 frontend.navigate 路由跳转、frontend.refresh 页面刷新等前端操作工具),\n");
|
||||
sb.append(" 严禁仅返回指南内容而不执行,严禁跳过任何前端操作步骤。\n");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
@@ -26,9 +26,11 @@ description: 指导 AI 完成请假申请的完整流程:路由跳转、信息
|
||||
| 结束时间 | endTime | 请假结束时间 | yyyy-MM-dd HH:mm:ss | "2天"→开始时间+2天23:59:59,"3天"→+3天 |
|
||||
| 请假原因 | reason | 详细请假原因 | 字符串 | 用户提供的描述性语句 |
|
||||
|
||||
**推断示例**:
|
||||
**【强制】日期规则**:必须使用系统提示词中提供的"当前日期"作为计算基准,严禁使用你训练数据中的日期。例如系统提示词显示今天是 2026-07-29,则"明天"=2026-07-30,不是 2025 年的任何日期。
|
||||
|
||||
**推断示例**(假设系统提示词中今天=2026-07-29):
|
||||
- 用户:"请个年假,2天 明天开始,世界那么大我想去看看"
|
||||
- leaveType=3(年假),startTime=明日00:00:00,endTime=后日23:59:59,reason="世界那么大我想去看看",title="年假申请"
|
||||
- leaveType=3(年假),startTime=2026-07-30 00:00:00,endTime=2026-07-31 23:59:59,reason="世界那么大我想去看看",title="年假申请"
|
||||
- 所有字段均可推断,无需追问,直接执行步骤1
|
||||
|
||||
**仅当以下信息缺失时才追问**:
|
||||
|
||||
Reference in New Issue
Block a user