run-codex.sh
1.3 KB
#!/data/data/com.termux/files/usr/bin/bash
# Codex 订阅引擎(dsh 的替代)。用法:run-codex.sh <admin|member|chat> "prompt"
# 认证:手机上 `codex login --device-auth`(ChatGPT 订阅),token 落在 ~/.codex/auth.json,不进 git。
# stdout=最终答案(codex exec 的进度走 stderr),与 dsh headless 同形,调用方不用改解析。
# 本机无 bwrap/Landlock:admin 与 dsh 一致免沙箱;member/chat 是陌生人/抓取内容=不可信输入,
# 用 read-only 沙箱 + 无网络(ponytail: codex 无「零工具」开关,read-only 仍能读文件;上限=可读到手机上的文件,
# 若在意就保持 member 走 dsh no-tools)。
set -euo pipefail
export PREFIX="${PREFIX:-/data/data/com.termux/files/usr}"
export HOME="${HOME:-/data/data/com.termux/files/home}"
export PATH="$PREFIX/bin:$PATH"
export TMPDIR="$PREFIX/tmp"; mkdir -p "$TMPDIR"
MODE="$1"; P="$2"
case "$MODE" in
admin)
exec codex exec --skip-git-repo-check --dangerously-bypass-approvals-and-sandbox "$P" ;;
member)
SOUL="$HOME/pixelphone/SOUL.md"
[ -r "$SOUL" ] && P="$(cat "$SOUL")
$P"
exec codex exec --skip-git-repo-check --sandbox read-only "$P" ;;
chat)
exec codex exec --skip-git-repo-check --sandbox read-only "$P" ;;
*) echo "mode must be admin|member|chat" >&2; exit 2 ;;
esac