跳转至

6. 交互式科学工作台(INK)

6.1 简介

Interactive Analysis Workbench(INK)由高能所计算中心开发,致力于为用户提供安全、便捷的交互分析工具。将用户的交互操作包装为特殊作业,并通过网页交互操作。目前提供的功能包括 vscode、jupyter、vnc 等应用以及文件操作、ENode、EShell、OpenClaw、opencode 等服务。

6.2 快速入门

登录

已拥有集群账号的用户,直接访问 http://ink.ihep.ac.cn 并通过 IHEP SSO 账号登录。如未申请集群账号,请参考 账号申请。

首页

登录成功后,进入 INK 首页,如下图所示,包含 Services、User Info、Application、Interactive Jobs 以及 Platform Overview 五个区域,分别提供基础服务、交互式应用以及系统运行信息等。

INK 首页

文件操作

方法 1:点击主页右上角的 Files。

tools

方法 2:点击 Services 区域中的 Files 图标。

services

进入文件操作网页。目前提供键入路径或点击文件夹进行路径跳转;支持隐藏或显示隐藏文件;支持集群文件上传、下载、删除等操作,对 .png/.pdf/.root/.fits 以及文本文件,支持在线查看。

files

交互式应用

提供 vscode、jupyter、rootbrowse、vnc 等网页交互。

注意

集群账号包含 physics 组的用户,可以选择 CentOS 7 或 AlmaLinux 9 操作系统启动应用。非 Physics 组用户统一使用新版 AlmaLinux 9 操作系统。CentOS 7 系统相关软件版本较老,如非必要,请选择 AlmaLinux 9。

具体方法:

  1. 点击 Application 中应用的图标,系统会为用户提交对应作业,并弹出作业清单。

    application

  2. 作业清单中星号标明所提交的作业。清单右侧显示了作业状态。当出现 Connect 时,点击便可进入交互界面。

    jobs

提示 1

作业刚提交,Connect 可能不显示。当交互界面可用后,Connect 才显示,用户可通过 Refresh 刷新作业状态。

提示 2

VNC 进入需要密码,点击对应 VNC 作业的 detail,将第一行记录的密码复制粘贴即可。

用户 Dashboard

点击右上角或首页 Services 栏中 Dashboard 图标进入用户 Dashboard 页面,包含以下五个标签页:

  • Dashboard :查看集群作业情况、可用存储空间使用情况。 Dashboard

  • User Information :进行账号延期、修改 home 目录等操作。 User Information

  • Apply for second linux group :申请添加辅组。 Second Group

  • Apply for change default shell :修改默认 shell 类型(bash、tcsh、csh、zsh)。 Change Shell

  • AFS ACL Recovery :重置 AFS home 目录下的 ACL 权限。

用户 AFS home 目录下文件和目录的初始 ACL 为 rlidwka,其中 a(administer)权限允许用户自行管理 ACL。如果不慎将某个目录 ACL 中自己的 a 权限移除,则该目录的 ACL 将无法自行恢复。

此时可进入此标签页,输入需要恢复 ACL 的目录路径,点击 Check 查看当前目录的 ACL 权限设置。如果自己的 ACL 条目缺失或权限不完整(不足 rlidwka),点击 Reset 即可恢复对该目录的全部所有者权限。该操作仅影响用户自身的 ACL 条目,不会触碰系统或组的权限设置。

EShell

提供用户在网页上连接登录节点,实现网页办公。方法:点击右上角或首页 Services 栏中 EShell 图标。

eshell

可使用 Ctrl + Shift + C 及 Ctrl + Shift + V 实现复制粘贴,可以点击右上的配置按钮调整字号、主题颜色。

Mattermost 频道

提供用户与集群用户交流的渠道:Mattermost 注册链接

6.3 交互式应用详细说明

VSCode

VSCode 是微软开发的开源代码编辑器,支持多种语言,包括 C/C++、Python、Java、JavaScript 等。用户可以通过 VSCode 编辑文件、提交作业、查看结果,支持文件上传、下载、删除等操作,支持在网页上运行代码并查看结果。

