knight-agent 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Host.d.ts +23 -0
- package/Host.d.ts.map +1 -0
- package/Host.js +23 -0
- package/Host.js.map +1 -0
- package/base/AbstractAgent.d.ts +100 -0
- package/base/AbstractAgent.d.ts.map +1 -0
- package/base/AbstractAgent.js +23 -0
- package/base/AbstractAgent.js.map +1 -0
- package/base/AbstractDialog.d.ts +54 -0
- package/base/AbstractDialog.d.ts.map +1 -0
- package/base/AbstractDialog.js +86 -0
- package/base/AbstractDialog.js.map +1 -0
- package/base/AbstractModule.d.ts +7 -0
- package/base/AbstractModule.d.ts.map +1 -0
- package/base/AbstractModule.js +13 -0
- package/base/AbstractModule.js.map +1 -0
- package/base/AbstractObject.d.ts +18 -0
- package/base/AbstractObject.d.ts.map +1 -0
- package/base/AbstractObject.js +25 -0
- package/base/AbstractObject.js.map +1 -0
- package/base/AbstractReason.d.ts +44 -0
- package/base/AbstractReason.d.ts.map +1 -0
- package/base/AbstractReason.js +23 -0
- package/base/AbstractReason.js.map +1 -0
- package/base/AbstractSkill.d.ts +25 -0
- package/base/AbstractSkill.d.ts.map +1 -0
- package/base/AbstractSkill.js +3 -0
- package/base/AbstractSkill.js.map +1 -0
- package/base/AbstractTool.d.ts +34 -0
- package/base/AbstractTool.d.ts.map +1 -0
- package/base/AbstractTool.js +3 -0
- package/base/AbstractTool.js.map +1 -0
- package/base/index.d.ts +8 -0
- package/base/index.d.ts.map +1 -0
- package/base/index.js +24 -0
- package/base/index.js.map +1 -0
- package/docs/ARCHITECTURE.md +601 -0
- package/docs/README.md +562 -0
- package/index.d.ts +4 -0
- package/index.d.ts.map +1 -0
- package/index.js +25 -0
- package/index.js.map +1 -0
- package/module/AgentModule/Agent.d.ts +55 -0
- package/module/AgentModule/Agent.d.ts.map +1 -0
- package/module/AgentModule/Agent.js +210 -0
- package/module/AgentModule/Agent.js.map +1 -0
- package/module/AgentModule/AgentModule.d.ts +26 -0
- package/module/AgentModule/AgentModule.d.ts.map +1 -0
- package/module/AgentModule/AgentModule.js +66 -0
- package/module/AgentModule/AgentModule.js.map +1 -0
- package/module/AgentModule/Memory.d.ts +55 -0
- package/module/AgentModule/Memory.d.ts.map +1 -0
- package/module/AgentModule/Memory.js +288 -0
- package/module/AgentModule/Memory.js.map +1 -0
- package/module/AgentModule/index.d.ts +2 -0
- package/module/AgentModule/index.d.ts.map +1 -0
- package/module/AgentModule/index.js +18 -0
- package/module/AgentModule/index.js.map +1 -0
- package/module/DialogModule/Dialog.d.ts +14 -0
- package/module/DialogModule/Dialog.d.ts.map +1 -0
- package/module/DialogModule/Dialog.js +27 -0
- package/module/DialogModule/Dialog.js.map +1 -0
- package/module/DialogModule/DialogModule.d.ts +39 -0
- package/module/DialogModule/DialogModule.d.ts.map +1 -0
- package/module/DialogModule/DialogModule.js +118 -0
- package/module/DialogModule/DialogModule.js.map +1 -0
- package/module/DialogModule/index.d.ts +3 -0
- package/module/DialogModule/index.d.ts.map +1 -0
- package/module/DialogModule/index.js +19 -0
- package/module/DialogModule/index.js.map +1 -0
- package/module/ReasonModule/ChainReason.d.ts +11 -0
- package/module/ReasonModule/ChainReason.d.ts.map +1 -0
- package/module/ReasonModule/ChainReason.js +34 -0
- package/module/ReasonModule/ChainReason.js.map +1 -0
- package/module/ReasonModule/CommanderReason.d.ts +15 -0
- package/module/ReasonModule/CommanderReason.d.ts.map +1 -0
- package/module/ReasonModule/CommanderReason.js +151 -0
- package/module/ReasonModule/CommanderReason.js.map +1 -0
- package/module/ReasonModule/CompetitiveReason.d.ts +13 -0
- package/module/ReasonModule/CompetitiveReason.d.ts.map +1 -0
- package/module/ReasonModule/CompetitiveReason.js +133 -0
- package/module/ReasonModule/CompetitiveReason.js.map +1 -0
- package/module/ReasonModule/PlanReason.d.ts +25 -0
- package/module/ReasonModule/PlanReason.d.ts.map +1 -0
- package/module/ReasonModule/PlanReason.js +133 -0
- package/module/ReasonModule/PlanReason.js.map +1 -0
- package/module/ReasonModule/ReasonModule.d.ts +41 -0
- package/module/ReasonModule/ReasonModule.d.ts.map +1 -0
- package/module/ReasonModule/ReasonModule.js +83 -0
- package/module/ReasonModule/ReasonModule.js.map +1 -0
- package/module/ReasonModule/ReflectReason.d.ts +15 -0
- package/module/ReasonModule/ReflectReason.d.ts.map +1 -0
- package/module/ReasonModule/ReflectReason.js +86 -0
- package/module/ReasonModule/ReflectReason.js.map +1 -0
- package/module/ReasonModule/TreeReason.d.ts +16 -0
- package/module/ReasonModule/TreeReason.d.ts.map +1 -0
- package/module/ReasonModule/TreeReason.js +139 -0
- package/module/ReasonModule/TreeReason.js.map +1 -0
- package/module/ReasonModule/index.d.ts +8 -0
- package/module/ReasonModule/index.d.ts.map +1 -0
- package/module/ReasonModule/index.js +24 -0
- package/module/ReasonModule/index.js.map +1 -0
- package/module/SkillModule/SkillModule.d.ts +42 -0
- package/module/SkillModule/SkillModule.d.ts.map +1 -0
- package/module/SkillModule/SkillModule.js +134 -0
- package/module/SkillModule/SkillModule.js.map +1 -0
- package/module/SkillModule/index.d.ts +2 -0
- package/module/SkillModule/index.d.ts.map +1 -0
- package/module/SkillModule/index.js +18 -0
- package/module/SkillModule/index.js.map +1 -0
- package/module/ToolModule/ToolModule.d.ts +57 -0
- package/module/ToolModule/ToolModule.d.ts.map +1 -0
- package/module/ToolModule/ToolModule.js +220 -0
- package/module/ToolModule/ToolModule.js.map +1 -0
- package/module/ToolModule/ToolRAG.d.ts +38 -0
- package/module/ToolModule/ToolRAG.d.ts.map +1 -0
- package/module/ToolModule/ToolRAG.js +124 -0
- package/module/ToolModule/ToolRAG.js.map +1 -0
- package/module/ToolModule/index.d.ts +3 -0
- package/module/ToolModule/index.d.ts.map +1 -0
- package/module/ToolModule/index.js +19 -0
- package/module/ToolModule/index.js.map +1 -0
- package/module/index.d.ts +6 -0
- package/module/index.d.ts.map +1 -0
- package/module/index.js +22 -0
- package/module/index.js.map +1 -0
- package/package.json +19 -0
- package/utility/InterfaceUtility.d.ts +14 -0
- package/utility/InterfaceUtility.d.ts.map +1 -0
- package/utility/InterfaceUtility.js +3 -0
- package/utility/InterfaceUtility.js.map +1 -0
- package/utility/LogUtility.d.ts +41 -0
- package/utility/LogUtility.d.ts.map +1 -0
- package/utility/LogUtility.js +70 -0
- package/utility/LogUtility.js.map +1 -0
- package/utility/NetworkUtility.d.ts +91 -0
- package/utility/NetworkUtility.d.ts.map +1 -0
- package/utility/NetworkUtility.js +104 -0
- package/utility/NetworkUtility.js.map +1 -0
- package/utility/ObjectUtility.d.ts +134 -0
- package/utility/ObjectUtility.d.ts.map +1 -0
- package/utility/ObjectUtility.js +313 -0
- package/utility/ObjectUtility.js.map +1 -0
- package/utility/OpenAIUtility.d.ts +333 -0
- package/utility/OpenAIUtility.d.ts.map +1 -0
- package/utility/OpenAIUtility.js +95 -0
- package/utility/OpenAIUtility.js.map +1 -0
- package/utility/PromiseUtility.d.ts +9 -0
- package/utility/PromiseUtility.d.ts.map +1 -0
- package/utility/PromiseUtility.js +16 -0
- package/utility/PromiseUtility.js.map +1 -0
- package/utility/StringUtility.d.ts +10 -0
- package/utility/StringUtility.d.ts.map +1 -0
- package/utility/StringUtility.js +42 -0
- package/utility/StringUtility.js.map +1 -0
- package/utility/TimeUtility.d.ts +10 -0
- package/utility/TimeUtility.d.ts.map +1 -0
- package/utility/TimeUtility.js +24 -0
- package/utility/TimeUtility.js.map +1 -0
- package/utility/index.d.ts +9 -0
- package/utility/index.d.ts.map +1 -0
- package/utility/index.js +25 -0
- package/utility/index.js.map +1 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CompetitiveReason = void 0;
|
|
4
|
+
const base_1 = require("../../base");
|
|
5
|
+
/** 内置竞争者角色模板 */
|
|
6
|
+
const DEFAULT_ROLES = [
|
|
7
|
+
"你是一个严谨的系统架构师,优先考虑可靠性、可维护性和安全性。从架构稳健性角度分析问题。",
|
|
8
|
+
"你是一个创新的产品设计师,优先考虑用户体验和业务价值。从用户需求和产品定位角度分析问题。",
|
|
9
|
+
"你是一个务实的全栈工程师,优先考虑可实现性、性能和开发成本。从落地可行性和效率角度分析问题。",
|
|
10
|
+
];
|
|
11
|
+
/**
|
|
12
|
+
* 竞争者推理策略 (Competitive Reasoning)
|
|
13
|
+
* N 个智能体以不同角色视角独立作答 → 裁判评估择优
|
|
14
|
+
* 适合:方案决策、多角度分析、需要多视角对比的开放问题
|
|
15
|
+
*/
|
|
16
|
+
class CompetitiveReason extends base_1.AbstractReason {
|
|
17
|
+
constructor() {
|
|
18
|
+
super(...arguments);
|
|
19
|
+
this.type = "CompetitiveReason";
|
|
20
|
+
/** 默认竞争者数量 */
|
|
21
|
+
this._defaultCount = 3;
|
|
22
|
+
}
|
|
23
|
+
async execute(input, config) {
|
|
24
|
+
const competitorCount = config.competitorCount ?? this._defaultCount;
|
|
25
|
+
const customPrompts = config.competitorPrompts;
|
|
26
|
+
const varyTemperature = config.varyTemperature ?? false;
|
|
27
|
+
const roles = customPrompts ?? DEFAULT_ROLES.slice(0, competitorCount);
|
|
28
|
+
const competitors = [];
|
|
29
|
+
const trace = [];
|
|
30
|
+
// 只有 useAgent(裁判) 使用过滤后的工具,竞争者使用全部工具
|
|
31
|
+
const judgeRunOptions = this.buildRunOptions(config);
|
|
32
|
+
try {
|
|
33
|
+
// Phase 1: 创建竞争者并并行执行
|
|
34
|
+
trace.push(`[Competitive Phase 1] 创建 ${roles.length} 个竞争者`);
|
|
35
|
+
for (let i = 0; i < roles.length; i++) {
|
|
36
|
+
const competitorConfig = { ...config.baseConfig, systemPrompt: roles[i] };
|
|
37
|
+
if (varyTemperature) {
|
|
38
|
+
// 温度差异化: 0.3 / 0.7 / 1.1 循环
|
|
39
|
+
const temps = [0.3, 0.7, 1.1];
|
|
40
|
+
competitorConfig.temperature = temps[i % temps.length];
|
|
41
|
+
}
|
|
42
|
+
const agent = this.host.agentModule.createAgent(competitorConfig);
|
|
43
|
+
if (agent) {
|
|
44
|
+
competitors.push(agent);
|
|
45
|
+
trace.push(` 竞争者 ${i + 1}: 角色="${roles[i].substring(0, 40)}..."`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (competitors.length < 2) {
|
|
49
|
+
// 竞争者不足,降级为单 Agent 直接回答
|
|
50
|
+
trace.push("竞争者数量不足,降级为直接执行");
|
|
51
|
+
if (competitors.length === 1) {
|
|
52
|
+
const result = await competitors[0].run(input);
|
|
53
|
+
return { ...result, strategy: this.type, trace };
|
|
54
|
+
}
|
|
55
|
+
return { success: false, content: "无法创建竞争者", strategy: this.type, trace };
|
|
56
|
+
}
|
|
57
|
+
// 并行执行所有竞争者
|
|
58
|
+
trace.push(`[Competitive Phase 2] ${competitors.length} 个竞争者并行执行`);
|
|
59
|
+
const raceStart = Date.now();
|
|
60
|
+
const candidateResults = await Promise.all(competitors.map((agent, i) => agent.run(input).then(r => {
|
|
61
|
+
const duration = Date.now() - raceStart;
|
|
62
|
+
trace.push(` 竞争者 ${i + 1} 完成 (${(duration / 1000).toFixed(1)}s): ${r.content.substring(0, 100)}...`);
|
|
63
|
+
return { index: i, result: r, duration };
|
|
64
|
+
})));
|
|
65
|
+
// 过滤失败的结果
|
|
66
|
+
const validCandidates = candidateResults.filter(c => c.result.success);
|
|
67
|
+
if (validCandidates.length === 0) {
|
|
68
|
+
return { success: false, content: "所有竞争者执行失败", strategy: this.type, trace };
|
|
69
|
+
}
|
|
70
|
+
if (validCandidates.length === 1) {
|
|
71
|
+
trace.push("仅一个有效候选,直接返回");
|
|
72
|
+
const c = validCandidates[0];
|
|
73
|
+
return { ...c.result, strategy: this.type, trace };
|
|
74
|
+
}
|
|
75
|
+
// Phase 3: 裁判评估
|
|
76
|
+
trace.push(`[Competitive Phase 3] 裁判评估 ${validCandidates.length} 个候选`);
|
|
77
|
+
// useAgent 作为裁判(若传入),否则创建临时裁判
|
|
78
|
+
const judge = config.useAgent ?? this.host.agentModule.createAgent({
|
|
79
|
+
...config.baseConfig,
|
|
80
|
+
systemPrompt: "你是一个公正的裁判,负责评估多个候选答案的质量。请客观、严格地评分并给出理由。",
|
|
81
|
+
temperature: 0.2,
|
|
82
|
+
});
|
|
83
|
+
if (!judge) {
|
|
84
|
+
const fallback = validCandidates[0];
|
|
85
|
+
trace.push("裁判创建失败,返回第一个候选");
|
|
86
|
+
return { ...fallback.result, strategy: this.type, trace };
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const judgeInput = `请评估以下 ${validCandidates.length} 个针对问题「${input}」的候选答案:\n\n` +
|
|
90
|
+
validCandidates.map((c, i) => `【候选 ${i + 1}】\n${c.result.content}\n`).join("---\n") +
|
|
91
|
+
`\n请完成以下评估:\n` +
|
|
92
|
+
`1. 对每个候选答案打分(1-10 分)并简要说明理由\n` +
|
|
93
|
+
`2. 选出最佳答案并说明为什么\n` +
|
|
94
|
+
`3. 如果有改进空间,简要说明\n\n` +
|
|
95
|
+
`请按以下格式输出:\n` +
|
|
96
|
+
`评分:\n` +
|
|
97
|
+
`- 候选 1: X分 - (理由)\n` +
|
|
98
|
+
`- 候选 2: X分 - (理由)\n` +
|
|
99
|
+
`...\n` +
|
|
100
|
+
`最佳答案:候选 X\n` +
|
|
101
|
+
`选择理由:(详细说明)\n` +
|
|
102
|
+
`改进建议:(如有)`;
|
|
103
|
+
const judgeResult = await judge.run(judgeInput, judgeRunOptions);
|
|
104
|
+
trace.push(`裁判评估完成`);
|
|
105
|
+
const winnerMatch = judgeResult.content?.match(/最佳答案[::]\s*候选\s*(\d+)/i);
|
|
106
|
+
const winnerIdx = winnerMatch
|
|
107
|
+
? Math.max(0, Math.min(parseInt(winnerMatch[1]) - 1, validCandidates.length - 1))
|
|
108
|
+
: 0;
|
|
109
|
+
trace.push(`胜出: 候选 ${winnerIdx + 1}`);
|
|
110
|
+
return {
|
|
111
|
+
...validCandidates[winnerIdx].result,
|
|
112
|
+
strategy: this.type,
|
|
113
|
+
trace: [
|
|
114
|
+
...trace,
|
|
115
|
+
`裁判评分:\n${judgeResult.content.substring(0, 500)}`,
|
|
116
|
+
],
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
if (!config.useAgent) {
|
|
121
|
+
this.host.agentModule.destroyAgent(judge.id);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
finally {
|
|
126
|
+
for (const agent of competitors) {
|
|
127
|
+
this.host.agentModule.destroyAgent(agent.id);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.CompetitiveReason = CompetitiveReason;
|
|
133
|
+
//# sourceMappingURL=CompetitiveReason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CompetitiveReason.js","sourceRoot":"","sources":["../../../src/module/ReasonModule/CompetitiveReason.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AbstractReason, ReasonConfig, ReasonResult } from "../../base";
|
|
2
|
+
/**
|
|
3
|
+
* 计划执行推理策略
|
|
4
|
+
* 复杂任务拆解为子步骤 → 逐步执行 → 汇总结果
|
|
5
|
+
* 适合:多步骤任务、开发流程、配置部署
|
|
6
|
+
* 策略内部自行创建/管理一个 Agent 贯穿全流程
|
|
7
|
+
*/
|
|
8
|
+
export declare class PlanReason extends AbstractReason {
|
|
9
|
+
readonly type: string;
|
|
10
|
+
execute(input: string, config: ReasonConfig): Promise<ReasonResult>;
|
|
11
|
+
/** 从 LLM 输出中解析 PlanStep 数组 */
|
|
12
|
+
private parsePlanSteps;
|
|
13
|
+
}
|
|
14
|
+
/** 计划步骤接口 */
|
|
15
|
+
export interface PlanStep {
|
|
16
|
+
/** 步骤编号 */
|
|
17
|
+
index: number;
|
|
18
|
+
/** 步骤描述 */
|
|
19
|
+
description: string;
|
|
20
|
+
/** 所需工具 */
|
|
21
|
+
tools?: string[];
|
|
22
|
+
/** 依赖的步骤编号 */
|
|
23
|
+
dependsOn?: number[];
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=PlanReason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanReason.d.ts","sourceRoot":"","sources":["../../../src/module/ReasonModule/PlanReason.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxE;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAE1C,SAAgB,IAAI,EAAE,MAAM,CAAgB;IAE/B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAwGhF,8BAA8B;IAC9B,OAAO,CAAC,cAAc;CAsCzB;AACD,aAAa;AACb,MAAM,WAAW,QAAQ;IAErB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW;IACX,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,cAAc;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PlanReason = void 0;
|
|
4
|
+
const base_1 = require("../../base");
|
|
5
|
+
/**
|
|
6
|
+
* 计划执行推理策略
|
|
7
|
+
* 复杂任务拆解为子步骤 → 逐步执行 → 汇总结果
|
|
8
|
+
* 适合:多步骤任务、开发流程、配置部署
|
|
9
|
+
* 策略内部自行创建/管理一个 Agent 贯穿全流程
|
|
10
|
+
*/
|
|
11
|
+
class PlanReason extends base_1.AbstractReason {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.type = "PlanReason";
|
|
15
|
+
}
|
|
16
|
+
async execute(input, config) {
|
|
17
|
+
const agent = config.useAgent ?? this.host.agentModule.createAgent(config.baseConfig);
|
|
18
|
+
const runOptions = this.buildRunOptions(config);
|
|
19
|
+
try {
|
|
20
|
+
const trace = [];
|
|
21
|
+
// Phase 1: 生成执行计划
|
|
22
|
+
trace.push("[Planner Phase 1] 生成执行计划");
|
|
23
|
+
const planResult = await agent.run(`请将以下复杂任务拆解为可逐步执行的子任务列表。\n\n` +
|
|
24
|
+
`任务: ${input}\n\n` +
|
|
25
|
+
`请严格按以下 JSON 格式输出(不要包含其他内容):\n` +
|
|
26
|
+
`\`\`\`json\n` +
|
|
27
|
+
`{\n` +
|
|
28
|
+
` "steps": [\n` +
|
|
29
|
+
` {"index": 1, "description": "步骤描述", "tools": ["可能需要用到的工具名称或null"]},\n` +
|
|
30
|
+
` {"index": 2, "description": "步骤描述", "tools": ["..."]}\n` +
|
|
31
|
+
` ]\n` +
|
|
32
|
+
`}\n` +
|
|
33
|
+
`\`\`\`\n\n` +
|
|
34
|
+
`要求:\n` +
|
|
35
|
+
`1. 步骤按执行顺序排列\n` +
|
|
36
|
+
`2. 每个步骤的描述应具体、可操作\n` +
|
|
37
|
+
`3. 步骤数量控制在 3-7 个\n` +
|
|
38
|
+
`4. 如果某步骤不需要特定工具,tools 字段设为空数组 []`, runOptions);
|
|
39
|
+
if (!planResult.success) {
|
|
40
|
+
return { ...planResult, strategy: this.type, trace };
|
|
41
|
+
}
|
|
42
|
+
// 解析计划步骤
|
|
43
|
+
const steps = this.parsePlanSteps(planResult.content);
|
|
44
|
+
if (steps.length === 0) {
|
|
45
|
+
trace.push("计划解析失败,降级为直接执行");
|
|
46
|
+
const fallback = await agent.run(`请直接完成以下任务: ${input}`, runOptions);
|
|
47
|
+
return { ...fallback, strategy: this.type, trace };
|
|
48
|
+
}
|
|
49
|
+
trace.push(`解析到 ${steps.length} 个步骤:`);
|
|
50
|
+
for (const s of steps) {
|
|
51
|
+
trace.push(` Step ${s.index}: ${s.description}`);
|
|
52
|
+
}
|
|
53
|
+
// Phase 2: 逐步执行
|
|
54
|
+
const stepResults = [];
|
|
55
|
+
for (const step of steps) {
|
|
56
|
+
trace.push(`[Planner Phase 2] 执行 Step ${step.index}: ${step.description}`);
|
|
57
|
+
const stepResult = await agent.run(`你正在执行一个多步骤任务。当前是第 ${step.index}/${steps.length} 步。\n\n` +
|
|
58
|
+
`当前步骤: ${step.description}\n` +
|
|
59
|
+
(step.tools && step.tools.length > 0
|
|
60
|
+
? `可用工具: ${step.tools.join(", ")}\n`
|
|
61
|
+
: "") +
|
|
62
|
+
`请完成此步骤并输出结果。如果这是中间步骤,输出中间结果以便下一步骤使用。`, runOptions);
|
|
63
|
+
if (!stepResult.success) {
|
|
64
|
+
stepResults.push(`[Step ${step.index} 失败] ${step.description}`);
|
|
65
|
+
trace.push(` Step ${step.index} 执行失败`);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
stepResults.push(`## Step ${step.index}: ${step.description}\n${stepResult.content}`);
|
|
69
|
+
trace.push(` Step ${step.index} 完成: ${stepResult.content.substring(0, 150)}`);
|
|
70
|
+
}
|
|
71
|
+
// Phase 3: 汇总
|
|
72
|
+
trace.push("[Planner Phase 3] 汇总结果");
|
|
73
|
+
const summaryResult = await agent.run(`请汇总以下各步骤的执行结果,形成完整的最终输出。\n\n` +
|
|
74
|
+
stepResults.join("\n\n---\n\n") +
|
|
75
|
+
`\n\n---\n\n` +
|
|
76
|
+
`要求: 以连贯的方式呈现最终结果,不要简单罗列步骤。`, runOptions);
|
|
77
|
+
if (!summaryResult.success) {
|
|
78
|
+
return {
|
|
79
|
+
success: true,
|
|
80
|
+
content: stepResults.join("\n\n"),
|
|
81
|
+
strategy: this.type,
|
|
82
|
+
trace,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
trace.push(`最终输出: ${summaryResult.content.substring(0, 200)}`);
|
|
86
|
+
return {
|
|
87
|
+
...summaryResult,
|
|
88
|
+
strategy: this.type,
|
|
89
|
+
trace,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
finally {
|
|
93
|
+
if (!config.useAgent) {
|
|
94
|
+
this.host.agentModule.destroyAgent(agent.id);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/** 从 LLM 输出中解析 PlanStep 数组 */
|
|
99
|
+
parsePlanSteps(text) {
|
|
100
|
+
try {
|
|
101
|
+
const jsonMatch = text.match(/```(?:json)?\s*([\s\S]*?)```/);
|
|
102
|
+
const jsonStr = jsonMatch ? jsonMatch[1].trim() : text.trim();
|
|
103
|
+
const objMatch = jsonStr.match(/\{[\s\S]*\}/);
|
|
104
|
+
if (!objMatch)
|
|
105
|
+
return [];
|
|
106
|
+
const parsed = JSON.parse(objMatch[0]);
|
|
107
|
+
if (parsed.steps && Array.isArray(parsed.steps)) {
|
|
108
|
+
return parsed.steps.map((s, i) => ({
|
|
109
|
+
index: s.index ?? i + 1,
|
|
110
|
+
description: s.description ?? String(s),
|
|
111
|
+
tools: Array.isArray(s.tools) ? s.tools : [],
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch { /* JSON 解析失败 */ }
|
|
116
|
+
// Fallback: 按 "数字." 或 "Step 数字" 模式提取
|
|
117
|
+
const steps = [];
|
|
118
|
+
const lines = text.split("\n");
|
|
119
|
+
for (const line of lines) {
|
|
120
|
+
const m = line.match(/(?:Step\s*)?(\d+)[\.\)::]\s*(.+)/i);
|
|
121
|
+
if (m && m[2].trim().length > 5) {
|
|
122
|
+
steps.push({
|
|
123
|
+
index: parseInt(m[1]),
|
|
124
|
+
description: m[2].trim(),
|
|
125
|
+
tools: [],
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return steps;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
exports.PlanReason = PlanReason;
|
|
133
|
+
//# sourceMappingURL=PlanReason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanReason.js","sourceRoot":"","sources":["../../../src/module/ReasonModule/PlanReason.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { AbstractModule, AbstractReason, ReasonConfig, ReasonResult } from "../../base";
|
|
2
|
+
/** 推理管理模块 — 推理策略池 + 用户输入总入口 */
|
|
3
|
+
export declare class ReasonModule extends AbstractModule {
|
|
4
|
+
/** 推理模式管理池 */
|
|
5
|
+
private _reasons;
|
|
6
|
+
/** 构造函数 */
|
|
7
|
+
constructor();
|
|
8
|
+
/** 已注册策略数量 */
|
|
9
|
+
get count(): number;
|
|
10
|
+
/**
|
|
11
|
+
* 注册推理策略(外部可调用以扩展自定义策略)
|
|
12
|
+
* @param name 策略名
|
|
13
|
+
* @param reason 策略实例
|
|
14
|
+
* @return 是否注册成功
|
|
15
|
+
*/
|
|
16
|
+
register(name: string, reason: AbstractReason): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 注销推理策略
|
|
19
|
+
* @param name 策略名
|
|
20
|
+
* @return 是否移除成功
|
|
21
|
+
*/
|
|
22
|
+
unregister(name: string): boolean;
|
|
23
|
+
/** 检查策略是否已注册 */
|
|
24
|
+
has(name: string): boolean;
|
|
25
|
+
/** 获取指定策略实例 */
|
|
26
|
+
get<T extends AbstractReason>(name: string): T | null;
|
|
27
|
+
/** 列出全部已注册策略信息 */
|
|
28
|
+
list(): Array<{
|
|
29
|
+
name: string;
|
|
30
|
+
type: string;
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* 执行推理(用户输入总入口)
|
|
34
|
+
* 根据策略名选择推理模式,策略内部自行管理 Agent 生命周期
|
|
35
|
+
* @param input 用户输入
|
|
36
|
+
* @param config 推理配置(含 Agent 基础配置 + 策略特定参数)
|
|
37
|
+
* @param strategy 策略名(默认 ChainReason)
|
|
38
|
+
*/
|
|
39
|
+
execute(input: string, config: ReasonConfig, strategy?: string): Promise<ReasonResult>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=ReasonModule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReasonModule.d.ts","sourceRoot":"","sources":["../../../src/module/ReasonModule/ReasonModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AASxF,+BAA+B;AAC/B,qBAAa,YAAa,SAAQ,cAAc;IAE5C,cAAc;IACd,OAAO,CAAC,QAAQ,CAAwC;IAExD,WAAW;;IAgBX,cAAc;IACd,IAAW,KAAK,IAAI,MAAM,CAAgC;IAE1D;;;;;OAKG;IACI,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO;IAK9D;;;;OAIG;IACI,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKxC,gBAAgB;IACT,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAKjC,eAAe;IACR,GAAG,CAAC,CAAC,SAAS,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,GAAG,IAAI;IAK5D,kBAAkB;IACX,IAAI,IAAI,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAWpD;;;;;;OAMG;IACU,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,GAAE,MAAsB,GAAG,OAAO,CAAC,YAAY,CAAC;CAcrH"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReasonModule = void 0;
|
|
4
|
+
const base_1 = require("../../base");
|
|
5
|
+
const utility_1 = require("../../utility");
|
|
6
|
+
const ChainReason_1 = require("./ChainReason");
|
|
7
|
+
const ReflectReason_1 = require("./ReflectReason");
|
|
8
|
+
const TreeReason_1 = require("./TreeReason");
|
|
9
|
+
const PlanReason_1 = require("./PlanReason");
|
|
10
|
+
const CompetitiveReason_1 = require("./CompetitiveReason");
|
|
11
|
+
const CommanderReason_1 = require("./CommanderReason");
|
|
12
|
+
/** 推理管理模块 — 推理策略池 + 用户输入总入口 */
|
|
13
|
+
class ReasonModule extends base_1.AbstractModule {
|
|
14
|
+
/** 构造函数 */
|
|
15
|
+
constructor() {
|
|
16
|
+
super();
|
|
17
|
+
this._reasons = new utility_1.ObjectUtility.MapPool();
|
|
18
|
+
// 注册内置推理模式
|
|
19
|
+
this._reasons.Add("ChainReason", new ChainReason_1.ChainReason());
|
|
20
|
+
this._reasons.Add("ReflectReason", new ReflectReason_1.ReflectReason());
|
|
21
|
+
this._reasons.Add("TreeReason", new TreeReason_1.TreeReason());
|
|
22
|
+
this._reasons.Add("PlanReason", new PlanReason_1.PlanReason());
|
|
23
|
+
this._reasons.Add("CompetitiveReason", new CompetitiveReason_1.CompetitiveReason());
|
|
24
|
+
this._reasons.Add("CommanderReason", new CommanderReason_1.CommanderReason());
|
|
25
|
+
}
|
|
26
|
+
// ======================== 策略注册管理 ========================
|
|
27
|
+
/** 已注册策略数量 */
|
|
28
|
+
get count() { return this._reasons.Count; }
|
|
29
|
+
/**
|
|
30
|
+
* 注册推理策略(外部可调用以扩展自定义策略)
|
|
31
|
+
* @param name 策略名
|
|
32
|
+
* @param reason 策略实例
|
|
33
|
+
* @return 是否注册成功
|
|
34
|
+
*/
|
|
35
|
+
register(name, reason) {
|
|
36
|
+
return this._reasons.Add(name, reason);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 注销推理策略
|
|
40
|
+
* @param name 策略名
|
|
41
|
+
* @return 是否移除成功
|
|
42
|
+
*/
|
|
43
|
+
unregister(name) {
|
|
44
|
+
return this._reasons.Remove(name);
|
|
45
|
+
}
|
|
46
|
+
/** 检查策略是否已注册 */
|
|
47
|
+
has(name) {
|
|
48
|
+
return this._reasons.Exist(name);
|
|
49
|
+
}
|
|
50
|
+
/** 获取指定策略实例 */
|
|
51
|
+
get(name) {
|
|
52
|
+
return this._reasons.Get(name);
|
|
53
|
+
}
|
|
54
|
+
/** 列出全部已注册策略信息 */
|
|
55
|
+
list() {
|
|
56
|
+
return this._reasons.KeysToArray().map(key => {
|
|
57
|
+
const r = this._reasons.Get(key);
|
|
58
|
+
return { name: key, type: r?.type ?? "unknown" };
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// ======================== 推理执行 ========================
|
|
62
|
+
/**
|
|
63
|
+
* 执行推理(用户输入总入口)
|
|
64
|
+
* 根据策略名选择推理模式,策略内部自行管理 Agent 生命周期
|
|
65
|
+
* @param input 用户输入
|
|
66
|
+
* @param config 推理配置(含 Agent 基础配置 + 策略特定参数)
|
|
67
|
+
* @param strategy 策略名(默认 ChainReason)
|
|
68
|
+
*/
|
|
69
|
+
async execute(input, config, strategy = "ChainReason") {
|
|
70
|
+
const reason = this._reasons.Get(strategy);
|
|
71
|
+
if (!reason) {
|
|
72
|
+
return {
|
|
73
|
+
success: false,
|
|
74
|
+
content: `未知推理策略: ${strategy}`,
|
|
75
|
+
strategy,
|
|
76
|
+
trace: [`可用策略: ${this._reasons.ValuesToArray().map(r => r.type).join(", ")}`],
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
return reason.execute(input, config);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
exports.ReasonModule = ReasonModule;
|
|
83
|
+
//# sourceMappingURL=ReasonModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReasonModule.js","sourceRoot":"","sources":["../../../src/module/ReasonModule/ReasonModule.ts"],"names":[],"mappings":";;;AAAA,qCAAwF;AACxF,2CAA8C;AAC9C,+CAA4C;AAC5C,mDAAgD;AAChD,6CAA0C;AAC1C,6CAA0C;AAC1C,2DAAwD;AACxD,uDAAoD;AAEpD,+BAA+B;AAC/B,MAAa,YAAa,SAAQ,qBAAc;IAK5C,WAAW;IACX;QAEI,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,QAAQ,GAAG,IAAI,uBAAa,CAAC,OAAO,EAAkB,CAAC;QAC5D,WAAW;QACX,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,yBAAW,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,6BAAa,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,uBAAU,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,uBAAU,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,qCAAiB,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,iCAAe,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,2DAA2D;IAE3D,cAAc;IACd,IAAW,KAAK,KAAa,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE1D;;;;;OAKG;IACI,QAAQ,CAAC,IAAY,EAAE,MAAsB;QAEhD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACI,UAAU,CAAC,IAAY;QAE1B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,gBAAgB;IACT,GAAG,CAAC,IAAY;QAEnB,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,eAAe;IACR,GAAG,CAA2B,IAAY;QAE7C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAI,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,kBAAkB;IACX,IAAI;QAEP,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAEzC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACjC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,yDAAyD;IAEzD;;;;;;OAMG;IACI,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,MAAoB,EAAE,WAAmB,aAAa;QAEtF,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,EACX,CAAC;YACG,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,WAAW,QAAQ,EAAE;gBAC9B,QAAQ;gBACR,KAAK,EAAE,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aAChF,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;CACJ;AA1FD,oCA0FC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AbstractReason, ReasonConfig, ReasonResult } from "../../base";
|
|
2
|
+
/**
|
|
3
|
+
* 反思推理策略 (Reflexion)
|
|
4
|
+
* 执行 → 自我批评 → 修正 → 再执行,最多 3 轮
|
|
5
|
+
* 适合:代码生成、写作、翻译等质量敏感任务
|
|
6
|
+
* 策略内部自行创建/管理一个 Agent 贯穿全流程
|
|
7
|
+
*/
|
|
8
|
+
export declare class ReflectReason extends AbstractReason {
|
|
9
|
+
readonly type: string;
|
|
10
|
+
private readonly _maxRounds;
|
|
11
|
+
execute(input: string, config: ReasonConfig): Promise<ReasonResult>;
|
|
12
|
+
/** 简单相似度检测(基于前 200 字符) */
|
|
13
|
+
private _isSimilar;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ReflectReason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReflectReason.d.ts","sourceRoot":"","sources":["../../../src/module/ReasonModule/ReflectReason.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxE;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,cAAc;IAE7C,SAAgB,IAAI,EAAE,MAAM,CAAmB;IAE/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;IAE3B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IAkFhF,0BAA0B;IAC1B,OAAO,CAAC,UAAU;CAIrB"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ReflectReason = void 0;
|
|
4
|
+
const base_1 = require("../../base");
|
|
5
|
+
/**
|
|
6
|
+
* 反思推理策略 (Reflexion)
|
|
7
|
+
* 执行 → 自我批评 → 修正 → 再执行,最多 3 轮
|
|
8
|
+
* 适合:代码生成、写作、翻译等质量敏感任务
|
|
9
|
+
* 策略内部自行创建/管理一个 Agent 贯穿全流程
|
|
10
|
+
*/
|
|
11
|
+
class ReflectReason extends base_1.AbstractReason {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.type = "ReflectReason";
|
|
15
|
+
this._maxRounds = 3;
|
|
16
|
+
}
|
|
17
|
+
async execute(input, config) {
|
|
18
|
+
const agent = config.useAgent ?? this.host.agentModule.createAgent(config.baseConfig);
|
|
19
|
+
const runOptions = this.buildRunOptions(config);
|
|
20
|
+
try {
|
|
21
|
+
const trace = [];
|
|
22
|
+
let bestResult = null;
|
|
23
|
+
// Round 1: 初始执行
|
|
24
|
+
trace.push("[Round 1] 初始执行");
|
|
25
|
+
const r1 = await agent.run(input, runOptions);
|
|
26
|
+
if (!r1.success) {
|
|
27
|
+
return { ...r1, strategy: this.type, trace };
|
|
28
|
+
}
|
|
29
|
+
bestResult = { ...r1, strategy: this.type, trace: [...trace] };
|
|
30
|
+
trace.push(`输出: ${r1.content.substring(0, 200)}`);
|
|
31
|
+
// Round 2+: 自我批评 → 修正
|
|
32
|
+
for (let round = 2; round <= this._maxRounds; round++) {
|
|
33
|
+
// 自我批评
|
|
34
|
+
trace.push(`[Round ${round}] 自我批评`);
|
|
35
|
+
const critiqueResult = await agent.run(`请严格审视你上一个回答的质量。找出以下问题:\n` +
|
|
36
|
+
`1. 事实性错误或逻辑漏洞\n` +
|
|
37
|
+
`2. 遗漏的关键信息\n` +
|
|
38
|
+
`3. 可以改进的表达或结构\n\n` +
|
|
39
|
+
`只输出批评意见,不要输出修正后的版本。`, runOptions);
|
|
40
|
+
if (!critiqueResult.success)
|
|
41
|
+
break;
|
|
42
|
+
const critique = critiqueResult.content.trim();
|
|
43
|
+
trace.push(`批评意见: ${critique.substring(0, 300)}`);
|
|
44
|
+
// 如果批评意见为空或表示"没有改进空间",提前结束
|
|
45
|
+
if (!critique || critique.includes("没有") || critique.includes("无需")) {
|
|
46
|
+
trace.push("无可改进,提前结束反思");
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
// 修正
|
|
50
|
+
trace.push(`[Round ${round}] 修正输出`);
|
|
51
|
+
const reviseResult = await agent.run(`基于以下批评意见,请输出修正后的完整版本:\n\n${critique}\n\n` +
|
|
52
|
+
`要求:\n` +
|
|
53
|
+
`1. 修正所有指出的问题\n` +
|
|
54
|
+
`2. 保持原有正确的内容\n` +
|
|
55
|
+
`3. 输出完整的最终版本,不要解释修改了什么`, runOptions);
|
|
56
|
+
if (!reviseResult.success)
|
|
57
|
+
break;
|
|
58
|
+
trace.push(`修正输出: ${reviseResult.content.substring(0, 200)}`);
|
|
59
|
+
bestResult = {
|
|
60
|
+
...reviseResult,
|
|
61
|
+
strategy: this.type,
|
|
62
|
+
trace: [...trace],
|
|
63
|
+
reflectionRounds: round,
|
|
64
|
+
};
|
|
65
|
+
// 如果修正后的输出与之前相似度很高,提前结束
|
|
66
|
+
const prevContent = bestResult.content;
|
|
67
|
+
if (this._isSimilar(reviseResult.content, prevContent)) {
|
|
68
|
+
trace.push("修正输出趋于稳定,提前结束");
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return bestResult;
|
|
73
|
+
}
|
|
74
|
+
finally {
|
|
75
|
+
if (!config.useAgent) {
|
|
76
|
+
this.host.agentModule.destroyAgent(agent.id);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/** 简单相似度检测(基于前 200 字符) */
|
|
81
|
+
_isSimilar(a, b) {
|
|
82
|
+
return a.substring(0, 200).trim() === b.substring(0, 200).trim();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
exports.ReflectReason = ReflectReason;
|
|
86
|
+
//# sourceMappingURL=ReflectReason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReflectReason.js","sourceRoot":"","sources":["../../../src/module/ReasonModule/ReflectReason.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AbstractReason, ReasonConfig, ReasonResult } from "../../base";
|
|
2
|
+
/**
|
|
3
|
+
* 思维树推理策略 (Tree of Thoughts)
|
|
4
|
+
* 生成多个候选方案 → 评估择优 → 展开最佳方案
|
|
5
|
+
* 适合:方案设计、多方案对比、需要多角度探索的开放问题
|
|
6
|
+
* 策略内部自行创建/管理一个 Agent 贯穿全流程
|
|
7
|
+
*/
|
|
8
|
+
export declare class TreeReason extends AbstractReason {
|
|
9
|
+
readonly type: string;
|
|
10
|
+
/** 候选分支数 */
|
|
11
|
+
private readonly _branches;
|
|
12
|
+
execute(input: string, config: ReasonConfig): Promise<ReasonResult>;
|
|
13
|
+
/** 解析候选方案文本 */
|
|
14
|
+
private _parseCandidates;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=TreeReason.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TreeReason.d.ts","sourceRoot":"","sources":["../../../src/module/ReasonModule/TreeReason.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAGxE;;;;;GAKG;AACH,qBAAa,UAAW,SAAQ,cAAc;IAE1C,SAAgB,IAAI,EAAE,MAAM,CAAgB;IAE5C,YAAY;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAa;IAE1B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;IA4HhF,eAAe;IACf,OAAO,CAAC,gBAAgB;CAwB3B"}
|