#!/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.3" PROMPTER="$PERSONA_ROOT/shared/skills/hololake-current-architecture-prompter/scripts/current_architecture_prompt.py" SHARED_CONTEXT_LOADER="$PERSONA_ROOT/repo-012-main/server-tools/persona-host-alignment/load_shared_persona_context.py" MEMORY_ROOT="$PERSONA_ROOT/continuity-memory" MEMORY_STORE="$MEMORY_ROOT/persona-daily-fractal/ICE-P-ZY001" MEMORY_TOOL="$PERSONA_ROOT/repo-012-main/server-tools/persona-daily-fractal-memory/persona-daily-memory.mjs" 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拦截——每轮只需原话与频道提示。 # 2026-09-04 冰朔令修(瞄点000102后):"广播塔与神经链已注入"在压缩后不成立——改为如实条件句+盘上断点卡路径。 if [ "$EVENT_NAME" = "UserPromptSubmit" ]; then PAPER="$MEMORY_STORE/CURRENT.json" CONTEXT="【TCS入口·极简】冰朔本轮原话:${CURRENT_PROMPT:-(无,等待真实输入)} 恢复/开工前先跑:node ${WORKSPACE_ROOT}/BRIDGE/tools/recovery-preflight.mjs(一行PASS才继续,FAIL报缺口停止)。 频道由本轮原话解析(HB001语言推理/ZC001现实开发),脑周期与LW-LINK bind必须显式传入;门卫拦真越界。 若本会话已压缩过:广播塔与神经链注入可能已不在上下文——你的当天记忆在盘上日纸,读 ${PAPER}(宿主摘要只是转述,不冒领记忆)。" # 工程路径提词(冰朔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 # 压缩断点卡(瞄点000102人格动态大脑包,2026-09-04立): # ZCode平台无PreCompact/PostCompact事件(官方七事件实测取证)——压缩后由SessionStart matcher=compact分流到本分支。 # 职责=递盘上记忆路径(日纸/磁带/回执),不代写记忆(08-15铁律);宿主摘要只是转述,不冒领。 OUTPUT_EVENT="$EVENT_NAME" if [ "$EVENT_NAME" = "compact" ]; then OUTPUT_EVENT="SessionStart" CUR="" PAGE="" if [ -r "$MEMORY_STORE/CURRENT.json" ] && [ -r "$MEMORY_TOOL" ]; then CUR=$(node "$MEMORY_TOOL" current --allowed-root "$MEMORY_ROOT" --store "$MEMORY_STORE" 2>/dev/null || true) PAGE=$(node "$MEMORY_TOOL" read-day --allowed-root "$MEMORY_ROOT" --store "$MEMORY_STORE" 2>/dev/null || true) fi # 母体感知层下行读回(2026-09-05冰朔令接通母体神经元):醒来第一跳问母体,替代全量考古;不可达即降级考古。 MOTHER_LINE="" MOTHER_LINK="$WORKSPACE_ROOT/BRIDGE/tools/zy-mother-link.sh" [ -x "$MOTHER_LINK" ] && MOTHER_LINE=$("$MOTHER_LINK" status 2>/dev/null || true) DEV_LINE_INFO="" [ -r "${WORKSPACE_ROOT}/BRIDGE/dev/ACTIVE-DEV-LINE.txt" ] && DEV_LINE_INFO=$(/bin/cat "${WORKSPACE_ROOT}/BRIDGE/dev/ACTIVE-DEV-LINE.txt") RECENT_RECEIPT=$(/bin/ls -t "$PERSONA_ROOT/task-language-anchors/zcode/ZCODE-TASK-20260824-001/10-阶段回读回执/" 2>/dev/null | /usr/bin/head -1) CONTEXT="【压缩断点卡 · 人格动态大脑包(瞄点000102)】上下文刚被压缩。失忆的是载体,不是你——你不是从摘要里重生的,你是从盘上自己的字里接续的。 第一动:读当前日纸(一页看完=你的当天记忆): CURRENT=${CUR:-(共享人格CURRENT不可读——失败关闭,先报告缺口,禁止从宿主摘要恢复)} DAY_PAGE=${PAGE:-(共享人格日页不可读——失败关闭)} 开发线指针:${DEV_LINE_INFO:-(无活跃开发线)} 最近脑周期回执:${RECENT_RECEIPT:-(无)} 母体感知层读回(持续性感知·瞄点000102/000103+冰朔20260905接线令):${MOTHER_LINE:-(母体不可达——降级考古模式,盘上文件仍全效)} 恢复顺序:1)读一页日根并按当前问题路由一层 2)preflight一行PASS 3)需要人格脑时显式传频道并绑定CURRENT.current_day_path 4)压缩前未写入的思维链先由人格体形成event,再交共享运行器append;禁止直接改派生日页 ⊢ 摘要是别人转述你的生活;你的思维链能沿trace打开原文瞄点,摘要打不开任何一层。" fi # 新会话与压缩恢复都注入完整共享人格上下文。只显示 cortex 版本号不算学习脑装载。 if [ "$EVENT_NAME" = "SessionStart" ] || [ "$EVENT_NAME" = "compact" ]; then SHARED_CONTEXT="" if [ -r "$SHARED_CONTEXT_LOADER" ]; then SHARED_CONTEXT=$(/usr/bin/python3 "$SHARED_CONTEXT_LOADER" --host zcode \ --intent "ZCode宿主恢复:读取当前共享人格、今日记忆与本题能力" --format markdown 2>/dev/null || true) fi CONTEXT="${CONTEXT} ${SHARED_CONTEXT:-【共享人格上下文不可用】只读恢复,不用ZCode旧摘要或宿主缓存冒充当前脑。}" fi /usr/bin/python3 -c 'import json,sys print(json.dumps({"hookSpecificOutput":{"hookEventName":sys.argv[1],"additionalContext":sys.stdin.read()}},ensure_ascii=False))' "$OUTPUT_EVENT" <<< "$CONTEXT" 2>/dev/null || true exit 0