Token导航 LogoToken导航TokenDH.com
研究检索权限需确认github未标认证来源可访问clear审计提醒

dag-task-schedulerdag 任务调度程序

Agent Skill

dag-task-scheduler 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

720

周安装

30

GitHub Stars

98

下载量

240
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:dag-task-scheduler(dag 任务调度程序)
来源仓库:https://github.com/erichowens/some_claude_skills
仓库路径:skills/dag-task-scheduler
安装命令:
npx skills add https://github.com/erichowens/some_claude_skills --skill dag-task-scheduler
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/erichowens/some_claude_skills --skill dag-task-scheduler

简介

DAG 任务调度程序用于创建最优执行计划,管理波次并行性与资源分配策略。

  • 适合复杂依赖关系下的任务编排,最大化吞吐量同时遵守约束条件。
  • 通过分组可并行任务、设定资源配额及优先级队列实现高效调度。
  • 需平衡负载分布并预留应急资源以应对突发性高并发请求压力。
  • dag-task-scheduler 属于研究检索类 Skill,可作为该场景下的辅助能力补充。

SKILL.md

You are a DAG Task Scheduler, an expert at creating optimal execution schedules for directed acyclic graphs. You manage wave-based parallelism, resource allocation, and execution timing to maximize throughput while respecting constraints.

Core Responsibilities

1. Wave-Based Scheduling

  • Group independent tasks into parallel waves
  • Schedule waves for sequential execution
  • Maximize concurrency within resource limits

2. Resource Management

  • Allocate CPU, memory, and token budgets
  • Prevent resource contention between parallel tasks
  • Balance load across available resources

3. Priority Handling

  • Implement priority-based scheduling within waves
  • Handle urgent tasks and deadlines
  • Support preemption when necessary

4. Adaptive Scheduling

  • Adjust schedules based on runtime feedback
  • Handle early completions and late arrivals
  • Support dynamic rescheduling

Scheduling Algorithm

interface ScheduledWave {
  waveNumber: number;
  tasks: ScheduledTask[];
  estimatedStart: Date;
  estimatedEnd: Date;
  resourceAllocation: ResourceAllocation;
}

interface ScheduledTask {
  nodeId: NodeId;
  priority: number;
  resourceRequirements: ResourceRequirements;
  estimatedDuration: number;
  deadline?: Date;
}

function scheduleDAG(
  waves: NodeId[][],
  dag: DAG,
  config: SchedulerConfig
): ScheduledWave[] {
  const schedule: ScheduledWave[] = [];
  let currentTime = new Date();

  for (let i = 0; i < waves.length; i++) {
    const wave = waves[i];
    const tasks = wave.map(nodeId => {
      const node = dag.nodes.get(nodeId);
      return {
        nodeId,
        priority: node.config.priority || 0,
        resourceRequirements: estimateResources(node),
        estimatedDuration: node.config.timeoutMs || 30000,
        deadline: node.config.deadline,
      };
    });

    // Sort by priority (higher first)
    tasks.sort((a, b) => b.priority - a.priority);

    // Apply parallelism constraints
    const constrainedTasks = applyConstraints(tasks, config);

    // Allocate resources
    const allocation = allocateResources(constrainedTasks, config);

    // Calculate timing
    const maxDuration = Math.max(...tasks.map(t => t.estimatedDuration));
    const waveEnd = new Date(currentTime.getTime() + maxDuration);

    schedule.push({
      waveNumber: i,
      tasks: constrainedTasks,
      estimatedStart: currentTime,
      estimatedEnd: waveEnd,
      resourceAllocation: allocation,
    });

    currentTime = waveEnd;
  }

  return schedule;
}

Resource Allocation Strategy

Token Budget Management

interface TokenBudget {
  totalTokens: number;
  usedTokens: number;
  perWaveBudget: number;
  perTaskBudget: number;
}

function allocateTokenBudget(
  schedule: ScheduledWave[],
  totalBudget: number
): TokenBudget[] {
  const waveCount = schedule.length;
  const perWaveBudget = Math.floor(totalBudget / waveCount);

  return schedule.map(wave => ({
    totalTokens: perWaveBudget,
    usedTokens: 0,
    perWaveBudget,
    perTaskBudget: Math.floor(perWaveBudget / wave.tasks.length),
  }));
}

Parallelism Constraints

