Dev Serve — 开发服务器管理
v1.0.0通过 tmux 管理开发服务器,并通过 Caddy 在通配符子域名上暴露服务,支持一键启动/停止开发服务器,自动配置反向代理和 HTTPS。
0· 405·3 当前·3 累计
安全扫描
OpenClaw
可疑
medium confidence技能代码基本符合其描述的用途(管理 tmux 后台开发服务器和编辑 Caddy 路由),但包元数据缺少必需的环境变量和必需的二进制文件,且脚本对用户文件(Caddyfile 和项目配置)进行了侵入性编辑,因此该包不一致,需要谨慎使用。
评估建议
在安装/运行此技能之前:1) 请自行检查提供的 scripts/dev-serve.sh 脚本——它会编辑您的 ~/.config/caddy/Caddyfile 并可能修补您仓库中的源文件(vite 配置)。2) 在运行前设置并验证 DEV_SERVE_DOMAIN;如果未设置此环境变量脚本将退出(注册表元数据未声明此要求)。3) 备份您的 Caddyfile 和您关心的任何仓库文件。4) 确保 Caddy 管理 API(http://localhost:2019)只能在本地访问,不能暴露到不受信任的网络——脚本会将您的 Caddyfile POST 到该端点。5) 确认所需的二进制文件存在(tmux、jq、curl、lsof、sed、grep),并在可接受修改反向代理配置和运行任意开发命令的机器上运行脚本。6) 优先从命名且可信的来源或仓库获取此工具(主页/来源未知);如果提供了作者或规范仓库,请在验证后重新评估。如果元数据被修正为列出所需的环境变量/二进制文件,且脚本包含安全防护(确认提示或试运行模式),我的信心将会增加。...详细分析 ▾
⚠ 用途与能力
名称和描述与脚本行为匹配:它启动 tmux 会话、选择端口、编辑 Caddyfile、调用 Caddy 管理 API,并修补项目配置文件(vite)。然而注册表元数据未声明所需的环境变量或二进制文件,而脚本需要 DEV_SERVE_DOMAIN 并依赖 tmux、jq、curl、sed/awk/grep/lsof 等。缺失的元数据声明是不一致的,会降低信任度。
⚠ 指令范围
SKILL.md 和脚本指示 agent/用户复制一个脚本,该脚本将:修改您的 Caddyfile、将 Caddyfile POST 到 Caddy 管理 API、自动修补项目源文件(vite 配置)、创建/终止 tmux 会话,并将状态写入 ~/.config/dev-serve/state.json。这些操作在功能上符合所述目的,但是具有侵入性(编辑服务器代理配置和源文件),应该明确向用户突出显示——说明在编辑前不需要明确的确认/备份。
✓ 安装机制
没有自动化的安装规范(用户被告知将脚本 cp 到 ~/.local/bin)。这比下载/执行远程归档风险更低。本地脚本文件的存在意味着行为在安装前可以审查。
⚠ 凭证需求
脚本需要 DEV_SERVE_DOMAIN(并尊重 CADDY_ADMIN、CADDYFILE、DEV_SERVE_STATE_DIR、DEV_CMD),但注册表元数据未列出所需的环境变量或主要凭证。缺少 DEV_SERVE_DOMAIN 的声明和缺少声明的所需二进制文件是不匹配的。脚本不请求外部凭证,这与它的目的相称。
ℹ 持久化与权限
该技能不请求 always:true 也不要求提升的系统权限。但是,它会修改用户文件(Caddyfile 和仓库配置文件)并通过 localhost:2019 的管理 API 重新加载 Caddy;该 API 应该受到保护。这些行为对于运行是必要的,但如果在共享或暴露的主机上运行会增加影响范围。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.02026/2/25
首次发布
● 可疑
安装命令 点击复制
官方npx clawhub@latest install dev-serve
镜像加速npx clawhub@latest install dev-serve --registry https://cn.clawhub-mirror.com
技能文档
在 tmux 会话中启动开发服务器,并通过 Caddy 在 上暴露。一个命令启动,一个命令停止。
设置
- 安装脚本:
cp scripts/dev-serve.sh ~/.local/bin/dev-serve
chmod +x ~/.local/bin/dev-serve
- 设置您的域名(任选其一):
- 在您的 shell 配置文件中导出
DEV_SERVE_DOMAIN - 或编辑脚本中的
DOMAIN变量
- 要求:
- Caddy 运行并配置通配符 DNS + TLS(参见 caddy 技能)
tmux、jq、curl- Caddy 管理 API 在
localhost:2019
CLI
dev-serve up [port] # 启动开发服务器 + 添加 Caddy 路由
dev-serve down # 停止开发服务器 + 移除 Caddy 路由
dev-serve ls # 列出活动的开发服务器
dev-serve restart # 重启开发服务器(保留 Caddy 路由)
工作原理
- 从仓库文件夹名派生子域名(
~/projects/myapp→myapp.YOUR_DOMAIN) - 从
package.jsonscripts.dev检测开发命令(支持 vite、next、nuxt、sveltekit) - 如果存在 vite 配置文件,自动修补 Vite
allowedHosts - 在名为
dev-的 tmux 会话中启动开发服务器,使用--host 0.0.0.0 --port - 向 Caddyfile 添加 Caddy 路由和仪表板链接
- 通过管理 API 重新加载 Caddy(无需 sudo,无需重启)
- 端到端验证:等待开发服务器监听,然后轮询 HTTPS 直到 2xx/3xx(最多 90 秒)
示例
# 使用自动分配的端口启动(从 5200 开始,跳过已用端口)
dev-serve up ~/projects/myapp # → https://myapp.YOUR_DOMAIN# 指定端口
dev-serve up ~/projects/myapp 5200
# 覆盖开发命令
DEV_CMD="bun dev" dev-serve up ~/projects/myapp 5300
# 停止并清理
dev-serve down myapp
# 列出正在运行的内容
dev-serve ls
配置
| 变量 | 默认值 | 描述 |
|---|---|---|
DEV_SERVE_DOMAIN | (必须设置) | 您的通配符域名(例如 mini.example.com) |
DEV_SERVE_STATE_DIR | ~/.config/dev-serve | 状态 JSON 存储位置 |
CADDYFILE | ~/.config/caddy/Caddyfile | 您的 Caddyfile 路径 |
CADDY_ADMIN | http://localhost:2019 | Caddy 管理 API 地址 |
DEV_CMD | (自动检测) | 覆盖开发服务器命令 |
端口约定
- 永久服务: 3100 范围(直接在 Caddyfile 中管理)
- 开发服务器: 5200+(由 dev-serve 管理,自动分配)
Vite allowedHosts
Vite 会阻止来自无法识别的主机名的请求。dev-serve up 会自动修补 vite.config.ts(或 .js/.mts/.mjs)以添加子域名。如果自动修补失败,它会打印手动修复方法。
架构
浏览器(Tailscale / LAN 等)→ DNS: *.YOUR_DOMAIN → 您的服务器 IP → Caddy(自动证书的 HTTPS)→ reverse_proxy localhost: → 开发服务器(在 tmux 会话中)
配套技能
- caddy — 必需。设置带通配符 TLS 的 Caddy 反向代理。
故障排除
开发服务器未启动:
tmux attach -t dev- # 查看发生了什么
证书未颁发(curl 退出 35):
等待 30-60 秒进行 DNS-01 挑战。检查 tail -20 /var/log/caddy-error.log。
Caddy 重新加载失败:
caddy reload --config ~/.config/caddy/Caddyfile --address localhost:2019
Vite 返回 403:
子域名未添加到 allowedHosts。手动将其添加到您的 vite.config.ts:
server: { allowedHosts: ['myapp.YOUR_DOMAIN'] }
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制