在执行任何数据修改操作前,必须执行以下流程。
当用户提出以下类型的需求时强制触发:
用两条原则确认:
如果用户没有明确说"全改",默认全改。但先确认。
使用Node.js脚本或grep搜索所有出现该数据的地方:
const fs = require('fs');
function scan(dir, pattern, callback) {
const items = fs.readdirSync(dir);
items.forEach(item => {
const fp = dir + '/' + item;
try {
const stat = fs.statSync(fp);
if (stat.isDirectory()) {
// 跳过 node_modules, .git, .openclaw 等
if (!item.startsWith('.') && item !== 'node_modules') scan(fp, pattern, callback);
} else if (/\.(md|html|js|py|json|yaml|yml|txt|docx?|xlsx?)$/i.test(item)) {
if (!/\.(xlsx?|docx)$/i.test(item)) {
const c = fs.readFileSync(fp, 'utf8');
let idx = -1;
while ((idx = c.indexOf(pattern, idx + 1)) !== -1) {
callback(fp, idx, c.substring(Math.max(0, idx-20), idx + pattern.length + 30));
}
}
}
} catch(e) {}
});
}
scan('WORKSPACE_PATH', 'TARGET_DATA', (f, i, ctx) => {
console.log(f.replace('WORKSPACE_PATH', ''), '@', i, ':', ctx);
});
搜索范围必须包括:
memory/ 目录所有日常记录培训课程/ 目录所有HTML和MD02_projects/ 目录所有文档reports/ 目录当涉及公司公开数据(名称、数量、排名、评级等),必须比对以下平台确认最新性:
| 平台 | 用途 | 典型URL |
|---|---|---|
| ------ | ------ | --------- |
| 公司官网 | 最权威 | taikangzhijia.com, taikang.com |
| 百度百科 | 基础查询 | baike.baidu.com |
| 权威新闻 | 事件时间 | 新华网/36氪/新浪财经 |
时间线规则:
不要只改一个地方。用全局替换脚本一次性改所有文件:
const fs = require('fs');
function replaceAll(dir, oldStr, newStr) {
let count = 0;
const items = fs.readdirSync(dir);
items.forEach(item => {
const fp = dir + '/' + item;
try {
const stat = fs.statSync(fp);
if (stat.isDirectory()) {
if (!item.startsWith('.') && item !== 'node_modules') count += replaceAll(fp, oldStr, newStr);
} else if (/\.(md|html|js|txt|json|yaml)$/i.test(item)) {
const c = fs.readFileSync(fp, 'utf8');
const nc = c.split(oldStr).join(newStr);
if (nc !== c) { fs.writeFileSync(fp, nc); count++; }
}
} catch(e) {}
return count;
});
}
修正后再次搜索旧数据关键词,确认结果为零:
const count = fs.readdirSync(workspace, {recursive:true})
.filter(f => /\.(md|html|js|txt)$/i.test(f))
.reduce((sum, f) => {
const c = fs.readFileSync(f, 'utf8');
return sum + (c.split('OLD_PATTERN').length - 1);
}, 0);
console.log('残留数量:', count);
将修改记录写入当天的 memory/YYYY-MM-DD.md:
# 清理以 _ 开头的零时Node.js/Python脚本
Remove-Item *_*.js, *_*.py
| 错误 | 后果 | 正确做法 |
|---|---|---|
| ------ | ------ | --------- |
| 只改了用户指出的文件 | 其他文件残留旧数据 | 全库扫描后再改 |
| 信官网不信用户 | 覆盖了用户确认的数据 | 用户确认 > 官网数据 |
| 改了但没验证 | 不知道还有没残留 | 改完立刻验证 |
| 改了数据没改标签/徽章 | 标签显示旧数据 | 文字+标签+徽章全部检查 |
| DOCX/PDF只生成了标题 | 内容丢失 | 生成后验证正文段落数 |
scripts/scan_and_replace.js - 全库搜索+替换一体化工具。用法:
node scripts/scan_and_replace.js OLD_STRING NEW_STRING
共 1 个版本