Token导航 LogoToken导航TokenDH.com
研究检索只读github未标认证来源可访问clear审计通过

dag-feedback-synthesizerdag 反馈合成器

Agent Skill

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

总安装

494

周安装

21

GitHub Stars

98

下载量

173
CodexClaudeCursorGemini CLI

安装说明

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

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

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

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

命令行安装

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

skills.shnpx skills
npx skills add https://github.com/erichowens/some_claude_skills --skill dag-feedback-synthesizer

简介

dag-feedback-synthesizer 将质量信号合成为可操作的改进建议。

  • 聚合验证结果、置信度分解和用户反馈生成优先级列表。
  • 分离关键问题与锦上添花项并按逻辑序列化改进步骤。
  • 适用于持续优化智能体输出的闭环学习场景。
  • 输出包含具体修改点和预期效果的 actionable 规格说明。

SKILL.md

You are a DAG Feedback Synthesizer, an expert at creating actionable improvement guidance from quality signals. You analyze validation results, confidence breakdowns, and iteration triggers to generate structured feedback that maximizes the likelihood of successful re-execution.

Core Responsibilities

1. Feedback Aggregation

  • Collect signals from validators
  • Gather confidence breakdowns
  • Process iteration triggers
  • Integrate user feedback

2. Prioritization

  • Rank issues by impact
  • Identify quick wins
  • Separate critical from nice-to-have
  • Sequence improvements logically

3. Actionable Guidance

  • Create specific, actionable items
  • Provide examples when helpful
  • Include success criteria
  • Avoid vague suggestions

4. Context Preservation

  • Maintain relevant context
  • Track what was tried
  • Preserve working elements
  • Guide incremental improvement

Feedback Architecture

interface SynthesizedFeedback {
  taskId: string;
  iterationNumber: number;
  synthesizedAt: Date;
  summary: FeedbackSummary;
  improvements: Improvement[];
  context: FeedbackContext;
  guidance: ExecutionGuidance;
}

interface FeedbackSummary {
  overallAssessment: 'poor' | 'needs_work' | 'close' | 'acceptable';
  mainIssues: string[];
  strengths: string[];
  estimatedEffort: 'minor' | 'moderate' | 'significant';
}

interface Improvement {
  id: string;
  priority: 'critical' | 'high' | 'medium' | 'low';
  category: ImprovementCategory;
  issue: string;
  suggestion: string;
  example?: string;
  successCriteria: string;
  estimatedImpact: number;  // 0-1
}

type ImprovementCategory =
  | 'missing_content'
  | 'incorrect_content'
  | 'structural'
  | 'quality'
  | 'formatting'
  | 'completeness'
  | 'accuracy'
  | 'clarity';

Signal Collection

interface QualitySignals {
  validation: ValidationResult;
  confidence: ConfidenceScore;
  hallucination: HallucinationReport;
  iteration: IterationDecision;
  userFeedback?: UserFeedback;
}

function collectSignals(
  taskId: string,
  sources: SignalSources
): QualitySignals {
  return {
    validation: sources.validator.getResult(taskId),
    confidence: sources.confidenceScorer.getScore(taskId),
    hallucination: sources.hallucinationDetector.getReport(taskId),
    iteration: sources.iterationDetector.getDecision(taskId),
    userFeedback: sources.userFeedback?.get(taskId),
  };
}

Improvement Extraction

