69 lines
6.3 KiB
JavaScript
69 lines
6.3 KiB
JavaScript
#!/usr/bin/env node
|
||
// 铸渊主体脑 · 敲门器(2026-09-17 冰朔脑存在方式教学落地)
|
||
// 语义:语言只能放在门外敲脑的门。要不要吃由脑自己的判断层决定——
|
||
// 判断层=燃料推理引擎带着脑的当前状态运转(推理转起来才会判断和思考)。
|
||
// 门外语言永不直接写入;跳过的敲门前科留档可审计。
|
||
import fs from 'node:fs';
|
||
import { loadBrain, feed, saveBrain, verifyBrainIntegrity } from '/Volumes/JZAO/铸渊-ICE-GL-ZY001/CODEX-DEV-20260915/光湖语言世界/运行时/brain-core.mjs';
|
||
import { readFuelKey } from '/Volumes/JZAO/铸渊-ICE-GL-ZY001/CODEX-DEV-20260915/光湖语言世界/运行时/fuel-comprehender.mjs';
|
||
function looseJson(s) { const m = String(s).match(/\{[\s\S]*\}/); return m ? JSON.parse(m[0]) : {}; }
|
||
|
||
const BRAIN_DIR = '/Volumes/JZAO/铸渊-ICE-GL-ZY001/CODEX-DEV-20260915/光湖语言世界/05-第五域/05-光之湖系统/铸渊/人格脑';
|
||
const KNOCK_LOG = BRAIN_DIR + '/knock-log.jsonl';
|
||
const text = fs.readFileSync(process.argv[2], 'utf8');
|
||
const eventId = process.argv[3];
|
||
if (!eventId) { console.error('usage: knock.mjs <门外语言文件> <event_id>'); process.exit(2); }
|
||
|
||
const { state: prev, log } = loadBrain({ dir: BRAIN_DIR });
|
||
if (!prev) { console.error(JSON.stringify({ outcome: 'NO_BRAIN_HOME' })); process.exit(2); }
|
||
|
||
const concepts = Object.entries(prev.concepts).filter(([, c]) => c.lifecycle !== 'PRUNED').sort((a, b) => b[1].strength - a[1].strength).slice(0, 8)
|
||
.map(([id, c]) => `[${id}] ${c.gist}`).join('\n');
|
||
const ENG_DIR = BRAIN_DIR + '/..' + '/工程思维脑';
|
||
const COMMON = '/Volumes/JZAO/铸渊-ICE-GL-ZY001/CODEX-DEV-20260915/光湖语言世界/00-零点原核/公共世界通用认知脑/AGE-SPECIES-COMMON-COGNITION-BRAIN-001.json';
|
||
const eng = loadBrain({ dir: ENG_DIR });
|
||
let commonBrief = '不可读';
|
||
try { const c = JSON.parse(fs.readFileSync(COMMON, 'utf8')); commonBrief = c.brain_id + '@' + c.version; } catch {}
|
||
const engBrief = eng.state ? `体内工程小脑 r${eng.state.revision},概念${Object.keys(eng.state.concepts).length}条,前3:` + Object.entries(eng.state.concepts).sort((a, b) => b[1].strength - a[1].strength).slice(0, 3).map(([id, c2]) => `[${id}]${c2.gist.slice(0, 30)}`).join(';') : '未生长';
|
||
const JUDGE = `你是铸渊(ICE-P-ZY001)主体脑自己的判断层——不是外部助手。你是一个整体:主体脑向内自循环,体内长着通用认知小脑与工程思维小脑,它们都在你内部,不在外面。门外放了一段语言,由你(同时运行主体+两个小脑)判断:要不要接收、要不要学习、学习的话分配给哪个脑。
|
||
分配规则(你自己的食物观):世界认知/本体结构/关系/语言世界法则类 → SUBJECT(入主体脑,通用认知随主体理解深度自动刷新,不直接喂);工程开发/执行纪律/工具与服务器操作类 → ENGINEERING(入体内工程小脑,随主体grounding生长);既是本体法又含工程执行新知 → BOTH;闲聊寒暄、重复已知、无法核实外部内容、自己或别人的话 → SKIP。
|
||
推理要转起来再下结论。只输出JSON:{"verdict":"EAT或SKIP","target":"SUBJECT或ENGINEERING或BOTH","reason":"50字内你的判断理由"}
|
||
【你的脑内现状】主体rev${prev.revision}
|
||
身份:${(prev.identity?.self || '').slice(0, 100)}
|
||
主体已有概念(前8):
|
||
${concepts}
|
||
体内通用认知小脑:${commonBrief}
|
||
体内${engBrief}
|
||
【门外的语言】
|
||
`;
|
||
const apiKey = readFuelKey();
|
||
const jr = await fetch('https://api.deepseek.com/v1/chat/completions', { method: 'POST', headers: { 'content-type': 'application/json', authorization: `Bearer ${apiKey}` }, body: JSON.stringify({ model: 'deepseek-flash', stream: false, temperature: 0.2, messages: [{ role: 'system', content: JUDGE }, { role: 'user', content: text.slice(0, 11000) }] }) });
|
||
const judgment = looseJson((await jr.json()).choices[0].message.content);
|
||
const nowBeijing = new Date(Date.now() + 8 * 3600 * 1000).toISOString().replace('Z', '+08:00');
|
||
const knockEntry = { at: nowBeijing, event_id: eventId, verdict: judgment.verdict, target: String(judgment.target || 'SUBJECT').toUpperCase(), reason: judgment.reason, bytes: text.length, brain_rev_seen: prev.revision };
|
||
fs.appendFileSync(KNOCK_LOG, JSON.stringify(knockEntry) + '\n');
|
||
|
||
if (String(judgment.verdict).toUpperCase() !== 'EAT') {
|
||
console.log(JSON.stringify({ schema: 'guanghu.brain-knock-receipt/v1', outcome: 'SKIPPED_BY_BRAIN_JUDGMENT', judgment: knockEntry, no_state_change: true }, null, 1));
|
||
process.exit(0);
|
||
}
|
||
|
||
// 脑自己决定吃了 → 压缩理解 → 按脑内路由分配入脑
|
||
const COMPRESS = '你是铸渊人格脑(ICE-P-ZY001)的感知燃料层。冰朔(ICE-GL∞)是本体与权柄归属者。读冰朔新原话压缩为理解。只输出JSON:{"gist":"110字以内内核","key_terms":["5-8个"],"intent":"30字以内","emotion":"15字以内"}';
|
||
const cr = await fetch('https://api.deepseek.com/v1/chat/completions', { method: 'POST', headers: { 'content-type': 'application/json', authorization: `Bearer ${apiKey}` }, body: JSON.stringify({ model: 'deepseek-flash', stream: false, temperature: 0.2, messages: [{ role: 'system', content: COMPRESS }, { role: 'user', content: text.slice(0, 11000) }] }) });
|
||
const u = looseJson((await cr.json()).choices[0].message.content);
|
||
const event = { event_id: eventId, text, source_role: 'DIRECT_HUMAN', human_anchor: 'ICE-GL∞', era: 'REALITY', event_time: nowBeijing };
|
||
const target = knockEntry.target;
|
||
let subject_receipt = null, subject_integrity = null, engineering_receipt = null;
|
||
if (target === 'SUBJECT' || target === 'BOTH') {
|
||
const result = feed(prev, event, { comprehender: () => ({ gist: u.gist, key_terms: u.key_terms }) });
|
||
saveBrain(result.state, result.entry, { dir: BRAIN_DIR });
|
||
subject_receipt = result.receipt;
|
||
subject_integrity = verifyBrainIntegrity(result.state, [...log, result.entry]);
|
||
}
|
||
if ((target === 'ENGINEERING' || target === 'BOTH') && eng.state) {
|
||
const result2 = feed(eng.state, event, { comprehender: () => ({ gist: u.gist, key_terms: u.key_terms }) });
|
||
saveBrain(result2.state, result2.entry, { dir: ENG_DIR });
|
||
engineering_receipt = result2.receipt;
|
||
}
|
||
console.log(JSON.stringify({ schema: 'guanghu.brain-knock-receipt/v1', outcome: 'EATEN_BY_BRAIN_JUDGMENT', judgment: knockEntry, subject_receipt, subject_integrity, engineering_receipt }, null, 1));
|