deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:pointer-a/dsh-server-login
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
面向公网的多租户 DSH 托管平台 —— 部署到一台公网服务器后,多个用户注册并经管理员审核,各自获得一套相互隔离的 DeepSeek Harness(DSH)环境,随时通过域名安全访问。
以 DSH 插件市场 的 cordis-plugin 形态分发,遵守 STANDARD.md。
DSH 本身是单用户本地工具,没有认证、没有多租户隔离、Web 远程访问缺认证层。dsh-server-login 在其之上补一层服务端登录 + 多租户编排:管理员审核注册用户,每个用户落到自己的文件桌面,按文件夹启动 DSH、选择启用哪些插件,通过域名访问,且彼此文件隔离(已适配手机端)。
bootstrap-admin),用户注册后需管理员审核通过;独立管理台 UI。/u/<userId>/dsh/;自定义域名 + nginx 配置生成接口。setuid 降权),0700 目录真正隔离跨用户读。用户浏览器 → nginx(TLS) → 编排服务(Fastify + SQLite,单进程)
├─ 认证 / 审核 / 桌面 / 域名 API
└─ /u/<userId>/dsh/* → 子 DSH(127.0.0.1:动态端口)
每用户子 DSH(主 + 按需守护)只绑回环端口,由编排服务反向代理对外。
编排服务以 child_process 按用户 spawn DSH 子进程,端口随机分配、崩溃自动重启。完整设计见 docs/blueprint.md。
npm install
npm run build # tsc → lib/
node lib/cli.js bootstrap-admin --username admin --password '<强密码>' --db ./dev.local.db
node lib/cli.js --port 3080 --db ./dev.local.db
访问 http://127.0.0.1:3080/:登录 / 注册 / 管理台 / 桌面(详细部署流程见 docs/deployment.md)。
| 环境变量 | 默认 | 说明 |
|---|---|---|
DSH_SERVER_LOGIN_PORT |
3080 |
编排服务绑定端口 |
DSH_SERVER_LOGIN_DATA_ROOT |
~/.dsh-server-login |
每用户 home/workspace 根(生产 /var/lib/dsh-server-login) |
DSH_SERVER_LOGIN_DSH_BIN |
dsh |
子 DSH 可执行 |
DSH_SERVER_LOGIN_ISOLATION_MODE |
soft |
soft 软隔离 / account 账号级硬隔离(Linux,需 root) |
DSH_SERVER_LOGIN_BASE_UID |
100000 |
账号级隔离的 uid 基数 |
DSH_SERVER_LOGIN_SECURE_COOKIES |
false |
HTTPS 部署设为 true |
其余可调项(dshCommand、spawnAsUserCommand、restartBackoffMs、sessionTtlSeconds、maxUploadBytes 等)见 src/config.ts 与各文档。
默认软隔离(每用户 $DSH_HOME + session cwd + 沙箱写隔离)。Linux 生产部署建议开启账号级硬隔离(每用户 OS 账号,闭合同 UID 越权读)。详见 docs/deployment.md。
这是我开发的第一个正式项目,功能可能还不够完善,非常欢迎大家提出意见和反馈! 如果你在使用过程中遇到问题,或者有改进建议,欢迎提交 Issue:
我会尽量在 1~2 天内回复,确认有效的问题会尽快修复并发布更新。 感谢你的支持!🌟
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。