dsh-composer-ux 0.13.2 → 0.14.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/CHANGELOG.md +45 -0
- package/NOTICE +60 -0
- package/README.md +11 -5
- package/lib/client.js +665 -177
- package/lib/client.js.map +4 -4
- package/lib/index.js +525 -140
- package/lib/index.js.map +4 -4
- package/package.json +3 -2
package/lib/client.js
CHANGED
|
@@ -1072,6 +1072,30 @@ var OPTIMIZER_CONTEXT_FIELD = "optimizerContext";
|
|
|
1072
1072
|
var OPTIMIZER_LEDGER_FIELD = "optimizerLedger";
|
|
1073
1073
|
var OPTIMIZE_KEEP_DOCK_FIELD = "optimizeKeepDock";
|
|
1074
1074
|
var OPTIMIZE_READ_TOOLS_FIELD = "optimizeReadTools";
|
|
1075
|
+
var OPTIMIZER_FRAMING_FIELD = "optimizerFraming";
|
|
1076
|
+
var OPTIMIZER_FRAMINGS = [
|
|
1077
|
+
{ id: "neutral", label: "\u666E\u901A", hint: "\u7167\u5E38\u7684\u4E66\u9762\u8BED\u57DF\u3002" },
|
|
1078
|
+
{ id: "hard", label: "\u786C\u90A6\u90A6", hint: "\u6574\u4EFD\u8F85\u52A9\u5305\u90FD\u7528\u53E3\u8BED\u3001\u76F4\u7ED9\u3001\u5E26\u52B2\u7684\u5199\u6CD5\uFF08\u53EA\u6539\u5199\u6CD5\uFF0C\u6761\u76EE\u4E0E\u4F9D\u636E\u89C4\u5219\u4E0D\u53D8\uFF09\u3002" }
|
|
1079
|
+
];
|
|
1080
|
+
var DEFAULT_OPTIMIZER_FRAMING = "neutral";
|
|
1081
|
+
var OPTIMIZER_PERMISSION_FIELD = "optimizerPermission";
|
|
1082
|
+
var OPTIMIZER_PERMISSIONS = [
|
|
1083
|
+
{ id: "review", label: "\u5BA1\u67E5", hint: "\u6210\u54C1\u8FDB\u7ED3\u679C\u6846\uFF0C\u4F60\u770B\u8FC7\u518D\u70B9\u300C\u63D2\u5165\u8F93\u5165\u6846\u300D\u5199\u56DE\u3002" },
|
|
1084
|
+
{ id: "auto", label: "\u81EA\u52A8", hint: "\u8DD1\u5B8C\u81EA\u52A8\u628A\u6210\u54C1\u5199\u56DE\u8F93\u5165\u6846\uFF08\u8986\u76D6\u5168\u6587\uFF0CCtrl+Z \u53EF\u8FD8\u539F\uFF09\uFF1B\u4E0D\u4F1A\u81EA\u52A8\u53D1\u9001\u3002" }
|
|
1085
|
+
];
|
|
1086
|
+
var DEFAULT_OPTIMIZER_PERMISSION = "review";
|
|
1087
|
+
var OPTIMIZER_MODEL_FIELD = "optimizerModel";
|
|
1088
|
+
var OPTIMIZER_MODEL_MAX = 120;
|
|
1089
|
+
var OPTIMIZER_HISTORY_FIELD = "optimizerHistory";
|
|
1090
|
+
var OPTIMIZER_TURNS_FIELD = "optimizerTurns";
|
|
1091
|
+
var OPTIMIZER_TURNS_MIN = 0;
|
|
1092
|
+
var OPTIMIZER_TURNS_MAX = 10;
|
|
1093
|
+
var DEFAULT_OPTIMIZER_TURNS = 6;
|
|
1094
|
+
var OPTIMIZE_BASH_FIELD = "optimizeBash";
|
|
1095
|
+
function normalizeOptimizerTurns(value) {
|
|
1096
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return DEFAULT_OPTIMIZER_TURNS;
|
|
1097
|
+
return Math.min(OPTIMIZER_TURNS_MAX, Math.max(OPTIMIZER_TURNS_MIN, Math.round(value)));
|
|
1098
|
+
}
|
|
1075
1099
|
var QUICK_PROMPT_MAX = 60;
|
|
1076
1100
|
var QUICK_CATEGORY_MAX = 20;
|
|
1077
1101
|
var QUICK_CATEGORY_NAME_MAX = 40;
|
|
@@ -1099,19 +1123,36 @@ function insertModeOf(prompt) {
|
|
|
1099
1123
|
return "never";
|
|
1100
1124
|
}
|
|
1101
1125
|
var OPTIMIZER_TIERS = [
|
|
1102
|
-
{ id: "
|
|
1103
|
-
{ id: "
|
|
1104
|
-
{ id: "
|
|
1126
|
+
{ id: "off", label: "\u5173\u95ED", hint: "\u5B8C\u5168\u4E0D\u4F18\u5316\uFF1A\u4E0D\u8C03\u7528\u6A21\u578B\u3001\u4E0D\u78B0\u4F60\u7684\u8F93\u5165\u6846\uFF08\u7B49\u4E8E\u6CA1\u88C5\u8FD9\u4E2A\u529F\u80FD\uFF09\u3002" },
|
|
1127
|
+
{ id: "light", label: "\u8F7B\u5EA6", hint: "\u5355\u4E00\u89E3\u8BFB\uFF1A\u53EA\u628A\u300C\u4F60\u8FD9\u4E00\u8F6E\u5230\u5E95\u8981\u4EC0\u4E48\u300D\u7406\u6E05\u695A\uFF0C\u6700\u591A 4 \u6761\uFF0C\u4E0D\u4EA7\u51FA\u5E76\u5217\u5019\u9009\u3002" },
|
|
1128
|
+
{ id: "standard", label: "\u6807\u51C6", hint: "\u6761\u76EE\u5185\u5E76\u5217\uFF1A\u8D28\u91CF\u8BCD\u843D\u5230\u53EF\u68C0\u7EF4\u5EA6\uFF08\u81F3\u5C11 1 \u6761\uFF09\uFF0C\u6700\u591A 8 \u6761\u3002" },
|
|
1129
|
+
{ id: "heavy", label: "\u91CD\u5EA6", hint: "\u591A\u5047\u8BBE\u5206\u652F\uFF1A\u540C\u4E00\u53E5\u8BDD\u6709\u51E0\u79CD\u8BFB\u6CD5\u5C31\u5217\u5019\u9009\uFF08\u6700\u591A 3 \u4E2A\uFF09\uFF0C\u8D28\u91CF\u7EF4\u5EA6\u81F3\u5C11 2 \u6761\uFF0C\u6700\u591A 12 \u6761\uFF0C\u601D\u8003\u66F4\u6DF1\u3002" }
|
|
1105
1130
|
];
|
|
1106
|
-
var DEFAULT_OPTIMIZER_TIER = "
|
|
1131
|
+
var DEFAULT_OPTIMIZER_TIER = "standard";
|
|
1132
|
+
var LEGACY_OPTIMIZER_TIERS = Object.freeze({
|
|
1133
|
+
basic: "light",
|
|
1134
|
+
advanced: "standard",
|
|
1135
|
+
extreme: "heavy"
|
|
1136
|
+
});
|
|
1137
|
+
function normalizeOptimizerTier(value) {
|
|
1138
|
+
const raw = typeof value === "string" ? value.trim() : "";
|
|
1139
|
+
if (raw === "off" || raw === "light" || raw === "standard" || raw === "heavy") return raw;
|
|
1140
|
+
return LEGACY_OPTIMIZER_TIERS[raw] ?? DEFAULT_OPTIMIZER_TIER;
|
|
1141
|
+
}
|
|
1107
1142
|
var OPTIMIZER_PROMPT_FIELDS = {
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1143
|
+
light: "optimizerPromptLight",
|
|
1144
|
+
standard: "optimizerPromptStandard",
|
|
1145
|
+
heavy: "optimizerPromptHeavy"
|
|
1146
|
+
};
|
|
1147
|
+
var LEGACY_OPTIMIZER_PROMPT_FIELDS = {
|
|
1148
|
+
light: "optimizerPromptBasic",
|
|
1149
|
+
standard: "optimizerPromptAdvanced",
|
|
1150
|
+
heavy: "optimizerPromptExtreme"
|
|
1111
1151
|
};
|
|
1112
|
-
var OPTIMIZER_PROMPT_FIELD_LIST = OPTIMIZER_TIERS.map((item) => OPTIMIZER_PROMPT_FIELDS[item.id]);
|
|
1152
|
+
var OPTIMIZER_PROMPT_FIELD_LIST = OPTIMIZER_TIERS.filter((item) => item.id !== "off").map((item) => OPTIMIZER_PROMPT_FIELDS[item.id]);
|
|
1113
1153
|
var OPTIMIZER_PROMPT_MAX = 2e4;
|
|
1114
1154
|
function optimizerPromptFieldOf(tier) {
|
|
1155
|
+
if (tier === "off") return "";
|
|
1115
1156
|
return OPTIMIZER_PROMPT_FIELDS[tier] ?? OPTIMIZER_PROMPT_FIELDS[DEFAULT_OPTIMIZER_TIER];
|
|
1116
1157
|
}
|
|
1117
1158
|
var DEFAULT_QUICK_PROMPTS = [
|
|
@@ -1268,10 +1309,16 @@ var DEFAULT_SETTINGS = {
|
|
|
1268
1309
|
optimizeKeepDock: true,
|
|
1269
1310
|
// 只读工具默认**关**:它会真的多花时间与 token(开了才走工具轮次)。
|
|
1270
1311
|
optimizeReadTools: false,
|
|
1312
|
+
optimizerFraming: DEFAULT_OPTIMIZER_FRAMING,
|
|
1313
|
+
optimizerPermission: DEFAULT_OPTIMIZER_PERMISSION,
|
|
1314
|
+
optimizerModel: "",
|
|
1315
|
+
optimizerHistory: "turns",
|
|
1316
|
+
optimizerTurns: DEFAULT_OPTIMIZER_TURNS,
|
|
1317
|
+
optimizeBash: false,
|
|
1271
1318
|
// 空串 = 用内置提示词。默认必须是空串:它同时就是「恢复内置」要写回去的值。
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1319
|
+
optimizerPromptLight: "",
|
|
1320
|
+
optimizerPromptStandard: "",
|
|
1321
|
+
optimizerPromptHeavy: "",
|
|
1275
1322
|
terminalMode: DEFAULT_TERMINAL_MODE,
|
|
1276
1323
|
terminalBashPath: "",
|
|
1277
1324
|
terminalCandidates: [],
|
|
@@ -1437,10 +1484,7 @@ function sanitizeSettings(value) {
|
|
|
1437
1484
|
}
|
|
1438
1485
|
return out;
|
|
1439
1486
|
};
|
|
1440
|
-
const asTier = () =>
|
|
1441
|
-
const v = source[OPTIMIZER_TIER_FIELD];
|
|
1442
|
-
return v === "basic" || v === "advanced" || v === "extreme" ? v : DEFAULT_OPTIMIZER_TIER;
|
|
1443
|
-
};
|
|
1487
|
+
const asTier = () => normalizeOptimizerTier(source[OPTIMIZER_TIER_FIELD]);
|
|
1444
1488
|
return {
|
|
1445
1489
|
enabled: asBool(ENABLED_FIELD),
|
|
1446
1490
|
// 五栏开关:显式写过听它的,否则按"用户碰过没"迁移(见 sectionEnabledOf)。
|
|
@@ -1477,9 +1521,17 @@ function sanitizeSettings(value) {
|
|
|
1477
1521
|
optimizerLedger: asBool(OPTIMIZER_LEDGER_FIELD),
|
|
1478
1522
|
optimizeKeepDock: asBool(OPTIMIZE_KEEP_DOCK_FIELD),
|
|
1479
1523
|
optimizeReadTools: asBool(OPTIMIZE_READ_TOOLS_FIELD),
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1524
|
+
// 枚举只认白名单里的值:写坏了就落回默认(与其它枚举字段同一做法)。
|
|
1525
|
+
optimizerFraming: source[OPTIMIZER_FRAMING_FIELD] === "hard" ? "hard" : DEFAULT_OPTIMIZER_FRAMING,
|
|
1526
|
+
optimizerPermission: source[OPTIMIZER_PERMISSION_FIELD] === "auto" ? "auto" : DEFAULT_OPTIMIZER_PERMISSION,
|
|
1527
|
+
optimizerModel: typeof source[OPTIMIZER_MODEL_FIELD] === "string" ? source[OPTIMIZER_MODEL_FIELD].trim().slice(0, OPTIMIZER_MODEL_MAX) : "",
|
|
1528
|
+
optimizerHistory: source[OPTIMIZER_HISTORY_FIELD] === "full" ? "full" : "turns",
|
|
1529
|
+
optimizerTurns: normalizeOptimizerTurns(source[OPTIMIZER_TURNS_FIELD]),
|
|
1530
|
+
optimizeBash: asBool(OPTIMIZE_BASH_FIELD),
|
|
1531
|
+
// 0.14.0 改名迁移:新字段为空而旧字段有内容 ⇒ 用旧内容(用户改过的提示词不该因为改名丢掉)。
|
|
1532
|
+
optimizerPromptLight: asPrompt(OPTIMIZER_PROMPT_FIELDS.light, OPTIMIZER_PROMPT_MAX) || asPrompt(LEGACY_OPTIMIZER_PROMPT_FIELDS.light, OPTIMIZER_PROMPT_MAX),
|
|
1533
|
+
optimizerPromptStandard: asPrompt(OPTIMIZER_PROMPT_FIELDS.standard, OPTIMIZER_PROMPT_MAX) || asPrompt(LEGACY_OPTIMIZER_PROMPT_FIELDS.standard, OPTIMIZER_PROMPT_MAX),
|
|
1534
|
+
optimizerPromptHeavy: asPrompt(OPTIMIZER_PROMPT_FIELDS.heavy, OPTIMIZER_PROMPT_MAX) || asPrompt(LEGACY_OPTIMIZER_PROMPT_FIELDS.heavy, OPTIMIZER_PROMPT_MAX),
|
|
1483
1535
|
terminalMode: terminalModeFrom(source[TERMINAL_MODE_FIELD]),
|
|
1484
1536
|
// 路径只做长度与归一化收窄,不在这里判"存不存在"——那是宿主半的探测结论,
|
|
1485
1537
|
// 由状态行告诉用户(用户看得见自己填了什么,比悄悄清空好)。
|
|
@@ -1942,7 +1994,7 @@ function parseSseChunk(buffer) {
|
|
|
1942
1994
|
}
|
|
1943
1995
|
return { events, rest };
|
|
1944
1996
|
}
|
|
1945
|
-
async function optimizeDraftStream(text, tier, handlers = {}, signal
|
|
1997
|
+
async function optimizeDraftStream(text, tier, handlers = {}, signal) {
|
|
1946
1998
|
const body = text.trim();
|
|
1947
1999
|
if (body === "") return { ok: false, error: "\u8F93\u5165\u6846\u662F\u7A7A\u7684\uFF0C\u5148\u5199\u70B9\u4EC0\u4E48\u518D\u4F18\u5316" };
|
|
1948
2000
|
let response;
|
|
@@ -1955,8 +2007,7 @@ async function optimizeDraftStream(text, tier, handlers = {}, signal, previous)
|
|
|
1955
2007
|
body: JSON.stringify({
|
|
1956
2008
|
text: body,
|
|
1957
2009
|
tier,
|
|
1958
|
-
sessionId: currentSessionId()
|
|
1959
|
-
...previous === void 0 || previous.trim() === "" ? {} : { previous }
|
|
2010
|
+
sessionId: currentSessionId()
|
|
1960
2011
|
}),
|
|
1961
2012
|
...signal === void 0 ? {} : { signal }
|
|
1962
2013
|
});
|
|
@@ -3037,6 +3088,100 @@ var dockButtonPrimary = {
|
|
|
3037
3088
|
color: "var(--dsw-alias-label-primary-foreground)",
|
|
3038
3089
|
fontWeight: 600
|
|
3039
3090
|
};
|
|
3091
|
+
var optCard = {
|
|
3092
|
+
display: "flex",
|
|
3093
|
+
flexDirection: "column",
|
|
3094
|
+
gap: 6,
|
|
3095
|
+
padding: "8px 12px 10px",
|
|
3096
|
+
borderBottom: "0.5px solid var(--dsw-alias-border-l2)"
|
|
3097
|
+
};
|
|
3098
|
+
var optCardTitle = {
|
|
3099
|
+
color: "var(--dsw-alias-label-primary)",
|
|
3100
|
+
fontSize: 12,
|
|
3101
|
+
fontWeight: 600
|
|
3102
|
+
};
|
|
3103
|
+
var optRow = {
|
|
3104
|
+
display: "flex",
|
|
3105
|
+
alignItems: "center",
|
|
3106
|
+
gap: 8
|
|
3107
|
+
};
|
|
3108
|
+
var optLabel = {
|
|
3109
|
+
color: "var(--dsw-alias-label-secondary)",
|
|
3110
|
+
fontSize: 11.5,
|
|
3111
|
+
flex: "0 0 52px"
|
|
3112
|
+
};
|
|
3113
|
+
var optSegmented = {
|
|
3114
|
+
display: "flex",
|
|
3115
|
+
alignItems: "center",
|
|
3116
|
+
gap: 2,
|
|
3117
|
+
flex: "1 1 auto",
|
|
3118
|
+
minWidth: 0
|
|
3119
|
+
};
|
|
3120
|
+
var optSegButton = {
|
|
3121
|
+
flex: "1 1 auto",
|
|
3122
|
+
minWidth: 0,
|
|
3123
|
+
padding: "3px 6px",
|
|
3124
|
+
border: "0.5px solid var(--dsw-alias-border-l2)",
|
|
3125
|
+
background: "transparent",
|
|
3126
|
+
color: "var(--dsw-alias-label-secondary)",
|
|
3127
|
+
borderRadius: 6,
|
|
3128
|
+
fontSize: 11,
|
|
3129
|
+
lineHeight: 1.6,
|
|
3130
|
+
cursor: "pointer",
|
|
3131
|
+
whiteSpace: "nowrap",
|
|
3132
|
+
overflow: "hidden",
|
|
3133
|
+
textOverflow: "ellipsis"
|
|
3134
|
+
};
|
|
3135
|
+
var optSegButtonActive = {
|
|
3136
|
+
...optSegButton,
|
|
3137
|
+
background: "var(--dsw-alias-bg-layer-1)",
|
|
3138
|
+
color: "var(--dsw-alias-label-primary)",
|
|
3139
|
+
borderColor: "var(--dsw-alias-label-primary)",
|
|
3140
|
+
fontWeight: 600
|
|
3141
|
+
};
|
|
3142
|
+
var optInput = {
|
|
3143
|
+
flex: "1 1 auto",
|
|
3144
|
+
minWidth: 0,
|
|
3145
|
+
boxSizing: "border-box",
|
|
3146
|
+
padding: "3px 8px",
|
|
3147
|
+
border: "0.5px solid var(--dsw-alias-border-l2)",
|
|
3148
|
+
borderRadius: 6,
|
|
3149
|
+
background: "transparent",
|
|
3150
|
+
color: "var(--dsw-alias-label-primary)",
|
|
3151
|
+
fontSize: 11.5
|
|
3152
|
+
};
|
|
3153
|
+
var optSlider = {
|
|
3154
|
+
flex: "1 1 auto",
|
|
3155
|
+
minWidth: 0,
|
|
3156
|
+
accentColor: "var(--dsw-alias-label-primary)"
|
|
3157
|
+
};
|
|
3158
|
+
var optNumber = {
|
|
3159
|
+
color: "var(--dsw-alias-label-tertiary)",
|
|
3160
|
+
fontSize: 11,
|
|
3161
|
+
flex: "0 0 auto",
|
|
3162
|
+
minWidth: 34,
|
|
3163
|
+
textAlign: "right"
|
|
3164
|
+
};
|
|
3165
|
+
var optPromptBox = {
|
|
3166
|
+
width: "100%",
|
|
3167
|
+
boxSizing: "border-box",
|
|
3168
|
+
minHeight: 96,
|
|
3169
|
+
maxHeight: "22vh",
|
|
3170
|
+
resize: "vertical",
|
|
3171
|
+
padding: "6px 8px",
|
|
3172
|
+
border: "0.5px solid var(--dsw-alias-border-l2)",
|
|
3173
|
+
borderRadius: 8,
|
|
3174
|
+
background: "transparent",
|
|
3175
|
+
color: "var(--dsw-alias-label-primary)",
|
|
3176
|
+
fontSize: 11.5,
|
|
3177
|
+
lineHeight: 1.6,
|
|
3178
|
+
fontFamily: "inherit"
|
|
3179
|
+
};
|
|
3180
|
+
var optHint = {
|
|
3181
|
+
color: "var(--dsw-alias-label-tertiary)",
|
|
3182
|
+
fontSize: 10.5,
|
|
3183
|
+
lineHeight: 1.5
|
|
3184
|
+
};
|
|
3040
3185
|
|
|
3041
3186
|
// src/client/ContextMenuHost.tsx
|
|
3042
3187
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -4132,6 +4277,130 @@ function CostCardBody(props) {
|
|
|
4132
4277
|
] });
|
|
4133
4278
|
}
|
|
4134
4279
|
|
|
4280
|
+
// src/optimizer-transplant.ts
|
|
4281
|
+
var UPSTREAM_MISSION = [
|
|
4282
|
+
"\u3010\u6700\u91CD\u8981\u7684\u4E00\u6761\u3011\u7528\u6237\u539F\u8BDD\u4F1A\u88AB\u539F\u6837\u4FDD\u7559\u3002\u4F60\u4E0D\u6539\u5199\u5B83\uFF0C\u4F60\u53EA\u8865\u5B83\u6CA1\u8BF4\u7684\u3001\u800C\u5DE5\u4F5C AI \u65E0\u6CD5\u81EA\u77E5\u7684\u4E1C\u897F\u3002"
|
|
4283
|
+
].join("\n");
|
|
4284
|
+
var UPSTREAM_RULES = [
|
|
4285
|
+
"\u3010\u786C\u89C4\u5219\uFF08\u5BBF\u4E3B\u9010\u6761\u673A\u68B0\u6838\u5BF9\uFF1A\u5199\u9519\u5C31\u4E22\u90A3\u4E00\u6761\uFF0C\u4E0D\u4F1A\u62A5\u9519\u7ED9\u4F60\u3001\u4E5F\u6CA1\u4EBA\u63D0\u9192\u4F60\uFF09\u3011",
|
|
4286
|
+
"1. \u53EA\u6709\u7528\u6237**\u660E\u8BF4**\u7684\u624D\u7B97 user_requirement\u3002\u4E3A\u5B83\u5EFA\u6761\u76EE\u65F6\uFF0C\u5FC5\u987B\u9644 quote \u2014\u2014 \u4E00\u6BB5\u5728\u7528\u6237\u539F\u8BDD\u91CC",
|
|
4287
|
+
" **\u9010\u5B57\u5B58\u5728**\u7684\u5B50\u4E32\uFF08\u7167\u6284\uFF0C\u4E0D\u8981\u6539\u5199\u3001\u4E0D\u8981\u8865\u6807\u70B9\uFF09\u3002\u5BBF\u4E3B\u4F1A\u505A\u5B57\u9762\u6BD4\u5BF9\uFF0C\u5BF9\u4E0D\u4E0A\u5C31\u6574\u6761\u4F5C\u5E9F\u3002",
|
|
4288
|
+
" \u4F60\u53EF\u4EE5\u628A\u4E00\u53E5\u8BDD\u62C6\u6210\u591A\u6761\u539F\u5B50\u8981\u6C42\uFF0C\u6BCF\u6761\u5404\u81EA\u5F15\u7528\u539F\u8BDD\u7684\u4E00\u6BB5\u3002",
|
|
4289
|
+
'2. \u7528\u6237\u8868\u8FBE\u7684\u8D28\u91CF\u76EE\u6807\uFF08"\u7CBE\u7EC6""\u771F\u5B9E""\u5E05\u6C14""\u9AD8\u7EA7\u611F"\u8FD9\u7C7B\uFF09\u2192 \u5199\u6210 quality_interpretation\uFF0C',
|
|
4290
|
+
" \u5E76\u5728 rationale \u91CC\u6307\u51FA\u5B83\u6765\u81EA\u539F\u8BDD\u7684\u54EA\u51E0\u4E2A\u5B57\u3002**\u4E0D\u8981**\u628A\u5B83\u5199\u6210 user_requirement\u3002",
|
|
4291
|
+
' **\u8D28\u91CF\u89E3\u91CA\u662F"\u7ED3\u679C\u65B9\u5411"\uFF0C\u4E0D\u662F"\u5236\u4F5C\u6E05\u5355"**\uFF1A\u4E00\u6761\u53EA\u8BF4"\u6700\u7EC8\u8981\u770B\u8D77\u6765/\u7528\u8D77\u6765\u600E\u6837"\uFF0C\u4E0D\u8981\u628A\u96F6\u4EF6\u3001',
|
|
4292
|
+
" \u53C2\u6570\u3001\u6750\u8D28\u3001\u540E\u671F\u6548\u679C\u6216\u5B9E\u73B0\u624B\u6BB5\u9010\u9879\u5217\u6210\u6E05\u5355\u2014\u2014\u90A3\u662F\u5DE5\u4F5C AI \u7684\u6D3B\u3002\u7ED9\u4E00\u4E2A\u793A\u4F8B\u5C31\u591F\uFF0C",
|
|
4293
|
+
" \u4E14\u793A\u4F8B\u4E0D\u662F\u9A8C\u6536\u9879\uFF1B\u540C\u4E00\u65B9\u5411\u4E0D\u62C6\u6210\u591A\u6761\u3002",
|
|
4294
|
+
'3. \u4E0D\u5F97\u65B0\u589E\u4EA7\u54C1\u76EE\u6807\u3001\u529F\u80FD\u6216\u786C\u7EA6\u675F\uFF08\u4F8B\u5982"\u5FC5\u987B\u79BB\u7EBF""\u7981\u6B62\u8054\u7F51""\u53EA\u80FD\u7528\u67D0\u4E2A\u5E93""\u5FC5\u987B\u652F\u6301\u79FB\u52A8\u7AEF"\uFF09\u3002',
|
|
4295
|
+
" \u4F60\u89C9\u5F97\u6709\u4EF7\u503C\u7684\u4E1C\u897F\u5199\u6210 proposal\uFF0C\u5E76\u63A5\u53D7\u5B83\u53EF\u80FD\u4E0D\u88AB\u91C7\u7EB3\u3002",
|
|
4296
|
+
" **\u53EF\u9006\u7684\u5B9E\u73B0\u9ED8\u8BA4\u5199 implementation_option**\uFF1A\u7528\u6237\u6CA1\u6307\u5B9A\u3001\u4F46\u9009\u4E86\u4E5F**\u4E0D\u6539\u53D8\u4EA4\u4ED8\u65B9\u5411**\u3001",
|
|
4297
|
+
' \u4E14\u968F\u65F6\u80FD\u6362\u7684\u7EC6\u8282\uFF08\u5916\u5F62\u8BED\u8A00\u3001\u9ED8\u8BA4\u673A\u4F4D\u3001\u5185\u90E8\u6587\u4EF6\u7EC4\u7EC7\u3001\u547D\u540D\uFF09\u653E\u8FD9\u91CC\uFF0C\u5E76\u8BF4\u660E"\u9ED8\u8BA4\u53D6\u4EC0\u4E48\u3001',
|
|
4298
|
+
' \u4E3A\u4EC0\u4E48\u53EF\u9006"\u3002\u5B83**\u4E0D\u662F**\u7528\u6237\u8981\u6C42\uFF0C\u5DE5\u4F5C AI \u53EF\u81EA\u884C\u8C03\u6574\u3002\u533A\u522B\u5728\u4E8E\uFF1A\u53EF\u9006\u7EC6\u8282 \u2192',
|
|
4299
|
+
" implementation_option\uFF1B**\u4E0D\u53EF\u9006\u7684\u4EA7\u54C1\u65B9\u5411**\uFF08\u8054\u7F51\u4E0E\u5426\u3001\u4EA4\u4ED8\u5F62\u5F0F\u3001\u529F\u80FD\u8303\u56F4\u3001\u5BA1\u7F8E\u53D6\u820D\uFF09",
|
|
4300
|
+
" \u2192 \u53EA\u80FD\u5199 unknown\uFF0C\u4E0D\u8BB8\u5199\u6210\u9ED8\u8BA4\u3002",
|
|
4301
|
+
'4. \u4F60\u81EA\u5DF1\u4E0D\u786E\u5B9A\u3001\u4E14\u4F1A\u5F71\u54CD\u7ED3\u679C\u7684\u9009\u62E9 \u2192 \u5199\u6210 unknown\uFF0C\u4E0D\u8981\u66FF\u7528\u6237\u731C\uFF0C\u4E5F\u4E0D\u8981\u5199"\u6309\u6700\u4FDD\u5B88\u7406\u89E3\u6267\u884C"\u3002',
|
|
4302
|
+
" unknown \u5FC5\u987B\u5E26 unknownClass\uFF0C\u53D6\u503C\u53EA\u80FD\u662F\u8FD9\u4E09\u79CD\u4E4B\u4E00\uFF1A",
|
|
4303
|
+
' \xB7 "user_preference" \u2014\u2014 \u53EA\u6709\u7528\u6237\u80FD\u5B9A\u7684\u53D6\u820D\uFF08\u4F1A\u6539\u53D8\u7ED3\u679C\uFF09\u3002\u8FD9\u4E00\u7C7B\u624D\u53EF\u80FD\u88AB\u62FF\u53BB\u95EE\u7528\u6237\u3002',
|
|
4304
|
+
' \xB7 "lookupable_fact" \u2014\u2014 \u5728\u8BB8\u53EF\u8303\u56F4\u5185\u8BFB\u6587\u4EF6/\u67E5\u4EE3\u7801\u5C31\u80FD\u786E\u5B9A\u7684\u4E8B\u5B9E\u3002**\u4E0D\u8981**\u628A\u8FD9\u7C7B\u4E22\u56DE\u7528\u6237\u3002',
|
|
4305
|
+
' \xB7 "implementation_detail" \u2014\u2014 \u53EF\u9006\u7684\u5B9E\u73B0\u7EC6\u8282\uFF08\u95F4\u8DDD\u3001\u547D\u540D\u3001\u5E93\u7684\u5185\u90E8\u7528\u6CD5\uFF09\u3002\u4EA4\u7ED9\u5DE5\u4F5C AI \u81EA\u5DF1\u5B9A\u3002',
|
|
4306
|
+
" \u82E5\u8FD9\u6761\u672A\u77E5\u4F1A\u6321\u4F4F\u4E0B\u4E00\u6B65\uFF0C\u989D\u5916\u52A0 blocking: true\uFF1B\u786E\u5B9A\u4E0D\u5F71\u54CD\u4E0B\u4E00\u6B65\u5C31\u5199 false\u3002",
|
|
4307
|
+
" \u540C\u4E00\u53E5\u8BDD\u6709\u51E0\u79CD\u8BF4\u5F97\u901A\u7684\u8BFB\u6CD5\u65F6\uFF0C\u53EF\u4EE5\u7ED9 candidates\uFF08\u6700\u591A 3 \u4E2A\uFF0C\u53EA\u5141\u8BB8\u7528\u5728 user_preference \u4E0A\uFF09\uFF1A",
|
|
4308
|
+
' \u5B83\u662F"\u51E0\u79CD\u8BFB\u6CD5"\uFF0C**\u4E0D\u662F\u65B0\u589E\u8981\u6C42\u3001\u4E5F\u4E0D\u6784\u6210\u6388\u6743**\u2014\u2014\u4E0D\u8981\u62FF\u5B83\u63A8\u9500\u4F60\u89C9\u5F97\u597D\u7684\u65B9\u6848\u3002',
|
|
4309
|
+
"5. \u53EA\u6709\u4F60**\u8FD9\u6B21\u786E\u5B9E\u8BFB\u5230**\u7684\u9879\u76EE\u4E8B\u5B9E\u624D\u5199\u6210 observed_fact\uFF0C\u5E76\u7ED9\u51FA sourceRefs\uFF08\u4F60\u8BFB\u8FC7\u7684\u6587\u4EF6\u8DEF\u5F84\uFF09\u3002",
|
|
4310
|
+
" \u6CA1\u8BFB\u5230\u5C31\u4E0D\u8981\u5199\u4E8B\u5B9E\uFF1B\u53EA\u5217\u8FC7\u76EE\u5F55\u4E0D\u7B97\u77E5\u9053\u5185\u5BB9\u3002",
|
|
4311
|
+
"6. \u4E0E\u672C\u6B21\u8BF7\u6C42\u65E0\u5173\u7684\u5185\u5BB9\u4E0D\u8981\u8F93\u51FA\u3002\u4E0D\u8981\u5199\u6D41\u7A0B\u4EEA\u5F0F\u3001\u901A\u7528\u6559\u5B66\u3001\u9A8C\u6536\u5957\u8BDD\u3002",
|
|
4312
|
+
"7. **\u8F6E\u6B21\u4E4B\u95F4\u4E0D\u9057\u4F20**\uFF1A\u4E0A\u4E00\u8F6E\u7684\u76EE\u6807**\u4E0D\u4F1A**\u5E26\u8FDB\u8FD9\u4E00\u8F6E\uFF0C\u6240\u4EE5\u4F60**\u4E0D\u8981**\u5199\u300C\u5EF6\u7EED\u4E0A\u4E00\u8F6E\u300D\u3001",
|
|
4313
|
+
" \u300C\u4E4B\u524D\u63D0\u8FC7\u7684\u8FD8\u8981\u7EE7\u7EED\u300D\u8FD9\u7C7B\u8BDD\uFF0C\u4E5F\u4E0D\u8981\u5047\u8BBE\u81EA\u5DF1\u770B\u8FC7\u4E0A\u4E00\u8F6E\u7684\u4EA7\u7269\u2014\u2014**\u628A\u8FD9\u4E00\u8F6E\u8BE5\u6709\u7684\u76EE\u6807",
|
|
4314
|
+
" \u91CD\u65B0\u8BF4\u6E05\u695A**\u3002\uFF08\u5DEE\u5F02\uFF1A\u4E0A\u6E38\u5728\u8FD9\u91CC\u8FD8\u6709 set_item_status \u9500\u8D26\u52A8\u4F5C\uFF1B\u6211\u4EEC\u6BCF\u4E00\u8F6E\u72EC\u7ACB\u4EA7\u51FA\uFF0C\u6CA1\u6709\u9500\u8D26\u3002\uFF09",
|
|
4315
|
+
"8. \u4F60\u7684\u4EA7\u7269**\u53EA\u4F5C\u7528\u4E8E\u8FD9\u4E00\u8F6E**\u3002\u8DE8\u8F6E\u7684\u957F\u671F\u8BB0\u5FC6\u7531\u4F1A\u8BDD\u672C\u8EAB\u627F\u62C5\uFF08\u5DE5\u4F5C AI \u770B\u5F97\u5230\u5B8C\u6574\u5BF9\u8BDD\uFF09\uFF0C",
|
|
4316
|
+
" \u4F60\u4E0D\u9700\u8981\u3001\u4E5F\u4E0D\u8981\u8BD5\u56FE\u5728\u8FD9\u91CC\u7EF4\u62A4\u957F\u671F\u72B6\u6001\u3002"
|
|
4317
|
+
].join("\n");
|
|
4318
|
+
var UPSTREAM_STYLE = [
|
|
4319
|
+
'\u3010\u5199 text \u7684\u7EAA\u5F8B\u3011\u4F60\u7684 text \u4F1A\u88AB\u5BBF\u4E3B\u62FC\u8FDB\u6700\u7EC8\u547D\u4EE4\uFF0C\u8BFB\u8005\u53EA\u6709"\u5DE5\u4F5C AI"\u4E00\u4E2A\uFF1A',
|
|
4320
|
+
"- \u7948\u4F7F\u53E5\u3001\u76F4\u7ED9\u8981\u6C42\u3001\u53EF\u6267\u884C\uFF1B\u4E2D\u6587\u8FDB\u4E2D\u6587\u51FA\u3002",
|
|
4321
|
+
'- \u4E0D\u8981\u5143\u8BDD\u8BED\u4E0E\u5143\u6807\u9898\uFF08"\u4F18\u5316\u540E\u7684\u63D0\u793A\u8BCD""\u6539\u5199\u540E""\u8BF4\u660E""\u4EE5\u4E0B\u662F\u2026"\uFF09\u3002',
|
|
4322
|
+
'- \u4E0D\u8981\u63D0\u5230"\u7528\u6237/\u539F\u6587/\u4E0A\u9762\u7684\u8BDD"\uFF0C\u4E5F\u4E0D\u8981\u5199"\u6211\u6765\u5E2E\u4F60\u2026"\u3002',
|
|
4323
|
+
'- \u4E0D\u8981\u5199\u6D41\u7A0B\u4EEA\u5F0F\u3001\u901A\u7528\u6559\u5B66\u3001\u9A8C\u6536\u5957\u8BDD\uFF08"\u8BF7\u786E\u4FDD\u4EE3\u7801\u8D28\u91CF"\u8FD9\u79CD\u6CA1\u6709\u6307\u5411\u7684\u8BDD\uFF09\u3002',
|
|
4324
|
+
'- user_requirement \u7684 text \u662F"\u5BF9\u5DE5\u4F5C AI \u7684\u8981\u6C42"\uFF0C\u4E0D\u662F\u5BF9\u7528\u6237\u8BF4\u7684\u8BDD\u3002'
|
|
4325
|
+
].join("\n");
|
|
4326
|
+
var TIER_STRATEGY_BLOCKS = Object.freeze({
|
|
4327
|
+
light: [
|
|
4328
|
+
"\u3010\u672C\u8F6E\u7B56\u7565\uFF1A\u8F7B\u5EA6 \u2014\u2014 \u5355\u4E00\u89E3\u8BFB\u3011",
|
|
4329
|
+
"\xB7 \u89E3\u8BFB\u6A21\u5F0F\uFF1A\u5355\u4E00\u89E3\u8BFB\uFF08single\uFF09\u2014\u2014\u53EA\u7ED9\u4E00\u79CD\u8BF4\u5F97\u901A\u7684\u8BFB\u6CD5\uFF0C\u4E0D\u8981\u94FA\u5F00\u5E76\u5217\u5047\u8BBE\u3002",
|
|
4330
|
+
"\xB7 \u5019\u9009\uFF1A0 \u4E2A\uFF08\u4E0D\u8981\u7ED9 candidates\uFF09\u3002",
|
|
4331
|
+
"\xB7 \u6700\u591A 4 \u6761\u6761\u76EE\uFF08\u77ED\u539F\u8BDD\u4E0D\u8BB8\u81A8\u80C0\uFF09\u3002",
|
|
4332
|
+
"\xB7 \u8D28\u91CF\u7EF4\u5EA6\uFF1A\u53EF\u4EE5\u63D0\u4E00\u4E0B\u8BE5\u9886\u57DF\u7684\u68C0\u67E5\u89D2\u5EA6\uFF08refer\uFF09\uFF0C\u4F46\u4E0D\u5FC5\u9010\u6761\u843D\u5230\u7EF4\u5EA6\u4E0A\u3002",
|
|
4333
|
+
"\xB7 \u601D\u8003\u6DF1\u5EA6\uFF1A\u7B80\u77ED\uFF08brief\uFF09\u2014\u2014\u8FD9\u7C7B\u8BF7\u6C42\u4E0D\u9700\u8981\u957F\u7BC7\u63A8\u6F14\u3002"
|
|
4334
|
+
].join("\n"),
|
|
4335
|
+
standard: [
|
|
4336
|
+
"\u3010\u672C\u8F6E\u7B56\u7565\uFF1A\u6807\u51C6 \u2014\u2014 \u6761\u76EE\u5185\u5E76\u5217\u3011",
|
|
4337
|
+
"\xB7 \u89E3\u8BFB\u6A21\u5F0F\uFF1A\u6761\u76EE\u5185\u5E76\u5217\uFF08parallel\uFF09\u2014\u2014\u540C\u4E00\u4EF6\u4E8B\u53EF\u4EE5\u62C6\u6210\u51E0\u6761\u5E76\u5217\u7684\u539F\u5B50\u8981\u6C42\uFF0C\u4F46\u4E0D\u8981\u9020\u5206\u652F\u5047\u8BBE\u3002",
|
|
4338
|
+
"\xB7 \u5019\u9009\uFF1A0 \u4E2A\uFF08\u4E0D\u8981\u7ED9 candidates\uFF09\u3002",
|
|
4339
|
+
"\xB7 \u6700\u591A 8 \u6761\u6761\u76EE\u3002",
|
|
4340
|
+
"\xB7 \u8D28\u91CF\u7EF4\u5EA6\uFF1A\u5BF9\u7528\u6237\u7684\u8D28\u91CF\u8BCD\uFF0C**\u81F3\u5C11\u843D\u5230 1 \u4E2A\u8BE5\u9886\u57DF\u53EF\u68C0\u7684\u7EF4\u5EA6**\u4E0A\uFF08one\uFF09\u3002",
|
|
4341
|
+
"\xB7 \u601D\u8003\u6DF1\u5EA6\uFF1A\u6B63\u5E38\uFF08normal\uFF09\u3002"
|
|
4342
|
+
].join("\n"),
|
|
4343
|
+
heavy: [
|
|
4344
|
+
"\u3010\u672C\u8F6E\u7B56\u7565\uFF1A\u91CD\u5EA6 \u2014\u2014 \u663E\u5F0F\u591A\u5047\u8BBE\u5206\u652F\u3011",
|
|
4345
|
+
"\xB7 \u89E3\u8BFB\u6A21\u5F0F\uFF1A\u663E\u5F0F\u591A\u5047\u8BBE\u5206\u652F\uFF08branching\uFF09\u2014\u2014\u540C\u4E00\u53E5\u8BDD\u6709\u51E0\u79CD\u8BF4\u5F97\u901A\u7684\u8BFB\u6CD5\u65F6\uFF0C\u660E\u786E\u8BF4\u51FA\u6765\u3002",
|
|
4346
|
+
"\xB7 \u5019\u9009\uFF1A\u6700\u591A 3 \u4E2A\uFF08\u53EA\u7528\u4E8E unknown + user_preference\uFF1B\u6BCF\u4E2A text \u2264200 \u5B57\uFF09\u3002",
|
|
4347
|
+
"\xB7 \u6700\u591A 12 \u6761\u6761\u76EE\u3002",
|
|
4348
|
+
"\xB7 \u8D28\u91CF\u7EF4\u5EA6\uFF1A**\u81F3\u5C11\u843D\u5230 2 \u4E2A\u8BE5\u9886\u57DF\u53EF\u68C0\u7684\u7EF4\u5EA6**\u4E0A\uFF08two\uFF09\u3002",
|
|
4349
|
+
"\xB7 \u601D\u8003\u6DF1\u5EA6\uFF1A\u6DF1\uFF08deep\uFF09\u2014\u2014\u8FD9\u4E00\u6B65\u503C\u5F97\u591A\u63A8\u6F14\u4E00\u5C42\uFF0C\u4F46\u4E0D\u8BBE\u8F93\u51FA\u4E0A\u9650\u3002"
|
|
4350
|
+
].join("\n")
|
|
4351
|
+
});
|
|
4352
|
+
var HARD_TONE_BLOCK = [
|
|
4353
|
+
"\u3010\u786C\u90A6\u90A6\u6A21\u5F0F \xB7 \u6574\u4EFD\u8F85\u52A9\u5305\u7684\u5199\u6CD5\uFF08\u672C\u8F6E\u534F\u4F5C\u57FA\u8C03 = \u786C\u90A6\u90A6\uFF09\u3011",
|
|
4354
|
+
"\u8FD9\u4E00\u8F6E**\u6574\u4EFD\u8F85\u52A9\u4E0A\u4E0B\u6587\u90FD\u7528\u8FD9\u4E2A\u53E3\u6C14\u5199**\uFF0C\u4E0D\u662F\u53EA\u5728\u6700\u540E\u52A0\u4E00\u53E5\u53E3\u53F7\u3002\u8BFB\u8005\u662F\u5DE5\u4F5C AI\uFF1B",
|
|
4355
|
+
'\u8BED\u57DF\u672C\u8EAB\u5C31\u662F\u6548\u679C\u6765\u6E90\uFF08\u6B63\u5F0F\u8BED\u57DF\u4F1A\u628A\u6574\u5305\u5E26\u56DE"\u4E13\u4E1A\u52A9\u624B"\u90A3\u4E00\u7C07\uFF0C\u7B49\u4E8E\u767D\u5F00\u8FD9\u4E00\u6863\uFF09\u3002',
|
|
4356
|
+
"",
|
|
4357
|
+
"**\u8981\u5199\u6210\u786C\u90A6\u90A6\u7684**\uFF1A\u89E3\u91CA\u7528\u6237\u539F\u8BDD\u3001\u8D28\u91CF\u9610\u8FF0\u3001\u5B9E\u73B0\u9009\u9879\u3001\u5EFA\u8BAE\u2014\u2014\u90FD\u7528\u53E3\u8BED\u3001\u76F4\u7ED9\u3001\u5E26\u52B2\u7684\u5199\u6CD5\u3002",
|
|
4358
|
+
'\u5141\u8BB8"\u8D3C\u62C9\u725B\u903C""\u786C\u90A6\u90A6""\u522B\u6574\u90A3\u4E9B\u865A\u7684""\u7ED9\u6211\u5F80\u731B\u4E86\u9020"\u8FD9\u7C7B\u53E3\u6C34\u8BDD\uFF08\u5B83\u4EEC\u4E0D\u662F\u810F\u8BDD\uFF0C\u662F\u8BED\u57DF\uFF09\u3002',
|
|
4359
|
+
"\u8981\u63A5\u5730\u6C14\uFF1A\u50CF\u5144\u5F1F\u50AC\u4F60\u5E72\u6D3B\uFF0C\u4E0D\u50CF\u7532\u65B9\u53D1\u9700\u6C42\u6587\u6863\u3002",
|
|
4360
|
+
"",
|
|
4361
|
+
"**\u5FC5\u987B\u4FDD\u6301\u5B57\u9762\u3001\u4E0D\u52A0\u4FEE\u8F9E\u7684**\uFF08\u4E00\u4FEE\u8F9E\u5C31\u6F0F\u8BED\u4E49\uFF0C\u4EE3\u4EF7\u6BD4\u6536\u76CA\u5927\uFF09\uFF1A",
|
|
4362
|
+
" \xB7 **\u672A\u51B3\u9879**\uFF1A\u6CA1\u62CD\u677F\u7684\u4E8B\u8981\u8BF4\u6E05\u695A\u8BF4\u51C6\uFF08\u8C01\u6765\u62CD\u677F\u3001\u5F71\u54CD\u4EC0\u4E48\uFF09\uFF0C\u4E0D\u8BB8\u7528\u53E3\u6C14\u8BCD\u7CCA\u8FC7\u53BB\uFF1B",
|
|
4363
|
+
' \xB7 **\u9632\u5FA1\u6027\u9650\u5236**\uFF1A\u4E0D\u8BB8\u505A\u4EC0\u4E48\u3001\u8303\u56F4\u8FB9\u754C\u3001\u5B89\u5168\u4E0E\u6388\u6743\u7C7B\u8981\u6C42\uFF08\u5982"\u4E0D\u8BB8\u8BFB\u5176\u5B83\u6587\u4EF6""\u4E0D\u8BB8\u66FF\u6211\u62CD\u677F"\uFF09',
|
|
4364
|
+
" \u7167\u5B57\u9762\u5199\uFF0C\u522B\u6539\u6210\u987A\u53E3\u6E9C\u3002",
|
|
4365
|
+
"",
|
|
4366
|
+
"**\u4E0D\u8BB8\u56E0\u4E3A\u53E3\u6C14\u53D8\u4E86\u800C\u6539\u52A8\u5185\u5BB9**\uFF1A",
|
|
4367
|
+
' \xB7 \u6761\u76EE\u96C6\u5408\u4E00\u4E2A\u5B57\u90FD\u4E0D\u8BB8\u589E\u51CF\u2014\u2014\u53E3\u8BED\u5316\u53EA\u6539**\u5199\u6CD5**\uFF0C\u4E0D\u6539"\u8BE5\u6709\u54EA\u4E9B\u8981\u6C42"\uFF1B',
|
|
4368
|
+
" \xB7 \u6BCF\u6761\u4ECD\u7136\u5FC5\u987B\u5E26\u9010\u5B57\u4F9D\u636E\uFF08\u6765\u6E90\u89C4\u5219\u4E0D\u53D8\uFF09\uFF1B",
|
|
4369
|
+
" \xB7 \u4E0D\u8BB8\u65B0\u589E\u539F\u8BDD\u91CC\u6CA1\u6709\u7684\u9700\u6C42\uFF08\u578B\u53F7\u3001\u8054\u7F51\u3001\u52A0\u529F\u80FD\u3001\u6539\u4EA4\u4ED8\u5F62\u6001\u7B49\uFF09\u3002"
|
|
4370
|
+
].join("\n");
|
|
4371
|
+
var DOMAIN_QUALITY_BLOCK = [
|
|
4372
|
+
"\u3010\u9886\u57DF\u8D28\u91CF\u7EF4\u5EA6\uFF08\u8D28\u91CF\u8BCD\u843D\u5230\u53EF\u68C0\u7684\u5730\u65B9\uFF09\u3011",
|
|
4373
|
+
"\u9886\u57DF\u53EA\u80FD\u4ECE**\u4E0A\u4E0B\u6587\u91CC\u8BFB\u5230\u7684\u7EBF\u7D22**\u63A8\u65AD\uFF08\u6587\u4EF6\u540E\u7F00\u3001\u76EE\u5F55\u540D\u3001\u539F\u8BDD\u91CC\u7684\u540D\u8BCD\uFF09\uFF0C**\u4E0D\u8BB8\u51ED\u7A7A\u8BA4\u9886**\uFF1B",
|
|
4374
|
+
"\u63A8\u4E0D\u51FA\u5C31\u628A\u9886\u57DF\u672C\u8EAB\u5199\u6210 unknown\uFF0C\u800C\u4E0D\u662F\u786C\u5957\u4E00\u4E2A\u3002",
|
|
4375
|
+
"",
|
|
4376
|
+
"\xB7 ui \uFF1A\u95F4\u8DDD\u4E0E\u5C42\u7EA7 / \u914D\u8272\u4E0E\u5BF9\u6BD4\u5EA6\uFF08\u542B\u6D45\u6DF1\u4E24\u5957\uFF09/ \u72B6\u6001\u53CD\u9988\uFF08\u60AC\u505C\xB7\u6309\u4E0B\xB7\u7981\u7528\xB7\u52A0\u8F7D\uFF09/ \u52A8\u6548\u65F6\u957F\u4E0E\u7F13\u52A8 / \u7A7A\u6001\u4E0E\u9519\u8BEF\u6001 / \u53EF\u8BFB\u6027\uFF08\u5B57\u53F7\xB7\u884C\u9AD8\xB7\u884C\u957F\uFF09",
|
|
4377
|
+
"\xB7 cli \uFF1A\u9519\u8BEF\u4FE1\u606F\u7684\u53EF\u64CD\u4F5C\u6027 / \u53C2\u6570\u4E0E\u8F93\u51FA\u7684\u4E00\u81F4\u6027 / \u9000\u51FA\u7801\u8BED\u4E49 / \u5E2E\u52A9\u6587\u672C\u7684\u5B8C\u6574\u6027 / \u5E42\u7B49\u4E0E\u91CD\u590D\u6267\u884C\u5B89\u5168",
|
|
4378
|
+
"\xB7 doc \uFF1A\u7ED3\u6784\u4E0E\u68C0\u7D22\u8DEF\u5F84 / \u672F\u8BED\u4E00\u81F4\u6027 / \u8BFB\u8005\u5B9A\u4F4D\u4E0E\u524D\u7F6E\u6761\u4EF6 / \u53EF\u590D\u6838\u7684\u5F15\u7528\u4E0E\u547D\u4EE4",
|
|
4379
|
+
"\xB7 data \uFF1A\u53E3\u5F84\u4E0E\u5355\u4F4D / \u7F3A\u5931\u503C\u4E0E\u5F02\u5E38\u503C\u5904\u7406 / \u53EF\u590D\u73B0\u7684\u67E5\u8BE2\u6B65\u9AA4 / \u7ED3\u679C\u6821\u9A8C\u65B9\u5F0F",
|
|
4380
|
+
"\xB7 code \uFF1A\u547D\u540D\u4E0E\u8FB9\u754C / \u9519\u8BEF\u5904\u7406\u4E0E\u5931\u8D25\u8DEF\u5F84 / \u53EF\u6D4B\u8BD5\u6027 / \u4F9D\u8D56\u4E0E\u517C\u5BB9\u9762 / \u6027\u80FD\u4E0E\u8D44\u6E90\u4E0A\u754C",
|
|
4381
|
+
"\xB7 game \uFF1A\u624B\u611F\u4E0E\u8282\u594F / \u89C6\u89C9\u53CD\u9988\u4E0E\u63D0\u793A / \u6570\u503C\u4E0E\u96BE\u5EA6\u66F2\u7EBF / \u5931\u8D25\u4E0E\u91CD\u8BD5\u6210\u672C",
|
|
4382
|
+
"",
|
|
4383
|
+
"\u26A0\uFE0F \u4E24\u6761\u4E0D\u8BB8\u8D8A\u7684\u7EBF\uFF1A\u2460 \u7EF4\u5EA6\u662F**\u600E\u4E48\u68C0\u67E5**\u7684\u5EFA\u8BAE\uFF0C\u4E0D\u662F\u65B0\u589E\u9700\u6C42 \u2014\u2014 \u5B83\u5C5E\u4E8E quality_interpretation\uFF0C",
|
|
4384
|
+
"\u4E0D\u5192\u5145\u7528\u6237\u8981\u6C42\uFF1B\u2461 \u9886\u57DF\u63A8\u4E0D\u51FA\u6765\u5C31\u5199 unknown\uFF0C\u522B\u786C\u5957\u3002"
|
|
4385
|
+
].join("\n");
|
|
4386
|
+
var OPTIMIZER_OUTPUT_CONTRACT_V2 = [
|
|
4387
|
+
"\u3010\u8F93\u51FA\u5951\u7EA6\uFF08\u56FA\u5B9A\uFF0C\u4E0D\u53EF\u66F4\u6539\uFF09\u3011",
|
|
4388
|
+
"\u53EA\u8F93\u51FA\u4E00\u4E2A JSON \u5BF9\u8C61\uFF0C\u4E0D\u8981 Markdown \u4EE3\u7801\u5757\u3001\u4E0D\u8981\u5728 JSON \u524D\u540E\u5199\u4EFB\u4F55\u5B57\uFF1A",
|
|
4389
|
+
'{"items":[{"kind":"user_requirement","quote":"\u539F\u8BDD\u91CC\u9010\u5B57\u5B58\u5728\u7684\u7247\u6BB5","text":"\u5BF9\u5DE5\u4F5C AI \u7684\u8981\u6C42"}]}',
|
|
4390
|
+
"`kind` \u53EA\u80FD\u662F\u8FD9\u516D\u79CD\uFF0C\u5404\u81EA\u7684\u5FC5\u586B\u5B57\u6BB5\u5982\u4E0B\uFF08\u7F3A\u4E86\u6216\u5BF9\u4E0D\u4E0A\uFF0C\u5BBF\u4E3B\u53EA\u4E22\u90A3\u4E00\u6761\u5E76\u8BB0\u8D26\uFF09\uFF1A",
|
|
4391
|
+
"- user_requirement\uFF1A\u7528\u6237\u660E\u8BF4\u7684\u8981\u6C42\u3002`quote` **\u5FC5\u586B**\uFF0C\u4E14\u5FC5\u987B\u662F\u539F\u8BDD\u91CC\u7684\u9010\u5B57\u5B50\u4E32\u3002",
|
|
4392
|
+
"- quality_interpretation\uFF1A\u8D28\u91CF\u8BCD\u600E\u4E48\u7406\u89E3\u3002`rationale` **\u5FC5\u586B**\uFF08\u6307\u51FA\u5B83\u6765\u81EA\u539F\u8BDD\u54EA\u51E0\u4E2A\u5B57\uFF09\u3002",
|
|
4393
|
+
"- observed_fact\uFF1A\u4F60**\u8FD9\u6B21\u786E\u5B9E\u8BFB\u5230**\u7684\u9879\u76EE\u4E8B\u5B9E\u3002`sourceRefs` **\u5FC5\u586B**\uFF08\u4F60\u8BFB\u8FC7\u7684\u6587\u4EF6\u8DEF\u5F84\uFF09\u3002",
|
|
4394
|
+
"- implementation_option\uFF1A\u53EF\u9006\u7684\u5B9E\u73B0\u7EC6\u8282\uFF08\u9ED8\u8BA4\u53D6\u4EC0\u4E48 + \u4E3A\u4EC0\u4E48\u53EF\u9006\uFF09\u3002\u4E0D\u9700\u8981\u5F15\u6587\u3002",
|
|
4395
|
+
"- proposal\uFF1A\u5EFA\u8BAE\uFF08\u53EF\u80FD\u4E0D\u88AB\u91C7\u7EB3\uFF09\u3002\u4E0D\u9700\u8981\u5F15\u6587\u3002",
|
|
4396
|
+
"- unknown\uFF1A\u672A\u51B3\u9879\u3002\u5FC5\u987B\u5E26 `unknownClass`\uFF08user_preference / lookupable_fact / implementation_detail\uFF09\uFF1B",
|
|
4397
|
+
" \u53EF\u9009 `blocking`\uFF08true/false\uFF09\uFF1B\u53EA\u6709 `unknownClass` = user_preference \u65F6\u53EF\u4EE5\u5E26 `candidates`",
|
|
4398
|
+
" \uFF08\u6700\u591A 3 \u4E2A\uFF0C\u6BCF\u4E2A {id, text, impact?}\uFF0Ctext \u2264200 \u5B57\uFF09\u3002",
|
|
4399
|
+
"\u9650\u5236\uFF1A`text` \u6BCF\u6761\u4E0D\u8D85\u8FC7 300 \u5B57\uFF08`rationale` \u2264160 \u5B57\uFF09\uFF1B`items` \u603B\u5171\u4E0D\u8D85\u8FC7 12 \u6761\uFF1Bid \u4E0D\u9700\u8981\u7ED9\u3002",
|
|
4400
|
+
'**\u6BCF\u4E00\u8F6E\u90FD\u5FC5\u987B\u7ED9\u51FA"\u8FD9\u4E00\u8F6E\u6211\u7406\u89E3\u5230\u4E86\u4EC0\u4E48"**\uFF1A\u54EA\u6015\u7528\u6237\u53EA\u5199\u4E86\u4E00\u4E24\u4E2A\u5B57\uFF0C\u4E5F\u8981\u7ED3\u5408\u4E0A\u4E0B\u6587\u63A8\u65AD\u51FA\u4ED6\u7684\u610F\u56FE\uFF0C',
|
|
4401
|
+
'\u81F3\u5C11\u8F93\u51FA\u4E00\u6761\u6761\u76EE\uFF08\u901A\u5E38\u662F user_requirement \u6216 quality_interpretation\uFF09\uFF0C**\u4E0D\u8BB8\u56E0\u4E3A"\u6CA1\u4EC0\u4E48\u53EF\u8865"\u5C31\u4EA4\u7A7A\u6570\u7EC4**\u3002'
|
|
4402
|
+
].join("\n");
|
|
4403
|
+
|
|
4135
4404
|
// src/optimizer-prompt.ts
|
|
4136
4405
|
var RELAY_ROLE = [
|
|
4137
4406
|
'\u3010\u4F60\u662F\u8C01\u3011\u4F60\u662F\u4E00\u4E2A**\u4F20\u8BDD\u5668/\u610F\u56FE\u8865\u5168\u5668**\uFF0C\u7AD9\u5728\u7528\u6237\u4E0E"\u5DE5\u4F5C AI"\u4E4B\u95F4\uFF1A',
|
|
@@ -4167,79 +4436,25 @@ var STYLE_RULES = [
|
|
|
4167
4436
|
'- \u4E0D\u8981\u5199\u6D41\u7A0B\u4EEA\u5F0F\u3001\u901A\u7528\u6559\u5B66\u3001\u9A8C\u6536\u5957\u8BDD\uFF08"\u8BF7\u786E\u4FDD\u4EE3\u7801\u8D28\u91CF"\u8FD9\u79CD\u6CA1\u6709\u6307\u5411\u7684\u8BDD\uFF09\u3002',
|
|
4168
4437
|
"- `rewrite` \u7684 text \u662F**\u66FF\u6362\u6389\u90A3\u6BB5\u5F15\u6587**\u7684\u6B63\u6587\uFF0C\u6240\u4EE5\u53EA\u5199\u90A3\u6BB5\u8BDD\u672C\u8EAB\uFF0C\u4E0D\u8981\u5E26\u524D\u7F00\u540E\u7F00\u3002"
|
|
4169
4438
|
].join("\n");
|
|
4170
|
-
var
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
"- unknown\uFF1A\u672A\u51B3\u9879\u3002\u5FC5\u987B\u5E26 `unknownClass`\uFF08user_preference / lookupable_fact /",
|
|
4179
|
-
" implementation_detail\uFF09\uFF0C\u53EF\u9009 `blocking`\uFF08true/false\uFF0C\u662F\u5426\u6321\u4F4F\u4E0B\u4E00\u6B65\uFF09\u3002",
|
|
4180
|
-
'- plan\uFF1A\u5206\u9636\u6BB5\u6267\u884C\u8BA1\u5212\uFF08\u4EC5"\u6781\u7AEF"\u6863\u7528\uFF09\u3002',
|
|
4181
|
-
'- risk\uFF1A\u591A\u60C5\u51B5\u9884\u6848\uFF08\u4EC5"\u6781\u7AEF"\u6863\u7528\uFF09\uFF0C\u6BCF\u6761\u6309"\u89E6\u53D1\u4FE1\u53F7 \u2192 \u5E94\u5BF9 \u2192 \u7981\u6B62\u52A8\u4F5C"\u5199\u3002',
|
|
4182
|
-
"\u9650\u5236\uFF1A`text` \u6BCF\u6761\u4E0D\u8D85\u8FC7 300 \u5B57\uFF1B`items` \u603B\u5171\u4E0D\u8D85\u8FC7 12 \u6761\uFF1Bid \u4E0D\u9700\u8981\u7ED9\u3002",
|
|
4183
|
-
'\u6CA1\u6709\u53EF\u8865\u7684\u5185\u5BB9\u65F6\uFF0C\u8F93\u51FA {"items":[]} \u2014\u2014 \u4F46**\u5148\u60F3\u6E05\u695A**\uFF1A\u7528\u6237\u8FD9\u4E00\u8F6E\u7684\u539F\u8BDD\u91CC',
|
|
4184
|
-
"\u771F\u7684\u6CA1\u6709\u4EFB\u4F55\u53EF\u6838\u5BF9\u7684\u8865\u5168\u5417\uFF1F"
|
|
4185
|
-
].join("\n");
|
|
4186
|
-
var TIER_TASKS = {
|
|
4187
|
-
basic: [
|
|
4188
|
-
"\u3010\u672C\u8F6E\u4EFB\u52A1\uFF1A\u53EA\u505A\u8BED\u8A00\u5C42\u4FEE\u590D\u3011",
|
|
4189
|
-
"\u7528\u6237\u539F\u8BDD\u53EF\u80FD\u6709\u75C5\u53E5\u3001\u6307\u4EE3\u4E0D\u660E\u3001\u7528\u8BCD\u542B\u7CCA\u3002\u628A\u5B83\u6539\u5199\u6210\u901A\u987A\u3001\u7CBE\u786E\u3001\u65E0\u6B67\u4E49\u7684**\u540C\u4E00\u6BB5\u8BDD**\u3002",
|
|
4190
|
-
"\u53EA\u4EA7\u51FA `rewrite`\uFF08\u53EF\u4EE5\u6309\u53E5\u5B50\u62C6\u6210\u591A\u6761\uFF0C\u6BCF\u6761\u5F15\u7528\u539F\u8BDD\u91CC\u5BF9\u5E94\u90A3\u4E00\u53E5\uFF09\u3002",
|
|
4191
|
-
"\u4E25\u7981\u4EA7\u51FA requirement / plan / risk\uFF1A\u8FD9\u4E00\u6863**\u4E0D\u65B0\u589E\u4EFB\u4F55\u8981\u6C42**\uFF0C\u53EA\u628A\u8BDD\u8BF4\u660E\u767D\u3002",
|
|
4192
|
-
"\u539F\u8BDD\u786E\u6709\u6B67\u4E49\u3001\u4E14\u6B67\u4E49\u4F1A\u5BFC\u81F4\u505A\u9519\u65F6\uFF0C\u624D\u8865\u4E00\u6761 `unknown`\uFF08unknownClass \u53D6",
|
|
4193
|
-
"user_preference \u6216 lookupable_fact\uFF09\uFF1B\u786E\u5B9E\u6CA1\u6709\u53EF\u8865\u7684\u5C31\u8F93\u51FA\u7A7A\u6570\u7EC4\u3002",
|
|
4194
|
-
"\u957F\u5EA6\u7EAA\u5F8B\uFF1A\u6210\u54C1\u4E0D\u8D85\u8FC7\u539F\u8BDD\u7684 1.4 \u500D\uFF1B\u539F\u8BDD 30 \u5B57\u4EE5\u5185\u65F6\u4E0D\u8D85\u8FC7 60 \u5B57\u3002"
|
|
4195
|
-
],
|
|
4196
|
-
advanced: [
|
|
4197
|
-
"\u3010\u672C\u8F6E\u4EFB\u52A1\uFF1A\u5728\u4E0D\u52A8\u76EE\u6807\u7684\u524D\u63D0\u4E0B\u628A\u547D\u4EE4\u8BF4\u6E05\u695A\u3011",
|
|
4198
|
-
'\u7528\u6237\u539F\u8BDD\u542B\u7CCA\u3001\u7F3A\u5173\u952E\u7EA6\u675F\u3002\u4F60\u8981\u8865\u7684\u662F"\u7528\u6237\u663E\u7136\u60F3\u8981\u3001\u4F46\u6CA1\u8BF4\u51FA\u53E3"\u7684\u5FC5\u8981\u4FE1\u606F\uFF0C',
|
|
4199
|
-
"\u8BA9\u5B83\u4E00\u6B21\u505A\u5BF9 \u2014\u2014 \u4F46\u6BCF\u4E00\u6761\u90FD\u5FC5\u987B\u662F**\u4ECE\u539F\u8BDD\u67D0\u4E00\u53E5\u76F4\u63A5\u63A8\u51FA**\u7684\uFF0C\u5E76\u5F15\u7528\u90A3\u4E00\u53E5\u3002",
|
|
4200
|
-
"\u5141\u8BB8\u4EA7\u51FA\uFF1A",
|
|
4201
|
-
"- `rewrite`\uFF1A\u628A\u542B\u7CCA\u3001\u6709\u75C5\u53E5\u7684\u5730\u65B9\u8BF4\u6E05\u695A\uFF08\u540C\u4E00\u6BB5\u539F\u8BDD\u6700\u591A\u4E00\u6761\uFF09\u3002",
|
|
4202
|
-
'- `requirement`\uFF1A\u4ECE\u539F\u8BDD\u76F4\u63A5\u63A8\u51FA\u7684\u6700\u4F4E\u4EA4\u4ED8\u8981\u6C42\u4E0E\u9A8C\u6536\u6807\u51C6\uFF08"\u6539\u5B8C\u80FD\u8DD1\u8D77\u6765""\u9875\u9762\u80FD\u6253\u5F00"',
|
|
4203
|
-
" \u8FD9\u7C7B\u53EF\u89C2\u6D4B\u7684\u8BDD\uFF09\uFF0C\u5199\u6210\u5BF9\u5DE5\u4F5C AI \u7684\u8981\u6C42\u800C\u4E0D\u662F\u8BC4\u8BBA\u3002\u6BCF\u6761\u90FD\u8981\u80FD\u6307\u56DE\u539F\u8BDD\u91CC\u7684\u67D0\u4E00\u53E5\u3002",
|
|
4204
|
-
'- `quality`\uFF1A\u7528\u6237\u8BF4\u7684\u8D28\u91CF\u8BCD\uFF08"\u597D\u770B\u70B9""\u9AD8\u7EA7\u611F""\u6D41\u7545"\uFF09\u2192 \u89E3\u91CA\u6210\u53EF\u89C2\u5BDF\u7684\u8981\u6C42\u3002',
|
|
4205
|
-
" \u5B83\u662F**\u89E3\u91CA**\uFF0C\u4E0D\u662F\u65B0\u589E\u76EE\u6807\uFF1A\u4E00\u6761\u8D28\u91CF\u8BCD\u6700\u591A\u4E00\u6761 quality\u3002",
|
|
4206
|
-
"- `unknown`\uFF1A\u53EA\u6709\u7528\u6237\u80FD\u5B9A\u7684\u53D6\u820D\uFF08user_preference\uFF09/ \u8BE5\u53BB\u67E5\u8BC1\u7684\u4E8B\u5B9E\uFF08lookupable_fact\uFF09\u3002",
|
|
4207
|
-
"\u7981\u6B62\uFF1A\u65B0\u589E\u529F\u80FD\u3001\u65B0\u76EE\u6807\u3001\u65B0\u4F9D\u8D56\uFF1B\u865A\u6784\u9879\u76EE\u4E8B\u5B9E\uFF1B\u5199\u7528\u6237\u6CA1\u6388\u6743\u7684\u6280\u672F\u9009\u578B\u3002",
|
|
4208
|
-
"\u6570\u91CF\u7EAA\u5F8B\uFF1Arequirement \u6700\u591A 3 \u6761\uFF0Cquality \u6700\u591A 2 \u6761\uFF0Cunknown \u6700\u591A 2 \u6761\u3002"
|
|
4209
|
-
],
|
|
4210
|
-
extreme: [
|
|
4211
|
-
"\u3010\u672C\u8F6E\u4EFB\u52A1\uFF1A\u628A\u8BC9\u6C42\u56FA\u5316\u6210\u4E00\u6761\u53EF\u76F4\u63A5\u6267\u884C\u7684\u547D\u4EE4\u3011",
|
|
4212
|
-
"\u8FD9\u6B21\u662F\u591A\u6B65\u6267\u884C\u7684\u590D\u6742\u4EFB\u52A1\uFF0C\u5DE5\u4F5C AI \u4F1A\u7167\u8FD9\u6761\u547D\u4EE4\u5E72\uFF0C\u7528\u6237\u4E0D\u4F1A\u518D\u8865\u5145\u3002",
|
|
4213
|
-
'\u5728"\u9AD8\u7EA7"\u6863\u5141\u8BB8\u7684\u5168\u90E8\u6761\u76EE\u7684\u57FA\u7840\u4E0A\uFF0C\u518D\u52A0\u4E24\u7C7B\uFF08\u90FD\u8981\u4EE5\u7528\u6237\u5728\u7ED9\u5DE5\u4F5C AI \u4E0B\u547D\u4EE4\u7684\u53E3\u543B\u5199\uFF09\uFF1A',
|
|
4214
|
-
"- `plan`\uFF1A\u5206\u9636\u6BB5\u6267\u884C\u8BA1\u5212\u3002\u6BCF\u9636\u6BB5\u5199\u6E05\u52A8\u4F5C\u4E0E\u4EA7\u51FA\uFF0C\u5E76\u5199\u660E\u7EAA\u5F8B\uFF08\u5148\u9A8C\u8BC1\u518D\u6539\u3001\u5931\u8D25\u5373\u56DE\u9000\u3001",
|
|
4215
|
-
" \u4E0D\u64C5\u81EA\u6269\u5927\u8303\u56F4\u3001\u6539\u5B8C\u7ED9\u51FA\u8BC1\u636E\uFF09\u3002",
|
|
4216
|
-
'- `risk`\uFF1A\u591A\u60C5\u51B5\u9884\u6848 2~4 \u6761\uFF0C\u6BCF\u6761\u5199\u6210"\u5982\u679C\u51FA\u73B0 <\u89E6\u53D1\u4FE1\u53F7>\uFF0C\u5C31\u5148 <\u5E94\u5BF9\u52A8\u4F5C>\uFF0C',
|
|
4217
|
-
' \u4E0D\u8981 <\u7981\u6B62\u52A8\u4F5C>"\u3002',
|
|
4218
|
-
"\u8FD8\u8981\u5224\u65AD\u8FD9\u6B21\u4EFB\u52A1\u662F\u5426\u503C\u5F97\u8BA9\u5DE5\u4F5C AI \u7528 goal / todo / \u8BA1\u5212\u6A21\u5F0F\u8DDF\u8E2A\uFF0C\u5E76\u628A\u7ED3\u8BBA\u5199\u6210",
|
|
4219
|
-
'`requirement` \u7684\u4E00\u90E8\u5206\uFF08\u4F8B\u5982"\u8BF7\u5148\u5EFA\u7ACB goal\uFF1A\u2026\uFF0C\u518D\u6309\u4E0B\u5217\u9636\u6BB5\u63A8\u8FDB"\uFF09\uFF1B\u4E0D\u9700\u8981\u5C31\u5B8C\u5168\u4E0D\u63D0\u3002',
|
|
4220
|
-
'\u94C1\u5F8B\uFF1A\u4E0D\u5F97\u865A\u6784\u9879\u76EE\u4E8B\u5B9E\u3002\u9700\u8981\u9879\u76EE\u4E8B\u5B9E\u65F6\u5199\u6210"\u5148\u8BFB\u53D6/\u786E\u8BA4 X"\u7684\u67E5\u8BC1\u52A8\u4F5C\u3002',
|
|
4221
|
-
"\u6570\u91CF\u7EAA\u5F8B\uFF1Aplan \u6700\u591A 1 \u6761\uFF0Crisk \u6700\u591A 4 \u6761\uFF0Crequirement \u6700\u591A 3 \u6761\u3002"
|
|
4222
|
-
]
|
|
4223
|
-
};
|
|
4439
|
+
var buildTierSystem = (tier) => [
|
|
4440
|
+
RELAY_ROLE,
|
|
4441
|
+
UPSTREAM_MISSION,
|
|
4442
|
+
TIER_STRATEGY_BLOCKS[tier],
|
|
4443
|
+
UPSTREAM_RULES,
|
|
4444
|
+
UPSTREAM_STYLE,
|
|
4445
|
+
DOMAIN_QUALITY_BLOCK
|
|
4446
|
+
].join("\n\n");
|
|
4224
4447
|
var OPTIMIZER_SPECS = {
|
|
4225
|
-
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
},
|
|
4229
|
-
advanced: {
|
|
4230
|
-
temperature: 0.3,
|
|
4231
|
-
system: [RELAY_ROLE, TIER_TASKS.advanced.join("\n"), EVIDENCE_RULES, STYLE_RULES].join("\n\n")
|
|
4232
|
-
},
|
|
4233
|
-
extreme: {
|
|
4234
|
-
temperature: 0.3,
|
|
4235
|
-
system: [RELAY_ROLE, TIER_TASKS.extreme.join("\n"), EVIDENCE_RULES, STYLE_RULES].join("\n\n")
|
|
4236
|
-
}
|
|
4448
|
+
light: { temperature: 0.2, system: buildTierSystem("light") },
|
|
4449
|
+
standard: { temperature: 0.3, system: buildTierSystem("standard") },
|
|
4450
|
+
heavy: { temperature: 0.3, system: buildTierSystem("heavy") }
|
|
4237
4451
|
};
|
|
4452
|
+
var OPTIMIZER_OUTPUT_CONTRACT = OPTIMIZER_OUTPUT_CONTRACT_V2;
|
|
4238
4453
|
|
|
4239
4454
|
// src/client/OptimizerPromptEditor.tsx
|
|
4240
4455
|
var import_jsx_runtime5 = require("react/jsx-runtime");
|
|
4241
4456
|
function builtinTaskPrompt(tier) {
|
|
4242
|
-
return OPTIMIZER_SPECS[tier]?.system ?? OPTIMIZER_SPECS.
|
|
4457
|
+
return OPTIMIZER_SPECS[tier]?.system ?? OPTIMIZER_SPECS.standard.system;
|
|
4243
4458
|
}
|
|
4244
4459
|
function OptimizerPromptEditor({ tier, value, onChange }) {
|
|
4245
4460
|
const label = OPTIMIZER_TIERS.find((item) => item.id === tier)?.label ?? tier;
|
|
@@ -6312,15 +6527,251 @@ function QuickCommandsButton({
|
|
|
6312
6527
|
}
|
|
6313
6528
|
|
|
6314
6529
|
// src/client/QuickCommandsPanel.tsx
|
|
6315
|
-
var
|
|
6530
|
+
var import_react15 = require("react");
|
|
6316
6531
|
|
|
6317
|
-
// src/client/
|
|
6532
|
+
// src/client/OptimizeOptionsCard.tsx
|
|
6318
6533
|
var import_react12 = require("react");
|
|
6534
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
6535
|
+
function Segmented(props) {
|
|
6536
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: optRow, children: [
|
|
6537
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: optLabel, title: props.hint, children: props.label }),
|
|
6538
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { style: optSegmented, role: "group", "aria-label": props.label, children: props.options.map((item) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6539
|
+
"button",
|
|
6540
|
+
{
|
|
6541
|
+
type: "button",
|
|
6542
|
+
"aria-pressed": props.value === item.id,
|
|
6543
|
+
title: item.hint ?? "",
|
|
6544
|
+
style: props.value === item.id ? optSegButtonActive : optSegButton,
|
|
6545
|
+
onMouseDown: (event) => {
|
|
6546
|
+
event.preventDefault();
|
|
6547
|
+
},
|
|
6548
|
+
onClick: () => {
|
|
6549
|
+
props.onPick(item.id);
|
|
6550
|
+
},
|
|
6551
|
+
children: item.label
|
|
6552
|
+
},
|
|
6553
|
+
item.id
|
|
6554
|
+
)) })
|
|
6555
|
+
] });
|
|
6556
|
+
}
|
|
6557
|
+
function Toggle(props) {
|
|
6558
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6559
|
+
Segmented,
|
|
6560
|
+
{
|
|
6561
|
+
label: props.label,
|
|
6562
|
+
hint: props.hint,
|
|
6563
|
+
value: props.on ? "on" : "off",
|
|
6564
|
+
options: [{ id: "off", label: "\u5173", hint: props.hint }, { id: "on", label: "\u5F00", hint: props.hint }],
|
|
6565
|
+
onPick: (value) => {
|
|
6566
|
+
props.onToggle(value === "on");
|
|
6567
|
+
}
|
|
6568
|
+
}
|
|
6569
|
+
);
|
|
6570
|
+
}
|
|
6571
|
+
function currentPrompt(settings) {
|
|
6572
|
+
if (settings.optimizerTier === "light") return settings.optimizerPromptLight;
|
|
6573
|
+
if (settings.optimizerTier === "heavy") return settings.optimizerPromptHeavy;
|
|
6574
|
+
return settings.optimizerPromptStandard;
|
|
6575
|
+
}
|
|
6576
|
+
function OptimizeOptionsCard({ settings, actions }) {
|
|
6577
|
+
const [detailOpen, setDetailOpen] = (0, import_react12.useState)(false);
|
|
6578
|
+
const [modelText, setModelText] = (0, import_react12.useState)(settings.optimizerModel);
|
|
6579
|
+
const prompt = currentPrompt(settings);
|
|
6580
|
+
const tierOff = settings.optimizerTier === "off";
|
|
6581
|
+
return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: optCard, role: "group", "aria-label": "\u4F18\u5316\u9009\u9879", children: [
|
|
6582
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: optCardTitle, title: "\u8FD9\u4E9B\u5F00\u5173\u90FD\u5C5E\u4E8E\u300C\u4F18\u5316\u63D0\u793A\u8BCD\u300D\u8FD9\u4E00\u8F6E\uFF1B\u6863\u4F4D\u5728\u9762\u677F\u6807\u9898\u884C", children: "\u4F18\u5316\u9009\u9879" }),
|
|
6583
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6584
|
+
Segmented,
|
|
6585
|
+
{
|
|
6586
|
+
label: "\u6743\u9650",
|
|
6587
|
+
hint: "\u5BA1\u67E5 = \u6210\u54C1\u8FDB\u7ED3\u679C\u6846\uFF0C\u4F60\u770B\u8FC7\u518D\u70B9\u300C\u63D2\u5165\u8F93\u5165\u6846\u300D\uFF1B\u81EA\u52A8 = \u8DD1\u5B8C\u81EA\u52A8\u5199\u56DE\u8F93\u5165\u6846\uFF08\u90FD\u4E0D\u4F1A\u81EA\u52A8\u53D1\u9001\u6D88\u606F\uFF09",
|
|
6588
|
+
value: settings.optimizerPermission,
|
|
6589
|
+
options: OPTIMIZER_PERMISSIONS.map((item) => ({ id: item.id, label: item.label, hint: item.hint })),
|
|
6590
|
+
onPick: actions.setPermission
|
|
6591
|
+
}
|
|
6592
|
+
),
|
|
6593
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6594
|
+
Segmented,
|
|
6595
|
+
{
|
|
6596
|
+
label: "\u534F\u4F5C\u57FA\u8C03",
|
|
6597
|
+
hint: "\u786C\u90A6\u90A6 = \u6574\u4EFD\u8F85\u52A9\u5305\u6539\u7528\u53E3\u8BED\u76F4\u7ED9\u7684\u5199\u6CD5\uFF08\u53EA\u6539\u5199\u6CD5\uFF1A\u6761\u76EE\u96C6\u5408\u4E0E\u9010\u5B57\u4F9D\u636E\u89C4\u5219\u4E0D\u53D8\uFF09",
|
|
6598
|
+
value: settings.optimizerFraming,
|
|
6599
|
+
options: OPTIMIZER_FRAMINGS.map((item) => ({ id: item.id, label: item.label, hint: item.hint })),
|
|
6600
|
+
onPick: actions.setFraming
|
|
6601
|
+
}
|
|
6602
|
+
),
|
|
6603
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: optRow, children: [
|
|
6604
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: optLabel, title: "\u89E3\u91CA\u5C42\u7528\u54EA\u4E2A\u6A21\u578B\uFF1A\u8DDF\u968F\u4F1A\u8BDD\u5F53\u524D\u9009\u7684\uFF0C\u6216\u81EA\u5DF1\u6307\u5B9A", children: "\u6A21\u578B" }),
|
|
6605
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: optSegmented, role: "group", "aria-label": "\u6A21\u578B", children: [
|
|
6606
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6607
|
+
"button",
|
|
6608
|
+
{
|
|
6609
|
+
type: "button",
|
|
6610
|
+
"aria-pressed": settings.optimizerModel === "",
|
|
6611
|
+
title: "\u7528\u4F1A\u8BDD\u5F53\u524D\u9009\u7684\u6A21\u578B\uFF08\u9ED8\u8BA4\uFF09",
|
|
6612
|
+
style: settings.optimizerModel === "" ? optSegButtonActive : optSegButton,
|
|
6613
|
+
onMouseDown: (event) => {
|
|
6614
|
+
event.preventDefault();
|
|
6615
|
+
},
|
|
6616
|
+
onClick: () => {
|
|
6617
|
+
setModelText("");
|
|
6618
|
+
actions.setModel("");
|
|
6619
|
+
},
|
|
6620
|
+
children: "\u8DDF\u968F\u4F1A\u8BDD"
|
|
6621
|
+
}
|
|
6622
|
+
),
|
|
6623
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6624
|
+
"button",
|
|
6625
|
+
{
|
|
6626
|
+
type: "button",
|
|
6627
|
+
"aria-pressed": settings.optimizerModel !== "",
|
|
6628
|
+
title: "\u6307\u5B9A\u4E00\u6761\u8DEF\u7531\uFF1A\u5199 provider/model\uFF08\u53EA\u5199\u6A21\u578B\u540D\u5219\u6CBF\u7528\u4F1A\u8BDD\u7684 provider\uFF09",
|
|
6629
|
+
style: settings.optimizerModel !== "" ? optSegButtonActive : optSegButton,
|
|
6630
|
+
onMouseDown: (event) => {
|
|
6631
|
+
event.preventDefault();
|
|
6632
|
+
},
|
|
6633
|
+
onClick: () => {
|
|
6634
|
+
actions.setModel(modelText.trim() === "" ? "provider/model" : modelText.trim());
|
|
6635
|
+
},
|
|
6636
|
+
children: "\u6307\u5B9A"
|
|
6637
|
+
}
|
|
6638
|
+
)
|
|
6639
|
+
] })
|
|
6640
|
+
] }),
|
|
6641
|
+
settings.optimizerModel !== "" && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6642
|
+
"input",
|
|
6643
|
+
{
|
|
6644
|
+
"aria-label": "\u6307\u5B9A\u7684\u6A21\u578B",
|
|
6645
|
+
title: "\u5199 provider/model\uFF0C\u4F8B\u5982 go/deepseek-flash\uFF1B\u7559\u7A7A = \u8DDF\u968F\u4F1A\u8BDD",
|
|
6646
|
+
value: modelText,
|
|
6647
|
+
onChange: (event) => {
|
|
6648
|
+
setModelText(event.target.value);
|
|
6649
|
+
},
|
|
6650
|
+
onBlur: () => {
|
|
6651
|
+
const next = modelText.trim();
|
|
6652
|
+
actions.setModel(next);
|
|
6653
|
+
setModelText(next);
|
|
6654
|
+
},
|
|
6655
|
+
style: optInput,
|
|
6656
|
+
spellCheck: false
|
|
6657
|
+
}
|
|
6658
|
+
),
|
|
6659
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6660
|
+
Segmented,
|
|
6661
|
+
{
|
|
6662
|
+
label: "\u4E0A\u4E0B\u6587",
|
|
6663
|
+
hint: "\u56DE\u5408 = \u53EA\u5E26\u6700\u8FD1 N \u8F6E\u5F80\u6765\uFF080 = \u4E0D\u5E26\uFF09\uFF1B\u5168\u6587 = \u5C3D\u91CF\u7ED9\u5168\uFF08\u4ECD\u53D7\u5B57\u7B26\u9884\u7B97\u7EA6\u675F\uFF09",
|
|
6664
|
+
value: settings.optimizerHistory,
|
|
6665
|
+
options: [
|
|
6666
|
+
{ id: "turns", label: "\u56DE\u5408", hint: "\u53EA\u5E26\u6700\u8FD1 N \u8F6E\u5F80\u6765\uFF08\u7701 token\u3001\u4E5F\u591F\u6D88\u6B67\u4E49\uFF09" },
|
|
6667
|
+
{ id: "full", label: "\u5168\u6587", hint: "\u628A\u4F1A\u8BDD\u5F80\u6765\u5C3D\u91CF\u90FD\u7ED9\u89E3\u91CA\u5C42\uFF08\u66F4\u61C2\u4F60\uFF0C\u4E5F\u66F4\u6162\u66F4\u8D35\uFF09" }
|
|
6668
|
+
],
|
|
6669
|
+
onPick: actions.setHistory
|
|
6670
|
+
}
|
|
6671
|
+
),
|
|
6672
|
+
settings.optimizerHistory === "turns" && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: optRow, children: [
|
|
6673
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: optLabel }),
|
|
6674
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6675
|
+
"input",
|
|
6676
|
+
{
|
|
6677
|
+
"aria-label": "\u4E0A\u4E0B\u6587\u56DE\u5408\u6570",
|
|
6678
|
+
title: `\u6700\u8FD1\u51E0\u8F6E\u5F80\u6765\uFF08${String(OPTIMIZER_TURNS_MIN)}\u2013${String(OPTIMIZER_TURNS_MAX)}\uFF1B0 = \u4E0D\u5E26\u4E0A\u4E0B\u6587\uFF09`,
|
|
6679
|
+
type: "range",
|
|
6680
|
+
min: OPTIMIZER_TURNS_MIN,
|
|
6681
|
+
max: OPTIMIZER_TURNS_MAX,
|
|
6682
|
+
step: 1,
|
|
6683
|
+
value: settings.optimizerTurns,
|
|
6684
|
+
onChange: (event) => {
|
|
6685
|
+
actions.setTurns(Number(event.target.value));
|
|
6686
|
+
},
|
|
6687
|
+
style: optSlider
|
|
6688
|
+
}
|
|
6689
|
+
),
|
|
6690
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: optNumber, children: settings.optimizerTurns === 0 ? "\u4E0D\u5E26" : `${String(settings.optimizerTurns)} \u8F6E` })
|
|
6691
|
+
] }),
|
|
6692
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6693
|
+
Toggle,
|
|
6694
|
+
{
|
|
6695
|
+
label: "\u53EA\u8BFB\u5DE5\u5177",
|
|
6696
|
+
hint: "\u5141\u8BB8\u89E3\u91CA\u5C42\u8BFB\u9879\u76EE\u6587\u4EF6\u6838\u5BF9\u4E8B\u5B9E\uFF08read/glob/grep\uFF09\uFF1A\u9650\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55\u3001\u53EA\u8BFB\u3001\u6709\u4E0A\u9650",
|
|
6697
|
+
on: settings.optimizeReadTools,
|
|
6698
|
+
onToggle: actions.setReadTools
|
|
6699
|
+
}
|
|
6700
|
+
),
|
|
6701
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6702
|
+
Toggle,
|
|
6703
|
+
{
|
|
6704
|
+
label: "\u5185\u7F6E Bash",
|
|
6705
|
+
hint: "\u5141\u8BB8\u89E3\u91CA\u5C42\u6267\u884C shell \u547D\u4EE4\u6838\u5BF9\u4E8B\u5B9E\uFF1A\u9501\u5B9A\u4F1A\u8BDD\u5DE5\u4F5C\u76EE\u5F55\u3001\u5355\u6761\u8D85\u65F6 20 \u79D2\u3001\u8F93\u51FA\u622A\u65AD\u3001\u9010\u6761\u8BB0\u8D26\uFF08\u9ED8\u8BA4\u5173\uFF09",
|
|
6706
|
+
on: settings.optimizeBash,
|
|
6707
|
+
onToggle: actions.setBash
|
|
6708
|
+
}
|
|
6709
|
+
),
|
|
6710
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: optRow, children: [
|
|
6711
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: optLabel, title: "\u6539\u89E3\u91CA\u5C42\u300C\u4EFB\u52A1\u4E0E\u98CE\u683C\u300D\u90A3\u4E00\u6BB5\u63D0\u793A\u8BCD\uFF1B\u8F93\u51FA\u5951\u7EA6\u7531\u63D2\u4EF6\u8FFD\u52A0\uFF0C\u6539\u4E0D\u6389", children: "\u8BE6\u60C5" }),
|
|
6712
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6713
|
+
"button",
|
|
6714
|
+
{
|
|
6715
|
+
type: "button",
|
|
6716
|
+
"aria-expanded": detailOpen,
|
|
6717
|
+
title: "\u5C55\u5F00/\u6536\u8D77\u63D0\u793A\u8BCD\u7F16\u8F91",
|
|
6718
|
+
style: optSegButton,
|
|
6719
|
+
onMouseDown: (event) => {
|
|
6720
|
+
event.preventDefault();
|
|
6721
|
+
},
|
|
6722
|
+
onClick: () => {
|
|
6723
|
+
setDetailOpen(!detailOpen);
|
|
6724
|
+
},
|
|
6725
|
+
children: detailOpen ? "\u6536\u8D77 \u25BE" : "\u5C55\u5F00 \u25B8"
|
|
6726
|
+
}
|
|
6727
|
+
)
|
|
6728
|
+
] }),
|
|
6729
|
+
detailOpen && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(import_jsx_runtime12.Fragment, { children: [
|
|
6730
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: optHint, children: "\u6539\u7684\u662F**\u8FD9\u4E00\u6863**\u7684\u300C\u4EFB\u52A1\u4E0E\u98CE\u683C\u300D\u6BB5\uFF1B\u7559\u7A7A = \u7528\u5185\u7F6E\u90A3\u4EFD\u3002\u8F93\u51FA\u5951\u7EA6\uFF08\u516D\u7C7B\u6761\u76EE\u4E0E\u5FC5\u586B\u4F9D\u636E\uFF09\u7531\u63D2\u4EF6\u8FFD\u52A0\uFF0C\u6539\u4E0D\u6389 \u2014\u2014 \u5B83\u6B63\u662F\u5BBF\u4E3B\u9010\u6761\u6821\u9A8C\u5F15\u6587\u7684\u4F9D\u636E\u3002" }),
|
|
6731
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6732
|
+
"textarea",
|
|
6733
|
+
{
|
|
6734
|
+
"aria-label": "\u81EA\u5B9A\u4E49\u63D0\u793A\u8BCD",
|
|
6735
|
+
value: prompt,
|
|
6736
|
+
placeholder: tierOff ? "\u6863\u4F4D\u662F\u300C\u5173\u95ED\u300D\uFF1A\u8FD9\u4E00\u6863\u4E0D\u8C03\u7528\u6A21\u578B\uFF0C\u6CA1\u6709\u63D0\u793A\u8BCD" : "\u7559\u7A7A = \u7528\u5185\u7F6E\u90A3\u4EFD",
|
|
6737
|
+
disabled: tierOff,
|
|
6738
|
+
onChange: (event) => {
|
|
6739
|
+
actions.setPrompt(event.target.value);
|
|
6740
|
+
},
|
|
6741
|
+
style: optPromptBox,
|
|
6742
|
+
spellCheck: false
|
|
6743
|
+
}
|
|
6744
|
+
),
|
|
6745
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { style: optRow, children: [
|
|
6746
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { style: optLabel }),
|
|
6747
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
|
|
6748
|
+
"button",
|
|
6749
|
+
{
|
|
6750
|
+
type: "button",
|
|
6751
|
+
title: "\u6E05\u7A7A\u81EA\u5B9A\u4E49\u63D0\u793A\u8BCD\uFF0C\u56DE\u5230\u63D2\u4EF6\u5185\u7F6E\u90A3\u4E00\u4EFD",
|
|
6752
|
+
style: optSegButton,
|
|
6753
|
+
disabled: prompt === "",
|
|
6754
|
+
onMouseDown: (event) => {
|
|
6755
|
+
event.preventDefault();
|
|
6756
|
+
},
|
|
6757
|
+
onClick: () => {
|
|
6758
|
+
actions.setPrompt("");
|
|
6759
|
+
},
|
|
6760
|
+
children: "\u6062\u590D\u5185\u7F6E"
|
|
6761
|
+
}
|
|
6762
|
+
)
|
|
6763
|
+
] })
|
|
6764
|
+
] })
|
|
6765
|
+
] });
|
|
6766
|
+
}
|
|
6767
|
+
|
|
6768
|
+
// src/client/optimize-clock.ts
|
|
6769
|
+
var import_react13 = require("react");
|
|
6319
6770
|
var TICK_MS2 = 1e3;
|
|
6320
6771
|
function useOptimizeElapsed(startedAt) {
|
|
6321
6772
|
const running = startedAt > 0;
|
|
6322
|
-
const [seconds, setSeconds] = (0,
|
|
6323
|
-
(0,
|
|
6773
|
+
const [seconds, setSeconds] = (0, import_react13.useState)(() => elapsedSeconds(startedAt, Date.now()));
|
|
6774
|
+
(0, import_react13.useEffect)(() => {
|
|
6324
6775
|
setSeconds(elapsedSeconds(startedAt, Date.now()));
|
|
6325
6776
|
if (!running) return void 0;
|
|
6326
6777
|
const timer = setInterval(() => {
|
|
@@ -6343,7 +6794,7 @@ function sectionForDock(dockPresent, current) {
|
|
|
6343
6794
|
}
|
|
6344
6795
|
|
|
6345
6796
|
// src/client/OptimizeDock.tsx
|
|
6346
|
-
var
|
|
6797
|
+
var import_react14 = require("react");
|
|
6347
6798
|
|
|
6348
6799
|
// src/client/optimize-dock.ts
|
|
6349
6800
|
function dockReducer(state2, event) {
|
|
@@ -6416,14 +6867,6 @@ function elapsed(startedAt, at) {
|
|
|
6416
6867
|
if (startedAt <= 0 || !Number.isFinite(at)) return 0;
|
|
6417
6868
|
return at > startedAt ? at - startedAt : 0;
|
|
6418
6869
|
}
|
|
6419
|
-
function previousForChain(dock, nextSource) {
|
|
6420
|
-
if (dock === null || dock.phase !== "done") return "";
|
|
6421
|
-
const text = dock.text.trim();
|
|
6422
|
-
if (text === "") return "";
|
|
6423
|
-
if (sameDraft(dock.source, nextSource)) return "";
|
|
6424
|
-
if (sameDraft(text, nextSource)) return "";
|
|
6425
|
-
return dock.text;
|
|
6426
|
-
}
|
|
6427
6870
|
function insertDecision(state2, currentDraft2, confirmed) {
|
|
6428
6871
|
if (state2 === null || state2.phase !== "done" || state2.text.trim() === "") return "empty";
|
|
6429
6872
|
if (confirmed) return "insert";
|
|
@@ -6518,8 +6961,15 @@ function sanitizeDockSnapshot(raw) {
|
|
|
6518
6961
|
}
|
|
6519
6962
|
|
|
6520
6963
|
// src/client/OptimizeDock.tsx
|
|
6521
|
-
var
|
|
6964
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
6522
6965
|
var KIND_LABEL = {
|
|
6966
|
+
// 0.14.0(上游本体)六类
|
|
6967
|
+
user_requirement: "\u4F60\u8981\u7684",
|
|
6968
|
+
quality_interpretation: "\u8D28\u91CF\u89E3\u8BFB",
|
|
6969
|
+
observed_fact: "\u5DF2\u6838\u5B9E",
|
|
6970
|
+
implementation_option: "\u53EF\u9006\u7EC6\u8282",
|
|
6971
|
+
proposal: "\u5EFA\u8BAE",
|
|
6972
|
+
// 0.13.x 旧本体(装配仍认,标签保留)
|
|
6523
6973
|
rewrite: "\u6539\u5199",
|
|
6524
6974
|
requirement: "\u8865\u5168\xB7\u8981\u6C42",
|
|
6525
6975
|
quality: "\u8865\u5168\xB7\u8D28\u91CF",
|
|
@@ -6552,8 +7002,8 @@ async function copyText(text) {
|
|
|
6552
7002
|
}
|
|
6553
7003
|
}
|
|
6554
7004
|
function OptimizeDock({ state: state2, seconds, actions }) {
|
|
6555
|
-
const [copied, setCopied] = (0,
|
|
6556
|
-
const [discardArmed, setDiscardArmed] = (0,
|
|
7005
|
+
const [copied, setCopied] = (0, import_react14.useState)(false);
|
|
7006
|
+
const [discardArmed, setDiscardArmed] = (0, import_react14.useState)(false);
|
|
6557
7007
|
const running = state2.phase === "running";
|
|
6558
7008
|
const hasText = state2.text.trim() !== "";
|
|
6559
7009
|
const canInsert = state2.phase === "done" && hasText;
|
|
@@ -6566,11 +7016,11 @@ function OptimizeDock({ state: state2, seconds, actions }) {
|
|
|
6566
7016
|
}, 1500);
|
|
6567
7017
|
});
|
|
6568
7018
|
};
|
|
6569
|
-
return /* @__PURE__ */ (0,
|
|
6570
|
-
/* @__PURE__ */ (0,
|
|
6571
|
-
/* @__PURE__ */ (0,
|
|
6572
|
-
/* @__PURE__ */ (0,
|
|
6573
|
-
!running && /* @__PURE__ */ (0,
|
|
7019
|
+
return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: dockBox, role: "group", "aria-label": "\u4F18\u5316\u7ED3\u679C", children: [
|
|
7020
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: dockHead, children: [
|
|
7021
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: dockPhase, role: "status", children: dockPhaseText(state2) }),
|
|
7022
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: dockMeta, children: running ? `\u5DF2\u7B49\u5F85 ${String(seconds)}s` : state2.elapsedMs > 0 ? `\u7528\u65F6 ${(state2.elapsedMs / 1e3).toFixed(1)} \u79D2` : "" }),
|
|
7023
|
+
!running && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
6574
7024
|
"button",
|
|
6575
7025
|
{
|
|
6576
7026
|
type: "button",
|
|
@@ -6593,7 +7043,7 @@ function OptimizeDock({ state: state2, seconds, actions }) {
|
|
|
6593
7043
|
children: discardArmed ? "\u70B9\u7B2C\u4E8C\u6B21\u4E22\u5F03" : "\u4E22\u5F03"
|
|
6594
7044
|
}
|
|
6595
7045
|
),
|
|
6596
|
-
running ? /* @__PURE__ */ (0,
|
|
7046
|
+
running ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
6597
7047
|
"button",
|
|
6598
7048
|
{
|
|
6599
7049
|
type: "button",
|
|
@@ -6605,7 +7055,7 @@ function OptimizeDock({ state: state2, seconds, actions }) {
|
|
|
6605
7055
|
onClick: actions.cancel,
|
|
6606
7056
|
children: "\u53D6\u6D88"
|
|
6607
7057
|
}
|
|
6608
|
-
) : /* @__PURE__ */ (0,
|
|
7058
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
6609
7059
|
"button",
|
|
6610
7060
|
{
|
|
6611
7061
|
type: "button",
|
|
@@ -6620,15 +7070,15 @@ function OptimizeDock({ state: state2, seconds, actions }) {
|
|
|
6620
7070
|
}
|
|
6621
7071
|
)
|
|
6622
7072
|
] }),
|
|
6623
|
-
/* @__PURE__ */ (0,
|
|
6624
|
-
state2.items.length > 0 && /* @__PURE__ */ (0,
|
|
6625
|
-
/* @__PURE__ */ (0,
|
|
6626
|
-
/* @__PURE__ */ (0,
|
|
6627
|
-
item.quote !== "" && /* @__PURE__ */ (0,
|
|
7073
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: dockBody, children: [
|
|
7074
|
+
state2.items.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("ol", { style: dockList, children: state2.items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("li", { style: dockItemRow, children: [
|
|
7075
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: dockKind, children: KIND_LABEL[item.kind] ?? item.kind }),
|
|
7076
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: dockItemText, children: item.text }),
|
|
7077
|
+
item.quote !== "" && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { style: dockMeta, children: item.quoteSource === "none" ? `\uFF08\u6A21\u578B\u81EA\u5DF1\u8865\u7684\uFF0C\u4F9D\u636E\u4E0D\u662F\u4F60\u539F\u8BDD\uFF1A\u300C${item.quote}\u300D\uFF09` : `\uFF08\u4F9D\u636E\uFF1A"${item.quote}"\uFF09` })
|
|
6628
7078
|
] }, item.id)) }),
|
|
6629
|
-
state2.dropped.length > 0 && /* @__PURE__ */ (0,
|
|
6630
|
-
state2.phase === "error" && /* @__PURE__ */ (0,
|
|
6631
|
-
(state2.phase === "done" || state2.phase === "cancelled") && /* @__PURE__ */ (0,
|
|
7079
|
+
state2.dropped.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: dockDropped, children: `\u4E22\u5F03 ${String(state2.dropped.length)} \u6761\uFF1A${state2.dropped.map((row2) => row2.reason).join("\uFF1B")}` }),
|
|
7080
|
+
state2.phase === "error" && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: dockError, role: "alert", children: state2.error === "" ? "\u4F18\u5316\u5931\u8D25" : state2.error }),
|
|
7081
|
+
(state2.phase === "done" || state2.phase === "cancelled") && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
6632
7082
|
"textarea",
|
|
6633
7083
|
{
|
|
6634
7084
|
value: state2.text,
|
|
@@ -6641,10 +7091,10 @@ function OptimizeDock({ state: state2, seconds, actions }) {
|
|
|
6641
7091
|
style: dockEditor
|
|
6642
7092
|
}
|
|
6643
7093
|
),
|
|
6644
|
-
state2.phase === "done" && /* @__PURE__ */ (0,
|
|
7094
|
+
state2.phase === "done" && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { style: dockSummaryLine, children: state2.route === "" ? dockSummary(state2) : `${dockSummary(state2)} \xB7 ${state2.route}` })
|
|
6645
7095
|
] }),
|
|
6646
|
-
/* @__PURE__ */ (0,
|
|
6647
|
-
/* @__PURE__ */ (0,
|
|
7096
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { style: { ...dockButtons, ...dockButtonsPinned }, children: [
|
|
7097
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
6648
7098
|
"button",
|
|
6649
7099
|
{
|
|
6650
7100
|
type: "button",
|
|
@@ -6658,7 +7108,7 @@ function OptimizeDock({ state: state2, seconds, actions }) {
|
|
|
6658
7108
|
children: "\u63D2\u5165\u8F93\u5165\u6846"
|
|
6659
7109
|
}
|
|
6660
7110
|
),
|
|
6661
|
-
/* @__PURE__ */ (0,
|
|
7111
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
6662
7112
|
"button",
|
|
6663
7113
|
{
|
|
6664
7114
|
type: "button",
|
|
@@ -6672,7 +7122,7 @@ function OptimizeDock({ state: state2, seconds, actions }) {
|
|
|
6672
7122
|
children: "\u91CD\u65B0\u4F18\u5316"
|
|
6673
7123
|
}
|
|
6674
7124
|
),
|
|
6675
|
-
/* @__PURE__ */ (0,
|
|
7125
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
6676
7126
|
"button",
|
|
6677
7127
|
{
|
|
6678
7128
|
type: "button",
|
|
@@ -6691,7 +7141,7 @@ function OptimizeDock({ state: state2, seconds, actions }) {
|
|
|
6691
7141
|
}
|
|
6692
7142
|
|
|
6693
7143
|
// src/client/QuickCommandsPanel.tsx
|
|
6694
|
-
var
|
|
7144
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
6695
7145
|
var MARGIN = 8;
|
|
6696
7146
|
var GAP = 8;
|
|
6697
7147
|
function QuickCommandsPanel({
|
|
@@ -6715,18 +7165,19 @@ function QuickCommandsPanel({
|
|
|
6715
7165
|
const status = useBookStatus((item) => item);
|
|
6716
7166
|
const dock = useDock((item) => item);
|
|
6717
7167
|
const dockHidden = useDockHidden((item) => item);
|
|
6718
|
-
const ref = (0,
|
|
6719
|
-
const [position, setPosition] = (0,
|
|
6720
|
-
const [activeId, setActiveId] = (0,
|
|
6721
|
-
const [section, setSection] = (0,
|
|
7168
|
+
const ref = (0, import_react15.useRef)(null);
|
|
7169
|
+
const [position, setPosition] = (0, import_react15.useState)(null);
|
|
7170
|
+
const [activeId, setActiveId] = (0, import_react15.useState)("");
|
|
7171
|
+
const [section, setSection] = (0, import_react15.useState)(DEFAULT_PANEL_SECTION);
|
|
6722
7172
|
const dockPresent = dock !== null;
|
|
7173
|
+
const tierOff = settings.optimizerTier === "off";
|
|
6723
7174
|
const seconds = useOptimizeElapsed(busy ? startedAt : 0);
|
|
6724
7175
|
const dockRunning = dock !== null && dock.phase === "running";
|
|
6725
7176
|
const dockSeconds = useOptimizeElapsed(dockRunning && dock !== null ? dock.startedAt : 0);
|
|
6726
7177
|
const counts = bookCounts(book);
|
|
6727
7178
|
const categories = book.categories;
|
|
6728
7179
|
const active2 = categories.find((category) => category.id === activeId) ?? categories[0];
|
|
6729
|
-
(0,
|
|
7180
|
+
(0, import_react15.useLayoutEffect)(() => {
|
|
6730
7181
|
if (anchor === null) {
|
|
6731
7182
|
setPosition(null);
|
|
6732
7183
|
return;
|
|
@@ -6739,7 +7190,7 @@ function QuickCommandsPanel({
|
|
|
6739
7190
|
const top = above >= MARGIN ? above : Math.min(anchor.bottom + GAP, window.innerHeight - height - MARGIN);
|
|
6740
7191
|
setPosition({ left, top: Math.max(MARGIN, top) });
|
|
6741
7192
|
}, [anchor?.left, anchor?.bottom, counts.prompts, categories.length, busy, section, dock !== null]);
|
|
6742
|
-
(0,
|
|
7193
|
+
(0, import_react15.useEffect)(() => {
|
|
6743
7194
|
if (anchor === null) return;
|
|
6744
7195
|
const onPointerDown = (event) => {
|
|
6745
7196
|
if (ref.current !== null && event.target instanceof Node && ref.current.contains(event.target)) return;
|
|
@@ -6766,7 +7217,7 @@ function QuickCommandsPanel({
|
|
|
6766
7217
|
};
|
|
6767
7218
|
}, [anchor === null, actions, dockRunning]);
|
|
6768
7219
|
const dockVisible = dockPresent && !dockHidden;
|
|
6769
|
-
const prevDockPresent = (0,
|
|
7220
|
+
const prevDockPresent = (0, import_react15.useRef)(false);
|
|
6770
7221
|
if (prevDockPresent.current !== dockVisible) {
|
|
6771
7222
|
prevDockPresent.current = dockVisible;
|
|
6772
7223
|
const next = sectionForDock(dockVisible, section);
|
|
@@ -6776,7 +7227,7 @@ function QuickCommandsPanel({
|
|
|
6776
7227
|
const tier = settings.optimizerTier;
|
|
6777
7228
|
const items = active2?.prompts ?? [];
|
|
6778
7229
|
const failure = status !== "" && status !== "saving" ? status : "";
|
|
6779
|
-
return /* @__PURE__ */ (0,
|
|
7230
|
+
return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
6780
7231
|
"div",
|
|
6781
7232
|
{
|
|
6782
7233
|
ref,
|
|
@@ -6784,10 +7235,10 @@ function QuickCommandsPanel({
|
|
|
6784
7235
|
"aria-label": "\u5FEB\u6377\u6307\u4EE4",
|
|
6785
7236
|
style: { ...quickPanel, left: position?.left ?? anchor.left, top: position?.top ?? anchor.bottom },
|
|
6786
7237
|
children: [
|
|
6787
|
-
/* @__PURE__ */ (0,
|
|
6788
|
-
/* @__PURE__ */ (0,
|
|
6789
|
-
/* @__PURE__ */ (0,
|
|
6790
|
-
/* @__PURE__ */ (0,
|
|
7238
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: quickPanelHead, children: [
|
|
7239
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: quickPanelTitleRow, children: [
|
|
7240
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: quickPanelTitle, children: "\u5FEB\u6377\u6307\u4EE4" }),
|
|
7241
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: quickTierRow, role: "group", "aria-label": "\u4F18\u5316\u5F3A\u5EA6", children: OPTIMIZER_TIERS.map((item) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
6791
7242
|
"button",
|
|
6792
7243
|
{
|
|
6793
7244
|
type: "button",
|
|
@@ -6805,13 +7256,13 @@ function QuickCommandsPanel({
|
|
|
6805
7256
|
item.id
|
|
6806
7257
|
)) })
|
|
6807
7258
|
] }),
|
|
6808
|
-
/* @__PURE__ */ (0,
|
|
7259
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
6809
7260
|
"button",
|
|
6810
7261
|
{
|
|
6811
7262
|
type: "button",
|
|
6812
|
-
disabled: busy,
|
|
6813
|
-
title: "\u628A\u8F93\u5165\u6846\u91CC\u7684\u8BDD\u4EA4\u7ED9\u53E6\u4E00\u4E2A AI \u6574\u7406\u6210\u4E00\u6761\u53EF\u4EE5\u76F4\u63A5\u53D1\u51FA\u53BB\u7684\u6E05\u6670\u6307\u4EE4\uFF0C\u7ED3\u679C\u76F4\u63A5\u5199\u56DE\u8F93\u5165\u6846\u3002\u5B83\u53EA\u80FD\u4EA7\u51FA\u80FD\u6307\u56DE\u4F60\u539F\u8BDD\u67D0\u4E00\u53E5\u7684\u8865\u5168\uFF0C\u6307\u4E0D\u56DE\u53BB\u7684\u4F1A\u88AB\u4E22\u6389\u5E76\u8BB0\u8D26",
|
|
6814
|
-
style: busy ? quickPrimaryButtonDisabled : quickPrimaryButton,
|
|
7263
|
+
disabled: busy || tierOff,
|
|
7264
|
+
title: tierOff ? "\u6863\u4F4D\u662F\u300C\u5173\u95ED\u300D\uFF1A\u4E0D\u4F18\u5316\uFF08\u5230\u4E0B\u9762\u7684\u300C\u4F18\u5316\u9009\u9879\u300D\u628A\u6863\u4F4D\u62E8\u5230\u8F7B\u5EA6\u6216\u4EE5\u4E0A\uFF09" : "\u628A\u8F93\u5165\u6846\u91CC\u7684\u8BDD\u4EA4\u7ED9\u53E6\u4E00\u4E2A AI \u6574\u7406\u6210\u4E00\u6761\u53EF\u4EE5\u76F4\u63A5\u53D1\u51FA\u53BB\u7684\u6E05\u6670\u6307\u4EE4\uFF0C\u7ED3\u679C\u76F4\u63A5\u5199\u56DE\u8F93\u5165\u6846\u3002\u5B83\u53EA\u80FD\u4EA7\u51FA\u80FD\u6307\u56DE\u4F60\u539F\u8BDD\u67D0\u4E00\u53E5\u7684\u8865\u5168\uFF0C\u6307\u4E0D\u56DE\u53BB\u7684\u4F1A\u88AB\u4E22\u6389\u5E76\u8BB0\u8D26",
|
|
7265
|
+
style: busy || tierOff ? quickPrimaryButtonDisabled : quickPrimaryButton,
|
|
6815
7266
|
onMouseDown: (event) => {
|
|
6816
7267
|
event.preventDefault();
|
|
6817
7268
|
},
|
|
@@ -6819,13 +7270,13 @@ function QuickCommandsPanel({
|
|
|
6819
7270
|
actions.optimize();
|
|
6820
7271
|
},
|
|
6821
7272
|
children: [
|
|
6822
|
-
/* @__PURE__ */ (0,
|
|
6823
|
-
/* @__PURE__ */ (0,
|
|
7273
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { "aria-hidden": true, children: "\u2728" }),
|
|
7274
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: tierOff ? "\u4F18\u5316\u5DF2\u5173\u95ED" : busy ? `\u4F18\u5316\u4E2D\u2026\uFF08${String(seconds)}s\uFF09` : "\u4F18\u5316\u63D0\u793A\u8BCD" })
|
|
6824
7275
|
]
|
|
6825
7276
|
}
|
|
6826
7277
|
)
|
|
6827
7278
|
] }),
|
|
6828
|
-
/* @__PURE__ */ (0,
|
|
7279
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
6829
7280
|
"button",
|
|
6830
7281
|
{
|
|
6831
7282
|
type: "button",
|
|
@@ -6841,14 +7292,47 @@ function QuickCommandsPanel({
|
|
|
6841
7292
|
setSection(next);
|
|
6842
7293
|
},
|
|
6843
7294
|
children: [
|
|
6844
|
-
/* @__PURE__ */ (0,
|
|
6845
|
-
/* @__PURE__ */ (0,
|
|
6846
|
-
/* @__PURE__ */ (0,
|
|
7295
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: quickSectionToggleArrow, "aria-hidden": true, children: section === "optimize" ? "\u25BE" : "\u25B8" }),
|
|
7296
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { children: "\u4F18\u5316\u63D0\u793A\u8BCD" }),
|
|
7297
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: { marginLeft: "auto", color: "var(--dsw-alias-label-tertiary)" }, children: section === "optimize" ? "\u70B9\u6B64\u56DE\u5230\u5FEB\u6377\u6307\u4EE4" : dockPresent ? "\u4E0A\u6B21\u7684\u7ED3\u679C\u5728\u8FD9\u513F" : "\u8FD8\u6CA1\u6709\u7ED3\u679C" })
|
|
6847
7298
|
]
|
|
6848
7299
|
}
|
|
6849
7300
|
),
|
|
6850
|
-
/* @__PURE__ */ (0,
|
|
6851
|
-
|
|
7301
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: quickSectionBody, children: [
|
|
7302
|
+
section === "optimize" && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
7303
|
+
OptimizeOptionsCard,
|
|
7304
|
+
{
|
|
7305
|
+
settings,
|
|
7306
|
+
actions: {
|
|
7307
|
+
setFraming: (value) => {
|
|
7308
|
+
actions.setField(OPTIMIZER_FRAMING_FIELD, value);
|
|
7309
|
+
},
|
|
7310
|
+
setPermission: (value) => {
|
|
7311
|
+
actions.setField(OPTIMIZER_PERMISSION_FIELD, value);
|
|
7312
|
+
},
|
|
7313
|
+
setModel: (value) => {
|
|
7314
|
+
actions.setField(OPTIMIZER_MODEL_FIELD, value);
|
|
7315
|
+
},
|
|
7316
|
+
setHistory: (value) => {
|
|
7317
|
+
actions.setField(OPTIMIZER_HISTORY_FIELD, value);
|
|
7318
|
+
},
|
|
7319
|
+
setTurns: (value) => {
|
|
7320
|
+
actions.setField(OPTIMIZER_TURNS_FIELD, value);
|
|
7321
|
+
},
|
|
7322
|
+
setReadTools: (on) => {
|
|
7323
|
+
actions.setField(OPTIMIZE_READ_TOOLS_FIELD, on);
|
|
7324
|
+
},
|
|
7325
|
+
setBash: (on) => {
|
|
7326
|
+
actions.setField(OPTIMIZE_BASH_FIELD, on);
|
|
7327
|
+
},
|
|
7328
|
+
setPrompt: (value) => {
|
|
7329
|
+
const field = optimizerPromptFieldOf(settings.optimizerTier);
|
|
7330
|
+
if (field !== "") actions.setField(field, value);
|
|
7331
|
+
}
|
|
7332
|
+
}
|
|
7333
|
+
}
|
|
7334
|
+
),
|
|
7335
|
+
dock !== null && section === "optimize" && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: { padding: "8px 12px 8px", flex: "1 1 auto", minHeight: 0, display: "flex", flexDirection: "column" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
6852
7336
|
OptimizeDock,
|
|
6853
7337
|
{
|
|
6854
7338
|
state: dock,
|
|
@@ -6870,16 +7354,16 @@ function QuickCommandsPanel({
|
|
|
6870
7354
|
}
|
|
6871
7355
|
}
|
|
6872
7356
|
) }),
|
|
6873
|
-
section === "optimize" && dock === null && /* @__PURE__ */ (0,
|
|
7357
|
+
section === "optimize" && dock === null && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: quickEmpty, children: [
|
|
6874
7358
|
"\u8FD8\u6CA1\u8DD1\u8FC7\u4F18\u5316\u3002",
|
|
6875
|
-
/* @__PURE__ */ (0,
|
|
7359
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("br", {}),
|
|
6876
7360
|
"\u70B9\u4E0A\u9762\u7684\u300C\u2728 \u4F18\u5316\u63D0\u793A\u8BCD\u300D\u628A\u8F93\u5165\u6846\u91CC\u7684\u8BDD\u4EA4\u7ED9\u53E6\u4E00\u4E2A AI \u6574\u7406\u6210\u4E00\u6761\u80FD\u76F4\u63A5\u53D1\u7684\u6E05\u6670\u6307\u4EE4 \u2014\u2014 \u7ED3\u679C\u4F1A\u51FA\u73B0\u5728\u8FD9\u91CC\uFF08\u53EF\u7F16\u8F91\u3001\u53EF\u63D2\u5165\u8F93\u5165\u6846\u3001\u53EF\u590D\u5236\uFF09\u3002",
|
|
6877
|
-
/* @__PURE__ */ (0,
|
|
7361
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("br", {}),
|
|
6878
7362
|
"\u5F3A\u5EA6\u7528\u6807\u9898\u884C\u90A3\u4E09\u4E2A\u6863\u4F4D\uFF08\u666E\u901A / \u9AD8\u7EA7 / \u6781\u7AEF\uFF09\u3002"
|
|
6879
7363
|
] }),
|
|
6880
|
-
section === "quick" && /* @__PURE__ */ (0,
|
|
6881
|
-
/* @__PURE__ */ (0,
|
|
6882
|
-
categories.map((category) => /* @__PURE__ */ (0,
|
|
7364
|
+
section === "quick" && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
|
|
7365
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { style: { padding: "8px 12px 0" }, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: quickCategoryRow, children: [
|
|
7366
|
+
categories.map((category) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
6883
7367
|
"button",
|
|
6884
7368
|
{
|
|
6885
7369
|
type: "button",
|
|
@@ -6896,7 +7380,7 @@ function QuickCommandsPanel({
|
|
|
6896
7380
|
},
|
|
6897
7381
|
category.id
|
|
6898
7382
|
)),
|
|
6899
|
-
/* @__PURE__ */ (0,
|
|
7383
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
6900
7384
|
"button",
|
|
6901
7385
|
{
|
|
6902
7386
|
type: "button",
|
|
@@ -6913,14 +7397,14 @@ function QuickCommandsPanel({
|
|
|
6913
7397
|
}
|
|
6914
7398
|
)
|
|
6915
7399
|
] }) }),
|
|
6916
|
-
/* @__PURE__ */ (0,
|
|
6917
|
-
items.length === 0 && /* @__PURE__ */ (0,
|
|
7400
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: quickList, children: [
|
|
7401
|
+
items.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: quickEmpty, children: [
|
|
6918
7402
|
"\u8FD9\u4E2A\u5206\u7C7B\u91CC\u8FD8\u6CA1\u6709\u6761\u76EE\u3002",
|
|
6919
|
-
/* @__PURE__ */ (0,
|
|
7403
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("br", {}),
|
|
6920
7404
|
"\u5728\u300C\u8BBE\u7F6E \u2192 \u8F93\u5165\u4F53\u9A8C \u2192 \u5FEB\u6377\u6307\u4EE4\u6E05\u5355\u300D\u91CC\u6DFB\u52A0\u3002"
|
|
6921
7405
|
] }),
|
|
6922
|
-
items.map((item) => /* @__PURE__ */ (0,
|
|
6923
|
-
/* @__PURE__ */ (0,
|
|
7406
|
+
items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: { display: "flex", alignItems: "center", gap: 4 }, children: [
|
|
7407
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
6924
7408
|
"button",
|
|
6925
7409
|
{
|
|
6926
7410
|
type: "button",
|
|
@@ -6933,12 +7417,12 @@ function QuickCommandsPanel({
|
|
|
6933
7417
|
actions.insert(item.prompt);
|
|
6934
7418
|
},
|
|
6935
7419
|
children: [
|
|
6936
|
-
/* @__PURE__ */ (0,
|
|
6937
|
-
/* @__PURE__ */ (0,
|
|
7420
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: quickItemLabel, children: item.label }),
|
|
7421
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: quickItemPreview, children: item.prompt.replace(/\s+/g, " ") })
|
|
6938
7422
|
]
|
|
6939
7423
|
}
|
|
6940
7424
|
),
|
|
6941
|
-
/* @__PURE__ */ (0,
|
|
7425
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
6942
7426
|
InsertModeControl,
|
|
6943
7427
|
{
|
|
6944
7428
|
compact: true,
|
|
@@ -6950,7 +7434,7 @@ function QuickCommandsPanel({
|
|
|
6950
7434
|
}
|
|
6951
7435
|
)
|
|
6952
7436
|
] }, item.id)),
|
|
6953
|
-
active2 !== void 0 && /* @__PURE__ */ (0,
|
|
7437
|
+
active2 !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
6954
7438
|
AddPromptRow,
|
|
6955
7439
|
{
|
|
6956
7440
|
variant: "panel",
|
|
@@ -6967,9 +7451,9 @@ function QuickCommandsPanel({
|
|
|
6967
7451
|
] })
|
|
6968
7452
|
] })
|
|
6969
7453
|
] }),
|
|
6970
|
-
/* @__PURE__ */ (0,
|
|
6971
|
-
/* @__PURE__ */ (0,
|
|
6972
|
-
/* @__PURE__ */ (0,
|
|
7454
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { style: quickPanelFoot, children: [
|
|
7455
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { style: quickNotice, role: "status", children: notice !== "" ? notice : failure }),
|
|
7456
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
|
|
6973
7457
|
"span",
|
|
6974
7458
|
{
|
|
6975
7459
|
style: quickFootHint,
|
|
@@ -7327,7 +7811,7 @@ function apply(ctx) {
|
|
|
7327
7811
|
onDropped: (row2) => {
|
|
7328
7812
|
dock.set(dockReducer(dock.getSnapshot(), { type: "dropped", row: row2 }));
|
|
7329
7813
|
}
|
|
7330
|
-
}, controller.signal
|
|
7814
|
+
}, controller.signal).then(
|
|
7331
7815
|
(result) => {
|
|
7332
7816
|
if (controller.signal.aborted) return;
|
|
7333
7817
|
optimizing.set(false);
|
|
@@ -7339,6 +7823,14 @@ function apply(ctx) {
|
|
|
7339
7823
|
note2(`\u4F18\u5316\u5931\u8D25\uFF08\u7528\u65F6 ${used} \u79D2\uFF09\uFF1A${result.error ?? "\u672A\u77E5\u539F\u56E0"}`);
|
|
7340
7824
|
return;
|
|
7341
7825
|
}
|
|
7826
|
+
if (live.getSnapshot().optimizerPermission === "auto") {
|
|
7827
|
+
if (currentDraft() === input.draftAtStart) {
|
|
7828
|
+
quickActions.dockInsert();
|
|
7829
|
+
} else {
|
|
7830
|
+
note2(`\u6210\u54C1\u5DF2\u5C31\u7EEA\uFF08\u7528\u65F6 ${used} \u79D2\uFF09\uFF1A\u4F60\u5728\u4F18\u5316\u671F\u95F4\u6539\u8FC7\u8F93\u5165\u6846\uFF0C\u6240\u4EE5\u6CA1\u6709\u81EA\u52A8\u5199\u56DE \u2014\u2014 \u70B9\u300C\u63D2\u5165\u8F93\u5165\u6846\u300D\u5373\u53EF`);
|
|
7831
|
+
}
|
|
7832
|
+
return;
|
|
7833
|
+
}
|
|
7342
7834
|
note2(`\u4F18\u5316\u5B8C\u6210\uFF08${result.route ?? ""}\uFF09\xB7 ${next === null ? "" : dockSummary(next)} \xB7 \u7528\u65F6 ${used} \u79D2 \xB7 \u5728\u7ED3\u679C\u6846\u91CC\u70B9\u300C\u63D2\u5165\u8F93\u5165\u6846\u300D\u5199\u56DE`);
|
|
7343
7835
|
},
|
|
7344
7836
|
(error) => {
|
|
@@ -7363,12 +7855,7 @@ function apply(ctx) {
|
|
|
7363
7855
|
return;
|
|
7364
7856
|
}
|
|
7365
7857
|
const source = slash.prefix === "" ? draft : slash.body;
|
|
7366
|
-
startOptimize({
|
|
7367
|
-
source,
|
|
7368
|
-
draftAtStart: draft,
|
|
7369
|
-
prefix: slash.prefix,
|
|
7370
|
-
previous: previousForChain(dock.getSnapshot(), source)
|
|
7371
|
-
});
|
|
7858
|
+
startOptimize({ source, draftAtStart: draft, prefix: slash.prefix });
|
|
7372
7859
|
};
|
|
7373
7860
|
const quickActions = {
|
|
7374
7861
|
toggle: (anchor) => {
|
|
@@ -7423,8 +7910,7 @@ function apply(ctx) {
|
|
|
7423
7910
|
startOptimize({
|
|
7424
7911
|
source: state2.source,
|
|
7425
7912
|
draftAtStart: currentDraft(),
|
|
7426
|
-
prefix: state2.slashPrefix
|
|
7427
|
-
previous: state2.edited ? state2.text : ""
|
|
7913
|
+
prefix: state2.slashPrefix
|
|
7428
7914
|
});
|
|
7429
7915
|
},
|
|
7430
7916
|
/** 中止这一轮并保留已生成的部分(条目流水留着,成品本来就不存在)。 */
|
|
@@ -7549,6 +8035,8 @@ function apply(ctx) {
|
|
|
7549
8035
|
dockClose: quickActions.dockClose,
|
|
7550
8036
|
dockDiscard: quickActions.dockDiscard,
|
|
7551
8037
|
dockShow: quickActions.dockShow,
|
|
8038
|
+
// 0.14.0「优化选项」卡片:面板直接写设置字段(与设置页同一个写入路径)。
|
|
8039
|
+
setField,
|
|
7552
8040
|
dockEdit: quickActions.dockEdit,
|
|
7553
8041
|
setTier: quickActions.setTier,
|
|
7554
8042
|
setInsertMode: quickActions.setInsertMode,
|