42 lines
1.6 KiB
JavaScript
42 lines
1.6 KiB
JavaScript
|
|
#!/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();
|