guanghu-ice-heart/05-光之湖系统/铸渊/人格脑/knock.mjs

69 lines
6.3 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/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));