该应用基于运行在计算节点的 code-server 服务,用户点击 Connect 后会转到网页式 VSCode,某些浏览器插件可能会接管按键输入,建议在 ink.ihep.ac.cn 上停用。

插件与联网

目前计算节点提供外网访问,如需安装 VSCode 插件,可直接搜索并安装。

注意

code-server 是 ssh-based VSCode,因此在某些功能上与本地 VSCode 应用存在差异,某些插件不支持(目前已知的包括 GitHub Copilot、Remote SSH、vscode-pdf 等插件无法使用),如有特殊需求请考虑使用 ENode。

代码助手

代码助手可以帮助用户编写代码大幅提高科研效率,VSCode 中有大量相关插件,以"腾讯云 AI 代码助手"为例,展示 copilot 的使用:

  1. 安装插件:在插件栏搜索"腾讯云 AI 代码助手"并点击 Install 安装。

    vs0

  2. 完成安装后点击登录跳转腾讯云。

    vs1

  3. 在腾讯云界面中完成注册并登录。

    vs2

  4. 返回 VSCode 标签页,开启代码补全以及 AI 代码助手。

    vs3

  5. 在 VSCode 中输入代码,点击代码助手,即可获得 AI 代码补全。

    vs4

更多功能参见手册:Tencent Cloud coding-copilot

Jupyter

Jupyter 是 Python 语言的交互式编程环境,支持 Python、ROOT 等语言。用户可以通过 Jupyter 编辑文件、提交作业、查看结果,支持文件上传、下载、删除等操作,支持在网页上运行代码并查看结果。

jupyter

  • 左侧面板 :包括文件浏览器(可以查看、修改和创建文件)、命令面板、活动运行时和其他有用的面板。
  • 主工作区 :用于显示笔记本、文档和终端。支持多窗口、多标签页功能。
  • 顶部菜单栏 :提供文件操作、编辑、运行代码等常用功能。
  • 创建笔记本 :在文件浏览器中单击 + 按钮,选择 Notebook,然后选择你想使用的内核(例如 Python 3)。
  • 编辑和运行单元格 :在代码单元中输入代码,然后按 Shift + Enter 运行。使用 Ctrl + Enter 运行当前单元格而不跳转到下一个单元格。Alt + Enter 运行当前单元格,并在下面插入一个新单元格。
  • 保存和导出 :使用菜单栏中的 File → Save Notebook 来保存工作,或者选择 Export 选项以不同格式导出,比如 HTML 或 PDF。
  • 使用终端 :在 JupyterLab 中,你还可以打开一个终端,这对于需要访问系统命令行非常有用。点击 + 按钮然后选择 Terminal。
  • 使用文本编辑器 :JupyterLab 提供内建的文本编辑器,支持多种文件格式,适合快速编辑代码和文本文件。

内核选择

INK-Jupyter 提供多种科学内核,供科学家自行选用,也可以自行安装个性化 ipykernel 以适应不同场景的分析需求。公共内核包括:

内核名称 描述
Python 3 (ipykernel) 默认内核,集成多种科学计算模块
fermiPy 1.4.0 安装了 fermiPy 1.4.0 的内核
Julia 1.11.5 安装了 Julia 1.11.5 的内核
JUNO_PYTHON JUNO 实验软件环境下的 Python 内核
Python (LCG_107) 配置了 LCG 107 环境的 Python 内核
Python 3.12 with ROOT v6.34.04 Python 3.12 与 ROOT 6.34.4 的集成内核
ROOT C++ v6.34.04 仅 C++ 接口的 ROOT 6.34.4 内核

如有额外分析需求,可向管理员申请安装。

安装个人内核

用户也可安装个人内核到 ~/.local/share/jupyter/kernels/,建议使用模块管理工具,例如 venv 或 conda:

# Create a virtual environment
python3 -m venv ~/venvs/mykernel

# Activate the environment
source ~/venvs/mykernel/bin/activate

# Upgrade pip and install necessary packages
pip install --upgrade pip

# Build your env: pip install something

# Install ipykernel
pip install ipykernel

# Register the kernel
python -m ipykernel install --user --name mykernel --display-name "Python (mykernel)"

RootBrowse

