{"_id":"@artificialnotimbecile/dsh-remote-runtime","_rev":"3-09e5d26c19651e852dedb2d0b74220c2","name":"@artificialnotimbecile/dsh-remote-runtime","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@artificialnotimbecile/dsh-remote-runtime","version":"0.1.0","keywords":["deepseek","deepseek-harness","dsh","dsh-plugin","cordis","remote-runtime","remote-development","ssh","ai-agents"],"license":"MIT","_id":"@artificialnotimbecile/dsh-remote-runtime@0.1.0","maintainers":[{"name":"happygoluckin","email":"luoyongxiang6370@gmail.com"}],"homepage":"https://github.com/ArtificialNotImbecile/dsh-remote-runtime#readme","bugs":{"url":"https://github.com/ArtificialNotImbecile/dsh-remote-runtime/issues"},"bin":{"dsh-remote":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"],"platform":"web"}},"dist":{"shasum":"ac2f5da2391ff74266588c863e41e97040a6a9f3","tarball":"https://registry.npmjs.org/@artificialnotimbecile/dsh-remote-runtime/-/dsh-remote-runtime-0.1.0.tgz","fileCount":68,"integrity":"sha512-rkEdJCZtj/IY6vC0xAxQRK7s8k0JMvJdSTf0cp1J5t1GEUKCjn+mvbQRR1evaYKEiJlziMkodpDvt9lsWKy/Tw==","signatures":[{"sig":"MEQCIDi/3HnR7nmgx2f2+73wQE5zF+bEZ4n9zWiUP3AI7fESAiALc3UHW6Tf2MDRkb33S2UOfHuoiJ2gnyR2FS1rbr4AMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4540293},"main":"./lib/index.js","type":"module","types":"./lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./types":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./client":{"types":"./lib/client-types/client/index.d.ts","default":"./lib/client.js"},"./remote":{"types":"./lib/typert.remote-client.d.ts","default":"./lib/typert.remote-client.js"},"./typert":{"types":"./lib/typert.host.d.ts","default":"./lib/typert.host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"a9f2f7e8d33227efd19b523212ba47a1c9a7b515","scripts":{"test":"vitest run --config vitest.config.ts","build":"pnpm run clean && pnpm run build:host && pnpm run build:client","check":"pnpm run typecheck && pnpm run test && pnpm run build && pnpm run pack:check","clean":"rimraf lib","prepack":"pnpm run test && pnpm run build && pnpm run pack:check","prepare":"pnpm run build","test:live":"node scripts/test-live.mjs","typecheck":"pnpm run clean && tsc -b tsconfig.host.json --pretty false && pnpm run generate:typert && tsc -b tsconfig.client.json --pretty false","build:host":"tsc -b tsconfig.host.json && tsdown --config tsdown.host.config.ts && pnpm run generate:typert","pack:check":"node scripts/check-package.mjs","runtime:abi":"node scripts/check-runtime-abi.mjs","build:client":"tsc -b tsconfig.client.json && tsdown --config tsdown.client.config.ts","runtime:build":"node scripts/build-runtime.mjs","runtime:verify":"node scripts/verify-runtime.mjs","generate:typert":"node scripts/generate-typert.mjs","test:dsh-install":"node scripts/test-dsh-install.mjs","runtime:fingerprint":"node scripts/fingerprint-runtime.mjs"},"_npmUser":{"name":"happygoluckin","email":"luoyongxiang6370@gmail.com"},"repository":{"url":"git+https://github.com/ArtificialNotImbecile/dsh-remote-runtime.git","type":"git"},"_npmVersion":"11.19.0","description":"Managed, isolated DeepSeek Harness runtimes over OpenSSH with a native Web control surface.","directories":{},"_nodeVersion":"24.14.0","dependencies":{"zod":"4.4.3","undici":"7.16.0","@deepseek-ai/schemastery":"3.18.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"jsdom":"29.1.1","react":"18.3.1","rimraf":"6.1.2","tsdown":"0.22.2","vitest":"4.1.8","react-dom":"18.3.1","typescript":"6.0.3","@types/node":"22.20.0","@types/react":"18.3.28","lightningcss":"1.30.2","@types/react-dom":"18.3.7","@deepseek-ai/cordis":"4.0.1","@testing-library/react":"16.3.2","@deepseek-ai/dsh-api-remotes":"0.1.0-rc.8","@deepseek-ai/dsh-client-locale":"0.1.0-rc.8","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.8","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.8","@deepseek-ai/dsh-typert-generator":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.8","@deepseek-ai/dsh-client-test-runtime":"0.1.0-rc.8"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-api-remotes":"0.1.0-rc.8","@deepseek-ai/dsh-client-locale":"0.1.0-rc.8","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.8","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.8"},"_npmOperationalInternal":{"tmp":"tmp/dsh-remote-runtime_0.1.0_1787293411063_0.9314631548505894","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@artificialnotimbecile/dsh-remote-runtime","version":"0.1.1","keywords":["deepseek","deepseek-harness","dsh","dsh-plugin","cordis","remote-runtime","remote-development","ssh","ai-agents"],"license":"MIT","_id":"@artificialnotimbecile/dsh-remote-runtime@0.1.1","maintainers":[{"name":"happygoluckin","email":"luoyongxiang6370@gmail.com"}],"homepage":"https://github.com/ArtificialNotImbecile/dsh-remote-runtime#readme","bugs":{"url":"https://github.com/ArtificialNotImbecile/dsh-remote-runtime/issues"},"bin":{"dsh-remote":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"],"platform":"web"}},"dist":{"shasum":"ad45b44611102cb18bf0e1baf8b46dc7f236adbe","tarball":"https://registry.npmjs.org/@artificialnotimbecile/dsh-remote-runtime/-/dsh-remote-runtime-0.1.1.tgz","fileCount":68,"integrity":"sha512-xuHiIUuT65fHX/DaAtSHnIMkNg8DZSWYDm4R5bneo1aB5yksHx/10X+1EVbXVWX+cPmhkzsD3WlGYNp4uHdx+w==","signatures":[{"sig":"MEYCIQCFCz5i93lgGvJbNsjVM+ZTVVVVQQWXaC5d+X6Yqa9JXQIhAIef3qw9/4DRHFxSZoPXmIL6dXl6Cmm+4m9JQ581OqfR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@artificialnotimbecile%2fdsh-remote-runtime@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4540895},"main":"./lib/index.js","type":"module","types":"./lib/types/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./types":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./client":{"types":"./lib/client-types/client/index.d.ts","default":"./lib/client.js"},"./remote":{"types":"./lib/typert.remote-client.d.ts","default":"./lib/typert.remote-client.js"},"./typert":{"types":"./lib/typert.host.d.ts","default":"./lib/typert.host.js"},"./package.json":"./package.json","./cordis.patch.yml":"./cordis.patch.yml"},"gitHead":"d1ccb7d309e0d4fb5feb7f5ffd87742ebdb232f1","scripts":{"test":"vitest run --config vitest.config.ts","build":"pnpm run clean && pnpm run build:host && pnpm run build:client","check":"pnpm run typecheck && pnpm run test && pnpm run build && pnpm run pack:check","clean":"rimraf lib","prepack":"pnpm run test && pnpm run build && pnpm run pack:check","prepare":"pnpm run build","test:live":"node scripts/test-live.mjs","typecheck":"pnpm run clean && tsc -b tsconfig.host.json --pretty false && pnpm run generate:typert && tsc -b tsconfig.client.json --pretty false","build:host":"tsc -b tsconfig.host.json && tsdown --config tsdown.host.config.ts && pnpm run generate:typert","pack:check":"node scripts/check-package.mjs","runtime:abi":"node scripts/check-runtime-abi.mjs","build:client":"tsc -b tsconfig.client.json && tsdown --config tsdown.client.config.ts","runtime:build":"node scripts/build-runtime.mjs","runtime:verify":"node scripts/verify-runtime.mjs","generate:typert":"node scripts/generate-typert.mjs","test:dsh-install":"node scripts/test-dsh-install.mjs","runtime:fingerprint":"node scripts/fingerprint-runtime.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:11af962b-086d-4d75-a3a7-15f16d8561fd"}},"repository":{"url":"git+https://github.com/ArtificialNotImbecile/dsh-remote-runtime.git","type":"git"},"_npmVersion":"11.19.0","description":"Managed, isolated DeepSeek Harness runtimes over OpenSSH with a native Web control surface.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"4.4.3","undici":"7.16.0","@deepseek-ai/schemastery":"3.18.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/","provenance":true},"_hasShrinkwrap":false,"packageManager":"pnpm@11.7.0","devDependencies":{"jsdom":"29.1.1","react":"18.3.1","rimraf":"6.1.2","tsdown":"0.22.2","vitest":"4.1.8","react-dom":"18.3.1","typescript":"6.0.3","@types/node":"22.20.0","@types/react":"18.3.28","lightningcss":"1.30.2","@types/react-dom":"18.3.7","@deepseek-ai/cordis":"4.0.1","@testing-library/react":"16.3.2","@deepseek-ai/dsh-api-remotes":"0.1.0-rc.8","@deepseek-ai/dsh-client-locale":"0.1.0-rc.8","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.8","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.8","@deepseek-ai/dsh-typert-generator":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.8","@deepseek-ai/dsh-client-test-runtime":"0.1.0-rc.8"},"peerDependencies":{"react":"^18.2.0","react-dom":"^18.2.0","@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-api-remotes":"0.1.0-rc.8","@deepseek-ai/dsh-client-locale":"0.1.0-rc.8","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.8","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.8"},"_npmOperationalInternal":{"tmp":"tmp/dsh-remote-runtime_0.1.1_1787294512893_0.13234131938140203","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@artificialnotimbecile/dsh-remote-runtime","version":"0.1.2","description":"Managed, isolated DeepSeek Harness runtimes over OpenSSH with a native Web control surface.","type":"module","main":"./lib/index.js","types":"./lib/types/index.d.ts","bin":{"dsh-remote":"lib/cli.js"},"exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client-types/client/index.d.ts","default":"./lib/client.js"},"./types":{"types":"./lib/types/types.d.ts","default":"./lib/types.js"},"./remote":{"types":"./lib/typert.remote-client.d.ts","default":"./lib/typert.remote-client.js"},"./typert":{"types":"./lib/typert.host.d.ts","default":"./lib/typert.host.js"},"./cordis.patch.yml":"./cordis.patch.yml","./package.json":"./package.json"},"scripts":{"clean":"rimraf lib","build":"pnpm run clean && pnpm run build:host && pnpm run build:client","generate:typert":"node scripts/generate-typert.mjs","build:host":"tsc -b tsconfig.host.json && tsdown --config tsdown.host.config.ts && pnpm run generate:typert","build:client":"tsc -b tsconfig.client.json && tsdown --config tsdown.client.config.ts","typecheck":"pnpm run clean && tsc -b tsconfig.host.json --pretty false && pnpm run generate:typert && tsc -b tsconfig.client.json --pretty false","test":"vitest run --config vitest.config.ts","check":"pnpm run typecheck && pnpm run test && pnpm run build && pnpm run pack:check","pack:check":"node scripts/check-package.mjs","runtime:build":"node scripts/build-runtime.mjs","runtime:verify":"node scripts/verify-runtime.mjs","runtime:abi":"node scripts/check-runtime-abi.mjs","runtime:fingerprint":"node scripts/fingerprint-runtime.mjs","test:dsh-install":"node scripts/test-dsh-install.mjs","test:live":"node scripts/test-live.mjs","prepare":"pnpm run build","prepack":"pnpm run test && pnpm run build && pnpm run pack:check"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-settings","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-api-remotes"]}},"publishConfig":{"access":"public","provenance":true,"registry":"https://registry.npmjs.org/"},"repository":{"type":"git","url":"git+https://github.com/ArtificialNotImbecile/dsh-remote-runtime.git"},"bugs":{"url":"https://github.com/ArtificialNotImbecile/dsh-remote-runtime/issues"},"homepage":"https://github.com/ArtificialNotImbecile/dsh-remote-runtime#readme","keywords":["deepseek","deepseek-harness","dsh","dsh-plugin","cordis","remote-runtime","remote-development","ssh","ai-agents"],"license":"MIT","packageManager":"pnpm@11.7.0","engines":{"node":"^22.19.0 || >=24.0.0"},"peerDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-api-remotes":"0.1.0-rc.8","@deepseek-ai/dsh-client-locale":"0.1.0-rc.8","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.8","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.8","react":"^18.2.0","react-dom":"^18.2.0"},"dependencies":{"@deepseek-ai/schemastery":"3.18.1","undici":"7.16.0","zod":"4.4.3"},"devDependencies":{"@deepseek-ai/cordis":"4.0.1","@deepseek-ai/dsh-api-remotes":"0.1.0-rc.8","@deepseek-ai/dsh-client-locale":"0.1.0-rc.8","@deepseek-ai/dsh-client-runtime":"0.1.0-rc.8","@deepseek-ai/dsh-client-test-runtime":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-settings":"0.1.0-rc.8","@deepseek-ai/dsh-client-ui-slots":"0.1.0-rc.8","@deepseek-ai/dsh-typert-generator":"0.1.0-rc.8","@deepseek-ai/dsh-typert-protocol":"0.1.0-rc.8","@testing-library/react":"16.3.2","@types/node":"22.20.0","@types/react":"18.3.28","@types/react-dom":"18.3.7","jsdom":"29.1.1","lightningcss":"1.30.2","react":"18.3.1","react-dom":"18.3.1","rimraf":"6.1.2","tsdown":"0.22.2","typescript":"6.0.3","vitest":"4.1.8"},"gitHead":"c2ce388a11c59bbbf8915307c3b43053fe1fed4c","_id":"@artificialnotimbecile/dsh-remote-runtime@0.1.2","_nodeVersion":"24.19.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-56sJun7iLCcdufIvy37FHkxqz0UWhKtLF0FX2fWQQgzbZB3ulMX98PjGUZ9B0ICHezMmPCY6QglLcO0fQt1A8Q==","shasum":"2681c824935c1a37d75b8a3aeff70b5161838cac","tarball":"https://registry.npmjs.org/@artificialnotimbecile/dsh-remote-runtime/-/dsh-remote-runtime-0.1.2.tgz","fileCount":68,"unpackedSize":4528421,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@artificialnotimbecile%2fdsh-remote-runtime@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCYsAJqaucFOWMoSal4F1oqs7mLsJ2ocVZZmcbu90SDxQIgPfQHxVah0wsUWWvgomtMwUp8nhQlYTKD4P/T2VJ0Nns="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:11af962b-086d-4d75-a3a7-15f16d8561fd"}},"directories":{},"maintainers":[{"name":"happygoluckin","email":"luoyongxiang6370@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-remote-runtime_0.1.2_1787295629419_0.31574018899588374"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-21T06:23:30.812Z","modified":"2026-08-21T07:00:29.952Z","0.1.0":"2026-08-21T06:23:31.286Z","0.1.1":"2026-08-21T06:41:53.150Z","0.1.2":"2026-08-21T07:00:29.642Z"},"bugs":{"url":"https://github.com/ArtificialNotImbecile/dsh-remote-runtime/issues"},"license":"MIT","homepage":"https://github.com/ArtificialNotImbecile/dsh-remote-runtime#readme","keywords":["deepseek","deepseek-harness","dsh","dsh-plugin","cordis","remote-runtime","remote-development","ssh","ai-agents"],"repository":{"type":"git","url":"git+https://github.com/ArtificialNotImbecile/dsh-remote-runtime.git"},"description":"Managed, isolated DeepSeek Harness runtimes over OpenSSH with a native Web control surface.","maintainers":[{"name":"happygoluckin","email":"luoyongxiang6370@gmail.com"}],"readme":"# DSH Remote Runtime\n\n[English](README.md) | 简体中文\n\n**在 Linux 主机上运行一套隔离的官方 DeepSeek Harness，并通过 OpenSSH 管理。** 这是面向 DSH `0.1.0-rc.8` Web UI 的独立社区插件，提供远端配置、Doctor、已校验运行时安装、隧道、工作区、凭据和 Session 历史；不修改 Harness 源码。\n\nSSH、文件、进程与秘密全部留在插件 Host 侧。浏览器只接收有界 JSON 摘要，永远不会读回已保存凭据。\n\n## 真实演示\n\n素材来自真实 OpenSSH 托管运行时，并使用了真实 DeepSeek API 凭据。Key 在录制前由 Host 导入，从未进入浏览器、截图、GIF、日志或仓库。\n\n<p align=\"center\">\n  <img src=\"docs/assets/readme/remote-runtime-demo.gif\" alt=\"已连接配置、Doctor、凭据状态、工作区、真实 DeepSeek Session 与远端 Harness 界面\" width=\"960\">\n</p>\n\n<details>\n<summary><strong>更多截图</strong></summary>\n\n<table>\n  <tr>\n    <td><img src=\"docs/assets/readme/connected-profile.png\" alt=\"已连接配置\"><br><sub>已连接配置与运行时</sub></td>\n    <td><img src=\"docs/assets/readme/doctor-install.png\" alt=\"Doctor 检查\"><br><sub>只读 Doctor 检查</sub></td>\n  </tr>\n  <tr>\n    <td><img src=\"docs/assets/readme/credential-configured.png\" alt=\"已配置凭据\"><br><sub>只写凭据状态</sub></td>\n    <td><img src=\"docs/assets/readme/workspaces.png\" alt=\"远端工作区\"><br><sub>已保存及 Harness workspace</sub></td>\n  </tr>\n  <tr>\n    <td><img src=\"docs/assets/readme/sessions-real-deepseek.png\" alt=\"真实 DeepSeek 记录\"><br><sub>官方 Session 历史与提示界面</sub></td>\n    <td><img src=\"docs/assets/readme/remote-ui-real-deepseek.png\" alt=\"远端 Harness 界面\"><br><sub>经 loopback 隧道打开完整 DSH UI</sub></td>\n  </tr>\n  <tr>\n    <td><img src=\"docs/assets/readme/profile-wizard-host.png\" alt=\"Host 向导\"><br><sub>Host 与隔离 workspace</sub></td>\n    <td><img src=\"docs/assets/readme/profile-wizard-egress.png\" alt=\"出网向导\"><br><sub>Remote-direct 或 client-proxy</sub></td>\n  </tr>\n</table>\n\n</details>\n\n## 安装\n\n```powershell\nnpx.cmd --yes @deepseek-ai/dsh@0.1.0-rc.8 plugin --profile web add `\n  @artificialnotimbecile/dsh-remote-runtime@latest\nnpx.cmd --yes @deepseek-ai/dsh@0.1.0-rc.8 web\n```\n\n安装、更新或移除插件后，请重启已经运行的 Web profile。\n\n<details>\n<summary><strong>从本地代码构建</strong></summary>\n\n```powershell\ncorepack pnpm install --frozen-lockfile --ignore-scripts\ncorepack pnpm run check\ncorepack pnpm pack --pack-destination test-results\n\nnpx.cmd --yes @deepseek-ai/dsh@0.1.0-rc.8 plugin --profile web add `\n  .\\test-results\\artificialnotimbecile-dsh-remote-runtime-0.1.2.tgz\n```\n\n</details>\n\n## 使用\n\n打开 **Settings → 远程运行时**：\n\n1. 添加 OpenSSH host 和可选远端 workspace。\n2. 选择创建后不可修改的 `remote-direct` 或 `client-proxy`。\n3. 运行只读 **Doctor**，再明确安装已校验运行时。\n4. 通过只写表单导入 DeepSeek Key。\n5. 启动运行时并打开 loopback 隧道地址。\n6. 浏览 workspace、Session 历史，并发送或取消提示。\n\nDisconnect 只断开连接，远端 Harness 继续运行；Stop 是独立操作。删除本地配置也不会删除远端 runtime 或 Session 数据。\n\n## 主要能力\n\n- 每个 profile UUID 拥有独立远端 `DSH_HOME`，隔离凭据、Session、workspace 与进程状态。\n- 使用系统 OpenSSH，保留 SSH config、`IdentityFile`、ssh-agent 与 `ProxyJump`。\n- 内容寻址运行时包含 Node 22.19 与官方 DSH rc.8；外层制品和每个解包文件都经过 SHA-256 校验。\n- Workspace、Session、history、prompt 与 cancel 全部使用官方 DSH Host API。\n- 凭据以 mode `0600` 写入，不返回浏览器状态、日志、快照或进程参数。\n- 认证 client-proxy 只允许公网 HTTP(S)；私网、loopback、link-local、CGNAT、metadata、multicast、文档地址及 IPv6 本地范围全部 fail closed。\n\n## 兼容与安全\n\n- 本地 DSH：精确版本 `0.1.0-rc.8`；界面：Web profile。\n- 客户端：Windows、macOS 或 Linux；Node `^22.19.0 || >=24`；系统 `ssh`。\n- 远端：Linux x64、glibc 2.28+、Bash、`tar`、`gzip`、`sha256sum` 与可写 HOME。\n- 所有隧道只监听 loopback；远端 DSH Web API 不会暴露到 `0.0.0.0`。\n- SSH 是访问控制边界。需要隔离同 UID 进程时，请使用独立远端 OS 账号。\n\nDeepSeek Harness 仍处于预发布阶段。只有 peer 版本、Typert 生成、组装 profile CI 和真实验收一起迁移并通过后，才会支持后续 DSH 版本。\n\n## 开发\n\n```powershell\ncorepack pnpm run typecheck\ncorepack pnpm run test\ncorepack pnpm run build\ncorepack pnpm run pack:check\n```\n\n托管运行时需在 Linux 或 WSL 中构建；执行它需要 glibc 2.28+。生成的 archive、profile、截图和 live log 位于忽略的 `runtime/artifacts/` 与 `test-results/`。\n\n## 许可证\n\nMIT。独立社区插件，与 DeepSeek 无隶属或背书关系。第三方说明见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。\n","readmeFilename":"README.zh-CN.md"}