今天 · 15:41
会话绑定的 runner 换过之后记忆串了。把引擎锁扩到所有已绑原生会话——换引擎就当成新记忆,
检测到不一致时强制回正,并在会话头给用户一条看得见的提示。
过程
4 步 · 1m 12s
✓Readservices/orchestrator/server.mjs
842 lines · runner 绑定逻辑在 L318–L377
✓Bashrg "runner_locked" apps/web services
6 matches in 2 files
✗Bashnpm run cc:test:runner-default
FAIL adopt-native: 已绑原生会话换引擎后仍复用旧记忆
1 failing · 12 passing
exit code 1
services/orchestrator/server.mjs
+19
−6
341−
if (session.adopted_native) return session.runner;
341+
const locked = session.runner_locked ?? session.runner;
342+
if (requested && requested !== locked) {
343+
return { runner: locked, notice: "engine_locked" };
344344
}
✓Bashnpm run cc:test:runner-default
13 passing (2.1s)
›Ran 4 commands · Edited 2 files
引擎锁已经从「新建会话」扩到所有已绑原生会话。现在一条会话只认它第一次绑定的 runner:
- 请求里带的 runner 与锁定值不符时,服务端不再切换,而是回正到锁定值并带上
notice: "engine_locked"; - 前端会话头收到该 notice 时渲染一条常驻提示:已锁定 claude-code,换引擎会开新记忆;
- 确需换引擎的走「新建会话」,旧会话记忆保持完整、不被污染。
回归里补了一条用例,覆盖「已绑会话 + 异引擎请求」这条之前漏掉的路径。
Changed files
M
services/orchestrator/server.mjs
+19 −6
M
apps/web/index.html
+42 −11
A
scripts/cc-test-runner-default.mjs
+133
PASS 13/13
cc:verify 绿 · 未部署,等你验收
run_4f8a · 1m 12s
给 dev-agent 派下一步…
@ 上下文 3
引擎 claude-code
分支 session/sess_39f7
引擎已锁定 claude-code — 换引擎需新建会话,当前会话记忆不受影响。