RootBrowse 是 ROOT 文件浏览工具,支持在网页上查看文件,支持文件上传、下载、删除等操作,支持在网页上运行代码并查看结果。

应用使用新版本 ROOT 软件内置 ROOT::RBrowser() 方法,启动一个网页版 RootBrowse。与旧版通过 X11 和 C++ GUI 库实现的 TBrowse 相比,使用方式基本一致,响应速度大幅提升,并新增更多功能。

提示

RootBrowse 使用一次性链接,刷新或使用链接地址重连均无法正常打开网页,需要在 INK 网页 Jobs 界面中重新点击 Connect 获取新链接地址,链接地址刷新间隔为 1 分钟,1 分钟内重复点击也可能无法正常打开。该方法在新版本 ROOT 中提供,因此不支持 CentOS 7 系统。

rootbrowse

RootBrowse 应用提供一个网页界面来浏览和操作文件系统和 ROOT 文件。用户可以在其中打开 ROOT 文件、查看目录结构和浏览对象。

具体界面

  • 侧边栏 :显示文件系统的目录树或 ROOT 文件的内容,帮助用户导航不同的数据结构。允许用户选择不同的目录、文件或对象进行进一步操作。
  • 工具栏 :包含常用操作的快捷按钮,如打开文件、保存、刷新视图等。
  • 工作区 :显示选定的数据对象,支持多种视图模式,如数值表格、直方图、图形和其他可视化模式。
  • 属性面板 :显示选定对象的详细信息和属性,允许用户进行属性修改和设置。

功能特性

  • 多文件支持 :能够打开和浏览多个 ROOT 文件,并在它们之间切换和对比数据。
  • 动态可视化 :提供交互式图表和视觉化工具,可以动态调整数据视图。支持常见的可视化类型,如直方图、散点图、曲线图等。
  • 脚本和分析支持 :集成了 ROOT 的脚本执行能力,用户可以直接编写和运行 ROOT 的脚本以分析数据。支持 RDataFrame 等现代数据分析接口。
  • 搜索和过滤 :提供强大的搜索功能,用户可以快速查找特定对象或数据集。支持根据元数据或数据内容进行过滤。

VNC

VNC 是远程桌面协议,在网页上运行远程桌面,可视化执行代码,并直接查看结果。

本应用基于运行在计算节点的 VNC Server 服务,使用 noVNC 作为 VNC 客户端连接服务,并以 Web Server 形式转发。框架图如下:

VNC 框架图

提示

可以使用 noVNC 侧边栏传递剪切板内容;某些浏览器插件可能会接管按键,建议在 ink.ihep.ac.cn 上停用。

vnc

如需安装桌面应用,请联系管理员并说明用途、安装方式等相关信息。

OpenClaw

OpenClaw 是一个面向交互式编程、代码理解与辅助分析的网页应用。它运行在计算节点上,通过浏览器提供类智能代理的交互界面,适合进行代码阅读、脚本编写、命令执行和与本地大模型相关的辅助工作。

OpenClaw 的启动方式与其他 INK 交互应用一致:在主页的 Application 区域点击 OpenClaw 图标提交作业,在 Jobs 列表中等待作业进入可连接状态后,再点击 Connect 打开界面。

首次使用与模型配置

OpenClaw 在首次使用时需要先配置模型服务。前端弹出菜单中通常包含以下项目:

  • Template :选择一组预设的模型服务配置。如果用户之前已经保存过配置,相关模板会自动排在第一项,便于继续使用已有设置。
  • Base URL :模型服务的接口地址,OpenClaw 通过该地址连接对应的大模型提供方。
  • API Key :访问模型服务所需的密钥,用于身份认证。
  • API Name :模型服务所使用的接口协议类型,例如 openai-completions 或 anthropic-messages。
  • Model ID :实际使用的模型名称或标识,例如 hepai/deepseek-v3.2。
  • Mount experiment data :是否在作业中挂载实验数据目录。

用户确认配置后,系统会将模型配置同步到个人 OpenClaw 工作目录。后续再次启动 OpenClaw 时,将优先读取用户上一次保存的有效配置。

IHEP 本地化配置与数据安全

