@akemi-mio/creativity 0.0.0-stage → 0.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/dist/ConceptMixer.d.ts +41 -0
- package/dist/ConceptMixer.js +207 -0
- package/dist/CreativityPrompt.d.ts +24 -0
- package/dist/CreativityPrompt.js +206 -0
- package/dist/ExperimentPlanner.d.ts +14 -0
- package/dist/ExperimentPlanner.js +60 -0
- package/dist/HypothesisGenerator.d.ts +60 -0
- package/dist/HypothesisGenerator.js +246 -0
- package/dist/IdeaGenerator.d.ts +51 -0
- package/dist/IdeaGenerator.js +145 -0
- package/dist/LocalModelService.d.ts +38 -0
- package/dist/LocalModelService.js +162 -0
- package/dist/NoveltyScorer.d.ts +40 -0
- package/dist/NoveltyScorer.js +93 -0
- package/dist/SourceAggregator.d.ts +21 -0
- package/dist/SourceAggregator.js +59 -0
- package/dist/TemplateLibrary.d.ts +29 -0
- package/dist/TemplateLibrary.js +484 -0
- package/dist/types.d.ts +199 -0
- package/dist/types.js +9 -0
- package/package.json +38 -4
- package/README.md +0 -3
|
@@ -0,0 +1,484 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TemplateLibrary = void 0;
|
|
4
|
+
const random_1 = require("@akemi-mio/core/utils/random");
|
|
5
|
+
const TEMPLATES = [
|
|
6
|
+
// ========== FUSION ==========
|
|
7
|
+
{
|
|
8
|
+
category: 'fusion',
|
|
9
|
+
variant: 'merged',
|
|
10
|
+
titleTemplate: '{a} × {b} 深度融合',
|
|
11
|
+
ideaTemplate: '将「{a}」和「{b}」的核心能力通过统一接口层合并,使两者共享数据和上下文。{b} 的输出作为 {a} 的新输入维度,{a} 的状态变化反向驱动 {b} 的行为调整,形成双向往来的融合架构。',
|
|
12
|
+
benefitTemplate: '消除信息孤岛,产生 1+1>2 的涌现效果',
|
|
13
|
+
riskTemplate: '耦合度过高导致两个模块难以独立演进',
|
|
14
|
+
typeFit: { knowledge_knowledge: 10, insight_insight: 9, behavior_behavior: 7 },
|
|
15
|
+
// 不同知识源走向不同策略:ASR×MCP 适合深度融合,Memory×Agent 也是
|
|
16
|
+
nameFit: { 'ASR|MCP': 8, 'Agent|Memory': 8, 'MCP|Agent': 8 },
|
|
17
|
+
noveltyBonus: 18,
|
|
18
|
+
feasibilityBonus: 5,
|
|
19
|
+
impactBonus: 20,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
category: 'fusion',
|
|
23
|
+
variant: 'hybrid_pipeline',
|
|
24
|
+
titleTemplate: '{a}-{b} 混合流水线',
|
|
25
|
+
ideaTemplate: '将「{a}」的处理流程嵌入到「{b}」的管线中,在关键节点插入 {a} 的判断逻辑。两条路径并行执行并在汇合点进行交叉验证,不一致时触发仲裁机制取最优或加权融合。',
|
|
26
|
+
benefitTemplate: '结合两者优势,降低单一路径的系统性偏差',
|
|
27
|
+
riskTemplate: '双路径并行增加延迟和资源消耗',
|
|
28
|
+
typeFit: { knowledge_knowledge: 8, behavior_knowledge: 7, insight_behavior: 6 },
|
|
29
|
+
noveltyBonus: 14,
|
|
30
|
+
feasibilityBonus: 3,
|
|
31
|
+
impactBonus: 16,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
category: 'fusion',
|
|
35
|
+
variant: 'cross_pollination',
|
|
36
|
+
titleTemplate: '{a} 赋能 {b}',
|
|
37
|
+
ideaTemplate: '把「{a}」领域成熟的数据模型和判断规则改造成「{b}」能理解的输入格式,让 {b} 在不重构自身架构的前提下利用 {a} 的知识积累。通过适配器模式渐进集成,先做 POC 验证再全量上线。',
|
|
38
|
+
benefitTemplate: '复用已有资产,快速获得新能力',
|
|
39
|
+
riskTemplate: '适配层可能成为性能瓶颈',
|
|
40
|
+
typeFit: { knowledge_behavior: 9, knowledge_failure: 8, insight_knowledge: 7 },
|
|
41
|
+
noveltyBonus: 10,
|
|
42
|
+
feasibilityBonus: 8,
|
|
43
|
+
impactBonus: 14,
|
|
44
|
+
},
|
|
45
|
+
// ========== TRANSPLANT ==========
|
|
46
|
+
{
|
|
47
|
+
category: 'transplant',
|
|
48
|
+
variant: 'capability_port',
|
|
49
|
+
titleTemplate: '{a} 能力移植到 {b}',
|
|
50
|
+
ideaTemplate: '识别「{a}」中可独立封装的核心算法或策略,将其抽离为通用模块后注入到「{b}」的执行链路中。移植后 {b} 获得 {a} 的核心能力而不需要继承 {a} 的全部复杂度。',
|
|
51
|
+
benefitTemplate: '关键能力低成本复用',
|
|
52
|
+
riskTemplate: '脱离原始上下文后移植效果打折扣',
|
|
53
|
+
typeFit: { knowledge_behavior: 10, behavior_behavior: 8, knowledge_insight: 7 },
|
|
54
|
+
noveltyBonus: 12,
|
|
55
|
+
feasibilityBonus: 7,
|
|
56
|
+
impactBonus: 13,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
category: 'transplant',
|
|
60
|
+
variant: 'pattern_migration',
|
|
61
|
+
titleTemplate: '{a} 设计模式迁移到 {b}',
|
|
62
|
+
ideaTemplate: '分析「{a}」架构中成功的设计模式(事件驱动、分层、插件化等),识别出该模式在 {a} 中解决的具体问题,然后在「{b}」中寻找相同性质的问题域,用适配的方式重构实现。',
|
|
63
|
+
benefitTemplate: '避免重复造轮子,架构决策经过验证',
|
|
64
|
+
riskTemplate: '模式迁移可能引入 {a} 的隐式约束',
|
|
65
|
+
typeFit: { knowledge_behavior: 8, knowledge_knowledge: 9, insight_behavior: 7 },
|
|
66
|
+
/**
|
|
67
|
+
* pattern_migration 是结构化迁移,只适合工程系统间的配对
|
|
68
|
+
* ASR→MCP、Agent→Evolution 有意义
|
|
69
|
+
* Memory→Agent、TTS→Wallpaper 等则不适用 — 没有 nameFit 加成,
|
|
70
|
+
* 自然落到其他模板
|
|
71
|
+
*/
|
|
72
|
+
nameFit: { 'ASR|MCP': 8, 'Agent|Evolution': 8 },
|
|
73
|
+
noveltyBonus: 11,
|
|
74
|
+
feasibilityBonus: 8,
|
|
75
|
+
impactBonus: 12,
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
category: 'transplant',
|
|
79
|
+
variant: 'algorithm_transfer',
|
|
80
|
+
titleTemplate: '{a} 算法复用到 {b}',
|
|
81
|
+
ideaTemplate: '提取「{a}」核心算法的输入输出接口,为「{b}」的上下文实现一个兼容适配层。复用不追求 1:1 精确移植,而是保留算法核心逻辑并用 {b} 的数据格式做输入输出转换。',
|
|
82
|
+
benefitTemplate: '成熟算法快速落地新场景',
|
|
83
|
+
riskTemplate: '适配层掩盖了算法对 {b} 数据质量的要求',
|
|
84
|
+
typeFit: { knowledge_behavior: 8, knowledge_insight: 6, insight_behavior: 5 },
|
|
85
|
+
noveltyBonus: 9,
|
|
86
|
+
feasibilityBonus: 9,
|
|
87
|
+
impactBonus: 11,
|
|
88
|
+
},
|
|
89
|
+
// ========== CONTRAST ==========
|
|
90
|
+
{
|
|
91
|
+
category: 'contrast',
|
|
92
|
+
variant: 'complementary_roles',
|
|
93
|
+
titleTemplate: '{a} 补完 {b} 盲区',
|
|
94
|
+
ideaTemplate: '分析「{a}」和「{b}」各自的准确率和失败模式,找出 {a} 擅长但 {b} 薄弱、以及 {b} 擅长但 {a} 薄弱的区域。设计一个路由层根据输入特征自动分派到更合适的模块,覆盖双方的盲区。',
|
|
95
|
+
benefitTemplate: '整体准确率超过任何一个独立模块',
|
|
96
|
+
riskTemplate: '路由判断本身引入新的错误来源',
|
|
97
|
+
typeFit: { knowledge_failure: 10, behavior_failure: 9, insight_failure: 9, failure_failure: 8 },
|
|
98
|
+
noveltyBonus: 16,
|
|
99
|
+
feasibilityBonus: 5,
|
|
100
|
+
impactBonus: 18,
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
category: 'contrast',
|
|
104
|
+
variant: 'dual_mode',
|
|
105
|
+
titleTemplate: '{a}/{b} 双模切换',
|
|
106
|
+
ideaTemplate: '定义「{a}」和「{b}」各自的最佳工作条件(输入特征、负载范围、响应时间要求)。设计一个监控 + 切换器:条件满足时用 {a},条件变化时切换到 {b},切换时做状态保存和恢复保证无缝过渡。',
|
|
107
|
+
benefitTemplate: '在不同场景下始终使用最优方案',
|
|
108
|
+
riskTemplate: '切换逻辑复杂,切换瞬间可能出现抖动',
|
|
109
|
+
typeFit: { behavior_behavior: 8, knowledge_behavior: 7, insight_behavior: 7 },
|
|
110
|
+
noveltyBonus: 14,
|
|
111
|
+
feasibilityBonus: 4,
|
|
112
|
+
impactBonus: 15,
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
category: 'contrast',
|
|
116
|
+
variant: 'strength_weakness_weave',
|
|
117
|
+
titleTemplate: '用 {a} 补 {b} 之短',
|
|
118
|
+
ideaTemplate: '列举「{b}」当前的已知短板或失败案例,逐一检查「{a}」中是否有可弥补的能力。为每个短板设计一条 {a}→{b} 的修复链路,优先级按短板影响面排序,逐步缩小 {b} 的能力缺口。',
|
|
119
|
+
benefitTemplate: '有针对性的补齐短板,资源投入回报率高',
|
|
120
|
+
riskTemplate: '过度依赖 {a} 掩盖了 {b} 自身的提升空间',
|
|
121
|
+
typeFit: { failure_knowledge: 10, failure_behavior: 9, failure_insight: 9, failure_failure: 8 },
|
|
122
|
+
noveltyBonus: 15,
|
|
123
|
+
feasibilityBonus: 6,
|
|
124
|
+
impactBonus: 17,
|
|
125
|
+
},
|
|
126
|
+
// ========== FEEDBACK LOOP ==========
|
|
127
|
+
{
|
|
128
|
+
category: 'feedback',
|
|
129
|
+
variant: 'mutual_reinforcement',
|
|
130
|
+
titleTemplate: '{a} ↔ {b} 强化回路',
|
|
131
|
+
ideaTemplate: '设计一个闭环:{a} 的每次执行输出被「{b}」作为反馈信号消费,{b} 分析结果后调整自身的参数或策略,进而影响下一次 {a} 的执行质量。初始阶段人工监控闭环稳定性,收敛后转为自动运行。',
|
|
132
|
+
benefitTemplate: '系统在运行中持续自我优化',
|
|
133
|
+
riskTemplate: '反馈回路可能振荡发散,需要阻尼机制',
|
|
134
|
+
typeFit: { behavior_insight: 10, knowledge_behavior: 8, insight_insight: 8, behavior_behavior: 7 },
|
|
135
|
+
noveltyBonus: 20,
|
|
136
|
+
feasibilityBonus: 3,
|
|
137
|
+
impactBonus: 20,
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
category: 'feedback',
|
|
141
|
+
variant: 'closed_loop_optimization',
|
|
142
|
+
titleTemplate: '{b} 根据 {a} 输出自动调优',
|
|
143
|
+
ideaTemplate: '收集「{a}」的每一次执行结果(成功/失败/耗时/质量分),将聚合指标作为「{b}」的超参数输入。{b} 根据历史趋势自动调整阈值、权重或策略选择,形成一个数据驱动的优化闭环。',
|
|
144
|
+
benefitTemplate: '无需人工干预的系统级自动优化',
|
|
145
|
+
riskTemplate: '历史偏差导致调优方向错误',
|
|
146
|
+
typeFit: { behavior_insight: 9, failure_insight: 8, knowledge_insight: 7 },
|
|
147
|
+
noveltyBonus: 18,
|
|
148
|
+
feasibilityBonus: 4,
|
|
149
|
+
impactBonus: 19,
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
category: 'feedback',
|
|
153
|
+
variant: 'learning_from_outcome',
|
|
154
|
+
titleTemplate: '{a} 结果驱动的 {b} 进化',
|
|
155
|
+
ideaTemplate: '将「{a}」的执行结果标注为训练信号,定期用新积累的数据微调或更新「{b}」的策略。建立反馈数据集自动去重和采样的机制,避免数据分布偏移导致 {b} 退化。',
|
|
156
|
+
benefitTemplate: '持续学习让系统越来越聪明',
|
|
157
|
+
riskTemplate: '不良数据的累积可能导致模型漂移',
|
|
158
|
+
typeFit: { behavior_failure: 8, insight_failure: 9, knowledge_failure: 7, failure_failure: 7 },
|
|
159
|
+
noveltyBonus: 17,
|
|
160
|
+
feasibilityBonus: 3,
|
|
161
|
+
impactBonus: 18,
|
|
162
|
+
},
|
|
163
|
+
// ========== ABSTRACT ==========
|
|
164
|
+
{
|
|
165
|
+
category: 'abstract',
|
|
166
|
+
variant: 'shared_interface',
|
|
167
|
+
titleTemplate: '{a}/{b} 统一抽象层',
|
|
168
|
+
ideaTemplate: '分析「{a}」和「{b}」的对外接口,找出语义相似的操作抽象为共用接口。先提取只读接口(查询类),再扩展到写接口。两套实现共存于统一接口之后,可以用策略模式在运行时选择具体实现。',
|
|
169
|
+
benefitTemplate: '降低系统整体复杂度,调用方无需感知具体实现',
|
|
170
|
+
riskTemplate: '过度抽象可能丢失各模块的特性能力',
|
|
171
|
+
typeFit: { knowledge_knowledge: 9, behavior_behavior: 7, insight_insight: 6 },
|
|
172
|
+
noveltyBonus: 10,
|
|
173
|
+
feasibilityBonus: 9,
|
|
174
|
+
impactBonus: 12,
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
category: 'abstract',
|
|
178
|
+
variant: 'common_core',
|
|
179
|
+
titleTemplate: '抽取 {a} 与 {b} 的共同核心',
|
|
180
|
+
ideaTemplate: '找出「{a}」和「{b}」在数据处理流程、状态管理、错误处理等方面的共性逻辑,将其提取为核心库。核心库只包含无偏见的通用逻辑,具体的领域差异通过插件或策略注入。',
|
|
181
|
+
benefitTemplate: '去重后维护成本减半,修复一处两边受益',
|
|
182
|
+
riskTemplate: '核心库变更的波及面扩大',
|
|
183
|
+
typeFit: { knowledge_knowledge: 8, knowledge_behavior: 6, behavior_behavior: 7 },
|
|
184
|
+
noveltyBonus: 8,
|
|
185
|
+
feasibilityBonus: 10,
|
|
186
|
+
impactBonus: 11,
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
category: 'abstract',
|
|
190
|
+
variant: 'generalized_pattern',
|
|
191
|
+
titleTemplate: '从 {a} 和 {b} 中归纳通用模式',
|
|
192
|
+
ideaTemplate: '对比「{a}」的实现路径和「{b}」的实现路径,提取出它们共享的解决模式(如:先过滤再聚合、分级缓存、渐进式加载)。将该模式文档化为设计模板,应用到其他模块的改造中。',
|
|
193
|
+
benefitTemplate: '沉淀架构知识,提升全系统设计一致性',
|
|
194
|
+
riskTemplate: '模式推广可能遭遇各模块的特殊情况',
|
|
195
|
+
typeFit: { insight_knowledge: 8, insight_behavior: 7, insight_insight: 9 },
|
|
196
|
+
noveltyBonus: 12,
|
|
197
|
+
feasibilityBonus: 7,
|
|
198
|
+
impactBonus: 10,
|
|
199
|
+
},
|
|
200
|
+
// ========== METAPHOR ==========
|
|
201
|
+
{
|
|
202
|
+
category: 'metaphor',
|
|
203
|
+
variant: 'domain_mapping',
|
|
204
|
+
titleTemplate: '{a} 式 {b}',
|
|
205
|
+
ideaTemplate: '借用「{a}」领域的概念模型(如:免疫系统、城市规划、进化论)重新思考「{b}」的设计。将 {a} 中的实体和关系一一映射到 {b} 的领域:哪些是细胞/哪些是信号/哪些是防御机制。',
|
|
206
|
+
benefitTemplate: '跳出原有思维框架,发现全新设计可能',
|
|
207
|
+
riskTemplate: '隐喻映射可能强行套用不适配的关系',
|
|
208
|
+
typeFit: { insight_knowledge: 10, insight_behavior: 9, insight_failure: 8, insight_insight: 8 },
|
|
209
|
+
noveltyBonus: 22,
|
|
210
|
+
feasibilityBonus: 2,
|
|
211
|
+
impactBonus: 18,
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
category: 'metaphor',
|
|
215
|
+
variant: 'borrowed_heuristic',
|
|
216
|
+
titleTemplate: '{a} 启发下的 {b} 改进',
|
|
217
|
+
ideaTemplate: '从「{a}」的运行原理中提取一条核心启发式规则(如:最少惊讶原则、帕累托改进、最速下降),然后检视「{b}」的当前行为是否违背了该规则,针对违背点设计改进方案。',
|
|
218
|
+
benefitTemplate: '源自成熟领域的第一性原理,适用性广泛',
|
|
219
|
+
riskTemplate: '启发式规则在新领域可能不成立',
|
|
220
|
+
typeFit: { knowledge_insight: 9, knowledge_random: 7, insight_random: 8, behavior_insight: 7 },
|
|
221
|
+
noveltyBonus: 17,
|
|
222
|
+
feasibilityBonus: 5,
|
|
223
|
+
impactBonus: 15,
|
|
224
|
+
},
|
|
225
|
+
{
|
|
226
|
+
category: 'metaphor',
|
|
227
|
+
variant: 'analogical_reasoning',
|
|
228
|
+
titleTemplate: '像 {a} 一样思考 {b}',
|
|
229
|
+
ideaTemplate: '想象如果「{a}」是一个决策主体,它会如何设计「{b}」?分析 {a} 的核心原则(容错优先?效率优先?可解释优先?),将这些原则翻译为 {b} 的功能需求和非功能需求,设计符合 {a} 风格的新方案。',
|
|
230
|
+
benefitTemplate: '跨领域思维碰撞产生意想不到的优雅方案',
|
|
231
|
+
riskTemplate: '风格化设计可能牺牲 {b} 领域的本地优化',
|
|
232
|
+
typeFit: { insight_behavior: 8, insight_knowledge: 7, knowledge_random: 8 },
|
|
233
|
+
noveltyBonus: 20,
|
|
234
|
+
feasibilityBonus: 3,
|
|
235
|
+
impactBonus: 16,
|
|
236
|
+
},
|
|
237
|
+
// ========== INVERSION ==========
|
|
238
|
+
{
|
|
239
|
+
category: 'inversion',
|
|
240
|
+
variant: 'reverse_assumption',
|
|
241
|
+
titleTemplate: '反 {a}:如果 {b} 主导会怎样',
|
|
242
|
+
ideaTemplate: '列举「{a}」和「{b}」当前关系的假设前提(a是主、b是从;a先执行、b后执行;a决策、b执行),逐个反转这些前提。针对每个反转版本评估可行性,挑出有意义的反转方向做原型验证。',
|
|
243
|
+
benefitTemplate: '打破思维定势,发现被忽视的架构可能',
|
|
244
|
+
riskTemplate: '反转方案可能违反领域直觉导致维护困难',
|
|
245
|
+
typeFit: { knowledge_behavior: 8, behavior_behavior: 7, insight_behavior: 9, failure_behavior: 8 },
|
|
246
|
+
noveltyBonus: 22,
|
|
247
|
+
feasibilityBonus: 3,
|
|
248
|
+
impactBonus: 17,
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
category: 'inversion',
|
|
252
|
+
variant: 'flip_priority',
|
|
253
|
+
titleTemplate: '从 {b} 出发重新定义 {a}',
|
|
254
|
+
ideaTemplate: '不再问「{a} 如何改进 {b}」,而是问「{b} 需要 {a} 以什么形态存在」。站在 {b} 的消费者视角定义 {a} 的输出格式、响应速度和容错要求,反向重构 {a} 的需求规格。',
|
|
255
|
+
benefitTemplate: '确保 {a} 的输出真正被 {b} 消费,减少浪费',
|
|
256
|
+
riskTemplate: '消费者视角可能忽视 {a} 的内部约束',
|
|
257
|
+
typeFit: { behavior_knowledge: 8, failure_knowledge: 8, insight_knowledge: 7 },
|
|
258
|
+
noveltyBonus: 16,
|
|
259
|
+
feasibilityBonus: 5,
|
|
260
|
+
impactBonus: 14,
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
category: 'inversion',
|
|
264
|
+
variant: 'antifragile_design',
|
|
265
|
+
titleTemplate: '让 {b} 从 {a} 的失败中受益',
|
|
266
|
+
ideaTemplate: '不再试图避免「{a}」的失败,而是设计「{b}」使其在 {a} 失败时反而能获得有用信息。例如:{a} 的报错模式 → {b} 建立错误模式库并自动调整阈值;{a} 超时 → {b} 启动降级路径并记录边界值。',
|
|
267
|
+
benefitTemplate: '将系统的弱点转化为信息优势',
|
|
268
|
+
riskTemplate: '需要仔细设计边界条件,失败类型不可穷尽',
|
|
269
|
+
typeFit: { failure_behavior: 10, failure_knowledge: 8, failure_insight: 9, failure_failure: 7 },
|
|
270
|
+
noveltyBonus: 24,
|
|
271
|
+
feasibilityBonus: 3,
|
|
272
|
+
impactBonus: 20,
|
|
273
|
+
},
|
|
274
|
+
// ========== EVOLUTION ==========
|
|
275
|
+
{
|
|
276
|
+
category: 'evolution',
|
|
277
|
+
variant: 'progressive_enhancement',
|
|
278
|
+
titleTemplate: '在 {a} 上渐进引入 {b}',
|
|
279
|
+
ideaTemplate: '不一次性改造 {a},而是在 {a} 的现有架构上以插件形式注入 {b} 的能力。第一阶段:旁路输出不做决策;第二阶段:作为建议源影响部分决策;第三阶段:在验证可靠后替换 {a} 的核心模块。',
|
|
280
|
+
benefitTemplate: '渐进式升级风险可控,随时可回滚',
|
|
281
|
+
riskTemplate: '过渡期维护两套系统的成本高',
|
|
282
|
+
typeFit: { knowledge_behavior: 8, behavior_behavior: 7, knowledge_failure: 9, behavior_failure: 8 },
|
|
283
|
+
noveltyBonus: 10,
|
|
284
|
+
feasibilityBonus: 8,
|
|
285
|
+
impactBonus: 13,
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
category: 'evolution',
|
|
289
|
+
variant: 'layered_adoption',
|
|
290
|
+
titleTemplate: '{b} 作为 {a} 的上层增强',
|
|
291
|
+
ideaTemplate: '保持 {a} 不动,在其上新增一层 {b} 的能力层。{b} 层拦截 {a} 的输入输出,进行预处理或后处理增强。上层能力通过 feature flag 控制,逐步开放给不同用户群体验证效果。',
|
|
292
|
+
benefitTemplate: '不侵入核心逻辑的前提下获得新能力',
|
|
293
|
+
riskTemplate: '上层增强层可能成为黑盒,增加调试难度',
|
|
294
|
+
typeFit: { knowledge_behavior: 7, insight_behavior: 8, knowledge_insight: 7 },
|
|
295
|
+
noveltyBonus: 8,
|
|
296
|
+
feasibilityBonus: 9,
|
|
297
|
+
impactBonus: 11,
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
category: 'evolution',
|
|
301
|
+
variant: 'incremental_replacement',
|
|
302
|
+
titleTemplate: '{a} 模块的 {b} 化改造',
|
|
303
|
+
ideaTemplate: '将 {a} 的功能按独立程度拆分为子模块,标记每个子模块是否适合被 {b} 的能力替代。优先替换边界清晰、影响面小的子模块,每替换一个就运行一个月观察稳定性,再决定下一步。',
|
|
304
|
+
benefitTemplate: '大规模改造变成小步快跑的系列任务',
|
|
305
|
+
riskTemplate: '新旧混合期接口兼容性需要持续维护',
|
|
306
|
+
typeFit: { knowledge_knowledge: 7, behavior_behavior: 6, failure_failure: 8 },
|
|
307
|
+
noveltyBonus: 9,
|
|
308
|
+
feasibilityBonus: 9,
|
|
309
|
+
impactBonus: 10,
|
|
310
|
+
},
|
|
311
|
+
// ========== SYMBIOSIS ==========
|
|
312
|
+
{
|
|
313
|
+
category: 'symbiosis',
|
|
314
|
+
variant: 'event_coupling',
|
|
315
|
+
titleTemplate: '{a} 和 {b} 的事件总线',
|
|
316
|
+
ideaTemplate: '通过事件总线连接 {a} 和 {b}:{a} 产生的事件经总线广播,{b} 选择性订阅感兴趣的事件来触发自身行为。总线定义标准化的事件 Schema,{a} 和 {b} 通过 Schema 演进保持兼容。',
|
|
317
|
+
benefitTemplate: '松耦合,各自独立演进不影响对方',
|
|
318
|
+
riskTemplate: '事件 Schema 演进困难,新字段需要消费者配合',
|
|
319
|
+
typeFit: { behavior_behavior: 9, knowledge_behavior: 7, insight_behavior: 7, behavior_failure: 8 },
|
|
320
|
+
noveltyBonus: 14,
|
|
321
|
+
feasibilityBonus: 7,
|
|
322
|
+
impactBonus: 15,
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
category: 'symbiosis',
|
|
326
|
+
variant: 'plugin_architecture',
|
|
327
|
+
titleTemplate: '{b} 插件化 {a}',
|
|
328
|
+
ideaTemplate: '将 {a} 的能力接口定义为一组插件契约,{b} 作为插件实现接入。{a} 在运行时通过 ServiceLoader 发现并加载 {b} 的插件,{b} 专注于实现契约而不需关心 {a} 的内部调度。',
|
|
329
|
+
benefitTemplate: '职责边界清晰,{b} 可替换可测试',
|
|
330
|
+
riskTemplate: '插件 API 的稳定性直接影响生态建设',
|
|
331
|
+
typeFit: { knowledge_behavior: 8, behavior_behavior: 8, knowledge_knowledge: 6 },
|
|
332
|
+
noveltyBonus: 11,
|
|
333
|
+
feasibilityBonus: 8,
|
|
334
|
+
impactBonus: 13,
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
category: 'symbiosis',
|
|
338
|
+
variant: 'sidecar_pattern',
|
|
339
|
+
titleTemplate: '{a} 附属的 {b} 边车',
|
|
340
|
+
ideaTemplate: '为 {a} 附加一个 {b} 边车进程,{a} 的每次请求先经过边车处理(监控、缓存、过滤、转换)后再到达主逻辑。边车无状态可独立扩缩容,{a} 不需要引入 {b} 的依赖库。',
|
|
341
|
+
benefitTemplate: '横切关注点与主逻辑分离,运维灵活',
|
|
342
|
+
riskTemplate: '边车增加请求链路中的网络跳转',
|
|
343
|
+
typeFit: { behavior_behavior: 7, knowledge_behavior: 7, insight_behavior: 7, failure_behavior: 7 },
|
|
344
|
+
noveltyBonus: 12,
|
|
345
|
+
feasibilityBonus: 7,
|
|
346
|
+
impactBonus: 12,
|
|
347
|
+
},
|
|
348
|
+
// ========== ORCHESTRATE ==========
|
|
349
|
+
{
|
|
350
|
+
category: 'orchestrate',
|
|
351
|
+
variant: 'coordinator',
|
|
352
|
+
titleTemplate: '{a} 编排 {b} 工作流',
|
|
353
|
+
ideaTemplate: '将 {b} 的现有能力封装为标准步骤(step),{a} 作为编配器定义这些步骤的执行顺序、条件分支和异常处理。{a} 维护一个 DAG 定义工作流拓扑,{b} 只关心单个步骤的实现。',
|
|
354
|
+
benefitTemplate: '组合复杂度从单体代码转移到可配置的编配层',
|
|
355
|
+
riskTemplate: '编配器成为单点故障',
|
|
356
|
+
typeFit: { behavior_insight: 8, knowledge_insight: 7, insight_insight: 7 },
|
|
357
|
+
noveltyBonus: 16,
|
|
358
|
+
feasibilityBonus: 6,
|
|
359
|
+
impactBonus: 17,
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
category: 'orchestrate',
|
|
363
|
+
variant: 'pipeline_composition',
|
|
364
|
+
titleTemplate: '{a} × {b} 处理流水线',
|
|
365
|
+
ideaTemplate: '将 {a} 和 {b} 组合为一条数据处理流水线:{a} 的输出是 {b} 的输入。每个环节定义明确的输入/输出 Schema,中间结果可缓存可重放。流水线用 JSON 定义,运行时动态加载。',
|
|
366
|
+
benefitTemplate: '处理链路可视化,每个环节可单独调优',
|
|
367
|
+
riskTemplate: '流水线中单环节延迟拖累整体吞吐',
|
|
368
|
+
typeFit: { knowledge_behavior: 8, behavior_behavior: 7, knowledge_knowledge: 7, insight_behavior: 6 },
|
|
369
|
+
noveltyBonus: 11,
|
|
370
|
+
feasibilityBonus: 8,
|
|
371
|
+
impactBonus: 13,
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
category: 'orchestrate',
|
|
375
|
+
variant: 'chain_of_thought_flow',
|
|
376
|
+
titleTemplate: '{a} 引导 {b} 的推理链',
|
|
377
|
+
ideaTemplate: '{a} 不直接输出结果,而是生成一条推理路径(中间步骤链),{b} 沿着这条路径逐步验证和执行。{a} 负责任务分解和优先级排序,{b} 负责每一步的细节执行,最终结果由 {b} 汇总返回。',
|
|
378
|
+
benefitTemplate: '复杂任务被拆解为可追溯、可干预的小步骤',
|
|
379
|
+
riskTemplate: '推理链过长时中间步骤的累积误差',
|
|
380
|
+
typeFit: { insight_behavior: 9, insight_knowledge: 8, knowledge_behavior: 7, insight_insight: 7 },
|
|
381
|
+
noveltyBonus: 19,
|
|
382
|
+
feasibilityBonus: 4,
|
|
383
|
+
impactBonus: 18,
|
|
384
|
+
},
|
|
385
|
+
];
|
|
386
|
+
/**
|
|
387
|
+
* TemplateLibrary — 本地假设生成引擎
|
|
388
|
+
*
|
|
389
|
+
* 使用方式:
|
|
390
|
+
* 1. selectBest(combo, sources) 根据来源类型选择 2-3 个最佳模板
|
|
391
|
+
* 2. fill(template, sourceA, sourceB) 填充模板内容
|
|
392
|
+
* 3. 直接 generate(combo, sources) 一站式生成 Hypothesis
|
|
393
|
+
*/
|
|
394
|
+
class TemplateLibrary {
|
|
395
|
+
rng;
|
|
396
|
+
constructor(seed) {
|
|
397
|
+
this.rng = (0, random_1.resolveRandom)(seed);
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* 为一个 ConceptCombo 生成一条假设
|
|
401
|
+
* @returns 生成的 Hypothesis,如果无适用模板则返回 null
|
|
402
|
+
*/
|
|
403
|
+
generate(combo, sources) {
|
|
404
|
+
const sourceA = sources.find((s) => s.name === combo.sources[0]);
|
|
405
|
+
const sourceB = sources.find((s) => s.name === combo.sources[1]);
|
|
406
|
+
if (!sourceA || !sourceB)
|
|
407
|
+
return null;
|
|
408
|
+
const typeKey = this.typeKey(sourceA.type, sourceB.type);
|
|
409
|
+
const nameKey = this.nameKey(sourceA.name, sourceB.name);
|
|
410
|
+
const candidates = this.selectForType(typeKey, nameKey);
|
|
411
|
+
if (candidates.length === 0)
|
|
412
|
+
return null;
|
|
413
|
+
// 用来源名称做 hash,保证同源同模板(确定性)
|
|
414
|
+
const idx = this.stableHash(combo.sources[0], combo.sources[1]) % candidates.length;
|
|
415
|
+
const tpl = candidates[idx];
|
|
416
|
+
const id = `hyp_tpl_${Date.now()}_${this.rng().toString(36).slice(2, 6)}`;
|
|
417
|
+
return {
|
|
418
|
+
id,
|
|
419
|
+
title: fill(tpl.titleTemplate, sourceA, sourceB),
|
|
420
|
+
idea: fill(tpl.ideaTemplate, sourceA, sourceB),
|
|
421
|
+
expectedBenefit: fill(tpl.benefitTemplate, sourceA, sourceB),
|
|
422
|
+
risk: fill(tpl.riskTemplate, sourceA, sourceB),
|
|
423
|
+
sourceLabels: [sourceA.name, sourceB.name],
|
|
424
|
+
novelty: clamp50(tpl.noveltyBonus + this.scoreNoise()),
|
|
425
|
+
feasibility: clamp50(tpl.feasibilityBonus + this.scoreNoise()),
|
|
426
|
+
impact: clamp50(tpl.impactBonus + this.scoreNoise()),
|
|
427
|
+
status: 'draft',
|
|
428
|
+
createdAt: Date.now(),
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
/**
|
|
432
|
+
* 返回适用于某个类型组合的所有模板列表
|
|
433
|
+
* @param nameKey 对 source name 排序后的组合键,用于 nameFit 二次路由
|
|
434
|
+
*/
|
|
435
|
+
selectForType(typeKey, nameKey = '') {
|
|
436
|
+
const [a, b] = typeKey.split('_');
|
|
437
|
+
const reverseKey = `${b}_${a}`;
|
|
438
|
+
const scored = TEMPLATES.map((tpl) => {
|
|
439
|
+
let score = tpl.typeFit[typeKey] ?? tpl.typeFit[reverseKey] ?? 0;
|
|
440
|
+
// nameFit 加成:使模板在不同 name 组合间产生差异
|
|
441
|
+
if (tpl.nameFit && nameKey) {
|
|
442
|
+
score += tpl.nameFit[nameKey] ?? 0;
|
|
443
|
+
}
|
|
444
|
+
return { tpl, score };
|
|
445
|
+
});
|
|
446
|
+
return scored
|
|
447
|
+
.filter((s) => s.score >= 5)
|
|
448
|
+
.sort((a, b) => b.score - a.score)
|
|
449
|
+
.map((s) => s.tpl);
|
|
450
|
+
}
|
|
451
|
+
typeKey(a, b) {
|
|
452
|
+
return [a, b].sort().join('_');
|
|
453
|
+
}
|
|
454
|
+
/** 对 source name 排序生成 nameFit 查询键 */
|
|
455
|
+
nameKey(a, b) {
|
|
456
|
+
return [a, b].sort().join('|');
|
|
457
|
+
}
|
|
458
|
+
stableHash(a, b) {
|
|
459
|
+
let h = 0;
|
|
460
|
+
const s = a + '|' + b;
|
|
461
|
+
for (let i = 0; i < s.length; i++) {
|
|
462
|
+
h = (h << 5) - h + s.charCodeAt(i);
|
|
463
|
+
h = h & h;
|
|
464
|
+
}
|
|
465
|
+
return Math.abs(h);
|
|
466
|
+
}
|
|
467
|
+
/** 评分的小幅随机扰动(0-15),保持一定多样性 */
|
|
468
|
+
scoreNoise() {
|
|
469
|
+
return Math.round(this.rng() * 12);
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
exports.TemplateLibrary = TemplateLibrary;
|
|
473
|
+
/** 填充模板中的 {a} / {b} 占位符 */
|
|
474
|
+
function fill(template, a, b) {
|
|
475
|
+
return template
|
|
476
|
+
.replace(/\{a\}/g, a.name)
|
|
477
|
+
.replace(/\{b\}/g, b.name)
|
|
478
|
+
.replace(/\{aType\}/g, a.type)
|
|
479
|
+
.replace(/\{bType\}/g, b.type);
|
|
480
|
+
}
|
|
481
|
+
/** 确保分数在 60-100 之间 */
|
|
482
|
+
function clamp50(v) {
|
|
483
|
+
return Math.max(60, Math.min(100, v));
|
|
484
|
+
}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 生成策略 �?�?ConceptMixer 之前选择,约束配对空�?
|
|
3
|
+
* - stable: 同类型组合,禁止 novelty bonus 主导,输出收�?
|
|
4
|
+
* - explore: 跨类型组合,提高 diversity weight,允许结构差�?
|
|
5
|
+
* - signal: 强制注入 trend/ provocation/insight 来源,限�?randomness
|
|
6
|
+
*/
|
|
7
|
+
export type Strategy = 'stable' | 'explore' | 'signal';
|
|
8
|
+
export interface CreativitySource {
|
|
9
|
+
name: string;
|
|
10
|
+
content: string;
|
|
11
|
+
fullContent?: string;
|
|
12
|
+
sourceDepth?: 'shallow' | 'medium' | 'full';
|
|
13
|
+
type: 'knowledge' | 'behavior' | 'insight' | 'failure' | 'random' | 'provocation' | 'feedback';
|
|
14
|
+
weight: number;
|
|
15
|
+
/** Provider + record id, e.g. `memory:mem_1791…`. Required on auto-aggregated sources (spec Capability 2). */
|
|
16
|
+
origin?: string;
|
|
17
|
+
/** Original record id for back-referencing. */
|
|
18
|
+
originId?: string;
|
|
19
|
+
/** 0-1 credibility hint; omit when unknowable. */
|
|
20
|
+
confidence?: number;
|
|
21
|
+
/** Source record time, ISO 8601. */
|
|
22
|
+
timestamp?: string;
|
|
23
|
+
}
|
|
24
|
+
/** Where and how an idea.generate result was produced (spec Capability 1). */
|
|
25
|
+
export interface HypothesisProvenance {
|
|
26
|
+
/** Pairing strategy used to build source combos: explore | stable | signal. */
|
|
27
|
+
strategy?: string;
|
|
28
|
+
/** Rotation technique used for the prompt (mirrors `Hypothesis.technique`). */
|
|
29
|
+
technique?: string;
|
|
30
|
+
/** Memory record ids that grounded the goal (0-3, newest first). */
|
|
31
|
+
relatedMemoryIds?: string[];
|
|
32
|
+
/** Assembled sources that fed generation, filtered to the labels actually used. */
|
|
33
|
+
sources?: Array<{
|
|
34
|
+
name: string;
|
|
35
|
+
type: string;
|
|
36
|
+
origin?: string;
|
|
37
|
+
timestamp?: string;
|
|
38
|
+
}>;
|
|
39
|
+
/** When the idea was generated, ISO 8601. */
|
|
40
|
+
generatedAt?: string;
|
|
41
|
+
}
|
|
42
|
+
export interface ConceptCombo {
|
|
43
|
+
id: string;
|
|
44
|
+
sources: [string, string];
|
|
45
|
+
description: string;
|
|
46
|
+
createdAt: number;
|
|
47
|
+
}
|
|
48
|
+
export type FermentVerdict = 'promote' | 'keep' | 'reject' | 'merge';
|
|
49
|
+
export interface FermentLogEntry {
|
|
50
|
+
at: number;
|
|
51
|
+
verdict: FermentVerdict;
|
|
52
|
+
reason: string;
|
|
53
|
+
score?: {
|
|
54
|
+
novelty: number;
|
|
55
|
+
feasibility: number;
|
|
56
|
+
impact: number;
|
|
57
|
+
logic?: number;
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
export interface HypothesisFermentationPatch {
|
|
61
|
+
status?: Hypothesis['status'];
|
|
62
|
+
fermentCount?: number;
|
|
63
|
+
lastFermentedAt?: number;
|
|
64
|
+
fermentLog?: FermentLogEntry[];
|
|
65
|
+
idea?: string;
|
|
66
|
+
novelty?: number;
|
|
67
|
+
feasibility?: number;
|
|
68
|
+
impact?: number;
|
|
69
|
+
logic?: number;
|
|
70
|
+
mergedInto?: string;
|
|
71
|
+
}
|
|
72
|
+
export interface Hypothesis {
|
|
73
|
+
id: string;
|
|
74
|
+
title: string;
|
|
75
|
+
idea: string;
|
|
76
|
+
expectedBenefit: string;
|
|
77
|
+
risk: string;
|
|
78
|
+
sourceLabels: string[];
|
|
79
|
+
sourceDetails?: Array<{
|
|
80
|
+
name: string;
|
|
81
|
+
depth: 'shallow' | 'medium' | 'full';
|
|
82
|
+
}>;
|
|
83
|
+
novelty: number;
|
|
84
|
+
feasibility: number;
|
|
85
|
+
impact: number;
|
|
86
|
+
/** 逻辑一致性评分 0-100(第四维,评审/生成时打分,可缺省视为 50) */
|
|
87
|
+
logic?: number;
|
|
88
|
+
status: 'draft' | 'active' | 'experimenting' | 'validated' | 'rejected';
|
|
89
|
+
createdAt: number;
|
|
90
|
+
/** The rotation technique this hypothesis was generated with (idea.generate provenance.technique). */
|
|
91
|
+
technique?: string;
|
|
92
|
+
/** Idea-generation provenance; `mio.idea.generate` persists this with the record. */
|
|
93
|
+
provenance?: HypothesisProvenance;
|
|
94
|
+
/** 实现难度 1-5(LLM 生成�?*/
|
|
95
|
+
implementationDifficulty?: number;
|
|
96
|
+
/** 预计开发时间(LLM 生成,如 "1-2�?�?*/
|
|
97
|
+
estimatedDevTime?: string;
|
|
98
|
+
/** 多视角评估(LLM 生成�?*/
|
|
99
|
+
perspectives?: {
|
|
100
|
+
self: string;
|
|
101
|
+
user: string;
|
|
102
|
+
maintainer: string;
|
|
103
|
+
};
|
|
104
|
+
/** 已发酵轮�?*/
|
|
105
|
+
fermentCount?: number;
|
|
106
|
+
/** 最近发酵时间戳 */
|
|
107
|
+
lastFermentedAt?: number;
|
|
108
|
+
/** 发酵历史记录 */
|
|
109
|
+
fermentLog?: FermentLogEntry[];
|
|
110
|
+
/** merge 后指向的�?hypothesis id */
|
|
111
|
+
mergedInto?: string;
|
|
112
|
+
implementedCommitSha?: string;
|
|
113
|
+
implementedAt?: number;
|
|
114
|
+
implementationNote?: string;
|
|
115
|
+
}
|
|
116
|
+
export interface ExperimentPlan {
|
|
117
|
+
hypothesisId: string;
|
|
118
|
+
title: string;
|
|
119
|
+
steps: string[];
|
|
120
|
+
successCriteria: string[];
|
|
121
|
+
estimatedDuration: string;
|
|
122
|
+
createdAt: number;
|
|
123
|
+
}
|
|
124
|
+
export interface CreativeIdea {
|
|
125
|
+
hypothesis: Hypothesis;
|
|
126
|
+
experiment: ExperimentPlan | null;
|
|
127
|
+
}
|
|
128
|
+
export interface DreamCycleLog {
|
|
129
|
+
timestamp: number;
|
|
130
|
+
sourcesExamined: number;
|
|
131
|
+
combosGenerated: number;
|
|
132
|
+
hypothesesGenerated: number;
|
|
133
|
+
topIdea: string | null;
|
|
134
|
+
}
|
|
135
|
+
export interface IdeaStoreLike {
|
|
136
|
+
addCombo: (combo: ConceptCombo) => void;
|
|
137
|
+
addHypothesis: (h: Hypothesis) => void;
|
|
138
|
+
addManyHypotheses: (hs: Hypothesis[]) => void;
|
|
139
|
+
addExperiment: (exp: ExperimentPlan) => void;
|
|
140
|
+
logDreamCycle: (entry: DreamCycleLog) => void;
|
|
141
|
+
getHypotheses: (options?: {
|
|
142
|
+
status?: string;
|
|
143
|
+
limit?: number;
|
|
144
|
+
}) => Hypothesis[];
|
|
145
|
+
getNovelHypotheses: (threshold?: number, limit?: number) => Hypothesis[];
|
|
146
|
+
getActiveExperiments: () => ExperimentPlan[];
|
|
147
|
+
getRecentCombos: (limit?: number) => ConceptCombo[];
|
|
148
|
+
getRecentDreamCycles: (limit?: number) => DreamCycleLog[];
|
|
149
|
+
updateHypothesisStatus: (id: string, status: Hypothesis['status']) => boolean;
|
|
150
|
+
addExploredPair: (nameA: string, nameB: string) => void;
|
|
151
|
+
getExploredPairs: () => string[];
|
|
152
|
+
resetExploredPairs: () => void;
|
|
153
|
+
count: () => {
|
|
154
|
+
combos: number;
|
|
155
|
+
hypotheses: number;
|
|
156
|
+
experiments: number;
|
|
157
|
+
dreamCycles: number;
|
|
158
|
+
};
|
|
159
|
+
templateAdoptionStats: () => Record<string, {
|
|
160
|
+
total: number;
|
|
161
|
+
active: number;
|
|
162
|
+
rejected: number;
|
|
163
|
+
adopted: number;
|
|
164
|
+
}>;
|
|
165
|
+
adoptionReport: (limit?: number) => string;
|
|
166
|
+
getFermentableHypotheses: (limit?: number) => Hypothesis[];
|
|
167
|
+
updateHypothesisFermentation: (id: string, patch: HypothesisFermentationPatch) => boolean;
|
|
168
|
+
}
|
|
169
|
+
export interface CreativityStoreData {
|
|
170
|
+
version: number;
|
|
171
|
+
combos: ConceptCombo[];
|
|
172
|
+
hypotheses: Hypothesis[];
|
|
173
|
+
experiments: ExperimentPlan[];
|
|
174
|
+
dreamCycles: DreamCycleLog[];
|
|
175
|
+
exploredPairs: string[];
|
|
176
|
+
}
|
|
177
|
+
export declare const CREATIVITY_STORE_VERSION = 2;
|
|
178
|
+
export declare const DREAM_CYCLE_INTERVAL_MS: number;
|
|
179
|
+
export declare const NORMAL_CYCLE_INTERVAL_MS: number;
|
|
180
|
+
export declare const FERMENT_INTERVAL_MS: number;
|
|
181
|
+
/** 发酵与创意周期错峰偏移:避免同一时刻并发占用 code 模型上游 */
|
|
182
|
+
export declare const FERMENT_PHASE_OFFSET_MS: number;
|
|
183
|
+
/**
|
|
184
|
+
* 外部信号 �?不进入配对空�?
|
|
185
|
+
*
|
|
186
|
+
* Observer 的外部数据在此层保持�?不可配对"的原始语义,
|
|
187
|
+
* 直接注入 LLM 作为约束/挑战,而非组合概念�?
|
|
188
|
+
*
|
|
189
|
+
* �?CreativitySource 的关键区别:
|
|
190
|
+
* - 不能进入 ConceptMixer
|
|
191
|
+
* - 不参�?combinatorial pairing
|
|
192
|
+
* - 不参�?scoring/ranking
|
|
193
|
+
* - 只作�?prompt 中的"外部审视"�?
|
|
194
|
+
*/
|
|
195
|
+
export interface ExternalSignal {
|
|
196
|
+
source: string;
|
|
197
|
+
raw: string;
|
|
198
|
+
type: 'trend' | 'event' | 'anomaly' | 'insight';
|
|
199
|
+
}
|