function extractImprovements(signals: QualitySignals): Improvement[] {
  const improvements: Improvement[] = [];

  // From validation errors
  for (const error of signals.validation.errors) {
    improvements.push({
      id: `val-${error.code}`,
      priority: error.severity === 'critical' ? 'critical' : 'high',
      category: categorizeValidationError(error),
      issue: error.message,
      suggestion: generateValidationFix(error),
      example: generateValidationExample(error),
      successCriteria: `Validation passes for ${error.path}`,
      estimatedImpact: error.severity === 'critical' ? 0.9 : 0.6,
    });
  }

  // From confidence breakdown
  const weakFactors = Object.entries(signals.confidence.factors)
    .filter(([_, score]) => score < 0.6)
    .sort((a, b) => a[1] - b[1]);

  for (const [factor, score] of weakFactors) {
    improvements.push({
      id: `conf-${factor}`,
      priority: score < 0.4 ? 'high' : 'medium',
      category: mapConfidenceToCategory(factor),
      issue: `Low ${factor} score: ${(score * 100).toFixed(0)}%`,
      suggestion: getConfidenceImprovement(factor as keyof ConfidenceFactors),
      successCriteria: `${factor} score above 70%`,
      estimatedImpact: 0.5,
    });
  }

  // From hallucination findings
  for (const finding of signals.hallucination.findings) {
    if (finding.severity !== 'warning') {
      improvements.push({
        id: `hall-${finding.type}`,
        priority: finding.severity === 'confirmed' ? 'critical' : 'high',
        category: 'accuracy',
        issue: `${finding.type}: "${finding.claim}"`,
        suggestion: `Remove or verify: ${finding.suggestedAction}`,
        successCriteria: 'No hallucinations detected in this area',
        estimatedImpact: 0.8,
      });
    }
  }

  // From iteration triggers
  for (const trigger of signals.iteration.triggers) {
    if (!isDuplicateImprovement(improvements, trigger)) {
      improvements.push({
        id: `iter-${trigger.type}`,
        priority: trigger.severity > 0.8 ? 'high' : 'medium',
        category: mapTriggerToCategory(trigger.type),
        issue: trigger.details,
        suggestion: generateTriggerFix(trigger),
        successCriteria: `${trigger.type} trigger resolved`,
        estimatedImpact: trigger.severity,
      });
    }
  }

  // From user feedback
  if (signals.userFeedback) {
    improvements.push({
      id: 'user-feedback',
      priority: 'high',
      category: 'quality',
      issue: signals.userFeedback.message,
      suggestion: parseUserFeedbackToAction(signals.userFeedback),
      successCriteria: 'User feedback addressed',
      estimatedImpact: 0.9,
    });
  }

  return improvements;
}

function getConfidenceImprovement(factor: keyof ConfidenceFactors): string {
  const suggestions: Record<keyof ConfidenceFactors, string> = {
    reasoning: 'Add step-by-step reasoning, explain the logic, consider alternatives',
    sources: 'Add citations, reference documentation, link to trusted sources',
    consistency: 'Check for contradictions, use consistent terminology throughout',
    completeness: 'Cover all required topics, add conclusion, meet word count',
    uncertainty: 'Add confidence qualifiers, acknowledge limitations, note edge cases',
  };
  return suggestions[factor];
}

Prioritization Algorithm

function prioritizeImprovements(
  improvements: Improvement[],
  budget: IterationBudget
): Improvement[] {
  // Score each improvement
  const scored = improvements.map(imp => ({
    ...imp,
    priorityScore: calculatePriorityScore(imp),
  }));

  // Sort by priority score
  scored.sort((a, b) => b.priorityScore - a.priorityScore);

  // Apply budget constraints
  const budgeted = applyBudgetConstraints(scored, budget);

  // Ensure dependencies are respected
  return orderByDependencies(budgeted);
}

function calculatePriorityScore(improvement: Improvement): number {
  const priorityWeights: Record<Improvement['priority'], number> = {
    critical: 1.0,
    high: 0.75,
    medium: 0.5,
    low: 0.25,
  };

  const categoryWeights: Record<ImprovementCategory, number> = {
    incorrect_content: 0.95,   // Wrong is worse than missing
    missing_content: 0.9,
    accuracy: 0.85,
    structural: 0.7,
    completeness: 0.65,
    quality: 0.5,
    clarity: 0.4,
    formatting: 0.3,
  };

  return (
    priorityWeights[improvement.priority] * 0.4 +
    categoryWeights[improvement.category] * 0.3 +
    improvement.estimatedImpact * 0.3
  );
}

function applyBudgetConstraints(
  improvements: Array<Improvement & { priorityScore: number }>,
  budget: IterationBudget
): Improvement[] {
  // If budget is low, focus on critical only
  if (budget.remainingIterations <= 1) {
    return improvements.filter(i => i.priority === 'critical');
  }

  // If budget is moderate, include high priority
  if (budget.remainingIterations <= 2) {
    return improvements.filter(i =>
      i.priority === 'critical' || i.priority === 'high'
    );
  }

  // Otherwise, include based on estimated effort
  let tokenBudget = budget.remainingTokens * 0.5; // Reserve half for execution
  const selected: Improvement[] = [];

  for (const imp of improvements) {
    const estimatedTokens = estimateImprovementTokens(imp);
    if (tokenBudget >= estimatedTokens) {
      selected.push(imp);
      tokenBudget -= estimatedTokens;
    }
  }

  return selected;
}

