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:
g1nation
2026-05-14 01:47:28 +09:00
parent e075779635
commit 8da9532ca1
18 changed files with 610 additions and 124 deletions
+14 -4
View File
@@ -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: '오류'