INK 中的 OpenClaw 针对 IHEP 环境做了专门适配,主要包括以下特性:

  • 提供若干预设模板,便于快速选择常用模型服务。
  • 用户已保存的配置会在模板列表中优先显示,减少重复输入。
  • OpenClaw 的连接地址采用 token 方式认证,用户通过 INK 的 Connect 进入后,一般不需要再手动完成设备配对。
  • 用户配置会保存在个人 scratch 工作区对应的 OpenClaw 目录中,后续作业可复用这些设置。

当 Mount experiment data 关闭时,用户可以使用本地模型或外部模型服务;当该选项开启时,系统只允许使用 IHEP 本地模型,以避免实验数据通过外部模型服务传输。当前本地模型的一般形式为:

  • Base URL = https://aiapi.ihep.ac.cn/apiv2
  • Model ID 以 hepai/ 开头

如果启用了实验数据挂载,但所填写的模型配置不满足上述条件,系统会拒绝保存该配置。

使用建议

  • 如需处理实验数据、内部代码或其他敏感内容,建议优先选择 IHEP 本地模型,并开启 Mount experiment data 。
  • 如只进行通用代码生成、文本整理或公开信息处理,可根据需要选择外部模型服务。
  • 修改模型配置后,新配置会在后续启动 OpenClaw 时继续生效。
  • 如果作业已启动但暂时不能连接,可在 Jobs 页面使用 Refresh 刷新状态,待 Connect 出现后再进入。

opencode(编程助手)