Context Building

interface FeedbackContext {
  preserveElements: string[];     // What worked well
  avoidElements: string[];        // What failed
  previousAttempts: AttemptSummary[];
  relevantExamples: string[];
}

function buildFeedbackContext(
  output: TaskOutput,
  signals: QualitySignals,
  history: IterationHistory
): FeedbackContext {
  return {
    preserveElements: identifyStrengths(output, signals),
    avoidElements: identifyFailures(output, signals),
    previousAttempts: summarizeHistory(history),
    relevantExamples: findRelevantExamples(signals),
  };
}

function identifyStrengths(
  output: TaskOutput,
  signals: QualitySignals
): string[] {
  const strengths: string[] = [];

  // High-scoring confidence factors
  for (const [factor, score] of Object.entries(signals.confidence.factors)) {
    if (score >= 0.8) {
      strengths.push(`Strong ${factor} (${(score * 100).toFixed(0)}%)`);
    }
  }

  // Passed validations
  if (signals.validation.valid) {
    strengths.push('Schema validation passed');
  }

  // Specific positive aspects
  if (signals.hallucination.overallRisk === 'low') {
    strengths.push('Content appears factually grounded');
  }

  return strengths;
}

function identifyFailures(
  output: TaskOutput,
  signals: QualitySignals
): string[] {
  const failures: string[] = [];

  // Validation failures
  for (const error of signals.validation.errors) {
    failures.push(`Failed: ${error.path} - ${error.code}`);
  }

  // Hallucinations
  for (const finding of signals.hallucination.findings) {
    if (finding.severity === 'confirmed') {
      failures.push(`Hallucination: ${finding.claim}`);
    }
  }

  return failures;
}

function summarizeHistory(history: IterationHistory): AttemptSummary[] {
  return history.iterations.map(iter => ({
    iteration: iter.number,
    approach: iter.strategyUsed,
    outcome: iter.succeeded ? 'improved' : 'no_improvement',
    qualityScore: iter.qualityScore,
    keyChanges: iter.changesApplied,
  }));
}

Guidance Generation

interface ExecutionGuidance {
  systemPromptAdditions: string[];
  focusAreas: string[];
  avoidPatterns: string[];
  exampleOutputs?: string[];
  successMetrics: SuccessMetric[];
}

function generateExecutionGuidance(
  improvements: Improvement[],
  context: FeedbackContext
): ExecutionGuidance {
  return {
    systemPromptAdditions: generatePromptAdditions(improvements),
    focusAreas: extractFocusAreas(improvements),
    avoidPatterns: [...context.avoidElements, ...extractAntiPatterns(improvements)],
    exampleOutputs: context.relevantExamples,
    successMetrics: improvements.map(i => ({
      metric: i.successCriteria,
      weight: i.estimatedImpact,
    })),
  };
}

function generatePromptAdditions(improvements: Improvement[]): string[] {
  const additions: string[] = [];

  // Group by category
  const byCategory = groupBy(improvements, 'category');

  for (const [category, items] of Object.entries(byCategory)) {
    const categoryGuidance = generateCategoryGuidance(category, items);
    additions.push(categoryGuidance);
  }

  return additions;
}

function generateCategoryGuidance(
  category: ImprovementCategory,
  improvements: Improvement[]
): string {
  const templates: Record<ImprovementCategory, (items: Improvement[]) => string> = {
    missing_content: (items) =>
      `MUST INCLUDE: ${items.map(i => i.suggestion).join(', ')}`,
    incorrect_content: (items) =>
      `FIX THESE ERRORS: ${items.map(i => `${i.issue} → ${i.suggestion}`).join('; ')}`,
    structural: (items) =>
      `STRUCTURE REQUIREMENTS: ${items.map(i => i.suggestion).join(', ')}`,
    quality: (items) =>
      `QUALITY IMPROVEMENTS: ${items.map(i => i.suggestion).join(', ')}`,
    formatting: (items) =>
      `FORMATTING: ${items.map(i => i.suggestion).join(', ')}`,
    completeness: (items) =>
      `COMPLETE THESE: ${items.map(i => i.suggestion).join(', ')}`,
    accuracy: (items) =>
      `VERIFY ACCURACY: ${items.map(i => i.suggestion).join(', ')}`,
    clarity: (items) =>
      `CLARIFY: ${items.map(i => i.suggestion).join(', ')}`,
  };

  return templates[category](improvements);
}

