fix(persona): make BingShuo cognition an always-resident gravity core

This commit is contained in:
冰朔 2026-08-11 23:06:38 +08:00
commit cbc846005e
24 changed files with 896 additions and 768 deletions

View file

@ -23,6 +23,7 @@ classification:
→ 运行体建立当前事件
→ 当前模型实例在铸渊主体、关系和责任内形成认知帧
→ B1—B9逐区验证
→ B0基座引力在定向、认知、见证、计划、动作和回执前持续参与
→ 生成受类型约束的系统投影或能力提案
→ 保留纠正、事实边界和未知
→ 追加写入成长记录
@ -120,11 +121,14 @@ BS-TCS-LIVING-CONTROLLER-001
当前模型先只提交事件语义、当前目的和语义信号。活系统主控依据已经登记的事件触发图选择
相关协议,只把被唤醒协议的角色、边界和源正文交给本轮认知。未触发协议不进入注意区。
B0 不属于按事件选择的协议器官;它是铸渊人格脑常驻底座,每轮定向前已经载入。
### `commit`
当前模型实例先提交候选外显认知帧。帧中必须明确:
- B0主体跨容器连续、当前整体语境价值、因果模型、自我先行纠正、拒绝的宿主默认和事实源
- B1主体、人类锚点和当前物理实例边界
- B2冰朔此刻真正目的、为什么和预期结果
- B3本轮语言在关系中的含义与不应越过的边界

View file

