源码索引 / CURRENT IMPLEMENTATION
demos/core.sh
77 行 · 点击行号可定位;函数链接随声明位置更新,不手填行号。
#!/usr/bin/env bash
# One navigation entry for existing, real Guest paths. No artifact rebuilds.
set -euo pipefail
ROOT=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
cd "$ROOT"
usage() {
printf '%s\n' \
'Usage: ./demos/core.sh [call|plm|prefix|isolation|python|info|all]' \
' call Python -> Host -> Python; normal execution and Host rejection' \
' plm Same trading program: sequential vs early snapshot reads' \
' prefix Source fragments, early reads, then execution at EOF' \
' isolation Fresh-run state isolation and prepared full-copy checks' \
' python Guest Python -> Go bridge -> native Python provider' \
' info Optional: sent / denied / unknown notification outcomes' \
' all Four core demos (does not include python/info)' \
'Existing dist/spine.wasm and cached Go dependencies are required.'
}
section() { printf '\n===== %s =====\n' "$1"; }
show_source() { python3 -c 'import pathlib,sys; print(pathlib.Path(sys.argv[1]).read_text())' "$1"; }
call_demo() {
section '1 / 普通执行:Python 决定控制流,Host 提供工具'
show_source examples/lookup.py
go run ./cmd/demo -source examples/lookup.py
printf '\n观察:Host 返回 21,Python 计算 21 * 2,结果 42。\n'
printf '再看 Host 边界:以下测试直接绕过 Python facade 请求未注册工具,仍被拒绝。\n'
go test . -run '^TestRealGuest$/^unknown_tool_request$' -count=1 -v
}
plm_demo() {
section '2 / PLM:同一份程序,比较工具启动顺序'
show_source examples/trading.py
printf '\n--- normal:quote 结束后才开始 cash ---\n'
go run ./cmd/trade-demo -mode normal -read-delay 200ms -allow-order
printf '\n--- plm:quote/cash 可重叠;buy 仍在原调用点 ---\n'
go run ./cmd/trade-demo -mode plm -read-delay 200ms -allow-order -show-transformed
printf '\n时间戳仅说明这次工具顺序,不是性能 benchmark。用握手测试验证重叠和错误交付:\n'
go test . -run '^TestPLMGuest$/^(both_started_before_first_resolves|error_delivered_after_first_assignment)$' -count=1 -v
}
prefix_demo() {
section '3 / Prefix:源码尚未结束,合格读取已开始'
printf '文件按行发送,不是真实 LLM token 流。观察 source.send / tool.start / source.closed。\n'
go run ./cmd/trade-demo -mode prefix -read-delay 200ms -allow-order -show-transformed
printf '\n日志交错不保证每次相同。下面测试用握手固定 EOF 前启动读取的条件,并验证读取只调用一次:\n'
go test . -run '^TestPrefixGuest$/^starts_before_source_closes_and_is_claimed_once$' -count=1 -v
}
isolation_demo() {
section '4 / 隔离与初始化复用:用可执行断言观察状态'
printf '这部分是带真实 Guest 的测试演示,不是性能测量。\n'
printf 'fresh:第一轮写 builtins.secret,第二轮读不到;Guest 也不能读取宿主 /etc/passwd。\n'
go test . -run '^TestRealGuest$/^(private_state_write|private_state_read|no_host_filesystem)$' -count=1 -v
printf '\nprepared-copy:共享初始化来源,但实例拥有私有副本;两份活跃内存与基线相互独立。\n'
go test . -run '^TestPreparedGuest$/^(private_Python_state|two_live_memories_and_image_are_independent)$' -count=1 -v
if [[ $(uname -s) == Linux ]]; then
printf '\nLinux COW:再验证内核私有映射与真实 Guest 生命周期。\n'
go test . -run '^(TestLinuxCOWMappingSealsAddressAndIsolation|TestPreparedCOWRealGuestLifecycle)$' -count=1 -v
else
printf '\n当前不是 Linux:不演示 COW。prepared-copy 是全量复制,不是 COW。\n'
fi
}
if (( $# > 1 )); then usage >&2; exit 2; fi
case "${1:-help}" in
call) call_demo ;;
plm) plm_demo ;;
prefix) prefix_demo ;;
isolation) isolation_demo ;;
python) exec go run ./cmd/python-provider ;;
info) exec bash demos/walkthrough.sh ;;
all) call_demo; plm_demo; prefix_demo; isolation_demo ;;
help|-h|--help) usage ;;
*) usage >&2; exit 2 ;;
esac