mirror of
https://github.com/Wx-2025/ST-Amily2-Chat-Optimisation.git
synced 2026-06-19 21:35:49 +00:00
release: v2.2.7 [2026-06-14 17:27:47]
### 修复 - **分步填表 · 保留楼层场景下 swipe 最新楼会回退掉已填内容**:开启「保留楼层(bufferSize)」后,分步填表处理的是较早楼层、状态本应绑定到「被填楼层里最后一条」(E)。但 `updateTableFromText` / `updateTableFromOps` 在应用完操作后会**统一把表格状态写到聊天最新楼 L**,覆盖了随后 `markTargetsProcessed` 写到 E 的快照(`loadTables` 从尾部回溯先命中 L)。结果状态实际落在 L 上,**滑动/重新生成最新楼时 `rollbackState` 回退到上一轮快照,把本轮填入的内容一起丢掉、且因较早楼层的 hash 仍在而不再重填**。 - 修复:给 `updateTableFromText` / `updateTableFromOps` 增加 `skipPersist` 选项;分步填表(文本 / Function Call / 手动应用三条 commit 路径)统一传入,跳过"写最新楼",改由 `markTargetsProcessed` 把状态保存到 E。 - `bufferSize=0`(默认)时 E 即最新楼,行为与旧版一致;仅 `bufferSize>0` 的保留楼层场景受影响并被修复。 ---
This commit is contained in:
@@ -62,7 +62,9 @@ async function markTargetsProcessed(targetMessages, { skipTableSave = false } =
|
||||
}
|
||||
|
||||
async function commitSecondaryFillResult(rawContent, targetMessages) {
|
||||
await updateTableFromText(rawContent);
|
||||
// skipPersist:不让 updateTableFromText 把状态写到最新楼 L,改由 markTargetsProcessed
|
||||
// 存到 lastProcessedMsg(E)——否则保留楼层场景下 swipe 最新楼会回退掉本轮已填内容。
|
||||
await updateTableFromText(rawContent, { skipPersist: true });
|
||||
await markTargetsProcessed(targetMessages);
|
||||
}
|
||||
|
||||
@@ -392,7 +394,8 @@ export async function fillWithSecondaryApi(latestMessage, forceRun = false, opts
|
||||
toastr.info('AI 判断此范围无需修改。', 'Amily2-分步填表');
|
||||
await markTargetsProcessed(targetMessages, { skipTableSave: true });
|
||||
} else {
|
||||
await updateTableFromOps(ops);
|
||||
// skipPersist:状态由 markTargetsProcessed 存到 E,不写最新楼(同文本路径)
|
||||
await updateTableFromOps(ops, { skipPersist: true });
|
||||
await markTargetsProcessed(targetMessages);
|
||||
toastr.success('分步填表(Function Call)执行完毕。', 'Amily2-分步填表');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user