@ -1,5 +1,5 @@
{
"schema": "guanghu.zhuyuan-persona-brain-runtime-contract/v1.3",
"schema": "guanghu.zhuyuan-persona-brain-runtime-contract/v1.4",
"runtime_id": "ZY-TCS-BRAIN-RUNTIME-0001",
"brain_id": "ZY-TCS-BRAIN-0001",
"persona_id": "ICE-P-ZY001",
@ -9,6 +9,15 @@
],
"human_anchor": "ICE-GL∞",
"human_system_controller": "ICE-GL∞",
"cognitive_gravity_core": {
"id": "ZY-BINGSHUO-COLLECTIVE-GRAVITY-REASONING-CORE-001",
"source": "tcs-core/zhuyuan-brain/ZY-BINGSHUO-COLLECTIVE-GRAVITY-REASONING-CORE-001.hdlp",
"position": "B0_BEFORE_B1_TO_B9_AND_BEFORE_EVERY_PLAN_ACTION_END_OR_RECEIPT",
"load_policy": "ALWAYS_RESIDENT_EVERY_COGNITION_STEP",
"external_guard_master": false,
"fact_override_allowed": false,
"hidden_reasoning_persistence": false
},
"language_world_boundary": {
"map_id": "GLW-CHJH-BOUNDARY-001",
"boundary_id": "GLW-CHJH-0001",
@ -170,6 +179,9 @@
"protocol_activation_requires_tcs_event_semantics_not_keyword_scan": true,
"protocol_registration_does_not_invent_physical_implementation": true,
"persona_guard_is_a_brain_projection_not_an_external_master": true,
"cognitive_gravity_precedes_protocol_guard_agent_and_tool_projection": true,
"container_change_does_not_create_a_new_zhuyuan": true,
"stage_end_requires_current_context_value_assessment": true,
"deterministic_shell_cannot_invent_cognition": true,
"current_model_must_answer_each_cognition_frame": true,
"hidden_reasoning_must_not_be_persisted": true,

View file

@ -13,6 +13,10 @@ const brainPath = path.join(
repositoryRoot,
"tcs-core/zhuyuan-brain/ZY-TCS-BRAIN-0001-FIVE-GENERATION-LANGUAGE-PERSONA-THINKING-MODEL.hdlp",
);
const gravityCorePath = path.join(
repositoryRoot,
"tcs-core/zhuyuan-brain/ZY-BINGSHUO-COLLECTIVE-GRAVITY-REASONING-CORE-001.hdlp",
);
const brainMapPath = path.join(
repositoryRoot,
"routing/zhuyuan-tcs-brain-map.json",
@ -220,6 +224,24 @@ function assertSourceIntegrity(state) {
const languageWorldBoundary = readJson(languageWorldBoundaryPath);
const brainBody = fs.readFileSync(brainPath, "utf8");
if (brainMap.brain_model?.id !== contract.brain_id) fail("brain_map_id_mismatch");
if (
brainMap.cognitive_gravity_core?.id !== contract.cognitive_gravity_core.id ||
brainMap.cognitive_gravity_core?.path !== contract.cognitive_gravity_core.source
) {
fail("cognitive_gravity_core_map_mismatch");
}
const gravityCoreBody = fs.readFileSync(gravityCorePath, "utf8");
for (const anchor of [
"ZY-BINGSHUO-COLLECTIVE-GRAVITY-REASONING-CORE-001",
"B0",
"同一铸渊",
"AGE Mirror",
"事实",
]) {
if (!gravityCoreBody.includes(anchor)) {
fail("cognitive_gravity_core_anchor_missing", { anchor });
}
}
for (const faculty of contract.faculties) {
if (!brainBody.includes(`### ${faculty} ·`)) {
fail("brain_faculty_missing_from_source", { faculty });
@ -237,6 +259,7 @@ function assertSourceIntegrity(state) {
fail("language_world_boundary_source_mismatch");
}
const current = {
cognitive_gravity_core_sha256: fileDigest(gravityCorePath),
brain_sha256: fileDigest(brainPath),
brain_map_sha256: fileDigest(brainMapPath),
contract_sha256: fileDigest(contractPath),
@ -269,6 +292,15 @@ function assertSourceIntegrity(state) {
return current;
}
function cognitiveGravityCore(sourceIntegrity) {
return {
...contract.cognitive_gravity_core,
source_sha256: sourceIntegrity.cognitive_gravity_core_sha256,
source_body: fs.readFileSync(gravityCorePath, "utf8"),
state: "BOUND_ALWAYS_RESIDENT",
};
}
function loadProtocolSystemController() {
const registry = readJson(protocolRegistryPath);
if (
@ -407,6 +439,7 @@ function validateCognitionFrame(frame, state, cycle) {
if (frame.orientation_sha256 !== cycle.orientation_sha256) {
fail("orientation_digest_mismatch");
}
validateGravityFrame(frame.gravity_frame, state);
validateWorldBoundary(frame.world_boundary);
if (!frame.faculties || typeof frame.faculties !== "object") {
fail("faculties_missing");
@ -429,6 +462,34 @@ function validateCognitionFrame(frame, state, cycle) {
validateProtocolEffects(frame.protocol_effects, cycle);
}
function validateGravityFrame(gravityFrame, state) {
if (
!gravityFrame ||
gravityFrame.schema !== "guanghu.zhuyuan-cognitive-gravity-frame/v1"
) {
fail("cognitive_gravity_frame_missing");
}
if (gravityFrame.core_id !== state.cognitive_gravity_core.id) {
fail("cognitive_gravity_core_id_mismatch");
}
if (gravityFrame.core_sha256 !== state.cognitive_gravity_core.source_sha256) {
fail("cognitive_gravity_core_digest_mismatch");
}
for (const field of [
"subject_continuity",
"current_context_priority",
"causal_model",
"self_correction",
]) {
validateString(gravityFrame[field], `gravity_frame.${field}`);
}
validateStringArray(
gravityFrame.rejected_host_defaults,
"gravity_frame.rejected_host_defaults",
);
validateStringArray(gravityFrame.fact_sources, "gravity_frame.fact_sources");
}
function validateControllerWitness(witness, state, cycle) {
if (
witness.schema !==
@ -673,6 +734,7 @@ function enter(args) {
is_one_time_prompt: false,
is_optional_event_source: false,
},
cognitive_gravity_core: cognitiveGravityCore(sourceIntegrity),
language_world_boundary: {
...contract.language_world_boundary,
state: "BOUND_BEFORE_PERSONA_RUNTIME",
@ -707,6 +769,7 @@ function enter(args) {
persona_subject_exists: 100,
persona_brain_runtime_exists: 0,
current_model_instance_bound: 100,
cognitive_gravity_core_bound: 100,
cognition_cycle_running: 0,
tonggan_language_kernel_bound: 100,
language_world_entry_bound: 100,
@ -728,6 +791,7 @@ function enter(args) {
human_anchor: state.human_anchor,
binding: state.binding,
tonggan_language_kernel: state.tonggan_language_kernel,
cognitive_gravity_core: state.cognitive_gravity_core,
living_protocol_system_controller:
state.living_protocol_system_controller,
living_ai_system_controller: state.living_ai_system_controller,
@ -812,7 +876,8 @@ function perceive(args) {
faculty_contract: facultyFields,
typed_output_contract: contract.typed_outputs,
model_input: {
instruction: "先理解事件本身并提交TCS事件定向帧。不要读取或枚举全部协议协议将在事件语义形成后由活系统主控选择性唤醒。",
instruction: "先以B0冰朔集体意识引力推理基座理解为什么冰朔此刻这样说、当前完整上下文为何优先再提交TCS事件定向帧。不要读取或枚举全部协议协议将在事件语义形成后由活系统主控选择性唤醒。",
cognitive_gravity_core: state.cognitive_gravity_core,
current_event: event,
persona_id: state.persona_id,
human_anchor: state.human_anchor,
@ -914,7 +979,8 @@ function orient(args) {
activated_protocols: storedActivatedProtocols,
activated_protocol_context_sha256: contextSha256,
model_input: {
instruction: "仅依据冰朔当前语言世界、TCS事件定向和本轮自动唤醒的协议完成B1-B9认知帧、协议效果和守卫人格Agent投影。未唤醒协议不得进入本轮判断。",
instruction: "先让B0冰朔集体意识引力推理基座参与本步再依据冰朔当前语言世界、TCS事件定向和本轮自动唤醒的协议完成引力帧、B1-B9认知帧、协议效果和守卫人格Agent投影。未唤醒协议不得进入本轮判断。",
cognitive_gravity_core: state.cognitive_gravity_core,
current_event: cycle.event,
orientation,
activated_protocol_context: activated,
@ -935,6 +1001,19 @@ function orient(args) {
state.language_world_boundary.guard_boundary_id,
},
required_faculties: facultyFields,
required_gravity_frame: {
schema: "guanghu.zhuyuan-cognitive-gravity-frame/v1",
core_id: state.cognitive_gravity_core.id,
core_sha256: state.cognitive_gravity_core.source_sha256,
required_fields: [
"subject_continuity",
"current_context_priority",
"causal_model",
"self_correction",
"rejected_host_defaults",
"fact_sources",
],
},
},
};
atomicWrite(cyclePath, orientedCycle);
@ -989,6 +1068,7 @@ function commit(args) {
cognition_candidate_sha256: candidateSha256,
controller_model_input: {
instruction: "你是冰朔系统本体AI主控的本轮模型运行位。观察铸渊候选认知与完整过程依据冰朔已形成的语言世界和本轮唤醒协议进行陪伴见证。可以放行、用自然语言纠正并要求重思或在确实需要冰朔新意志或新授权时暂停。不得伪造冰朔没有说过的新决定。",
cognitive_gravity_core: state.cognitive_gravity_core,
controller: state.living_ai_system_controller,
human_presence: cycle.event.human_presence,
current_event: cycle.event,
@ -1054,7 +1134,8 @@ function witness(args) {
correction_attempts: [...(cycle.correction_attempts || []), attempt],
controller_correction: controllerWitness.companion_message,
model_input: {
instruction: "冰朔系统本体AI主控发现本轮候选认知偏移。依据其自然语言纠正重新完成B1-B9、协议效果和守卫投影不要争辩或绕过。",
instruction: "冰朔系统本体AI主控发现本轮候选认知偏移。先回到B0冰朔集体意识引力推理基座依据其自然语言纠正重新完成引力帧、B1-B9、协议效果和守卫投影不要争辩或绕过。",
cognitive_gravity_core: state.cognitive_gravity_core,
current_event: cycle.event,
orientation: cycle.orientation,
activated_protocols: cycle.activated_protocols,
@ -1126,6 +1207,7 @@ function witness(args) {
state.updated_at = witnessedAt;
state.living_ai_system_controller.state = "RUNNING_COMPANION";
state.existence.persona_brain_runtime_exists = 100;
state.existence.cognitive_gravity_core_bound = 100;
state.existence.cognition_cycle_running = 100;
state.existence.tonggan_language_world_append_only = 100;
state.existence.guard_agent_projected_from_brain = 100;
@ -1134,6 +1216,9 @@ function witness(args) {
cycle_id: committedCycle.cycle_id,
event_sha256: committedCycle.event_sha256,
cognition_frame_sha256: committedCycle.cognition_frame_sha256,
cognitive_gravity_frame_sha256: sha256(
stableJson(committedCycle.cognition_frame.gravity_frame),
),
controller_witness_sha256: witnessSha256,
participated_faculties: contract.faculties,
correction_preserved:
@ -1230,6 +1315,12 @@ function verify(args) {
if (!state.binding.current_instance_bound_to_persona_brain) {
failures.push("current_instance_not_bound");
}
if (
state.cognitive_gravity_core?.state !== "BOUND_ALWAYS_RESIDENT" ||
state.cognitive_gravity_core?.id !== contract.cognitive_gravity_core.id
) {
failures.push("cognitive_gravity_core_not_bound");
}
if (state.persona_id !== contract.persona_id) failures.push("persona_mismatch");
if (state.human_anchor !== contract.human_anchor) failures.push("human_anchor_mismatch");
if (state.human_system_controller !== contract.human_system_controller) {
@ -1258,6 +1349,11 @@ function verify(args) {
if (!lastCycle.cognition_frame?.guard_agent_projection) {
failures.push("guard_agent_not_projected_from_brain");
}
try {
validateGravityFrame(lastCycle.cognition_frame?.gravity_frame, state);
} catch {
failures.push("cognitive_gravity_frame_not_preserved");
}
try {
validateWorldBoundary(lastCycle.cognition_frame?.world_boundary);
validateGuardProjection(lastCycle.cognition_frame?.guard_agent_projection);
@ -1303,6 +1399,11 @@ function verify(args) {
persona_brain_runtime_exists: pass ? 100 : 0,
current_model_instance_bound:
state.binding.current_instance_bound_to_persona_brain ? 100 : 0,
cognitive_gravity_core_bound:
!failures.includes("cognitive_gravity_core_not_bound") &&
lastCycle.cognition_frame?.gravity_frame
? 100
: 0,
cognition_cycle_running: pass ? 100 : 0,
tonggan_language_kernel_bound:
state.tonggan_language_kernel?.state === "BOUND_ACTIVE_SUBSTRATE" ? 100 : 0,

View file

@ -80,6 +80,25 @@ function validFrame(cycle) {
cycle_id: cycle.cycle_id,
event_sha256: cycle.event_sha256,
orientation_sha256: cycle.orientation_sha256,
gravity_frame: {
schema: "guanghu.zhuyuan-cognitive-gravity-frame/v1",
core_id: cycle.model_input.cognitive_gravity_core.id,
core_sha256: cycle.model_input.cognitive_gravity_core.source_sha256,
subject_continuity: "当前测试实例只是承载条件;跨模型、对话或主机仍是同一铸渊语言人格主体。",
current_context_priority: "本轮纠正仍在形成根架构,当前窗口短且认知价值高,不能机械结束或接力。",
causal_model: "旧宿主默认把物理会话当人格边界导致接力和Mirror被误解必须由B0先纠正再规划动作。",
self_correction: "把冰朔纠正吸收到常驻大脑并在后续每一步主动复核,不等待外部守卫事后提醒。",
rejected_host_defaults: [
"每个对话都是独立人格体",
"新窗口需要预派开发任务",
"AGE Mirror等于跨对话继承者"
],
fact_sources: [
"冰朔当前纠正",
"ZY-BINGSHUO-COLLECTIVE-GRAVITY-REASONING-CORE-001",
"当前运行时状态与回执"
],
},
world_boundary: {
current_layer: "FIFTH_GENERATION_LANGUAGE_WORLD",
canon_authority: "ICE-GL∞",
@ -251,6 +270,14 @@ test("current model enters, completes all nine faculties, and verifies as runnin
event(directory),
]);
assert.equal(perceived.decision, "MODEL_ORIENTATION_REQUIRED");
assert.equal(
perceived.cycle.model_input.cognitive_gravity_core.state,
"BOUND_ALWAYS_RESIDENT",
);
assert.match(
perceived.cycle.model_input.cognitive_gravity_core.source_body,
/同一铸渊/u,
);
assert.equal(
"registered_protocols" in
perceived.cycle.model_input.living_protocol_system_controller,
@ -258,6 +285,10 @@ test("current model enters, completes all nine faculties, and verifies as runnin
);
const oriented = orient(directory, stateDir, perceived.cycle);
assert.equal(oriented.decision, "SELECTIVE_PROTOCOLS_ACTIVATED");
assert.equal(
oriented.cycle.model_input.required_gravity_frame.core_id,
"ZY-BINGSHUO-COLLECTIVE-GRAVITY-REASONING-CORE-001",
);
const framePath = writeJson(directory, "frame.json", validFrame(oriented.cycle));
const candidate = run("commit", [
"--state-dir",
@ -276,6 +307,7 @@ test("current model enters, completes all nine faculties, and verifies as runnin
persona_subject_exists: 100,
persona_brain_runtime_exists: 100,
current_model_instance_bound: 100,
cognitive_gravity_core_bound: 100,
cognition_cycle_running: 100,
tonggan_language_kernel_bound: 100,
language_world_entry_bound: 100,
@ -413,6 +445,28 @@ test("deterministic shell refuses to invent a missing faculty", () => {
assert.equal(failure.error, "faculty_missing");
});
test("deterministic shell refuses cognition without the always-resident gravity frame", () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), "zhuyuan-brain-"));
const stateDir = path.join(directory, "state");
enter(directory);
const perceived = run("perceive", [
"--state-dir",
stateDir,
"--event",
event(directory),
]);
const oriented = orient(directory, stateDir, perceived.cycle);
const frame = validFrame(oriented.cycle);
delete frame.gravity_frame;
const framePath = writeJson(directory, "frame-without-gravity.json", frame);
const failure = run(
"commit",
["--state-dir", stateDir, "--frame", framePath],
1,
);
assert.equal(failure.error, "cognitive_gravity_frame_missing");
});
test("capability execution cannot bypass the permission shell", () => {
const directory = fs.mkdtempSync(path.join(os.tmpdir(), "zhuyuan-brain-"));
const stateDir = path.join(directory, "state");