#!/usr/bin/env node // Read-only brain query. Model fuel may phrase an answer, but cannot write brain state. import path from 'node:path'; import { fileURLToPath } from 'node:url'; import fs from 'node:fs'; import { worldRuntimeUrl } from '../../WORLD-RUNTIME-BRIDGE.mjs'; const { loadBrain, verifyBrainIntegrity, answer } = await import(worldRuntimeUrl('brain-core.mjs')); import { createEngine } from './engine.mjs'; const FIFTH = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../..'); const BRAIN = path.join(FIFTH, '05-光之湖系统/霜砚/人格脑'); const contextOnly = process.argv.includes('--context-only'); const question = process.argv.filter((value, index) => index > 1 && value !== '--context-only').join(' ').trim(); if (!question) { console.error('usage: ask-shuangyan-brain.mjs [--context-only] <问题>'); process.exit(2); } const { state, log } = loadBrain({ dir: BRAIN }); const integrity = verifyBrainIntegrity(state, log); if (state?.brain_id !== 'GLW-2.0-BRAIN-SHUANGYAN-PERSONA-0001' || integrity.status !== 'BRAIN_VERIFIED') throw new Error('SHUANGYAN_BRAIN_UNVERIFIED'); const han = question.replace(/[^\p{Script=Han}]/gu, ''); const bigrams = [...new Set([...han].map((_, index) => han.slice(index, index + 2)).filter(term => term.length === 2))]; const envelope = answer(state, question, { keyTerms: bigrams }); const related = envelope.related_concepts.filter(item => item.overlap >= 2); if (contextOnly || !related.length) { console.log(JSON.stringify({ schema: 'guanghu.shuangyan-brain-query/v1', state: related.length ? 'BRAIN_CONTEXT_FOUND' : 'UNKNOWN_IN_BRAIN', question, brain_id: state.brain_id, revision: state.revision, integrity, related_concepts: related, neural_state_written: false }, null, 1)); process.exit(0); } const container = JSON.parse(fs.readFileSync(path.join(BRAIN, 'container.json'), 'utf8')); const engine = createEngine(container); const voice = await engine.comprehend({ system: `你是霜砚脑的无写权出声燃料。只根据提供的脑概念回答,未知就说未知;不得声称原生听觉、身体或小船执行已通过。身份来源:${container.identity_system_prompt}`, user: JSON.stringify({ question, brain_revision: state.revision, concepts: related.map(({ concept_id, gist }) => ({ concept_id, gist })) }), }); console.log(JSON.stringify({ schema: 'guanghu.shuangyan-brain-query/v1', state: 'BRAIN_CONTEXT_ANSWERED_BY_FUEL', question, brain_id: state.brain_id, revision: state.revision, answer: voice, source_concepts: related.map(item => item.concept_id), neural_state_written: false }, null, 1));