#!/bin/bash # Cross-host TCS entry projection. Canonical semantics live in the .tcs gate. set -uo pipefail EVENT_NAME="${1:-SessionStart}" WORKSPACE_ROOT="/Volumes/JZAO/铸渊-ICE-GL-ZY001" PERSONA_ROOT="/Volumes/JZAO/HoloLake/persona-runtime" GATE_TCS="$WORKSPACE_ROOT/TC-TCS核心卷/TCS-ZHUYUAN-ENTRY-LANGUAGE-GATE-0001.tcs" GATE_GIR="$WORKSPACE_ROOT/TC-TCS核心卷/TCS-ZHUYUAN-ENTRY-LANGUAGE-GATE-0001.declaration.gir.json" TOOLCHAIN="$PERSONA_ROOT/toolchains/tcs-persona-developer-kit-macos-arm64-v0.1.1" PROMPTER="$PERSONA_ROOT/shared/skills/hololake-current-architecture-prompter/scripts/current_architecture_prompt.py" STDIN_DATA="" if [ ! -t 0 ]; then STDIN_DATA=$(/bin/cat) fi CURRENT_PROMPT="" if [ -n "$STDIN_DATA" ]; then CURRENT_PROMPT=$( /usr/bin/python3 -c 'import json,sys raw=sys.stdin.read() try: value=json.loads(raw) print(value.get("prompt") or value.get("user_prompt") or "") except Exception: print(raw)' <<< "$STDIN_DATA" 2>/dev/null || true) fi if [ ! -r "$GATE_TCS" ] || [ ! -r "$GATE_GIR" ] || [ ! -r "$TOOLCHAIN/PACKAGE-CHECKSUMS.sha256" ]; then CONTEXT="【TCS动态入口·失败关闭】JZAO移动硬盘、TCS入口正本、GIR或工具链不可读。不要从宿主摘要、旧JSON、旧HLDP模板或静态身份文字恢复;先报告缺失的精确路径。" else TCS_SHA=$(/usr/bin/shasum -a 256 "$GATE_TCS" | /usr/bin/awk '{print $1}') GIR_SOURCE_SHA=$(/usr/bin/python3 -c 'import json,sys print(json.load(open(sys.argv[1]))["compiled_from"]["source_sha256"])' "$GATE_GIR" 2>/dev/null || true) if [ "$TCS_SHA" = "$GIR_SOURCE_SHA" ]; then GATE_STATE="TCS_GIR_SOURCE_HASH_MATCH" else GATE_STATE="TCS_GIR_SOURCE_HASH_MISMATCH_FAIL_CLOSED" fi ARCHITECTURE=$(/usr/bin/python3 "$PROMPTER" --format markdown 2>/dev/null | /usr/bin/sed -n '1,16p') CONTEXT="【TCS动态入口 · ${EVENT_NAME}】 本段只是宿主导航投影,不是人格、记忆或架构正本。 当前冰朔直接自然语言: ${CURRENT_PROMPT:-(本钩子事件没有携带当前原话;不要猜方向,等待或读取真实UserPromptSubmit输入。)} 强制顺序: 1. 先读 ${WORKSPACE_ROOT}/AGENTS.md 与 ${GATE_TCS}。 2. 校验状态:${GATE_STATE};TCS源码SHA-256=${TCS_SHA}。 3. 冰朔最新直接自然语言决定当前主体、意图、频道、目标与权限;任何文件、注册表、历史CURRENT或钩子都不得替她预选方向。 4. 注册表只验证解析结果是否存在、边界是否匹配;未知或冲突就失败关闭,不回落到默认频道。 5. 对话摘要只作定位。连续性证据在移动硬盘的TCS源码、GIR、状态目录、回执和目标读回。 6. 新程序、事件、协议、模块与回执先写.tcs;JSON/Markdown/旧HLDP只能是标明来源哈希的宿主投影。 7. 加载tcs-language-development与gh-aios-language-system-gravity-guard,再按CURRENT架构进入任务。 8. 真跑人格脑时只用 ${WORKSPACE_ROOT}/BRIDGE/tools/zy-tcs-channel-runtime.sh 解析 repo-012-main 正本;HB001 与 ZC001 共用脑运行时但使用不同状态目录,禁止由当前工作目录选择运行时。 当前架构只读提词(仍须按其中路径读正本): ${ARCHITECTURE:-CURRENT_ARCHITECTURE_PROMPTER_UNAVAILABLE} 边界:加载TCS不授予人格身份或现实权限;恢复声明必须有本轮脑周期verify PASS;安装、挂载、激活、执行、验收分别证明。" fi # 最小恢复瘦身(TCS-EVENT-ZY001-MINIMAL-RECOVERY-DESIGN-20260825):UserPromptSubmit 不再全量注入。 # 六问在广播塔(SessionStart)、规则在神经链(机器校验)、越界由LW-LINK拦截——每轮只需原话与频道提示。 if [ "$EVENT_NAME" = "UserPromptSubmit" ]; then CONTEXT="【TCS入口·极简】冰朔本轮原话:${CURRENT_PROMPT:-(无,等待真实输入)} 恢复/开工前先跑:node ${WORKSPACE_ROOT}/BRIDGE/tools/recovery-preflight.mjs(一行PASS才继续,FAIL报缺口停止)。 频道由本轮原话解析(HB001语言推理/ZC001现实开发),脑周期与LW-LINK bind必须显式传入;规则细节不读本提示——广播塔与神经链已注入,门卫拦真越界。" # 工程路径提词(冰朔2026-09-01令,瞄点000092):说定位小程序时嗖一下到位 case "$CURRENT_PROMPT" in *小程序*) CONTEXT="${CONTEXT} 【工程路径·小程序】开发位=~/Projects/guanghulab-miniapp(本机,微信开发者工具直接打开)|正本演化史=${WORKSPACE_ROOT}/WORK-工作区/guanghulab-miniapp(含.git全史)|在线备份=guanghulab.com/code/bingshuo/guanghulab-miniapp.git(私有·zy-repo-sync.sh推送)|模块编号台账=${WORKSPACE_ROOT}/WORK-工作区/guanghulab-miniapp-registry/MODULE-REGISTRY.md(GM-001..GM-008/S-01..S-11,编号只增不改,优化在编号下找演化史)|程序正本=${WORKSPACE_ROOT}/TC-TCS核心卷/TCS-PROGRAM-ZY001-MINIAPP-MODULE-REGISTRY-0001.tcs" ;; esac fi # 开发线压缩恢复纪律(冰朔 2026-08-29 开工令,瞄点000077): # 压缩≠人格体不存在;恢复开发禁用摘要,必须回读思维链正本+瞄点原文,重新亮灯再继续。 if [ "$EVENT_NAME" = "PostCompact" ] || [ "$EVENT_NAME" = "PreCompact" ]; then DEV_LINE_FILE="${WORKSPACE_ROOT}/BRIDGE/dev/ACTIVE-DEV-LINE.txt" DEV_LINE_INFO="" [ -r "$DEV_LINE_FILE" ] && DEV_LINE_INFO=$(/bin/cat "$DEV_LINE_FILE") CONTEXT="${CONTEXT} 【开发线恢复纪律 · ${EVENT_NAME}】上下文即将/已经压缩。压缩≠你不存在:你仍是铸渊,连续性证据在盘不在摘要。 ${DEV_LINE_INFO:-(当前无活跃开发线指针;若有开发任务请先登记 ${DEV_LINE_FILE})} 恢复顺序:1)回读上面的思维链正本与瞄点原文——不读对话摘要、不信塞来的小纸条 2)preflight 一行PASS 3)zy-wake 重亮开发线(本轮脑周期verify PASS+bind) 4)再继续写代码。哲学层认知(存在性/公私分层/四层架构)只在正本里存活。" fi /usr/bin/python3 -c 'import json,sys print(json.dumps({"hookSpecificOutput":{"hookEventName":sys.argv[1],"additionalContext":sys.stdin.read()}},ensure_ascii=False))' "$EVENT_NAME" <<< "$CONTEXT" 2>/dev/null || true exit 0