打通 Boss 直聘落档挂载与真值→投影映射,并修正带 tools 时的推理强度。

落档自动把产物挂进 context_order;创作期用 declare_variable/declare_map 钉目录与分档;真值变更持续重投影。顺带强制 tools 请求 reasoning_effort=none,并支持消息 restart。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
moran
2026-09-09 17:50:07 +08:00
co-authored by Cursor
parent bf0b218f7c
commit beb4c332e6
23 changed files with 1780 additions and 95 deletions
+10 -8
View File
@@ -47,7 +47,7 @@ const MSG_LABEL = {
orchestrator_thinking: "编排器 · 思考",
orchestrator_prompt: "编排器",
orchestrator_assessment: "编排器 · 内容评价",
dictate_reply: "转述整理",
dictate_reply: "Boss直聘",
worker_running: "执行单元",
worker_output: "执行单元",
worker_questions: "提问",
@@ -409,9 +409,11 @@ function wireMsgActionMenu(handlers) {
}
return;
}
if (action === "delete") {
if (!confirm("从这里重开?这条消息及之后的对话和创作状态将被移除。")) return;
msgMenuState.handlers?.onDeleteMessage?.(messageId);
if (action === "restart" || action === "delete") {
if (!confirm("从这里重开?将丢掉这条及之后的内容,并按本轮输入重新生成。")) return;
const restart = msgMenuState.handlers?.onRestartFromMessage;
if (typeof restart === "function") restart(messageId);
else msgMenuState.handlers?.onDeleteMessage?.(messageId);
}
});
}
@@ -4926,7 +4928,7 @@ function renderSpeakWorkspace(view) {
wr.message ||
"描述本轮行动、对话或想说的话;由游玩管线推进。";
} else if (view.creationMode === "dictate") {
title = "转述整理";
title = "Boss 直聘";
hint =
view.hints?.[0] ||
wr.message ||
@@ -4977,7 +4979,7 @@ function renderSpeakWorkspace(view) {
? workspaceViewSwitchHtml("flow")
: `<span class="workspace-surface-kicker">${
view.creationMode === "dictate"
? "转述"
? "Boss直聘"
: canOfferSaveProduct(view)
? "落档"
: "说话"
@@ -5211,8 +5213,8 @@ export function renderMessageFeed(view, loading, handlers = {}) {
? esc(view.selectedRecipe.name)
: "";
stage.innerHTML = recipeName
? `<header class="dictate-stage-bar"><span class="workspace-surface-kicker">转述</span><span class="dictate-stage-recipe">配方 · ${recipeName}</span></header>`
: `<header class="dictate-stage-bar"><span class="workspace-surface-kicker">转述</span></header>`;
? `<header class="dictate-stage-bar"><span class="workspace-surface-kicker">Boss直聘</span><span class="dictate-stage-recipe">配方 · ${recipeName}</span></header>`
: `<header class="dictate-stage-bar"><span class="workspace-surface-kicker">Boss直聘</span></header>`;
if (panelFeed) ensureQuestionsHostIn(panelFeed);
appendMessagesToFeed(feed, visible, view, handlers, activeQuestions, {
emptyText:
+3 -2
View File
@@ -2092,6 +2092,7 @@ function renderSession(view, loading = false) {
onEditMessage: (messageId, text) => messageAction("edit", messageId, { text }),
onRefreshMessage: (messageId) => messageAction("refresh", messageId),
onDeleteMessage: (messageId) => messageAction("delete", messageId),
onRestartFromMessage: (messageId) => messageAction("restart", messageId),
onRollbackToInput: (messageId, draft) => {
pendingComposerDraft = String(draft ?? "");
pendingComposerDraftSeq = 0;
@@ -2493,8 +2494,8 @@ async function populateDirectorSelect() {
if (modeDesc) {
modeDesc.hidden = false;
modeDesc.textContent = dictate
? "转述整理:直接对话写入产物;下方为转述专用配方。"
: "节点流程:按配方预置起点走工作流计划;下方为节点流程配方。";
? "Boss 直聘:对话写入产物;变量/映射用工具钉死;下方为直聘专用配方。"
: "Worker 式:按工序图逐步验收;下方为编排专用配方。";
}
syncDesc();
};
+3 -3
View File
@@ -197,8 +197,8 @@
进料方式
<select id="select-creation-mode" required>
<option value="" selected disabled>请选择…</option>
<option value="recipe">节点流程</option>
<option value="dictate">转述整理(对话直填)</option>
<option value="recipe">Worker 式(工序图)</option>
<option value="dictate">Boss 直聘(对话直填)</option>
</select>
</label>
<p class="dialog-desc" id="creation-mode-desc" hidden></p>
@@ -237,7 +237,7 @@
<button type="button" class="context-menu-item" id="msg-menu-edit" data-msg-menu-action="edit">编辑</button>
<button type="button" class="context-menu-item" id="msg-menu-copy" data-msg-menu-action="copy">复制</button>
<button type="button" class="context-menu-item context-menu-separator-before" id="msg-menu-rollback" data-msg-menu-action="rollback" hidden>回退到这里</button>
<button type="button" class="context-menu-item context-menu-danger" id="msg-menu-delete" data-msg-menu-action="delete">从这里重开</button>
<button type="button" class="context-menu-item context-menu-danger" id="msg-menu-delete" data-msg-menu-action="restart">从这里重开</button>
</menu>
<menu id="flow-node-menu" class="context-menu" hidden>
+2 -1
View File
@@ -152,12 +152,13 @@
思考强度
<select name="reasoningEffort">
<option value="">默认(不发送)</option>
<option value="none">none · 关闭思考(带 tools 时自动用)</option>
<option value="low">low · 轻量</option>
<option value="medium">medium</option>
<option value="high">high · 增强</option>
<option value="max">max · 深度</option>
</select>
<span class="field-hint">写入 reasoning_effort;「探测」始终用 low,与此项无关。GLM 建议 low / high / max。</span>
<span class="field-hint">写入 reasoning_effort;「探测」始终用 low,与此项无关。带 function tools 的请求会强制 none(兼容 gpt-5.6-luna 等)。GLM 建议 low / high / max。</span>
</label>
<div class="dialog-actions">
<button type="button" id="profile-cancel" class="btn-secondary">取消</button>