opencode 是基于 opencode v1.17.16 的 PR 构建版本(anomalyco/opencode#28326,支持 --base-path),以 Web 模式运行在计算节点上,通过浏览器提供代码理解、编辑、命令执行等交互式编程能力。

opencode 的启动方式与其他 INK 交互应用一致:在主页的 Application 区域点击 opencode 图标提交作业,在 Jobs 列表中等待作业进入可连接状态后,再点击 Connect 打开界面。

添加项目

首次使用时需要添加项目目录。点击主界面中的 添加项目 按钮,选择或输入项目路径。

注意

请勿将 /afs/ihep.ac.cn/users/.../(即 ~/)等过大的目录指定为项目根目录。项目过大将导致 opencode 内存占用过高,Slurm 作业可能被 hold;同时项目路径不支持符号链接,部分用户选择 ~/ 后页面会崩溃。如遇此情况,可通过清除浏览器中该网址的站点存储数据来恢复:

  • Chrome :打开 opencode 页面 → 按 F12 → Application → Storage → 点击 Clear site data
  • Firefox :打开 opencode 页面 → 按 F12 → Storage → 右键点击该网址 → Delete All

新建会话

在项目页面点击 新建会话 即可开启新的对话。每个会话独立保存对话历史,用户可根据不同任务创建多个会话,便于切换工作上下文。

连接模型

在会话界面点击 设置 ,配置模型服务:

  • Base URL :模型服务接口地址,IHEP 本地模型使用 https://aiapi.ihep.ac.cn/apiv2
  • API Key :模型服务的认证密钥
  • Model :选择使用的模型,IHEP 本地模型 ID 以 hepai/ 开头

此外,opencode 官方提供免费模型服务 OpenCode Zen ,包含 deepseek、minimax 等开源模型,默认模型为 Big Pickle 。具体配置方法可参考 OpenCode Zen 文档。 注意 :OpenCode Zen 的模型提供商位于海外,如需处理敏感信息(实验数据、内部代码等),建议优先使用 IHEP 本地模型。

对话与审批

配置完成后即可在对话框中输入指令,opencode 会根据任务类型自动调用工具(读写文件、执行命令等)。出于便捷性考虑,opencode 默认采用宽松权限策略,项目内的文件读写和 Shell 命令执行均 无需审批 ,自动执行。仅当访问项目外路径(external_directory)或检测到重复无效调用(doom_loop)时,才会触发审批机制。用户也可根据需要在配置中调整各级权限规则。

Build 模式与 Plan 模式

opencode 提供两种工作模式:

  • Plan 模式 :只读模式,AI 仅进行分析、规划和回答,不执行任何文件修改或命令。适合代码阅读、方案设计等场景。
  • Build 模式 :完整模式,AI 可以读取文件、执行命令、修改代码等。适合实际的代码开发和调试工作。

用户可在对话框中通过指令或界面按钮切换模式。

注意

opencode v1.18.0 及以上版本采用了新的界面布局,模式切换入口有所调整。建议用户在 配置 → 通用 → 高级 中开启 显示智能体,以便在会话界面中显示并切换 build / plan 模式,避免不必要的错误操作。

默认执行权限

opencode 默认权限策略为宽松模式(permissive),绝大多数操作无需审批即可自动执行:

  • read / edit / bash / glob / grep 等:默认 allow(自动执行),其中 .env 文件读取默认拒绝
  • external_directory:访问项目工作目录以外的路径,默认 ask(需审批)
  • doom_loop:检测到同一操作连续重复 3 次,默认 ask(需审批)

用户可在项目配置文件(opencode.json)中通过 permission 字段自定义权限规则,将特定操作设为 allow / ask / deny。具体配置方法可参考 opencode 权限文档。

配置与数据存储

opencode 的配置文件和数据存储在以下路径:

  • 全局配置 :~/.config/opencode/opencode.json
  • 项目配置 :项目根目录下的 opencode.json 或 .opencode/ 目录
  • 数据存储 :~/.local/share/opencode/(包含认证信息、日志、会话数据等)
  • 缓存 :~/.cache/opencode/

由于 AFS home 目录默认空间仅 500MB,如果上述路径占用过大,用户可将实际文件夹移至其他存储位置(如 /scratchfs),然后在原路径创建软链接指向新位置:

# 示例:将 opencode 数据目录移到 scratchfs
mv ~/.local/share/opencode /scratchfs/<group>/<username>/opencode_data
ln -s /scratchfs/<group>/<username>/opencode_data ~/.local/share/opencode

会话隔离

opencode 的会话数据存储在 ~/.local/share/opencode/ 目录下。如果用户同时使用 INK 中的 opencode Web 版和登录节点 Shell 中的 opencode CLI 版,且希望两边的会话互不干扰,可在 Shell 中通过设置 XDG_DATA_HOME 环境变量来指定独立的数据目录:

# 在 Shell 中使用独立的数据目录
export XDG_DATA_HOME=/scratchfs/<group>/<username>/.local_share_cli
opencode

这样 Shell 中的 opencode 将使用 /scratchfs/<group>/<username>/.local_share_cli/opencode/ 作为数据目录,与 INK Web 版的会话完全隔离。

OpenChamber

OpenChamber 是开源的 AI 编程助手平台,功能与 opencode 基本一致。在计算平台上,OpenChamber 作为 INK 交互应用运行在计算节点上,通过浏览器提供代码理解、代码编写、命令执行、程序调试等交互式编程能力,适合开展日常代码开发与数据分析工作。

启动方式

OpenChamber 的启动方式与其他 INK 交互应用一致:在主页的 Application 区域点击 OpenChamber 图标提交作业,在 Jobs 列表中等待作业进入可连接状态后,再点击 Connect 打开界面。

提示

作业刚提交时 Connect 可能不显示,可通过 Refresh 刷新作业状态,待界面可用后再进入。

添加项目

首次使用时需要添加项目目录。点击主界面中的 添加项目 按钮,选择或输入项目路径。

注意

请勿将 /afs/ihep.ac.cn/users/.../(即 ~/)等过大的目录指定为项目根目录。项目过大将导致 OpenChamber 内存占用过高,Slurm 作业可能被 hold;同时项目路径不支持符号链接,部分用户选择 ~/ 后页面会崩溃。如遇此情况,可通过清除浏览器中该网址的站点存储数据来恢复。

新建会话

在项目页面点击 新建会话 即可开启新的对话。每个会话独立保存对话历史,用户可根据不同任务创建多个会话,便于切换工作上下文。

连接模型

在会话界面点击 设置 ,配置模型服务:

  • Base URL :模型服务接口地址,IHEP 本地模型使用 https://aiapi.ihep.ac.cn/apiv2
  • API Key :模型服务的认证密钥
  • Model :选择使用的模型,IHEP 本地模型 ID 以 hepai/ 开头

此外,OpenChamber 也提供免费的模型服务 OpenCode Zen ,包含 deepseek、minimax 等开源模型,具体配置方法可参考 OpenCode Zen 文档。 注意 :OpenCode Zen 的模型提供商位于海外,如需处理敏感信息(实验数据、内部代码等),建议优先使用 IHEP 本地模型。

对话与审批

配置完成后即可在对话框中输入指令,OpenChamber 会根据任务类型自动调用工具(读写文件、执行命令等)。出于便捷性考虑,OpenChamber 默认采用宽松权限策略,项目内的文件读写和 Shell 命令执行均 无需审批 ,自动执行。仅当访问项目外路径(external_directory)或检测到重复无效调用(doom_loop)时,才会触发审批机制。用户也可根据需要在配置中调整各级权限规则。

Build 模式与 Plan 模式

OpenChamber 提供两种工作模式:

  • Plan 模式 :只读模式,AI 仅进行分析、规划和回答,不执行任何文件修改或命令。适合代码阅读、方案设计等场景。
  • Build 模式 :完整模式,AI 可以读取文件、执行命令、修改代码等。适合实际的代码开发和调试工作。

用户可在对话框中通过指令或界面按钮切换模式。

默认执行权限

OpenChamber 默认权限策略为宽松模式(permissive),绝大多数操作无需审批即可自动执行:

  • read / edit / bash / glob / grep 等:默认 allow(自动执行),其中 .env 文件读取默认拒绝
  • external_directory:访问项目工作目录以外的路径,默认 ask(需审批)
  • doom_loop:检测到同一操作连续重复 3 次,默认 ask(需审批)

用户可在项目配置文件(opencode.json)中通过 permission 字段自定义权限规则,将特定操作设为 allow / ask / deny。具体配置方法可参考 opencode 权限文档。

配置与数据存储

OpenChamber 的配置文件和数据存储在以下路径:

  • 全局配置 :~/.config/opencode/opencode.json
  • 项目配置 :项目根目录下的 opencode.json 或 .opencode/ 目录
  • 数据存储 :~/.local/share/opencode/(包含认证信息、日志、会话数据等)
  • 缓存 :~/.cache/opencode/

由于 AFS home 目录默认空间仅 500MB,如果上述路径占用过大,用户可将实际文件夹移至其他存储位置(如 /scratchfs),然后在原路径创建软链接指向新位置:

# 示例:将 OpenChamber 数据目录移到 scratchfs
mv ~/.local/share/opencode /scratchfs/<group>/<username>/opencode_data
ln -s /scratchfs/<group>/<username>/opencode_data ~/.local/share/opencode

会话隔离

OpenChamber 的会话数据存储在 ~/.local/share/opencode/ 目录下。如果用户同时使用 INK 中的 OpenChamber Web 版和登录节点 Shell 中的 opencode CLI 版,且希望两边的会话互不干扰,可在 Shell 中通过设置 XDG_DATA_HOME 环境变量来指定独立的数据目录:

# 在 Shell 中使用独立的数据目录
export XDG_DATA_HOME=/scratchfs/<group>/<username>/.local_share_cli
opencode

这样 Shell 中的 opencode 将使用 /scratchfs/<group>/<username>/.local_share_cli/opencode/ 作为数据目录,与 INK Web 版的会话完全隔离。

6.4 常见问题

  • 作业无法提交成功

    如果用户的 rc 文件(.bashrc、.tcshrc 等)中包含阻塞式输入或类似的执行程序,INK 在使用用户身份提交作业或创建文件可能会失败。

    解决方案:在 rc 文件中添加非交互式会话防护,如果是非交互式会话登录,则退出 rc。代码如下:

    • BASH
      [[ $- != *i* ]] && return
      
    • ZSH
      if [[ ! -o interactive ]]; then
          return
      fi
      
    • TCSH/CSH
      if (! $?prompt) then
          exit
      endif
      
  • 初次登录后 Kerberos 报错

    error

    解决方法:点击右上角头像,退出登录,关闭浏览器重新登录即可。

其余问题见常见问题。

🤖 AI 助手
💬 快速提问 ×

有问题?输入后跳转到对话页继续交流