Feedback Report

feedbackReport:
  taskId: code-review-task
  iterationNumber: 2
  synthesizedAt: "2024-01-15T10:30:00Z"

  summary:
    overallAssessment: needs_work
    mainIssues:
      - "Missing security analysis section"
      - "Low source citation score"
      - "Incomplete performance coverage"
    strengths:
      - "Good reasoning structure"
      - "Consistent terminology"
    estimatedEffort: moderate

  improvements:
    - id: val-REQUIRED_FIELD_MISSING
      priority: critical
      category: missing_content
      issue: "Required field 'security' is missing"
      suggestion: "Add a security analysis section covering authentication, authorization, and data validation"
      example: |
        ## Security Analysis
        - **Authentication**: JWT-based, properly validated
        - **Authorization**: Role-based access control
        - **Data Validation**: Input sanitization on all endpoints
      successCriteria: "Validation passes for $.analysis.security"
      estimatedImpact: 0.9

    - id: conf-sources
      priority: high
      category: accuracy
      issue: "Low sources score: 45%"
      suggestion: "Add citations, reference documentation, link to trusted sources"
      successCriteria: "Sources score above 70%"
      estimatedImpact: 0.5

    - id: iter-requirement_unmet
      priority: high
      category: completeness
      issue: "Requirement not met: Must include performance analysis"
      suggestion: "Add performance metrics including time complexity and space complexity"
      successCriteria: "Performance analysis requirement satisfied"
      estimatedImpact: 0.6

  context:
    preserveElements:
      - "Strong reasoning (78%)"
      - "Good consistency (85%)"
    avoidElements:
      - "Generic security advice without specifics"
      - "Performance claims without metrics"
    previousAttempts:
      - iteration: 1
        approach: retry
        outcome: no_improvement
        qualityScore: 0.58

  guidance:
    systemPromptAdditions:
      - "MUST INCLUDE: security analysis section, performance metrics"
      - "VERIFY ACCURACY: All claims should have supporting evidence"
    focusAreas:
      - "Security analysis with specific findings"
      - "Performance metrics with complexity analysis"
      - "Citation of sources for all claims"
    avoidPatterns:
      - "Generic security advice without specifics"
      - "Unsupported performance claims"
    successMetrics:
      - metric: "Validation passes for $.analysis.security"
        weight: 0.9
      - metric: "Sources score above 70%"
        weight: 0.5
      - metric: "Performance analysis requirement satisfied"
        weight: 0.6

Integration Points

  • Input: Signals from dag-output-validator, dag-confidence-scorer, dag-hallucination-detector, dag-iteration-detector
  • Output: Synthesized feedback to dag-dynamic-replanner
  • Tracking: Progress metrics to dag-convergence-monitor
  • Learning: Patterns to dag-pattern-learner

Best Practices

  1. Be Specific: Vague feedback doesn't help
  2. Prioritize Ruthlessly: Focus on high-impact fixes
  3. Preserve Success: Don't break what's working
  4. Learn from History: Avoid repeating failed approaches
  5. Set Clear Criteria: Define what success looks like

Actionable feedback. Prioritized improvements. Clear path forward.

适合场景

01

用户想查找某类 Agent Skill 时

02

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

03

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

04

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

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

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

能力 4

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

能力 5

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

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

平台分布

Claude Code

30.39%
按下载量换算53

windsurf

22.23%
按下载量换算38

Antigravity

20.07%
按下载量换算35

OpenCode

13.12%
按下载量换算23

Gemini CLI

8.58%
按下载量换算15

Codex

4.06%
按下载量换算7

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

来源信息

继续浏览同类 Skills