feat(engine): implement self-reflection (reflector) stage in multi-agent pipeline
- Added ReflectorAgent for meta-cognition and critical review between Research and Writing - Updated WriterAgent to explicitly address reflection critiques - Introduced 'g1nation.enableReflection' configuration setting - Added comprehensive integration tests for the self-reflection stage - Documented design decisions in ADR-0010 and related discussion records
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import { PlannerAgent, ResearcherAgent, WriterAgent } from './factory';
|
||||
import { AgentEngine, PipelineStage } from '../lib/engine';
|
||||
import { PlannerAgent, ResearcherAgent, ReflectorAgent, WriterAgent } from './factory';
|
||||
import { AgentEngine, PipelineStage, AgentExecuteOptions } from '../lib/engine';
|
||||
import { getConfig } from '../config';
|
||||
|
||||
export class AgentWorkflowManager {
|
||||
/**
|
||||
@@ -15,9 +16,16 @@ export class AgentWorkflowManager {
|
||||
const planner = new PlannerAgent(modelName);
|
||||
const researcher = new ResearcherAgent(modelName);
|
||||
const writer = new WriterAgent(modelName);
|
||||
const engine = new AgentEngine(planner, researcher, writer);
|
||||
// [Self-Reflection] 설정으로 비활성화하지 않은 경우에만 Reflector를 주입.
|
||||
const enableReflection = getConfig().enableReflection !== false;
|
||||
const reflector = enableReflection ? new ReflectorAgent(modelName) : undefined;
|
||||
const engine = new AgentEngine(planner, researcher, writer, reflector);
|
||||
const missionId = `mission_${Date.now()}`;
|
||||
|
||||
const runOptions: AgentExecuteOptions = {
|
||||
config: { enableReflection }
|
||||
};
|
||||
|
||||
try {
|
||||
return await engine.runMission(
|
||||
missionId,
|
||||
@@ -26,7 +34,8 @@ export class AgentWorkflowManager {
|
||||
signal,
|
||||
(stage: PipelineStage, message: string) => {
|
||||
onProgress(this.mapStageToUI(stage), message);
|
||||
}
|
||||
},
|
||||
runOptions
|
||||
);
|
||||
} catch (error: any) {
|
||||
if (error.name === 'AbortError' || error.message.includes('cancelled')) {
|
||||
@@ -41,6 +50,7 @@ export class AgentWorkflowManager {
|
||||
idle: '대기',
|
||||
planner: 'Planner',
|
||||
researcher: 'Researcher',
|
||||
reflector: 'Reflector',
|
||||
writer: 'Writer',
|
||||
completed: '완료',
|
||||
error: '오류'
|
||||
|
||||
Reference in New Issue
Block a user