bookworm-smart-assistant/scripts/patches/patch-r1-batch-checkpoint-rule.js

42 lines
1.6 KiB
JavaScript
Raw Permalink Normal View History

#!/usr/bin/env node
/**
* patch-r1-batch-checkpoint-rule.js · 2026-04-26
*
* R1: 批量任务切片 + 增量 checkpoint 规则注入 CLAUDE.md §上下文管理
* 触发场景: >5 个独立子项的 Write/Edit/Bash 批量操作
* 收益: context 增长从 O(N) 降到 O(N/3), 中断可从 .bookworm-progress.md 恢复
*
* 幂等: sentinel "批量任务切片"
*/
'use strict';
const fs = require('fs');
const path = require('path');
const TARGET = path.join(__dirname, '..', '..', 'CLAUDE.md');
const SENTINEL = '批量任务切片';
const OLD_LINE = '- Compact at 60% context usage, do not wait until critical';
const NEW_LINES = `- Compact at 60% context usage, do not wait until critical
- **批量任务切片**>5 个独立子项的 Write/Edit/Bash 操作 3 项为一批每批结束后 (a) 追加进度到 \`<cwd>/.bookworm-progress.md\` (格式 \`YYYY-MM-DDTHH:mm | batch N/M | desc\`)(b) 仅回复一行 \`[batch N/M ✓ desc]\`,不复述生成内容;中断后从 progress 文件恢复`;
function main() {
const src = fs.readFileSync(TARGET, 'utf8');
if (src.includes(SENTINEL)) {
console.log('[r1] already applied, skip');
return;
}
if (!src.includes(OLD_LINE)) {
console.error('[r1] anchor line not found, manual review needed');
process.exit(1);
}
const next = src.replace(OLD_LINE, NEW_LINES);
const bak = TARGET + '.bak.r1.' + Date.now();
fs.copyFileSync(TARGET, bak);
const tmp = TARGET + '.tmp.' + process.pid;
fs.writeFileSync(tmp, next, 'utf8');
fs.renameSync(tmp, TARGET);
console.log('[r1] OK, bak:', path.basename(bak));
}
main();