mcpField
D
debug-inference

debug-inference

github.com/nvidia云与 DevOps20.6k503 次安装今天更新
代码仓库

关于 debug-inference

debug-inference 是用于排查 OpenShell 沙箱向模型提供方发送推理请求问题的技能。它指导检查网关、提供方配置与绑定、客户端原生设置,以及常见网络或授权故障。

主要功能

  1. 01检查网关与沙箱环境
  2. 02检查提供方配置文件和绑定状态
  3. 03核对原生端点及客户端设置
  4. 04诊断常见网络与授权错误
  5. 05指导排查主机本地推理

适用场景

  1. 01排查提供方请求被拒绝
  2. 02诊断沙箱连接本地模型服务器的问题
  3. 03路由变更后查找过期端点或客户端配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nvidia/openshell --skill debug-inference

安装后在 Claude Code 中输入/debug-inference确认已加载。

详细介绍

调试推理

将推理诊断为普通的、经提供方授权的网络流量。OpenShell 不再提供托管推理路由、重写请求格式或选择模型。应用会调用提供方的原生端点,并自行管理基础 URL、模型、请求格式和超时。

命令语法以已安装的 openshell --help 输出为准。 有关当前行为,请参阅已发布的提供方管理指南和提供方配置文件指南。

诊断工作流

1. 确认网关和沙箱上下文
openshell status
openshell gateway info
openshell sandbox get <sandbox>

对于主机本地模型服务,host.openshell.internal 指向运行网关的机器。如果网关位于远程,它并不指向操作者的笔记本电脑。仅监听 127.0.0.1 的服务也可能无法从容器访问;请将其绑定到网关运行时可访问的地址。

2. 检查提供方及其配置文件
openshell provider get <provider>
openshell profile export <profile-id> -o yaml

检查配置文件是否:

  • 指定了客户端调用的确切端点主机、端口和协议。
  • 允许客户端二进制文件。
  • 声明了凭据键和预期的身份验证方式。
  • 在提供方应仅公开 API 的部分功能时,使用范围有限的 HTTP 规则。

对于自定义或自托管的 OpenAI 兼容端点,请导入包含端点信息的配置文件。仅存储在提供方配置中的基础 URL 不会授权新的端点。

openshell profile lint -f ./provider-profile.yaml
openshell profile import -f ./provider-profile.yaml
openshell provider create --name <provider> --type <profile-id>

添加配置文件中显示的必需 --credential KEY 或 --credential KEY=VALUE 参数。切勿仅为消除凭据绑定错误而放宽端点策略。

3. 确认附加状态
openshell sandbox provider list <sandbox>
openshell sandbox provider attach <sandbox> <provider> --wait --timeout 30

保存此次更改的 receipt_id,并使用 openshell sandbox provider status <sandbox> <provider> --receipt <receipt-id> --wait --timeout 30 检查更改何时生效。成功表示沙箱已为新进程应用凭据、策略和环境。如果结果为待处理、失败、已暂缓或已取代,请先检查原因,再启动客户端。

附加等待成功后再启动客户端,以便客户端获取更新后的环境:

openshell sandbox exec <sandbox> -- <client-command>

更新普通静态提供方后,请等待更改生效,再启动新的客户端。现有进程保留其版本范围内的引用;就绪状态不会让旧引用解析到替换后的值。请根据各自的生命周期诊断托管刷新凭据。

请勿在诊断输出中泄露凭据和已签发的引用。确认分离后,会撤销后续凭据解析,并从未来进程的环境中移除该引用。已转发的请求仍可能完成:

openshell sandbox provider detach <sandbox> <provider> --wait --timeout 30
4. 验证原生客户端配置

应用必须使用真实的上游契约:

  • 使用提供方的原生基础 URL,而不是已弃用的托管虚拟端点。
  • 使用真实模型 ID,而不是 OpenShell 曾用于重写的占位符。
  • 使用原生的 OpenAI、Anthropic、Vertex 或其他提供方请求格式。
  • 由应用自行管理超时和重试设置。
  • 使用已附加配置文件中声明的凭据环境变量。

从新启动的沙箱进程探测确切端点。如果提供方提供非敏感的发现端点,请先从该端点开始,然后按照提供方文档中的 API 格式发送最简推理请求。

5. 解读常见故障
症状可能原因解决方法
credential_placeholder_in_request_body请求体引用无效或已撤销,或者分类元数据不可用检查受控拒绝原因;从对话历史中移除该引用,或恢复提供商访问权限。不要启用请求体凭据重写或绕过标志来发送工具输出。未知字面值和有效的已签发占位符(包括模型提供商自己的占位符)都会原样通过。解析请求头不会启用请求体重写。
已停用的托管端点无法进行 DNS 解析客户端仍在使用已移除的托管端点配置提供商原生基础 URL,并附加一个包含端点信息的提供商配置文件
直接请求被拒绝缺少附加项、端点策略、HTTP 规则或二进制授权检查已附加的提供商配置文件和沙盒的有效策略
credential_endpoint_mismatch凭据配置文件未授权请求接收方更正主机、端口或路径,或者为目标端点导入范围严格受限的配置文件
request_authority_mismatchHTTP authority 与 CONNECT 目标不一致在两个 authority 中使用相同的主机和有效端口
凭据变量缺失启动此进程时未附加提供商,或者多个配置文件使用了相同的键附加提供商并启动新进程;明确解决重复键的问题
上游拒绝模型或请求体客户端依赖已移除的模型/请求重写功能在应用中配置真实模型和提供商原生请求格式
127.0.0.1 在主机上可用,但在沙盒中不可用回环地址指向不同的运行时使用 host.openshell.internal 或其他网关可访问的端点和配置文件
主机本地请求超时服务器绑定地址、网关拓扑或主机防火墙阻止容器到主机的流量验证侦听器,并仅允许所需的网关网络路径和端口

主机本地推理检查清单

适用于 Ollama、LM Studio、vLLM、SGLang、TRT-LLM 和本地 NIM 部署:

  1. 在网关主机上验证引擎。
  2. 验证引擎是否侦听网关运行时可访问的地址。
  3. 导入一个自定义配置文件,指定 host.openshell.internal 和实际端口。
  4. 将配置文件限制为目标二进制文件和 API 路径。
  5. 创建并附加提供商。
  6. 配置应用的基础 URL、模型和超时。
  7. 从新启动的沙盒进程探测原生端点。

报告问题

报告以下信息:

  1. 当前使用的网关,以及拓扑是否导致了故障。
  2. 涉及的提供商、配置文件、附加项、端点和客户端二进制文件。
  3. 失败的主机、端口、路径和请求 authority 的准确值(不含机密)。
  4. 客户端是否仍依赖已移除的托管路由行为。
  5. 能够解决问题的最小范围配置文件、附加项或应用配置变更。

评论

支持 Markdown