Skip to content

Feature:Add Scheduled tasks - #73

Open
mengnankkkk wants to merge 15 commits into
mainfrom
feature/add_task
Open

Feature:Add Scheduled tasks#73
mengnankkkk wants to merge 15 commits into
mainfrom
feature/add_task

Conversation

@mengnankkkk

@mengnankkkk mengnankkkk commented Aug 5, 2026

Copy link
Copy Markdown
Member

任务调度用数据库锁做轻量分布式协调:多个实例轮询时,只有抢到 lock_owner + lock_until 的实例能执行。
锁不是永久锁,任务失败或实例异常后可以靠 lock_until 自动释放。
锁时长交给部署配置,避免长任务超过固定 30 分钟后被其他实例重复执行 SQL/生成报告。
普通聊天保留 ask_user 挂起能力;定时任务关闭人工追问能力,让 Agent 自己判断无法完成并结束。
强约束放在工具层,prompt 只作为行为提示,不作为可靠控制边界。
主要修改
新增了定时任务的后端 CRUD、实体、Mapper、调度器、下次执行时间计算逻辑,以及前端定时任务管理页。调度器负责轮询到期任务、抢锁、异步执行、完成后计算下一次运行时间。AgentService 和 AskUserTool 增加了 allowUserPrompt 执行上下文,用来区分普通会话和定时任务。
#36

- add scheduled task CRUD, dispatch, run history, and owner-based run locking
- validate schedule expressions, positive intervals, and timezone-aware next runs
- add scheduled task management frontend page
- append scheduled task tables to data_source.sql
@lzq986

lzq986 commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

大的PR,加一下设计思路以作记录
顺带加个issue关联

@lzq986
lzq986 requested a review from VLSMB August 5, 2026 14:13
@VLSMB

VLSMB commented Aug 8, 2026

Copy link
Copy Markdown
Member

如果allowUserPrompt字段只是用来区分普通任务或者定时任务,而没有别的功能的话,是不是这个名字体现不出来普通任务或者定时任务。我觉得可以在ctx上加一个任务类型字段,然后定义一个boolean allowUserPrompt()方法,内部根据任务类型返回true/false

Comment thread data-agent-backend/src/main/java/io/github/malonetalk/agent/AgentService.java Outdated
Comment thread data-agent-backend/src/main/java/io/github/malonetalk/agent/AgentService.java Outdated
Comment thread data-agent-backend/src/main/java/io/github/malonetalk/agent/ToolCallContext.java Outdated
- collapse AgentService chat stream overloads into ToolCallContext
- move TaskType out of ToolCallContext and restore context builder
- move scheduled task persistence logic out of controller
- add scheduled task response DTO and scheduler service operations
- split scheduled task execution from mapper-backed scheduling service
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants