Skip to content

增强异步任务功能:支持模型指定、时长控制、多任务隔离与智能合并 #45

@jejwe

Description

@jejwe

增强异步任务功能:支持模型指定、时长控制、多任务隔离与智能合并

功能概述

当前异步任务功能需进一步增强,以支持更灵活的任务配置、多模型并行处理及智能合并能力。通过新增模型指定、运行时长控制、worktree隔离及多任务合并机制,提升异步任务的实用性与效率,满足长任务运行、多方案对比等场景需求。

详细需求

1. 异步任务参数增强

  • /async 标识:保持使用/async明确标识异步子智能体任务
  • /model 指定模型:支持通过/model [模型名]参数为任务指定运行模型(如v3glm4-6等),实现同一任务不同模型的并行处理
  • /time 时长控制:支持通过/time [时长]参数设置任务最小运行时长(如10m1h),确保任务有足够时间完成细致检查与处理,减少后续review负担
  • /name 唯一命名:通过/name [任务名]参数指定唯一任务名称,用于任务管理、查询与合并

2. 任务管理能力

  • 任务列表查看:支持通过命令(如$snow --task-list)查看所有异步任务的状态(运行中、已完成、失败等)
  • 任务详情查询:支持查看指定任务的实时日志、已完成修改内容(如通过类似!cursor ~/.snow/tasks/[任务名]的方式)
  • 任务状态展示:在UI底部状态栏显示异步任务数量及运行状态,支持用户实时感知任务进度

3. 多任务隔离与并行

  • worktree隔离:当多个任务使用不同模型或处理可能冲突的内容时,自动在独立worktree中运行,避免相互干扰
  • 并发支持:允许同时提交多个异步任务(如10个并发),无需担心任务间的即时冲突

4. 任务合并机制

  • 单任务合并:支持通过命令(如$snow --merge [任务名])将指定完成任务的修改合并回主分支
  • 多任务合并:支持通过逗号分隔任务名(如$snow --merge task1,task2,task3)合并多个任务,系统自动处理合并冲突
  • 智能选择合并(Best Of N):支持让指定模型评估多个任务结果并选择最优方案合并,如$snow --merge task1,task2 -query "选择最优实现合并",由模型根据查询条件自动决策

使用示例

  1. 创建多模型异步任务

    $snow --task /async /model v3 /time 10m /name task1 "在@./src/utils/task.js中添加任务重试逻辑"
    $snow --task /async /model glm4-6 /time 15m /name task2 "在@./src/utils/task.js中添加任务重试逻辑"
  2. 查看任务列表

    $snow --task-list
  3. 合并指定任务

    $snow --merge task1,task2 -query "选择更符合代码规范的实现合并"

预期收益

  • 提升异步任务灵活性:支持按需求选择模型,适配不同任务场景
  • 提高代码质量:通过时长控制让任务充分处理,减少review负担
  • 支持多方案对比:多模型并行运行同一任务,便于选择最优实现
  • 简化多任务管理:通过隔离与自动冲突解决,降低多任务并行的操作复杂度

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions