-
Notifications
You must be signed in to change notification settings - Fork 7.6k
Open
Description
背景
许多 Arthas 命令(如 watch, trace, monitor, stack)都是长时运行的操作,会持续输出结果。标准的同步 MCP tools/call 方法由于潜在的超时问题以及无法有效处理中间输出或取消操作,并不适合这些命令。
目标
实现 MCP Tasks 能力 (tasks/*),以支持长时运行工具的异步执行。
需求
- 任务管理: 实现
tasks/list,tasks/cancel以及通过tools/call创建任务。 - 阻塞式结果获取: 实现
tasks/result接口,允许客户端通过长轮询(Long-polling)高效等待任务完成,避免忙轮询。 - 上下文集成: 确保 Arthas 命令的输出能通过
TaskContext正确重定向到 Task 的输出缓冲区。 - 取消功能: 当任务被取消时,支持中断底层的 Arthas 作业(Job)。
- 工具协商:
- 支持在工具级别定义
taskSupport属性 ("required", "optional", "forbidden")。 - 强制 Monitor 类工具(如 watch, trace)必须使用任务模式执行。
- 简单工具默认设为 "forbidden"(仅支持同步),以简化调用。
- 支持在工具级别定义
- 无状态模式适配: 在 Stateless 模式下显式禁用 Tasks 功能,因为该模式缺乏必要的 Session 上下文。
Metadata
Metadata
Assignees
Labels
No labels