Skip to content

Execution Contexts zh

hoptop edited this page Jul 25, 2026 · 1 revision

English · 简体中文

执行环境

**执行环境(execution context)**是 Wisp 能跑代码的地方。本地永远可用。你可以加 WSL 发行版和 SSH 服务器,然后不离开对话就把活派到 GPU 机器上。

设置 → 环境 里管理:添加、导入、移除、配置、probe 都归它。它决定某次对话能用哪台服务器——那是分开的,而且是刻意分开的。


三种类型

类型 说明
本地 永远存在,不需要配置。
WSL Windows Subsystem for Linux 发行版,可导入为环境。
SSH 远程服务器,通过已注册的别名、用户、端口和密钥访问。

每个环境可以指向各自的 Python 和 R 解释器local、某个 WSL 发行版、每台 SSH 服务器可以各用各的环境,完全不依赖宿主环境变量。在 设置 → 环境 里设,或让 agent 用 set_runtime_interpreter 设;运行时卡片上的 配置路径 打开的是同一处设置。


你会遇到的两道闸门

Wisp 在模型和你的服务器之间刻意放了两道障碍。都是因为对真实集群猜错一次代价很高。

1. 主机必须先 probe 才能用

Probe 会跑内置的 probe-compute-environment 技能,并持久化它查到的东西:硬件、调度器、运行时、权限。SSH 的 probe 会在同一条已认证连接上完成全部检查。

启用一台没有成功 probe 记录的主机,会弹出对话框要求你先去检查服务器并 probe。这不是一个能挥手跳过的警告——agent 无法使用未 probe 的主机。

2. 服务器必须为该对话选中

注册了服务器不等于就能用。每次对话在输入框的 算力(Compute) 菜单里选择本次可用的远程服务器。这个选择按对话隔离。本地算力永远可用、永远列出;可搜索的菜单只列已配置的远程服务器。

选中的服务器在合适的工作上会被优先使用——这就是你不用每次都说一遍、就能把重活引到 GPU 机器上的机制。


Run:活得比对话久

run_in_context 把任务作为一个 Run 提交。Run 是一条持久化记录,不是阻塞调用:

  • 扛得住断线。合上笔记本,任务照跑。
  • 进度不过模型monitor_run 推送实时进度卡片,不经过 LLM 往返,所以盯一个 6 小时的任务不烧 token。
  • get_run 取状态和输出,cancel_run 停掉它。

transfer_between_contexts 在本地与远程之间、或两台远程之间搬文件。

实际怎么提交可恢复的 Run,见 remote-compute-ssh 技能。


SSH 细节

认证方式是 SSH 密钥/agent(推荐)或密码。密码只存在操作系统钥匙串里——绝不进项目数据库

批量 SSH 和 SCP 一律设置 OpenSSH IdentitiesOnly 如果你用的是非默认的 agent 密钥,必须在 Wisp 或 SSH config 里配 IdentityFile,否则连接不会用你以为的那把密钥。

shell 工具里的裸 sshscp 被禁用。 远程操作一律走注册的别名。这意味着模型没法临场编一个主机名、用户名或端口。

失败不自动重试。 当 probe、上传或启动失败,Wisp 会对该主机打开一道连通性闸门:后续托管请求立即失败、不再联系服务器,并显示警告。要解除,得在你修好连接之后手动 probe 一次。这是刻意的——对着一台已宕机或正在拒绝认证的服务器循环重试,正是把自己锁出去的经典方式。


已知边界

  • 不支持 Modal 作为算力后端。 remote-compute-modal 技能的存在就是为了说明这条边界,并把 Modal 工作负载迁移到受支持的 SSH Run。
  • 托管模型端点有自己的边界;在围绕它做规划之前,managed-model-endpoints 会讲清哪些接了、哪些没接。
  • Wisp 永远不会自动安装 R 包。 Python 会在 .wisp/python/.venv 拿到一个 uv 虚拟环境;R 用 PATH 上的 Rscript,且需要那个环境里已经jsonlite

查看运行时内存

点运行时卡片上的 PythonR 标签,会在卡片旁边打开一张 RStudio 风格的内存对象表——对象名、类型、值与形状、大小,都有上限截断。钉住它,这张表会移到对话上变成可拖动的窗口,运行时对话框关掉之后依然在。

Clone this wiki locally