恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Shannon AI 凭据解析顺序:如何让环境变量覆盖 .env 与 config.toml
首页
资讯中心
/
Shannon AI 凭据解析顺序:如何让环境变量覆盖 .env 与 config.toml
Shannon AI 凭据解析顺序:如何让环境变量覆盖 .env 与 config.toml
发布时间:2026/9/10 20:01:27
Shannon AI 凭据解析顺序如何让环境变量覆盖 .env 与 config.toml【免费下载链接】shannonShannon is an AI pentester for web applications and APIs. It analyzes your source code, identifies attack vectors, and executes real exploits to prove vulnerabilities before they reach production.项目地址: https://gitcode.com/GitHub_Trending/shan/shannonShannon 扫描前必须向 AI 提供商的 API 发起请求所以你需要提供 API 凭据。大多数人的凭据会被持久化保存下来source-build 模式写在项目根目录的.env里npx模式写在~/.shannon/config.toml里。问题随之而来——当某一次扫描需要换一个 key比如换一个配额充足的 key、切到自己的网关或临时用 Bedrock 的 bearer token时不想去改这两个文件怎么办。Shannon 的文档在 Configuration 中给出了明确答案环境变量始终优先于持久化配置可以为单个会话覆盖已保存的凭据而不编辑任何文件。本文按确认解析顺序 → 建立基线配置 → 用环境变量覆盖 → 通过扫描前校验确认生效的顺序把这条覆盖路径走完。两种运行模式的凭据解析顺序docs/configuration.md 的 Credential Precedence 一节定义了两条解析链环境变量都排在第一位运行模式解析顺序Source-build 模式1. 环境变量例如export ANTHROPIC_API_KEY...2../.envnpx模式1. 环境变量2.~/.shannon/config.toml由npx keygraph/shannon setup创建文档原话是 Environment variables always win——只要环境变量存在它就是最终生效的凭据来源。注意这一规则在文档中归属于 Credential Precedence 一节描述的是凭据来源的优先级。凭据变量名与提供商一一对应来自 docs/ai-providers.mdShannon 不会自造变量名每个都是该提供商自有工具链已在使用的变量提供商取值凭据变量AnthropicanthropicANTHROPIC_API_KEY或CLAUDE_CODE_OAUTH_TOKENOpenAIopenaiOPENAI_API_KEYxAIxaiXAI_API_KEYAWS Bedrockamazon-bedrockAWS_REGION和AWS_BEARER_TOKEN_BEDROCK还有一个直接影响覆盖行为的机制Shannon 只把当前所选提供商的凭据转发进扫描容器其他提供商的 key 留在本机。所以覆盖实际上是让所选提供商从环境变量取到 key——模型指向哪个提供商就决定哪个变量被读取和转发。建立基线先有 .env 或 config.toml 才有东西可覆盖覆盖生效的前提是持久化配置已经存在且当前可用。两种模式分别如下。npx模式的基线是~/.shannon/config.toml由交互式向导创建npx keygraph/shannon setupsetup会提供模型选择推荐模型按 best-first 排列也可以手输 model ID和Custom Base URL网关配置。生成的config.toml当前格式为每个提供商一个独立 section模型写在core.model来自 docs/ai-providers.md 迁移一节给出的现行格式示例[core] model anthropic:claude-sonnet-4-6 # base_url https://llm-gateway.example.com [anthropic] api_key your-api-key其中your-api-key是文档中的占位值替换为你自己的 API key。Source-build 模式的基线是项目根目录的.env文件来自 docs/development.mdcp .env.example .env.env至少需要包含一个受支持的 AI 提供商凭据文档给出的示例是ANTHROPIC_API_KEYyour-api-keyyour-api-key为文档占位值替换为真实 key。两种基线就绪后直接start即可用文件里的凭据跑扫描下面的覆盖操作只改变凭据来源不改变命令形态。用环境变量为当前会话覆盖凭据覆盖的方式就是在启动扫描的同一个 shell 会话里 export 对应变量。Anthropic 为例文档中的写法export ANTHROPIC_API_KEYsk-ant-... export SHANNON_AI_MODELanthropic:claude-sonnet-4-6sk-ant-...为文档中的 key 格式示例替换为你要覆盖用的真实 key。两行的分工ANTHROPIC_API_KEY被解析链第一优先级读取的凭据覆盖.env/config.toml里保存的 keySHANNON_AI_MODEL声明provider:model-id决定请求发给哪个提供商、读哪个凭据变量、走哪个 API 方言。不设置时 Shannon 默认使用anthropic:claude-sonnet-4-6且只有第一个冒号分隔提供商与 model ID因此含冒号的 Bedrock ID如amazon-bedrock:us.anthropic.claude-opus-4-5-20251101-v1:0可原样使用。然后照常启动扫描。下面的https://example.com与/path/to/repo是文档中的示例值替换为你自己的目标地址和仓库路径# npx 模式 npx keygraph/shannon start -u https://example.com -r /path/to/repo # source-build 等价命令 ./shannon start -u https://example.com -r /path/to/repo由于环境变量优先这次扫描使用的就是 export 的 key而不是文件里保存的 key文档明确这种覆盖适用于 a single session无需编辑文件。如果覆盖时同时换提供商变量名跟着换即可模式不变。OpenAIexport OPENAI_API_KEYsk-... export SHANNON_AI_MODELopenai:gpt-5.6-solxAIexport XAI_API_KEYxai-... export SHANNON_AI_MODELxai:grok-4.5可选分支——通过自己的网关公司代理、LiteLLM 之类的 LLM gateway、区域端点在正常选模型的同时额外设置SHANNON_AI_BASE_URL网关前缀决定发哪把 keyexport ANTHROPIC_API_KEYsk-ant-... export SHANNON_AI_MODELanthropic:claude-sonnet-4-6 export SHANNON_AI_BASE_URLhttps://llm-gateway.example.comSHANNON_AI_BASE_URL是文档示例值替换为你的网关地址网关下 model ID 是网关暴露的名字不必存在于 Shannon 的目录中。OpenAI 网关默认走 Chat Completions需要 Responses API 时加SHANNON_AI_OPENAI_FORMATresponses——该变量在无法生效的场景非openai提供商、未设置SHANNON_AI_BASE_URL会被 preflight 直接拒绝。可选分支——AWS Bedrock只用 bearer token不支持 IAM access keys、session token、assumed roles 与 instance profiles且模型必须在对应 region 启用export AWS_REGIONus-east-1 export AWS_BEARER_TOKEN_BEDROCKyour-bearer-token export SHANNON_AI_MODELamazon-bedrock:us.anthropic.claude-opus-4-8your-bearer-token为文档占位值替换为你的 Bedrock bearer tokenBedrock 的 model ID 带 region 前缀且必须在你的账号中启用可用的 ID 可能与文档列表不同。确认覆盖生效扫描前凭据校验Shannon 的校验发生在扫描启动之前Checks run before a scan starts, so mistakes fail immediately rather than partway through a run共四项其中后两项直接服务于本文的覆盖验证来自 docs/ai-providers.md 的 Validation 一节Provider—— 始终对照 Shannon harness 认识的提供商列表校验不认识的提供商会被拒绝并给出合法列表Model ID—— 对照该提供商的 harness 目录校验拼写错误当场被抓住Credential presence—— 始终校验所选提供商的凭据变量是否存在Credential validity—— 向扫描将使用的模型发一次最小请求因此一个被拒绝的 key、耗尽的配额、账号无法访问的模型都会在任何 agent 启动之前失败。Bedrock 走同一探测其 bearer token 和 region 一并校验。把这四项放进本文场景里的读法export 完覆盖用的 key 后执行startpreflight 会用 Shannon 解析到的凭据按解析顺序就是环境变量里那把完成对目标模型的最小请求。校验通过、扫描开始说明当前会话确实从环境变量取到了可用凭据如果 key 被拒绝、配额耗尽或模型不可达运行在 agent 启动前就停下而不是等一小时扫描跑完才暴露问题。文档没有提供直接打印当前使用的是哪把 key的命令preflight 的通过/失败就是文档给出的判定方式。边界与注意事项上面 export 的变量只影响当前 shell 会话对应的扫描进程这正是文档推荐的 override saved config for a single session without editing files 的用法。如果你在旧的三层模型配置ANTHROPIC_SMALL_MODEL/ANTHROPIC_MEDIUM_MODEL/ANTHROPIC_LARGE_MODEL或CLAUDE_CODE_USE_BEDROCK1加三个 Bedrock model ID上升级过来这些变量已不生效统一替换为SHANNON_AI_MODELconfig.toml中的[models]节和bedrock.use也已移除重新运行npx keygraph/shannon setup重新生成文件。文档的推荐是 Claude 模型Shannon 的评测、内部测试和 agent harness 都是为 Claude 调优的其他提供商允许使用并通过 harness 目录校验但可能不如 Claude 可靠地遵循指令与工具调用约束文档建议自行承担风险。凭据解析解决的是用哪把 key目标登录凭据、rules of engagement 属于-c传入的 YAML 目标配置与本文的.env/config.toml凭据来源不是一回事。一次完整扫描大约需要 1 到 1.5 小时并产生 LLM API 费用来自 README所以在开跑前用 preflight 把凭据问题暴露掉是文档设计的一部分错误在开始时失败而不是中途失败。【免费下载链接】shannonShannon is an AI pentester for web applications and APIs. It analyzes your source code, identifies attack vectors, and executes real exploits to prove vulnerabilities before they reach production.项目地址: https://gitcode.com/GitHub_Trending/shan/shannon创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考