feat: 增加前端操作

This commit is contained in:
qiufeng
2026-07-30 14:16:51 +08:00
parent edbcaabfcb
commit 09d5e3ef13
5 changed files with 21 additions and 7 deletions
@@ -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:00endTime=后日23:59:59reason="世界那么大我想去看看"title="年假申请"
- leaveType=3(年假),startTime=2026-07-30 00:00:00endTime=2026-07-31 23:59:59reason="世界那么大我想去看看"title="年假申请"
- 所有字段均可推断,无需追问,直接执行步骤1
**仅当以下信息缺失时才追问**