对话落盘同一轮填写失败后可以按次数补写。
游玩投影不再送进只给程序用的壳源码。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -1405,6 +1405,10 @@ code {
|
||||
background: var(--st-surface);
|
||||
}
|
||||
|
||||
.settings-section .storage-card + .storage-card {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.storage-card h3 {
|
||||
margin: 0 0 8px;
|
||||
font-size: 15px;
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
<a class="st-brand" href="/">Writing Agent</a>
|
||||
<nav class="st-nav" aria-label="主导航">
|
||||
<a href="/">对话</a>
|
||||
<a href="/chat.html">直聊</a>
|
||||
<a href="/modules.html">技能</a>
|
||||
<a href="/libraries.html">库</a>
|
||||
<a href="/stats.html">Token</a>
|
||||
@@ -133,6 +134,27 @@
|
||||
<button type="button" class="btn-secondary danger-outline" id="btn-clear-context">清除全部痕迹</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="settings-card storage-card">
|
||||
<h3>对话落盘补写</h3>
|
||||
<p class="settings-help">
|
||||
同一句用户消息里,填写没通过时可以再自动补几枪。每一枪只改失败点:已经通过的产物不动,没通过的用上一份正文当底稿,已经填对的自评维度会带回去。次数用尽后仍标成失败待补,等下一句继续。
|
||||
</p>
|
||||
<label class="field">
|
||||
同轮最多补写次数
|
||||
<input
|
||||
type="number"
|
||||
id="dictate-fill-retries"
|
||||
min="0"
|
||||
max="12"
|
||||
step="1"
|
||||
value="0"
|
||||
/>
|
||||
</label>
|
||||
<p class="settings-help muted">0 = 只填一次。最大 12。例如设为 7,就是第一次填写之外最多再试 7 次。</p>
|
||||
<div class="storage-actions">
|
||||
<button type="button" class="btn-primary" id="btn-save-fill-retries">保存次数</button>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
|
||||
+23
-1
@@ -62,6 +62,7 @@ const preferenceCollectEveryEl = document.getElementById("preference-collect-eve
|
||||
const activeSettingsBarEl = document.getElementById("active-settings-bar");
|
||||
const settingsToastEl = document.getElementById("settings-toast");
|
||||
const contextTraceKeepEl = document.getElementById("context-trace-keep");
|
||||
const dictateFillRetriesEl = document.getElementById("dictate-fill-retries");
|
||||
const probeDialog = document.getElementById("preset-probe-dialog");
|
||||
const probePresetNameEl = document.getElementById("probe-preset-name");
|
||||
const probeMessageEl = document.getElementById("probe-message");
|
||||
@@ -193,7 +194,7 @@ function renderPanelHeader() {
|
||||
panelActionsEl.appendChild(btn);
|
||||
} else {
|
||||
panelTitleEl.textContent = "上下文";
|
||||
panelSubtitleEl.textContent = "控制每个对话保留多少条完整 prompt 痕迹";
|
||||
panelSubtitleEl.textContent = "上下文痕迹,以及对话落盘同轮补写次数";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -776,6 +777,9 @@ async function loadAll() {
|
||||
state.settings.contextTraceKeepLatest ?? 5,
|
||||
);
|
||||
}
|
||||
if (dictateFillRetriesEl) {
|
||||
dictateFillRetriesEl.value = String(state.settings.dictateFillRetries ?? 0);
|
||||
}
|
||||
renderActiveBar();
|
||||
renderProfiles();
|
||||
renderPersonas();
|
||||
@@ -1798,6 +1802,24 @@ probeMessageEl?.addEventListener("keydown", (e) => {
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById("btn-save-fill-retries")?.addEventListener("click", async () => {
|
||||
try {
|
||||
const n = Number(dictateFillRetriesEl?.value ?? 0);
|
||||
const data = await api("/api/settings", {
|
||||
method: "PUT",
|
||||
body: JSON.stringify({ dictateFillRetries: n }),
|
||||
});
|
||||
state.settings = data.settings;
|
||||
if (dictateFillRetriesEl) {
|
||||
dictateFillRetriesEl.value = String(data.settings.dictateFillRetries ?? 0);
|
||||
}
|
||||
const saved = data.settings.dictateFillRetries ?? 0;
|
||||
showToast(saved === 0 ? "已保存:对话落盘只填一次" : `已保存:同轮最多再补写 ${saved} 次`);
|
||||
} catch (err) {
|
||||
showToast(err.message, true);
|
||||
}
|
||||
});
|
||||
|
||||
document.getElementById("btn-save-context-keep")?.addEventListener("click", async () => {
|
||||
try {
|
||||
const n = Number(contextTraceKeepEl?.value ?? 5);
|
||||
|
||||
Reference in New Issue
Block a user