Archived
fix(loop-engine): auto 收步补两处 —— 真测 carded 门 + 半 auto 不抢模型的活
评审 Important:「卡还没发过就不收」那条用例其实没走到 carded 门(命中的是 Task 7 既有的发卡分支),换一条真正让 card 被 when 挡掉、只有别的笔照写的用例才让执行落进 carded 门;原用例改名留作 Task 7 那条路径的回归,逻辑不动。 R9(基于评审 Minor #1 的裁定):收步条件加一项 guide 为空 —— 半 auto(声明了非空 guide)的步,人答过卡之后那份判断仍是模型的活,不该被这段抢在模型前面收掉。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LKMZDwMbyKzjw6Hembwvet
This commit is contained in:
@@ -2021,10 +2021,15 @@ export function createTurnRunner(deps: TurnRunnerDeps): LoopEngineService {
|
||||
* 这一步声明了 auto、卡发过(worldTouched)、这一拍没有未答的卡(前面 unanswered 把住)、
|
||||
* 配方这一拍也没再发新卡。**人已经签了字,收步是照实记录,不是替人签字** ——
|
||||
* 「人工激活项不给 doneWhen」那条纪律防的是引擎抢在人前面,这里人在前面。
|
||||
*
|
||||
* **半 auto(声明了非空 `guide`)的步不走这条近道**(R9,评审 Minor #1 逼出来的裁定):
|
||||
* 半 auto 存在的意义就是「确定的先做完,剩下的判断仍问模型」—— 人答完卡之后那份判断
|
||||
* (读人写的自由文本、落到具体的行上)恰恰是模型该干的活。收在它前面,等于把半 auto
|
||||
* 的后半截整个删掉。当前没有活动踩到这个组合,但机制不该埋这个坑。
|
||||
*/
|
||||
const noDoneWhen = current.doneWhen === undefined || current.doneWhen.trim() === '';
|
||||
const carded = stateRuntime.items.find((i) => i.id === current.item)?.worldTouched === true;
|
||||
if (noDoneWhen && carded && recipeIssuesCard(current.auto)) {
|
||||
if (noDoneWhen && carded && recipeIssuesCard(current.auto) && current.guide.trim() === '') {
|
||||
const active = readyToWork(parsed, stateRuntime, current.item);
|
||||
const settled = transitionItem(active, current.item, 'Completed');
|
||||
await deps.memory.append({
|
||||
|
||||
Reference in New Issue
Block a user