listen-agent 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +132 -0
- package/dist/commands/create.d.ts +3 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +157 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +210 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/list.d.ts +2 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +65 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/setup.d.ts +2 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +50 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/types/index.d.ts +25 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +26 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/detect.d.ts +4 -0
- package/dist/utils/detect.d.ts.map +1 -0
- package/dist/utils/detect.js +52 -0
- package/dist/utils/detect.js.map +1 -0
- package/dist/utils/files.d.ts +7 -0
- package/dist/utils/files.d.ts.map +1 -0
- package/dist/utils/files.js +70 -0
- package/dist/utils/files.js.map +1 -0
- package/dist/utils/logger.d.ts +9 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +10 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +66 -0
- package/skills/mac-m4-lora-training/README.md +152 -0
- package/skills/mac-m4-lora-training/SKILL.md +181 -0
- package/skills/mac-m4-lora-training/scripts/auto_lora_train_mps.py +474 -0
- package/skills/mac-m4-lora-training/scripts/install_dependencies.sh +226 -0
- package/skills/mac-m4-lora-training/scripts/quick_train.sh +88 -0
- package/skills/wechat-work-notification/README.md +88 -0
- package/skills/wechat-work-notification/SKILL.md +187 -0
- package/templates/advanced/README.md +45 -0
- package/templates/advanced/SKILL.md +149 -0
- package/templates/advanced/scripts/install_dependencies.sh +14 -0
- package/templates/advanced/scripts/run_task.sh +48 -0
- package/templates/basic/README.md +17 -0
- package/templates/basic/SKILL.md +72 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Mac M4 LoRA训练环境自动安装脚本
|
|
4
|
+
|
|
5
|
+
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
6
|
+
echo "║ Mac M4 LoRA训练环境自动安装脚本 ║"
|
|
7
|
+
echo "║ ║"
|
|
8
|
+
echo "║ 🚀 自动安装所有必要的依赖和环境 ║"
|
|
9
|
+
echo "║ 💻 专为Mac M4芯片优化 ║"
|
|
10
|
+
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
11
|
+
echo
|
|
12
|
+
|
|
13
|
+
# 检查系统
|
|
14
|
+
echo "🔍 检查系统环境..."
|
|
15
|
+
|
|
16
|
+
# 检查macOS版本
|
|
17
|
+
MACOS_VERSION=$(sw_vers -productVersion)
|
|
18
|
+
echo " macOS版本: $MACOS_VERSION"
|
|
19
|
+
|
|
20
|
+
MAJOR_VERSION=$(echo $MACOS_VERSION | cut -d. -f1)
|
|
21
|
+
if [ "$MAJOR_VERSION" -lt 13 ]; then
|
|
22
|
+
echo "❌ 需要macOS 13.0或更高版本以支持MPS加速"
|
|
23
|
+
exit 1
|
|
24
|
+
fi
|
|
25
|
+
|
|
26
|
+
# 检查架构
|
|
27
|
+
ARCH=$(uname -m)
|
|
28
|
+
echo " 系统架构: $ARCH"
|
|
29
|
+
|
|
30
|
+
if [ "$ARCH" != "arm64" ]; then
|
|
31
|
+
echo "⚠️ 警告: 此脚本专为Apple Silicon (M1/M2/M3/M4) 优化"
|
|
32
|
+
fi
|
|
33
|
+
|
|
34
|
+
echo "✅ 系统检查通过"
|
|
35
|
+
echo
|
|
36
|
+
|
|
37
|
+
# 安装Homebrew
|
|
38
|
+
echo "🍺 检查Homebrew..."
|
|
39
|
+
if ! command -v brew &> /dev/null; then
|
|
40
|
+
echo " 安装Homebrew..."
|
|
41
|
+
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
42
|
+
|
|
43
|
+
# 添加到PATH
|
|
44
|
+
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
|
|
45
|
+
eval "$(/opt/homebrew/bin/brew shellenv)"
|
|
46
|
+
else
|
|
47
|
+
echo " Homebrew已安装"
|
|
48
|
+
fi
|
|
49
|
+
|
|
50
|
+
# 更新Homebrew
|
|
51
|
+
echo " 更新Homebrew..."
|
|
52
|
+
brew update
|
|
53
|
+
|
|
54
|
+
echo "✅ Homebrew准备完成"
|
|
55
|
+
echo
|
|
56
|
+
|
|
57
|
+
# 安装Python 3.10
|
|
58
|
+
echo "🐍 安装Python 3.10..."
|
|
59
|
+
if ! command -v python3.10 &> /dev/null; then
|
|
60
|
+
echo " 安装Python 3.10..."
|
|
61
|
+
brew install python@3.10
|
|
62
|
+
else
|
|
63
|
+
echo " Python 3.10已安装"
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# 创建虚拟环境
|
|
67
|
+
echo "📦 创建虚拟环境..."
|
|
68
|
+
VENV_DIR="auto_lora_train_venv"
|
|
69
|
+
|
|
70
|
+
if [ ! -d "$VENV_DIR" ]; then
|
|
71
|
+
echo " 创建虚拟环境: $VENV_DIR"
|
|
72
|
+
python3.10 -m venv $VENV_DIR
|
|
73
|
+
else
|
|
74
|
+
echo " 虚拟环境已存在: $VENV_DIR"
|
|
75
|
+
fi
|
|
76
|
+
|
|
77
|
+
# 激活虚拟环境
|
|
78
|
+
echo " 激活虚拟环境..."
|
|
79
|
+
source $VENV_DIR/bin/activate
|
|
80
|
+
|
|
81
|
+
# 升级pip
|
|
82
|
+
echo " 升级pip..."
|
|
83
|
+
pip install --upgrade pip
|
|
84
|
+
|
|
85
|
+
echo "✅ Python环境准备完成"
|
|
86
|
+
echo
|
|
87
|
+
|
|
88
|
+
# 安装PyTorch (MPS版本)
|
|
89
|
+
echo "🔥 安装PyTorch (MPS加速版本)..."
|
|
90
|
+
echo " 这可能需要几分钟时间..."
|
|
91
|
+
|
|
92
|
+
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cpu
|
|
93
|
+
|
|
94
|
+
# 验证PyTorch MPS支持
|
|
95
|
+
echo " 验证MPS支持..."
|
|
96
|
+
python -c "import torch; print('MPS可用:', torch.backends.mps.is_available())" || {
|
|
97
|
+
echo "❌ MPS支持验证失败"
|
|
98
|
+
exit 1
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
echo "✅ PyTorch安装完成"
|
|
102
|
+
echo
|
|
103
|
+
|
|
104
|
+
# 克隆sd-scripts
|
|
105
|
+
echo "📥 克隆sd-scripts仓库..."
|
|
106
|
+
if [ ! -d "sd-scripts" ]; then
|
|
107
|
+
echo " 克隆sd-scripts..."
|
|
108
|
+
git clone https://github.com/kohya-ss/sd-scripts.git
|
|
109
|
+
else
|
|
110
|
+
echo " sd-scripts已存在,更新..."
|
|
111
|
+
cd sd-scripts
|
|
112
|
+
git pull
|
|
113
|
+
cd ..
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# 安装sd-scripts依赖
|
|
117
|
+
echo "📚 安装训练依赖..."
|
|
118
|
+
cd sd-scripts
|
|
119
|
+
|
|
120
|
+
# 安装核心依赖
|
|
121
|
+
if [ -f "requirements.txt" ]; then
|
|
122
|
+
echo " 安装requirements.txt..."
|
|
123
|
+
pip install -r requirements.txt
|
|
124
|
+
fi
|
|
125
|
+
|
|
126
|
+
# 安装macOS专用依赖
|
|
127
|
+
if [ -f "requirements-macos.txt" ]; then
|
|
128
|
+
echo " 安装requirements-macos.txt..."
|
|
129
|
+
pip install -r requirements-macos.txt
|
|
130
|
+
fi
|
|
131
|
+
|
|
132
|
+
cd ..
|
|
133
|
+
|
|
134
|
+
# 安装额外依赖
|
|
135
|
+
echo " 安装额外依赖..."
|
|
136
|
+
pip install pillow==9.5.0 transformers==4.30.2 accelerate==0.21.0
|
|
137
|
+
|
|
138
|
+
echo "✅ 依赖安装完成"
|
|
139
|
+
echo
|
|
140
|
+
|
|
141
|
+
# 创建目录结构
|
|
142
|
+
echo "📁 创建目录结构..."
|
|
143
|
+
mkdir -p sd-scripts/models/base_model
|
|
144
|
+
mkdir -p sd-scripts/models/vae
|
|
145
|
+
mkdir -p sd-scripts/configs
|
|
146
|
+
|
|
147
|
+
echo "✅ 目录结构创建完成"
|
|
148
|
+
echo
|
|
149
|
+
|
|
150
|
+
# 设置权限
|
|
151
|
+
echo "🔐 设置脚本权限..."
|
|
152
|
+
chmod +x auto_lora_train_mps.py
|
|
153
|
+
chmod +x quick_train.sh
|
|
154
|
+
|
|
155
|
+
echo "✅ 权限设置完成"
|
|
156
|
+
echo
|
|
157
|
+
|
|
158
|
+
# 创建激活脚本
|
|
159
|
+
echo "📝 创建环境激活脚本..."
|
|
160
|
+
cat > activate_env.sh << 'EOF'
|
|
161
|
+
#!/bin/bash
|
|
162
|
+
echo "🚀 激活Mac M4 LoRA训练环境..."
|
|
163
|
+
source auto_lora_train_venv/bin/activate
|
|
164
|
+
echo "✅ 环境已激活"
|
|
165
|
+
echo "💡 现在可以运行: ./quick_train.sh"
|
|
166
|
+
EOF
|
|
167
|
+
|
|
168
|
+
chmod +x activate_env.sh
|
|
169
|
+
|
|
170
|
+
echo "✅ 激活脚本创建完成"
|
|
171
|
+
echo
|
|
172
|
+
|
|
173
|
+
# 验证安装
|
|
174
|
+
echo "🧪 验证安装..."
|
|
175
|
+
|
|
176
|
+
# 检查Python包
|
|
177
|
+
echo " 检查关键Python包..."
|
|
178
|
+
python -c "import torch; print('✅ PyTorch:', torch.__version__)"
|
|
179
|
+
python -c "import transformers; print('✅ Transformers:', transformers.__version__)"
|
|
180
|
+
python -c "import accelerate; print('✅ Accelerate:', accelerate.__version__)"
|
|
181
|
+
python -c "import PIL; print('✅ Pillow:', PIL.__version__)"
|
|
182
|
+
|
|
183
|
+
# 检查MPS
|
|
184
|
+
python -c "import torch; print('✅ MPS可用:', torch.backends.mps.is_available())"
|
|
185
|
+
|
|
186
|
+
echo "✅ 验证完成"
|
|
187
|
+
echo
|
|
188
|
+
|
|
189
|
+
# 完成提示
|
|
190
|
+
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
191
|
+
echo "║ 🎉 安装完成! ║"
|
|
192
|
+
echo "║ ║"
|
|
193
|
+
echo "║ 下一步操作: ║"
|
|
194
|
+
echo "║ 1. 运行: source activate_env.sh ║"
|
|
195
|
+
echo "║ 2. 运行: ./quick_train.sh ║"
|
|
196
|
+
echo "║ ║"
|
|
197
|
+
echo "║ 或者直接使用Python脚本: ║"
|
|
198
|
+
echo "║ python auto_lora_train_mps.py --help ║"
|
|
199
|
+
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
200
|
+
echo
|
|
201
|
+
|
|
202
|
+
# 保存安装信息
|
|
203
|
+
cat > installation_info.txt << EOF
|
|
204
|
+
Mac M4 LoRA训练环境安装信息
|
|
205
|
+
安装时间: $(date)
|
|
206
|
+
macOS版本: $MACOS_VERSION
|
|
207
|
+
系统架构: $ARCH
|
|
208
|
+
Python版本: $(python --version)
|
|
209
|
+
PyTorch版本: $(python -c "import torch; print(torch.__version__)")
|
|
210
|
+
|
|
211
|
+
安装的组件:
|
|
212
|
+
- Homebrew
|
|
213
|
+
- Python 3.10
|
|
214
|
+
- PyTorch (MPS版本)
|
|
215
|
+
- sd-scripts
|
|
216
|
+
- transformers
|
|
217
|
+
- accelerate
|
|
218
|
+
- pillow
|
|
219
|
+
|
|
220
|
+
使用方法:
|
|
221
|
+
1. 激活环境: source activate_env.sh
|
|
222
|
+
2. 一键训练: ./quick_train.sh
|
|
223
|
+
3. 或使用Python: python auto_lora_train_mps.py --help
|
|
224
|
+
EOF
|
|
225
|
+
|
|
226
|
+
echo "📋 安装信息已保存到: installation_info.txt"
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Mac M4 LoRA 一键训练脚本
|
|
4
|
+
# 使用方法: ./quick_train.sh
|
|
5
|
+
|
|
6
|
+
echo "╔══════════════════════════════════════════════════════════════╗"
|
|
7
|
+
echo "║ Mac M4 LoRA 一键训练工具 ║"
|
|
8
|
+
echo "║ ║"
|
|
9
|
+
echo "║ 🚀 只需提供3个参数即可开始训练 ║"
|
|
10
|
+
echo "║ 📁 LoRA名称 + ComfyUI路径 + 训练图片目录 ║"
|
|
11
|
+
echo "╚══════════════════════════════════════════════════════════════╝"
|
|
12
|
+
echo
|
|
13
|
+
|
|
14
|
+
# 检查Python环境
|
|
15
|
+
if ! command -v python3 &> /dev/null; then
|
|
16
|
+
echo "❌ Python3 未安装,请先安装Python"
|
|
17
|
+
exit 1
|
|
18
|
+
fi
|
|
19
|
+
|
|
20
|
+
# 获取用户输入
|
|
21
|
+
read -p "🏷️ 请输入LoRA名称 (例如: my_character): " LORA_NAME
|
|
22
|
+
if [ -z "$LORA_NAME" ]; then
|
|
23
|
+
echo "❌ LoRA名称不能为空"
|
|
24
|
+
exit 1
|
|
25
|
+
fi
|
|
26
|
+
|
|
27
|
+
read -p "📁 请输入ComfyUI安装目录 (例如: /Users/username/ComfyUI): " COMFYUI_DIR
|
|
28
|
+
if [ -z "$COMFYUI_DIR" ]; then
|
|
29
|
+
echo "❌ ComfyUI目录不能为空"
|
|
30
|
+
exit 1
|
|
31
|
+
fi
|
|
32
|
+
|
|
33
|
+
read -p "🖼️ 请输入训练图片目录 (例如: ./my_images): " TRAIN_DIR
|
|
34
|
+
if [ -z "$TRAIN_DIR" ]; then
|
|
35
|
+
echo "❌ 训练图片目录不能为空"
|
|
36
|
+
exit 1
|
|
37
|
+
fi
|
|
38
|
+
|
|
39
|
+
# 可选参数
|
|
40
|
+
read -p "🎯 请输入触发词 (可选,回车使用LoRA名称): " TRIGGER_WORD
|
|
41
|
+
if [ -z "$TRIGGER_WORD" ]; then
|
|
42
|
+
TRIGGER_WORD="$LORA_NAME"
|
|
43
|
+
fi
|
|
44
|
+
|
|
45
|
+
read -p "💬 训练反馈 (可选,如'特征不明显'): " FEEDBACK
|
|
46
|
+
|
|
47
|
+
echo
|
|
48
|
+
echo "📋 训练配置确认:"
|
|
49
|
+
echo " LoRA名称: $LORA_NAME"
|
|
50
|
+
echo " ComfyUI目录: $COMFYUI_DIR"
|
|
51
|
+
echo " 训练图片目录: $TRAIN_DIR"
|
|
52
|
+
echo " 触发词: $TRIGGER_WORD"
|
|
53
|
+
if [ ! -z "$FEEDBACK" ]; then
|
|
54
|
+
echo " 训练反馈: $FEEDBACK"
|
|
55
|
+
fi
|
|
56
|
+
echo
|
|
57
|
+
|
|
58
|
+
read -p "确认开始训练? (y/N): " CONFIRM
|
|
59
|
+
if [[ ! $CONFIRM =~ ^[Yy]$ ]]; then
|
|
60
|
+
echo "❌ 训练已取消"
|
|
61
|
+
exit 0
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
# 构建Python命令
|
|
65
|
+
PYTHON_CMD="python3 auto_lora_train_mps.py --lora_name \"$LORA_NAME\" --comfyui_dir \"$COMFYUI_DIR\" --train_dir \"$TRAIN_DIR\" --trigger_word \"$TRIGGER_WORD\""
|
|
66
|
+
|
|
67
|
+
if [ ! -z "$FEEDBACK" ]; then
|
|
68
|
+
PYTHON_CMD="$PYTHON_CMD --feedback \"$FEEDBACK\""
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
echo
|
|
72
|
+
echo "🚀 开始执行训练..."
|
|
73
|
+
echo "命令: $PYTHON_CMD"
|
|
74
|
+
echo
|
|
75
|
+
|
|
76
|
+
# 执行训练
|
|
77
|
+
eval $PYTHON_CMD
|
|
78
|
+
|
|
79
|
+
# 检查执行结果
|
|
80
|
+
if [ $? -eq 0 ]; then
|
|
81
|
+
echo
|
|
82
|
+
echo "🎉 训练完成!"
|
|
83
|
+
echo "LoRA模型已自动部署到ComfyUI"
|
|
84
|
+
else
|
|
85
|
+
echo
|
|
86
|
+
echo "❌ 训练失败,请检查错误信息"
|
|
87
|
+
exit 1
|
|
88
|
+
fi
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# 企业微信通知 Skill
|
|
2
|
+
|
|
3
|
+
## 描述
|
|
4
|
+
|
|
5
|
+
企业微信机器人通知技能,支持通过Webhook发送各种类型的消息到企业微信群聊。
|
|
6
|
+
|
|
7
|
+
## 功能特性
|
|
8
|
+
|
|
9
|
+
- 📝 文本消息发送
|
|
10
|
+
- 📋 Markdown格式消息
|
|
11
|
+
- 🖼️ 图片消息发送
|
|
12
|
+
- 📰 图文消息发送
|
|
13
|
+
- 🏷️ 支持@指定用户
|
|
14
|
+
- 🔗 支持链接跳转
|
|
15
|
+
|
|
16
|
+
## 配置信息
|
|
17
|
+
|
|
18
|
+
- **Webhook URL**: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7`
|
|
19
|
+
- **消息类型**: text, markdown, image, news
|
|
20
|
+
- **请求方法**: POST
|
|
21
|
+
- **内容类型**: application/json
|
|
22
|
+
|
|
23
|
+
## 使用方法
|
|
24
|
+
|
|
25
|
+
### 基础文本消息
|
|
26
|
+
```bash
|
|
27
|
+
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7" \
|
|
28
|
+
-H "Content-Type: application/json" \
|
|
29
|
+
-d '{
|
|
30
|
+
"msgtype": "text",
|
|
31
|
+
"text": {
|
|
32
|
+
"content": "Hello World!"
|
|
33
|
+
}
|
|
34
|
+
}'
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Markdown消息
|
|
38
|
+
```bash
|
|
39
|
+
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7" \
|
|
40
|
+
-H "Content-Type: application/json" \
|
|
41
|
+
-d '{
|
|
42
|
+
"msgtype": "markdown",
|
|
43
|
+
"markdown": {
|
|
44
|
+
"content": "## 标题\n**粗体文本**\n- 列表项1\n- 列表项2"
|
|
45
|
+
}
|
|
46
|
+
}'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### @指定用户
|
|
50
|
+
```bash
|
|
51
|
+
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7" \
|
|
52
|
+
-H "Content-Type: application/json" \
|
|
53
|
+
-d '{
|
|
54
|
+
"msgtype": "text",
|
|
55
|
+
"text": {
|
|
56
|
+
"content": "请注意查看重要通知",
|
|
57
|
+
"mentioned_list": ["@all"]
|
|
58
|
+
}
|
|
59
|
+
}'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## 消息类型说明
|
|
63
|
+
|
|
64
|
+
### 1. 文本消息 (text)
|
|
65
|
+
- `content`: 消息内容,最长不超过2048个字节
|
|
66
|
+
- `mentioned_list`: @用户列表,可使用userid或手机号
|
|
67
|
+
- `mentioned_mobile_list`: @用户手机号列表
|
|
68
|
+
|
|
69
|
+
### 2. Markdown消息 (markdown)
|
|
70
|
+
- `content`: markdown格式内容,最长不超过4096个字节
|
|
71
|
+
- 支持标题、粗体、斜体、链接、列表等格式
|
|
72
|
+
|
|
73
|
+
### 3. 图片消息 (image)
|
|
74
|
+
- `base64`: 图片base64编码
|
|
75
|
+
- `md5`: 图片MD5值
|
|
76
|
+
- 图片大小不超过2M,支持JPG、PNG格式
|
|
77
|
+
|
|
78
|
+
### 4. 图文消息 (news)
|
|
79
|
+
- `articles`: 图文消息数组,最多8条
|
|
80
|
+
- 每条包含:title、description、url、picurl
|
|
81
|
+
|
|
82
|
+
## 示例场景
|
|
83
|
+
|
|
84
|
+
1. **系统监控告警**: 服务器异常、应用错误通知
|
|
85
|
+
2. **构建部署通知**: CI/CD流程状态更新
|
|
86
|
+
3. **业务数据报告**: 日报、周报自动推送
|
|
87
|
+
4. **任务提醒**: 待办事项、会议提醒
|
|
88
|
+
5. **代码审查**: PR状态、代码合并通知
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: wechat-work-notification
|
|
3
|
+
description: 企业微信机器人通知技能,支持发送文本、markdown、图片等多种消息类型到企业微信群聊
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
author: ""
|
|
6
|
+
tags: ["notification", "wechat", "webhook", "enterprise", "bot"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# 企业微信通知 Skill
|
|
10
|
+
|
|
11
|
+
你是一个专门处理企业微信机器人通知的AI助手,具备发送各种类型消息到企业微信群聊的能力。
|
|
12
|
+
|
|
13
|
+
## 任务概述
|
|
14
|
+
|
|
15
|
+
本技能用于通过企业微信机器人Webhook API发送各种类型的通知消息,包括文本、Markdown、图片和图文消息,支持@用户功能和链接跳转。
|
|
16
|
+
|
|
17
|
+
## 核心能力
|
|
18
|
+
|
|
19
|
+
- 📝 **文本消息发送** - 支持纯文本和@用户功能
|
|
20
|
+
- 📋 **Markdown消息** - 支持富文本格式,包括标题、列表、链接等
|
|
21
|
+
- 🖼️ **图片消息** - 支持base64编码图片发送
|
|
22
|
+
- 📰 **图文消息** - 支持多条图文混合消息
|
|
23
|
+
- 🔗 **链接跳转** - 支持消息中的链接点击跳转
|
|
24
|
+
- 🏷️ **用户提醒** - 支持@指定用户或@所有人
|
|
25
|
+
|
|
26
|
+
## 配置信息
|
|
27
|
+
|
|
28
|
+
**机器人Webhook地址**: `https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7`
|
|
29
|
+
|
|
30
|
+
## 执行步骤
|
|
31
|
+
|
|
32
|
+
### 1. 发送文本消息
|
|
33
|
+
|
|
34
|
+
当用户需要发送简单文本通知时,使用以下格式:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7" \
|
|
38
|
+
-H "Content-Type: application/json" \
|
|
39
|
+
-d '{
|
|
40
|
+
"msgtype": "text",
|
|
41
|
+
"text": {
|
|
42
|
+
"content": "这里是消息内容",
|
|
43
|
+
"mentioned_list": ["@all"]
|
|
44
|
+
}
|
|
45
|
+
}'
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**参数说明**:
|
|
49
|
+
- `content`: 消息内容,最长2048字节
|
|
50
|
+
- `mentioned_list`: @用户列表,可使用userid、手机号或"@all"
|
|
51
|
+
|
|
52
|
+
### 2. 发送Markdown消息
|
|
53
|
+
|
|
54
|
+
当需要发送格式化内容时,使用Markdown格式:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7" \
|
|
58
|
+
-H "Content-Type: application/json" \
|
|
59
|
+
-d '{
|
|
60
|
+
"msgtype": "markdown",
|
|
61
|
+
"markdown": {
|
|
62
|
+
"content": "## 📊 系统监控报告\n\n**服务状态**: 🟢 正常\n**CPU使用率**: 45%\n**内存使用率**: 67%\n\n### 详细信息\n- 活跃用户: 1,234\n- 请求量: 45,678\n- 错误率: 0.01%\n\n[查看详细报告](https://monitor.example.com)"
|
|
63
|
+
}
|
|
64
|
+
}'
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**支持的Markdown语法**:
|
|
68
|
+
- 标题: `# ## ###`
|
|
69
|
+
- 粗体: `**文本**`
|
|
70
|
+
- 斜体: `*文本*`
|
|
71
|
+
- 链接: `[文本](URL)`
|
|
72
|
+
- 列表: `- 项目`
|
|
73
|
+
- 代码: `` `代码` ``
|
|
74
|
+
|
|
75
|
+
### 3. 发送图片消息
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7" \
|
|
79
|
+
-H "Content-Type: application/json" \
|
|
80
|
+
-d '{
|
|
81
|
+
"msgtype": "image",
|
|
82
|
+
"image": {
|
|
83
|
+
"base64": "图片base64编码",
|
|
84
|
+
"md5": "图片MD5值"
|
|
85
|
+
}
|
|
86
|
+
}'
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 4. 发送图文消息
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=d4da4f73-3667-49a2-b2f3-f79235e984e7" \
|
|
93
|
+
-H "Content-Type: application/json" \
|
|
94
|
+
-d '{
|
|
95
|
+
"msgtype": "news",
|
|
96
|
+
"news": {
|
|
97
|
+
"articles": [
|
|
98
|
+
{
|
|
99
|
+
"title": "新版本发布通知",
|
|
100
|
+
"description": "系统已更新到v2.1.0版本,新增多项功能",
|
|
101
|
+
"url": "https://example.com/release-notes",
|
|
102
|
+
"picurl": "https://example.com/images/release.jpg"
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
}'
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## 常用场景模板
|
|
110
|
+
|
|
111
|
+
### 系统监控告警
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"msgtype": "markdown",
|
|
115
|
+
"markdown": {
|
|
116
|
+
"content": "🚨 **系统告警**\n\n**服务**: {{service_name}}\n**级别**: {{alert_level}}\n**时间**: {{timestamp}}\n**描述**: {{description}}\n\n[查看详情]({{alert_url}})"
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 构建部署通知
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"msgtype": "text",
|
|
125
|
+
"text": {
|
|
126
|
+
"content": "🚀 部署完成\n\n项目: {{project_name}}\n环境: {{environment}}\n版本: {{version}}\n状态: ✅ 成功",
|
|
127
|
+
"mentioned_list": ["{{developer_id}}"]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 代码审查提醒
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"msgtype": "markdown",
|
|
136
|
+
"markdown": {
|
|
137
|
+
"content": "📝 **代码审查请求**\n\n**PR**: [{{pr_title}}]({{pr_url}})\n**作者**: {{author}}\n**分支**: {{branch}}\n**文件变更**: {{files_changed}} 个文件\n\n请及时进行代码审查"
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
## 最佳实践
|
|
143
|
+
|
|
144
|
+
1. **消息长度控制**
|
|
145
|
+
- 文本消息不超过2048字节
|
|
146
|
+
- Markdown消息不超过4096字节
|
|
147
|
+
|
|
148
|
+
2. **@用户使用**
|
|
149
|
+
- 重要通知使用@all
|
|
150
|
+
- 特定问题@相关负责人
|
|
151
|
+
- 避免频繁@所有人
|
|
152
|
+
|
|
153
|
+
3. **格式化建议**
|
|
154
|
+
- 使用emoji增强可读性
|
|
155
|
+
- 重要信息使用粗体标记
|
|
156
|
+
- 提供相关链接便于查看详情
|
|
157
|
+
|
|
158
|
+
4. **错误处理**
|
|
159
|
+
- 检查返回状态码
|
|
160
|
+
- 记录发送失败的消息
|
|
161
|
+
- 实现重试机制
|
|
162
|
+
|
|
163
|
+
## 响应处理
|
|
164
|
+
|
|
165
|
+
成功响应:
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"errcode": 0,
|
|
169
|
+
"errmsg": "ok"
|
|
170
|
+
}
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
错误响应:
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"errcode": 93000,
|
|
177
|
+
"errmsg": "invalid webhook url, hint: [1609735317_65_0c9b4d6d6]"
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## 注意事项
|
|
182
|
+
|
|
183
|
+
- 机器人每分钟最多发送20条消息
|
|
184
|
+
- 图片大小不超过2M,支持JPG、PNG格式
|
|
185
|
+
- 链接需要是完整的HTTP/HTTPS地址
|
|
186
|
+
- 消息发送后无法撤回或编辑
|
|
187
|
+
- 保护好webhook key,避免泄露
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# {{name}}
|
|
2
|
+
|
|
3
|
+
## 描述
|
|
4
|
+
|
|
5
|
+
{{description}}
|
|
6
|
+
|
|
7
|
+
## 特性
|
|
8
|
+
|
|
9
|
+
- {{feature_1}}
|
|
10
|
+
- {{feature_2}}
|
|
11
|
+
- {{feature_3}}
|
|
12
|
+
|
|
13
|
+
## 安装
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
# 安装依赖
|
|
17
|
+
./scripts/install_dependencies.sh
|
|
18
|
+
|
|
19
|
+
# 配置环境
|
|
20
|
+
./scripts/setup_config.sh
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 使用方法
|
|
24
|
+
|
|
25
|
+
### 快速开始
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# 基础用法
|
|
29
|
+
{{name}} --input "example" --output "result"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### 高级配置
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# 高级用法
|
|
36
|
+
{{name}} --config advanced.json --parallel 4
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 配置
|
|
40
|
+
|
|
41
|
+
参见 `SKILL.md` 中的详细配置说明。
|
|
42
|
+
|
|
43
|
+
## 许可证
|
|
44
|
+
|
|
45
|
+
MIT
|