前言¶
DSH 插件生态允许在本地运行和管理服务。管理多个 Web 站点或 HTTP 服务时,通常需要处理注册、Git 操作以及 SSH 远程部署等环节。todaywei/dsh-wei-sitecontrol 插件旨在解决这些问题,它将本地或远程的网站登记为一份带依赖信息的注册表,并在 DSH 中统一管理其生命周期、Git 提交与 SSH 发布流程。
是什么¶
这是一个用于 DeepSeek Harness 的站点控制器插件。它通过内置纯 JS 的 Git (isomorphic-git) 与 SSH 发布客户端 (ssh2),提供一套完整的服务管理方案。
核心功能包括:侧栏管理面板(列表、状态、启停、日志、Git、发布)、给 Agent 的 site_* 工具、系统监视(CPU/内存/磁盘、进程占用、任务名)以及一个功能完备的 HTTP API。插件支持描述驱动建档、定时发布、Release 模式(含回滚)以及密钥保险库。
安装与启用¶
安装过程包含三步:注册插件包、配置 Profile、登记技能。
- 安装插件包
在 Web Profile 下安装插件包,会自动解析依赖。
dsh plugin --profile web add <路径>\dsh-wei-sitecontrol-0.1.0.tgz
- 配置 Profile
编辑%USERPROFILE%\.dsh\profiles\web\cordis.patch.yml,在插件列表中追加插件行。
- insert:
- id: wei-sitecontrol
name: dsh-wei-sitecontrol
- 登记技能
将技能文件复制到 DSH Skills 目录,以便 Agent 自动发现。
# 将 skill/SKILL.md 复制到 %USERPROFILE%\.dsh\skills\dsh-wei-sitecontrol\SKILL.md
- 重启服务
重启dsh web以加载插件。
核心功能¶
1. 生命周期与监视¶
管理面板提供站点列表、运行状态控制(启停、重启)、日志查看以及 Git 操作入口。监视功能会实时显示本机的 CPU/内存/磁盘使用情况、各站点进程的占用以及当前 DSH 任务列表。
2. Git 与 SSH 部署¶
插件内置 isomorphic-git 和 ssh2,不依赖系统 Git。支持在站点目录上执行初始化、状态查看、提交和推送。SSH 部署支持 In-place 模式(直接覆盖)和 Release 模式(基于时间戳的新目录发布,支持回滚)。
3. 描述驱动建档¶
通过提供环境描述文本,插件可自动解析并连接服务器读取配置(如 Tomcat 的 docBase 或 nginx 的 root),自动回填发布目录、服务类型等字段,减少手工配置。
4. API 与扩展¶
提供 /dsh-wei-sitecontrol HTTP API,支持站点管理、健康检查、密钥保险库管理、部署脚本存储以及定时发布排期。
典型用法¶
描述驱动建档¶
通过 POST 请求向目标服务器发送环境描述,插件会解析文本并自动探测服务器配置。
POST /targets/<name>/provision
{
"text": "ip:203.0.113.10\nssh端口:TCP:22\n描述:…使用tomcat服务,tomcat应用目录在:/opt/tomcat9。程序发布目录在/srv/www。",
"user": "root"
}
定时发布¶
设置排期,到点自动执行与手动发布相同的代码路径。
POST /schedules
{
"site": "example-site",
"target": "prod-server",
"at": "2026-10-06T12:00:00",
"note": "每日维护"
}
密钥保险库¶
导入本地私钥文件,内容不进对话或日志,仅存储指纹和元数据。
POST /keys
{
"name": "prod",
"path": "E:\\keys\\prod.pem"
}
注意事项¶
- 数据落盘位置:注册表、密钥、日志等数据存储在
$DSH_HOME/storages/dsh-wei-sitecontrol/。 - 密钥安全:密钥文件权限设为 POSIX 600 或 Windows ACL 仅当前用户。密钥内容永不出现在 API、工具或日志输出中,仅返回指纹。
- SSH 客户端限制:内置 SSH 客户端 (
ssh2) 不支持 PKCS#8 格式密钥(-----BEGIN PRIVATE KEY-----)。如需使用,需转换为 PEM 格式。 - API 语义:
POST /targets为 PATCH 语义,仅支持更新name和envText,不会修改其他字段。 - 权限要求:插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。