1. 基于我的需求,搜寻现有的官方skill。
2. 提供完整的配置步骤。
3. 发现配置步骤的问题,提出疑问。
-ps:这里,我还只是想尝试部署已有的skill
4. 了解三个配置文件的内容,并评估安全隐患。
5. 我想让DeepSeek综合三个skill的能力,写一个符合我需要的skill。
-ps:经过2天,耗时6小时折腾,我最终没能搞到符合预期的skill
6. 代码我看不懂,DeepSeek你帮我测试下,版本1.0测试。
7. 既然测试发现问题,那么修复下吧
8. 版本1.1测试.
9. 突然想到一些优化点,重新整改,版本2.0
10. 版本2.0测试
11. 修复问题继续发版,版本2.1
12. 版本2.1测试
13. 既然是命令部署,继续让DeepSeek生成批处理脚本,一键部署更方便
14. 既然测试都通过了,我就安装部署试试看,希望别坑我
-ps:到这里,一个skill包已经创建完成,DeepSeek也给我搞了一个一键部署的批处理脚本,双击就完成部署。
-ps:经过多次尝试,可能技术能力有限,我未能通过163、126的安全验证,导致openclaw无法访问在线邮箱读取邮件内容.故我采用读取本地邮件文件的方案,我是Outlook,故读取的是pst文件
15. 重新开发本地pst文件读取方案
16. 版本parental-leave-extractor-pst v1.0测试
17. 哎,开发的东西难免有问题,继续修复
18. 版本parental-leave-extractor-pst v1.1测试
19. 让DeepSeek生成一键部署脚本
13. 既然是命令部署,继续让DeepSeek生成批处理脚本,一键部署更方便
--ps:它给我分了windows、Linux、macOS、Python 部署脚本几种方式。
13.1. Prompt
我已经把技能包,放到wordspace/skills/parental-leave-extractor,同时我已经配置了.env文件的邮箱授权码,之后的部署操作能否给我创建一个批处理文件,让我一键执行即可完成部署
13.2. DeepSeek:
# 一键部署批处理文件
根据您的需求,我为您创建了适用于不同操作系统的批处理文件,完成依赖安装、配置验证和测试运行。
方案一:Linux/macOS 系统
创建 `deploy.sh` 文件在技能目录下:
```bash
#!/bin/bash
# parental-leave-extractor 一键部署脚本
# 适用于 Linux / macOS
set -e # 遇到错误立即退出
echo "========================================="
echo "育儿假邮件提取技能 - 一键部署脚本"
echo "========================================="
echo ""
# 获取脚本所在目录(技能根目录)
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"
echo "�� 当前目录: $SCRIPT_DIR"
echo ""
# 检查 Python 环境
echo "�� 检查 Python 环境..."
if command -v python3 &> /dev/null; then
PYTHON_CMD="python3"
echo "✅ 找到 Python3: $(python3 --version)"
elif command -v python &> /dev/null; then
PYTHON_CMD="python"
echo "✅ 找到 Python: $(python --version)"
else
echo "❌ 错误: 未找到 Python,请先安装 Python 3.8+"
exit 1
fi
echo ""
# 检查 pip
echo "�� 检查 pip..."
if ! command -v pip3 &> /dev/null && ! command -v pip &> /dev/null; then
echo "❌ 错误: 未找到 pip,请先安装 pip"
exit 1
fi
echo "✅ pip 可用"
echo ""
# 检查 .env 文件
echo "�� 检查配置文件..."
if [ ! -f ".env" ]; then
echo "⚠️ 警告: .env 文件不存在"
if [ -f ".env.example" ]; then
echo "�� 正在从 .env.example 创建 .env..."
cp .env.example .env
echo "❌ 错误: 请先编辑 .env 文件,填写您的邮箱信息!"
echo " 运行: nano .env 或 vim .env"
exit 1
else
echo "❌ 错误: 缺少 .env 和 .env.example 文件"
exit 1
fi
else
echo "✅ .env 文件存在"
# 检查关键配置
if grep -q "yourname@163.com" .env || grep -q "your_authorization_code" .env; then
echo "⚠️ 警告: .env 文件可能未填写真实邮箱信息"
echo " 请确认已修改 .env 中的 EMAIL_USER 和 EMAIL_AUTH_CODE"
read -p " 是否继续? (y/N) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
exit 1
fi
else
echo "✅ .env 配置看起来已填写"
fi
fi
echo ""
# 检查 config.yaml
if [ ! -f "config.yaml" ]; then
echo "⚠️ 警告: config.yaml 不存在,将使用默认配置"
else
echo "✅ config.yaml 存在"
fi
echo ""
# 安装 Python 依赖
echo "�� 安装 Python 依赖..."
if [ -f "requirements.txt" ]; then
echo "正在安装依赖包..."
$PYTHON_CMD -m pip install -r requirements.txt --quiet
if [ $? -eq 0 ]; then
echo "✅ 依赖安装完成"
else
echo "❌ 依赖安装失败,请检查网络或手动安装"
exit 1
fi
else
echo "⚠️ 警告: requirements.txt 不存在,跳过依赖安装"
fi
echo ""
# 测试运行
echo "�� 测试运行技能..."
echo "正在连接邮箱并提取育儿假信息..."
$PYTHON_CMD extractor.py
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
echo ""
echo "========================================="
echo "✅ 部署成功!"
echo "========================================="
echo "�� Excel 文件已生成在桌面上"
echo "�� 如需在 OpenClaw 中使用,请重启 OpenClaw 网关"
echo ""
echo "重启命令参考:"
echo " systemctl restart openclaw # 如果使用 systemd"
echo " pkill -f openclaw && openclaw gateway & # 如果直接运行"
echo "========================================="
else
echo ""
echo "========================================="
echo "❌ 测试运行失败,请检查:"
echo " 1. 邮箱授权码是否正确"
echo " 2. 网络连接是否正常"
echo " 3. 邮箱是否已开启 IMAP 服务"
echo " 4. 查看上方错误信息"
echo "========================================="
exit 1
fi
```
**使用方法:**
```bash
cd ~/.openclaw/workspace/skills/parental-leave-extractor
chmod +x deploy.sh
./deploy.sh
```
---
方案二:Windows 系统
创建 `deploy.bat` 文件在技能目录下:
```batch
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
echo =========================================
echo 育儿假邮件提取技能 - 一键部署脚本
echo =========================================
echo.
REM 获取当前目录
set "SCRIPT_DIR=%CD%"
echo 当前目录: %SCRIPT_DIR%
echo.
REM 检查 Python 环境
echo 正在检查 Python 环境...
python --version >nul 2>&1
if errorlevel 1 (
echo [错误] 未找到 Python,请先安装 Python 3.8+
pause
exit /b 1
) else (
for /f "tokens=*" %%i in ('python --version 2^>^&1') do set PYTHON_VER=%%i
echo [成功] 找到 Python: !PYTHON_VER!
)
echo.
REM 检查 .env 文件
echo 正在检查配置文件...
if not exist ".env" (
echo [警告] .env 文件不存在
if exist ".env.example" (
echo 正在从 .env.example 创建 .env...
copy .env.example .env >nul
echo [错误] 请先编辑 .env 文件,填写您的邮箱信息!
echo 运行: notepad .env
pause
exit /b 1
) else (
echo [错误] 缺少 .env 和 .env.example 文件
pause
exit /b 1
)
) else (
echo [成功] .env 文件存在
findstr "yourname@163.com" .env >nul
if !errorlevel! equ 0 (
echo [警告] .env 文件可能未填写真实邮箱信息
echo 请确认已修改 .env 中的 EMAIL_USER 和 EMAIL_AUTH_CODE
set /p continue="是否继续? (Y/N): "
if /i not "!continue!"=="Y" (
pause
exit /b 1
)
) else (
echo [成功] .env 配置看起来已填写
)
)
echo.
REM 检查 config.yaml
if not exist "config.yaml" (
echo [警告] config.yaml 不存在,将使用默认配置
) else (
echo [成功] config.yaml 存在
)
echo.
REM 安装 Python 依赖
echo 正在安装 Python 依赖...
if exist "requirements.txt" (
echo 正在安装依赖包,请稍候...
python -m pip install -r requirements.txt --quiet
if errorlevel 1 (
echo [错误] 依赖安装失败,请检查网络或手动安装
pause
exit /b 1
) else (
echo [成功] 依赖安装完成
)
) else (
echo [警告] requirements.txt 不存在,跳过依赖安装
)
echo.
REM 测试运行
echo 正在测试运行技能...
echo 正在连接邮箱并提取育儿假信息...
echo.
python extractor.py
if errorlevel 1 (
echo.
echo =========================================
echo [失败] 测试运行失败,请检查:
echo 1. 邮箱授权码是否正确
echo 2. 网络连接是否正常
echo 3. 邮箱是否已开启 IMAP 服务
echo 4. 查看上方错误信息
echo =========================================
pause
exit /b 1
) else (
echo.
echo =========================================
echo [成功] 部署成功!
echo =========================================
echo Excel 文件已生成在桌面上
echo.
echo 如需在 OpenClaw 中使用,请重启 OpenClaw 网关
echo =========================================
pause
)
```
**使用方法:**
```cmd
cd C:\Users\你的用户名\.openclaw\workspace\skills\parental-leave-extractor
deploy.bat
```
---
方案三:通用 Python 部署脚本(跨平台)
创建 `deploy.py` 文件:
```python
#!/usr/bin/env python3
"""
育儿假邮件提取技能 - 一键部署脚本(跨平台)
"""
import os
import sys
import subprocess
import platform
from pathlib import Path
def print_step(msg):
print(f"\n{'='*50}")
print(f">>> {msg}")
print('='*50)
def check_python():
"""检查 Python 版本"""
version = sys.version_info
if version.major < 3 or (version.major == 3 and version.minor < 8):
print(f"❌ Python 版本过低: {version.major}.{version.minor}")
print(" 请安装 Python 3.8 或更高版本")
return False
print(f"✅ Python 版本: {version.major}.{version.minor}.{version.micro}")
return True
def check_env_file(skill_dir):
"""检查 .env 文件"""
env_file = skill_dir / '.env'
env_example = skill_dir / '.env.example'
if not env_file.exists():
print("⚠️ .env 文件不存在")
if env_example.exists():
print("�� 正在从 .env.example 创建 .env...")
env_file.write_text(env_example.read_text())
print("❌ 请先编辑 .env 文件,填写您的邮箱信息!")
print(f" 编辑命令: {'notepad' if platform.system() == 'Windows' else 'nano'} {env_file}")
return False
else:
print("❌ 缺少 .env 和 .env.example 文件")
return False
else:
content = env_file.read_text()
if 'yourname@163.com' in content or 'your_authorization_code' in content:
print("⚠️ .env 文件可能未填写真实邮箱信息")
response = input(" 是否继续? (y/N): ")
if response.lower() != 'y':
return False
else:
print("✅ .env 配置已填写")
return True
def install_dependencies(skill_dir):
"""安装 Python 依赖"""
requirements = skill_dir / 'requirements.txt'
if not requirements.exists():
print("⚠️ requirements.txt 不存在,跳过依赖安装")
return True
print("�� 正在安装依赖包...")
try:
subprocess.run(
[sys.executable, '-m', 'pip', 'install', '-r', str(requirements), '--quiet'],
check=True,
capture_output=True
)
print("✅ 依赖安装完成")
return True
except subprocess.CalledProcessError as e:
print(f"❌ 依赖安装失败: {e}")
return False
def run_test(skill_dir):
"""测试运行技能"""
print("�� 正在测试运行技能...")
extractor = skill_dir / 'extractor.py'
if not extractor.exists():
print("❌ extractor.py 不存在")
return False
try:
result = subprocess.run(
[sys.executable, str(extractor)],
cwd=str(skill_dir),
capture_output=False,
timeout=60
)
return result.returncode == 0
except subprocess.TimeoutExpired:
print("❌ 测试运行超时(60秒)")
return False
except Exception as e:
print(f"❌ 测试运行失败: {e}")
return False
def main():
print("="*50)
print("育儿假邮件提取技能 - 一键部署脚本")
print("="*50)
# 获取技能目录(脚本所在目录)
skill_dir = Path(__file__).parent.resolve()
print(f"\n�� 技能目录: {skill_dir}")
# 步骤1: 检查 Python
print_step("步骤 1/4: 检查 Python 环境")
if not check_python():
sys.exit(1)
# 步骤2: 检查配置文件
print_step("步骤 2/4: 检查配置文件")
if not check_env_file(skill_dir):
sys.exit(1)
# 步骤3: 安装依赖
print_step("步骤 3/4: 安装 Python 依赖")
if not install_dependencies(skill_dir):
sys.exit(1)
# 步骤4: 测试运行
print_step("步骤 4/4: 测试运行技能")
if run_test(skill_dir):
print("\n" + "="*50)
print("✅ 部署成功!")
print("="*50)
print("�� Excel 文件已生成在桌面上")
print("\n�� 如需在 OpenClaw 中使用,请重启 OpenClaw 网关")
print("="*50)
else:
print("\n" + "="*50)
print("❌ 测试运行失败")
print("="*50)
print("请检查:")
print(" 1. 邮箱授权码是否正确")
print(" 2. 网络连接是否正常")
print(" 3. 邮箱是否已开启 IMAP 服务")
print(" 4. 查看上方错误信息")
print("="*50)
sys.exit(1)
if __name__ == "__main__":
main()
```
**使用方法:**
```bash
cd ~/.openclaw/workspace/skills/parental-leave-extractor
python3 deploy.py
```
---
## 快速执行命令(推荐)
### Linux/macOS:
```bash
cd ~/.openclaw/workspace/skills/parental-leave-extractor && chmod +x deploy.sh && ./deploy.sh
```
### Windows PowerShell:
```powershell
cd ~\.openclaw\workspace\skills\parental-leave-extractor; .\deploy.bat
```
### Windows CMD:
```cmd
cd /d %USERPROFILE%\.openclaw\workspace\skills\parental-leave-extractor
deploy.bat
```
---
## 脚本功能说明
| 功能 | Linux/macOS | Windows | Python跨平台 |
|------|-------------|---------|--------------|
| 检查 Python 环境 | ✅ | ✅ | ✅ |
| 验证 .env 配置文件 | ✅ | ✅ | ✅ |
| 检查 config.yaml | ✅ | ✅ | ✅ |
| 安装 Python 依赖 | ✅ | ✅ | ✅ |
| 测试运行技能 | ✅ | ✅ | ✅ |
| 彩色输出提示 | ⚠️ 部分 | ❌ | ✅ |
| 错误自动退出 | ✅ | ✅ | ✅ |
## 使用建议
1. **推荐使用 Python 跨平台脚本**(`deploy.py`),兼容性最好,输出最友好。
2. 运行前确保 `.env` 文件已正确填写邮箱授权码。
3. 如果测试运行失败,脚本会给出具体的错误提示,帮助排查问题。
4. 部署成功后,重启 OpenClaw 网关即可在对话中使用该技能。
现在您只需双击运行批处理文件(或执行脚本),即可完成所有部署步骤!
夜雨聆风