在 DeepSeek Harness 里操作超算互联网(SCNet):配置 SSH、管理 Slurm 作业、查询 OpenAPI 区域和文件、检查 Notebook 资源与实例,并保留海光 DCU/DTK 诊断能力。
当前版本:**0.6.15** ## 0.6.15 更新 - Windows 凭据条目编码损坏时给出清晰、隐藏秘密的恢复指引。 - 配置结束后提供可从任意目录运行的绝对路径命令,正确处理空格和 shell 特殊字符。 - 将首次使用准备清单同步到两个分发仓库的中英文 README,明确 Windows 原生 OpenAPI 支持,并为两种目录布局增加文档生成回归检查。 > 本项目是独立维护的社区项目,与 DeepSeek Harness 兼容,但不是 DeepSeek 官方产品,也不表示 DeepSeek 对本项目提供背书、合作或授权。 ## 第一次使用,需要准备什么? 建议先用 **OpenAPI** 完成查询和作业管理;需要远程编译、安装环境或执行 shell 时再配置 SSH。 | 连接方式 | 需要填写 | 从哪里获取 | | --- | --- | --- | | OpenAPI(默认) | 平台用户名、AK、SK | 登录 SCNet → 个人中心 → 访问控制 → 生成并下载授权码;AK/SK 分别取文件的 `Accesskey` / `Secretkey` 列 | | SSH(按需) | 目标集群、集群/Linux 用户名、私钥文件路径 | 控制台选择目标区域 → 命令行 E-Shell → 左上角 SSH 连接 → 下载私钥并核对域名、端口;用户名可用网页 E-Shell 的 `whoami` 核对 | 账号需已开通目标区域资源。两种凭据独立,按当前任务准备即可;阅读说明、离线准备无需凭据。 **AK/SK 只在本机终端的隐藏输入框填写;SSH 填下载文件路径,不要将密钥或私钥正文发到聊天。** 向 Agent 说“帮我首次配置 scnet-hpc”即可;Skill 会先说明所需字段及获取位置,再给当前系统、 实际安装目录对应的本机命令。详见[首次使用清单](skills/scnet-hpc/references/first-use.md)。 ## 这是什么 一个 DeepSeek Harness bundle 插件,把 `scnet-hpc` 的 Agent Skill 和 bash 脚本包装成 DSH 可安装包。装好后 DSH 模型在涉及超算集群、Slurm 作业、海光 DCU/DTK 时会加载对应 skill,并可调用工具完成确定性操作。 ## 安装 推荐从 npm 安装: ```sh dsh plugin --profile web add dsh-scnet ``` git 源、本地目录安装以及验证步骤见[安装说明](./docs/installation.zh-CN.md)。 ## 能力面 ### Skills | Skill | 作用 | |---|---| | scnet-hpc | 国产超算使用规范:连接、提交/监控、调试、失败排查、海光 DCU/DTK 资源索引 | ### 内置集群 | 短名 | 描述 | 加速器 | |---|---|---| | zzeshell | 超算互联网 · 郑州 | 海光 BW1000 DCU (gfx936) ×8, 64GB/卡 | | kseshell | 超算互联网 · 昆山 | 海光 Z100 DCU (gfx906) ×4, 16GB/卡 | | wuzhshell | 超算互联网 · 乌镇 | 海光 Z100 DCU (gfx906) ×4, 16GB/卡 | | xianshell | 超算互联网 · 西安 | 海光 Z100 DCU (gfx906) ×4, 16GB/卡 | ### Tools | 工具 | 说明 | |---|---| | scnet_list_clusters | 列出已配置的集群 profile | | scnet_show_cluster | 读取指定集群的完整参数 | | scnet_generate_job | 按 profile 生成加速器或 CPU-only Slurm 作业,支持显式分区覆盖 | | scnet_setup_ssh | 配置本地到集群的 SSH 连接 | | scnet_probe_cluster | 探测新集群并生成 profile | | scnet_refresh_cluster | 动态刷新已有集群的规则缓存 | | scnet_run_compute_probe | 在计算节点运行最小能力探针 | | scnet_status | 只读查看 backend、SSH profile 和 OpenAPI 配置 | | scnet_openapi_regions | 列出授权 OpenAPI 区域,不暴露 token | | scnet_account_summary | 查询账户状态和余额 | | scnet_resource_summary | 汇总区域队列和资源限制 | | scnet_job_queues | 查询区域 Slurm 队列和实时空闲资源 | | scnet_job_list | 紧凑列出当前或历史作业 | | scnet_limits | 查询用户和调度器资源限制 | | scnet_submit_job | 通过 OpenAPI 或 SSH 提交作业;dry_run=true 只预览请求 | | scnet_job_show | 查询单个作业的状态、资源与日志路径 | | scnet_job_wait | 在限定时间内等待作业进入终态 | | scnet_job_logs | 按显式 path,或按 job_id + work_dir 读取作业日志 | | scnet_job_cancel | 取消作业;dry_run=true 只预览请求 | | scnet_file_list | 通过通用文件 API 列出共享存储 | | scnet_file_transfer | 上传或下载单个文件,默认不覆盖 | | scnet_notebook_regions | 列出支持 Notebook 的区域 | | scnet_notebook_resources | 查询 Notebook CPU/GPU/DCU 资源 | | scnet_notebook_list | 列出 Notebook 实例并脱敏敏感字段 | | scnet_notebook_show | 查询一个脱敏后的 Notebook 实例详情 | ## 文档 - [安装说明](./docs/installation.zh-CN.md) - [测试说明](./docs/testing.zh-CN.md) ## 结构 ``` . ├── package.json # dsh.bundle manifest ├── cordis.patch.yml # bundle 组合层 ├── index.mjs # Cordis 入口,注册 7 个工具 ├── skills/scnet-hpc/ │ ├── clusters/ │ │ ├── zzeshell.conf │ │ ├── kseshell.conf │ │ ├── wuzhshell.conf │ │ └── xianshell.conf │ ├── scripts/ │ │ ├── scnet_backends/ │ │ └── scnet_sdk/ │ └── references/ ├── sync.sh # 从 canonical 仓库同步 ├── README.md # 英文默认说明 ├── README_CN.md # 中文说明 ├── docs/ # 中英文安装与测试文档 ├── LICENSE └── .gitignore ``` ## 同步 本仓库是发布面,知识内容(`skills/scnet-hpc/` 下的 SKILL.md、clusters、references、scripts)从 canonical 仓库 `lql341/scnet-hpc` 同步: ```sh ./sync.sh # 当前本机布局默认 ../../skills/scnet-hpc ./sync.sh --src /path/to/scnet-hpc ``` 只改 canonical,本仓库跑 sync 更新;不要把 `skills/scnet-hpc/` 当手工维护目录。 `sync.sh` 会自动排除 `scripts/install.sh` 和 `clusters/.cache/`,避免把安装脚本或本机动态缓存打进发布包。 发布只需在 canonical 仓库更新一次 `VERSION` 与版本亮点,CI 会同步两个分发仓库。下游同步 PR 校验通过后自动合并;合并产生的 `main` push 会校验并打包 bundle,以对应的 `latest` 或 `next` 标签发布 npm package,并创建匹配的 Git tag 与 GitHub Release。不要只修改 `package.json`;canonical `VERSION` 仍是唯一版本来源。 该 workflow 使用 GitHub OIDC 的 npm Trusted Publishing,因此应保留账号的 2FA/Passkey, 不需要长期保存 `NPM_TOKEN`。首次使用 OIDC 发布前,请在 npm package 设置中把 `lql341/dsh-scnet` 与 `.github/workflows/publish.yml` 配置为 trusted publisher。只有无法 启用 Trusted Publishing 时,才考虑使用具备 2FA bypass 的 granular read/write token。 ## 隐私与安全 - 仓库不含私钥、token、用户名、密钥指纹。 - `scnet_setup_ssh` 会写入 `~/.ssh/`,调用前确认私钥路径和集群。 - `scnet_generate_job` 生成的 `.slurm` 可能含本机用户名,`.gitignore` 已排除。 - SSH 接入端点仅使用平台面向用户公开提供的信息,由 canonical 仓库维护。 - `scnet_refresh_cluster` / `scnet_run_compute_probe` 会 SSH 到远端并可能提交作业;运行前确认集群和副作用。 - 新增 OpenAPI 和 Notebook DSH 工具均为只读;Notebook 生命周期变更仍通过 Skill CLI 的确认流程执行。 - Notebook 密码和带凭据的 URL 查询参数默认脱敏。 - `clusters/.cache/` 是本机动态探测缓存,`.gitignore` 已排除,不应提交。 ## License 本项目采用 [MIT License](LICENSE) 开源。除许可证正文另有规定外,使用者可以自由使用、复制、修改、合并、发布、再许可和销售本项目及其衍生作品。 再发布本项目或其重要组成部分时,应保留版权声明和 MIT 许可声明。本项目按“现状”提供,不对适销性、特定用途适用性或不侵权作任何明示或默示保证;使用者应自行评估 DSH bundle、skill 说明、集群配置、脚本和生成结果在其环境中的适用性与风险。 项目命名与归属声明遵循 [DeepSeek Harness 品牌素材使用规范](https://github.com/deepseek-ai/deepseek-harness/blob/dsh-v0.1.0-rc.8/BRAND_GUIDELINES.zh.md)。 ## 版本管理 npm package 版本与 `skills/scnet-hpc/VERSION` 保持一致,并与源 Skill 使用同一套 SemVer 发布版本。`@deepseek-ai/dsh-tools` 是可选 peer dependency:运行时副本由 DSH 提供, `devDependencies` 只为本地校验提供同一版本,不能作为插件运行时的第二份副本。