autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
78 lines (77 loc) • 2.28 kB
TypeScript
/**
* forced-summary.js — 强制退出后的摘要生成
*
* 强制退出后的摘要生成独立模块,
* 供 AgentRuntime.reactLoop() 在循环退出后调用。
*
* 支持三种模式 (根据 source + tracker.pipelineType 判断):
* - system + analyst: 输出 Markdown 分析报告 (供 Quality Gate 评估)
* - system + bootstrap: 输出 dimensionDigest JSON (供维度编排消费)
* - user: 输出人类可读的 Markdown 结构化总结 (前端 AI Chat 展示)
*
* @module forced-summary
*/
import type { AiProvider } from '#external/ai/AiProvider.js';
/** Known tool-call argument fields accessed in this module */
interface ToolCallArgs {
title?: string;
category?: string;
filePath?: string;
filePaths?: string[];
patterns?: string[];
query?: string;
pattern?: string;
className?: string;
name?: string;
protocolName?: string;
rootClass?: string;
directory?: string;
[key: string]: unknown;
}
/** A recorded tool invocation */
interface ToolCallRecord {
tool: string;
args?: ToolCallArgs;
params?: ToolCallArgs;
result?: unknown;
durationMs?: number;
name?: string;
}
/** Token usage accumulator */
interface TokenUsage {
input: number;
output: number;
}
/** Options for {@link produceForcedSummary} */
interface ForcedSummaryOpts {
aiProvider: AiProvider;
source?: string;
toolCalls?: ToolCallRecord[];
tracker?: {
iteration?: number;
pipelineType?: string;
};
contextWindow?: unknown;
prompt: string;
tokenUsage?: TokenUsage;
}
/**
* 生成强制摘要
*
* @param opts.aiProvider LLM 提供商
* @param [opts.source] 'user' | 'system'
* @param opts.toolCalls 工具调用记录
* @param [opts.tracker] ExplorationTracker 实例
* @param [opts.contextWindow] ContextWindow 实例 (用于避免超出 token)
* @param opts.prompt 原始用户 prompt
* @param [opts.tokenUsage] token 用量 (会被修改)
* @returns }>}
*/
export declare function produceForcedSummary({ aiProvider, source, toolCalls, tracker, contextWindow, prompt, tokenUsage, }: ForcedSummaryOpts): Promise<{
reply: string;
tokenUsage: {
input: number;
output: number;
};
}>;
export default produceForcedSummary;