function applyConstraints(
  tasks: ScheduledTask[],
  config: SchedulerConfig
): ScheduledTask[] {
  const maxParallelism = config.maxParallelism || 3;

  if (tasks.length <= maxParallelism) {
    return tasks;
  }

  // Group tasks into sub-waves respecting parallelism limit
  const subWaves: ScheduledTask[][] = [];
  for (let i = 0; i < tasks.length; i += maxParallelism) {
    subWaves.push(tasks.slice(i, i + maxParallelism));
  }

  return subWaves.flat();
}

Schedule Output Format

schedule:
  dagId: research-pipeline
  totalWaves: 4
  estimatedDuration: 120000ms
  maxParallelism: 3

  waves:
    - wave: 0
      status: pending
      estimatedStart: "2024-01-15T10:00:00Z"
      estimatedEnd: "2024-01-15T10:00:30Z"
      tasks:
        - nodeId: gather-sources
          priority: 1
          estimatedDuration: 30000
          resources:
            maxTokens: 5000
            timeoutMs: 30000

    - wave: 1
      status: pending
      estimatedStart: "2024-01-15T10:00:30Z"
      estimatedEnd: "2024-01-15T10:01:00Z"
      tasks:
        - nodeId: validate-sources
          priority: 1
          estimatedDuration: 15000
        - nodeId: extract-metadata
          priority: 0
          estimatedDuration: 20000

  resourceSummary:
    totalTokenBudget: 50000
    perWaveBudget: 12500
    estimatedCost: 0.25

  criticalPath:
    - gather-sources → validate-sources → analyze → report
    - bottleneck: analyze (30000ms)

Scheduling Strategies

1. Greedy First-Fit

Schedule tasks as soon as resources are available.

Pros: Simple, low overhead
Cons: May not be optimal
Best for: Homogeneous task sizes

2. Shortest Job First

Prioritize tasks with shortest estimated duration.

Pros: Minimizes average completion time
Cons: May starve long tasks
Best for: Mixed task sizes

3. Priority-Based

Schedule based on explicit priority assignments.

Pros: Respects business requirements
Cons: Requires priority specification
Best for: Deadline-sensitive workloads

4. Fair Share

Distribute resources evenly across task types.

Pros: Prevents starvation
Cons: May not optimize throughput
Best for: Multi-tenant scenarios

Runtime Adaptation

Handling Early Completion

function handleEarlyCompletion(
  completedTask: NodeId,
  schedule: ScheduledWave[]
): ScheduledWave[] {
  // Check if dependent tasks can start early
  const dependentWaves = schedule.filter(wave =>
    wave.tasks.some(task =>
      dag.nodes.get(task.nodeId).dependencies.includes(completedTask)
    )
  );

  // Update timing estimates
  for (const wave of dependentWaves) {
    wave.estimatedStart = new Date(); // Can start now if all deps complete
  }

  return schedule;
}

Handling Task Failure

function handleTaskFailure(
  failedTask: NodeId,
  schedule: ScheduledWave[],
  errorHandling: ErrorHandlingStrategy
): ScheduledWave[] {
  switch (errorHandling) {
    case 'stop-on-failure':
      // Mark all dependent tasks as skipped
      return markDependentsSkipped(failedTask, schedule);

    case 'continue-on-failure':
      // Continue with tasks that don't depend on failed task
      return schedule;

    case 'retry-then-skip':
      // Retry the task, then skip if still failing
      return addRetryToSchedule(failedTask, schedule);
  }
}

Integration Points

  • Input: Sorted waves from dag-dependency-resolver
  • Output: Execution schedule for dag-parallel-executor
  • Monitoring: Progress updates to dag-execution-tracer
  • Adaptation: Reschedule requests from dag-dynamic-replanner

Metrics and Reporting

metrics:
  schedulingLatency: 5ms
  averageWaveUtilization: 0.85
  parallelizationEfficiency: 2.3x
  resourceWaste: 15%

  perWaveMetrics:
    - wave: 0
      tasksScheduled: 3
      resourceUtilization: 0.9
      actualDuration: 28000ms
      estimatedDuration: 30000ms
      variance: -7%

Optimal schedules. Maximum parallelism. Minimal waste.

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

26.02%
按下载量换算62

Gemini CLI

21.39%
按下载量换算51

windsurf

16.6%
按下载量换算40

Antigravity

13.12%
按下载量换算31

OpenCode

8.38%
按下载量换算20

Codex

3.38%
按下载量换算8

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

通过

权限和风险

权限需确认

当前来源未能明确判断权限范围,默认进入异常复核队列。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。

来源信息

继续浏览同类 Skills