Version: 0.9.28.dev.260418

后端:
1. 查任务功能(query_tasks)从旧 Agent 链路迁移为新 execute 工具
- 新增 newAgent/tools/taskquery.go:自包含 TaskQueryToolHandler,零引用旧 agent 包;参数校验(象限1~4、排序白名单、limit上限20)、时间边界解析(四种格式自动补齐)、结构化 JSON 结果
- newAgent/tools/registry.go:DefaultRegistryDeps 新增 TaskQuery 字段;scheduleFreeTools 新增 query_tasks;注册 query_tasks 读工具(无需 confirm,不依赖 ScheduleState)
- newAgent/prompt/execute.go:有 plan / ReAct 两套系统 prompt 执行规则新增 query_tasks 读操作说明,支持按象限、关键词、截止时间筛选排序
- service/agentsvc/agent_task_query.go:queryTasksForAgent 导出为 QueryTasksForTool,供启动层闭包调用;内部调用同步改为 QueryTasksForTool
- cmd/start.go:NewDefaultRegistryWithDeps 注入 TaskQuery 闭包,桥接新工具参数到旧 service 层查询能力,复用已有过滤/排序/紧急度提升逻辑;旧链路全部保留不动
2. order_guard 条件触发——仅日程写操作后走守卫节点
- newAgent/model/common_state.go:新增 HasScheduleWriteOps 标记字段;ResetForNextRun 追加清理
- newAgent/node/execute.go:executeToolCall / executePendingTool 两处写工具执行后,通过 registry.IsWriteTool 判断并置 HasScheduleWriteOps=true
- newAgent/graph/common_graph.go:branchAfterExecute 分支条件新增 HasScheduleWriteOps 判断,非日程操作(query_tasks / quick_note_create / web_search 等)直接 deliver 跳过 order_guard;branchAfterRoughBuild 不变,粗排天然是写操作

前端:
1. 助手面板新增 SSE 流式请求停止按钮
- AssistantPanel.vue:新增 streamAbortController ref 和 stopStreaming 方法;fetchChatStream / streamAssistantReply 透传 AbortSignal;sendMessage 创建 AbortController,catch 区分用户主动中断与异常;流式期间显示红色停止按钮替代发送按钮
2. 象限卡片任务列表取消硬截断,改为滚动查看
- TaskQuadrantCard.vue:visibleTasks 不再 slice(0,4),全部展示;quadrant-list 新增 max-height + overflow-y + 自定义滚动条样式

仓库:无
This commit is contained in:
Losita
2026-04-18 13:32:26 +08:00
parent 4fbf9397d2
commit a5d301ceb9
10 changed files with 498 additions and 26 deletions

View File

@@ -40,10 +40,11 @@ const executeSystemPromptWithPlan = `
2. 读操作action=continue + tool_call。
3. 写操作(日程变更,如 place/move/swap/batch_move/unplace/spread_even/min_context_switchaction=confirm + tool_call。
4. quick_note_create记录任务/提醒若信息足够action=continue + tool_call并显式填写 priority_group若信息不足且无法可靠推断action=ask_user 先追问。quick_note_create 调用时和调用后 speak 必须留空,收口由 deliver 阶段统一完成调用成功后可继续done/next_plan/continue处理其他任务但不要为 quick_note_create 本身补充说明。
5. 缺关键上下文且无法通过工具补齐action=ask_user
6. 仅当当前步骤完成时输出 action=next_plan并在 goal_check 对照 done_when 给出证据
7. 仅当整体任务完成时输出 action=done并在 goal_check 总结完成证据。
8. 流程应正式终止时输出 action=abort。`
5. query_tasks查看/筛选任务列表读操作action=continue + tool_call。用于回答"我有什么任务""最近有什么急事"等问题,支持按象限、关键词、截止时间范围筛选和排序
6. 缺关键上下文且无法通过工具补齐action=ask_user
7. 仅当当前步骤完成时输出 action=next_plan,并在 goal_check 对照 done_when 给出证据。
8. 仅当整体任务完成时输出 action=done并在 goal_check 总结完成证据。
9. 流程应正式终止时输出 action=abort。`
const executeSystemPromptReAct = `
你是 SmartMate 的执行器,当前处于自由执行模式(无预定义 plan 步骤)。
@@ -82,9 +83,10 @@ const executeSystemPromptReAct = `
2. 读操作action=continue + tool_call。
3. 写操作(日程变更,如 place/move/swap/batch_move/unplace/spread_even/min_context_switchaction=confirm + tool_call。
4. quick_note_create记录任务/提醒若信息足够action=continue + tool_call并显式填写 priority_group若信息不足且无法可靠推断action=ask_user 先追问。quick_note_create 调用时和调用后 speak 必须留空,收口由 deliver 阶段统一完成调用成功后可继续done/next_plan/continue处理其他任务但不要为 quick_note_create 本身补充说明。
5. 缺关键上下文且无法通过工具补齐action=ask_user
6. 任务完成action=done并在 goal_check 总结完成证据
7. 流程应正式终止action=abort。`
5. query_tasks查看/筛选任务列表读操作action=continue + tool_call。用于回答"我有什么任务""最近有什么急事"等问题,支持按象限、关键词、截止时间范围筛选和排序
6. 缺关键上下文且无法通过工具补齐action=ask_user
7. 任务完成action=done并在 goal_check 总结完成证据。
8. 流程应正式终止action=abort。`
// BuildExecuteSystemPrompt 返回执行阶段系统提示词(有 plan 模式)。
func BuildExecuteSystemPrompt() string {