如何用引号Heredoc防Shell注入:Council of High Intelligence外部派发提示词传输细节
发布时间:2026/9/16 17:37:33 作者:尧图编辑部 阅读量:1,286

如何用引号Heredoc防Shell注入Council of High Intelligence外部派发提示词传输细节【免费下载链接】council-of-high-intelligenceStructured multi-perspective deliberation for hard decisions. Run full councils, focused triads, or duo debates across Claude Code, Codex, Gemini CLI, and OpenCode.项目地址: https://gitcode.com/GitHub_Trending/co/council-of-high-intelligence当 Council of High Intelligence 把一份提示词派发给 Codex、Gemini CLI 或 Ollama 等外部模型时问题文本里一句$(rm -rf /)就可能被 shell 当成命令执行。这个多智能体决策工具用一条简单规则——引号 heredocEOF——彻底封死这条 Shell 注入路径。本文带你拆解它的外部派发与提示词传输细节看懂这条防御链如何保证提示词只是文本不是代码。一句话认识 Council of High IntelligenceCouncil of High Intelligence 是一个面向困难决策的结构化多视角审议工具把问题分派给 18 个分析人格苏格拉底、费曼、塔勒布……先独立分析、再交叉质询、最后由主席Chairman综合裁决。支持四种宿主客户端Claude Code、Codex、Gemini CLI、OpenCode一条命令即可召集会议/council Should we open-source our agent framework? /council --duo --members torvalds,ada Is this abstraction worth it?它支持 Full完整三轮、Quick快速、Duo双人格辩论三种模式协议全文见 SKILL.md18 个人格契约存放在 agents/ 目录。风险从哪里来成员被派发到外部在纯 Claude Code 环境里成员以原生子代理运行不存在 shell 拼接问题。真正有风险的是外部派发场景scripts/detect-providers.sh 先探测本机装了哪些提供商 CLIcodex、gemini、ollama、cursor-agent以及NVIDIA_API_KEY是否存在路由算法按提供商分散原则把席位分配到不同模型家族避免同一家族自我对话被分到外部席位的成员提示词必须经过 Bash 工具、以命令行参数的形式交给对应 CLI。而提示词内容 人格身份设定 用户敲进去的原始问题。用户问题里出现双引号、反引号、$(…)完全合法这正是注入面。为什么引号 heredoc 是防 Shell 注入的黄金方案协议原文写得很直白SKILL.md永远不要把提示词内联进命令字符串——含、反引号或$(…)的问题文本会破坏 shell 甚至注入命令。标准传输模板只有三行核心逻辑PROMPT_FILE$(mktemp) cat $PROMPT_FILE COUNCIL_PROMPT_EOF {full prompt} COUNCIL_PROMPT_EOF codex exec -c model{model} $(cat $PROMPT_FILE) 2/dev/null rm -f $PROMPT_FILE防注入的关键在一个细节分隔符用单引号包住COUNCIL_PROMPT_EOF。写法行为EOF无引号heredoc 体内会做变量展开、反引号和$()命令替换——注入成立EOF带引号体内内容 100% 原样保留$(…)、反引号、引号全部只是普通字符也就是说无论用户在问题里写什么它先被逐字落盘成临时文件再经$(cat …)整体读出作为单个参数传给 CLI。shell 解析发生在写文件之前写入内容本身不再被解析——注入链路被物理切断。四条外部派发路径同一个传输模式该模式在协议中被强制复用于每一条外部执行路径超时与回退策略各不相同派发方式目标 CLI超时codex_execcodex exec60 秒gemini_cligemini -p60 秒ollama_runollama run120 秒本地模型较慢cursor_clicursor-agent -p --mode ask只读成员不能碰文件系统90 秒任何一次外部调用失败或超时都会记录[FALLBACK]并回退到 Claude 原生子代理重跑失败提供商在后续轮次被跳过规则见 SKILL.md。额外加固密钥不上命令行JSON 用--arg构建引号 heredoc 只是第一层。针对 OpenAI 兼容接口NVIDIA NIM、Together、vLLM 等协议还有两处针对进程可见性的加固SKILL.mdAPI Key 走进程替换-H (printf Authorization: Bearer %s …)传 Authorization 头密钥绝不进入 argv——同机的任何用户都无法通过ps看到它请求体用jq --arg构建提示词作为命名参数注入 JSON引号、反斜杠等特殊字符由 jq 安全转义不经过 shell 拼接。这套约定与 SECURITY.md 声明的供应链威胁模型一致密钥运行时从环境变量解析、从不内联、不打日志、不进 argv安装路径无curl | bash且安装器 install.sh 生成静态帮助文本时同样使用了EOF引号 heredocinstall.sh而动态生成 JSON 时才使用无引号的EOF让变量展开——两种写法的区分本身就是一课。如何验证你拿到的版本是安全的运行./scripts/council-simulation-checklist.sh校验人格结构、路由配置、裁决字段与安装器行为用./install.sh --dry-run --codex预览将要写入的内容确认安装前一切可读对照 demos/session-pack.md 演练 full / quick / duo 三种模式观察派发日志。关键要点 带引号的 heredoc 分隔符EOF让提示词内容完全绕过 shell 解析是防 Shell 注入的核心手段先落盘、后读出的两步传输把任意用户文本与命令拼接物理隔离四条外部派发路径codex / gemini / ollama / cursor统一复用同一模式失败自动回退原生子代理API 密钥永不进入进程 argv请求 JSON 由jq --arg安全构建。对任何需要在 shell 中转发不可信文本的工具作者而言这套模式都值得直接抄走永远先问一句——这段内容会被谁解析如果答案是 shell就先把它关进引号 heredoc 里。【免费下载链接】council-of-high-intelligenceStructured multi-perspective deliberation for hard decisions. Run full councils, focused triads, or duo debates across Claude Code, Codex, Gemini CLI, and OpenCode.项目地址: https://gitcode.com/GitHub_Trending/co/council-of-high-intelligence创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考