@aiyiran/myclaw 1.0.205 → 1.0.207
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/package.json
CHANGED
package/patches/patch-agent.js
CHANGED
|
@@ -100,7 +100,7 @@ function patchAgents() {
|
|
|
100
100
|
.map(e => e.id)
|
|
101
101
|
);
|
|
102
102
|
|
|
103
|
-
const agentListDir = path.join(__dirname, 'agent-list');
|
|
103
|
+
const agentListDir = path.join(__dirname, '..', 'agent-list');
|
|
104
104
|
|
|
105
105
|
console.log('[myclaw-agent] → Manifest: ' + manifest.agents.length + ' 个智能体');
|
|
106
106
|
|
package/patches/patch-skill.js
CHANGED
|
@@ -75,7 +75,7 @@ function patchSkills() {
|
|
|
75
75
|
console.log('[myclaw-skill] → skills 目录: ' + skillsDir);
|
|
76
76
|
|
|
77
77
|
// myclaw 自带的 skills 源目录
|
|
78
|
-
const myclawSkillsDir = path.join(__dirname, 'skills');
|
|
78
|
+
const myclawSkillsDir = path.join(__dirname, '..', 'skills');
|
|
79
79
|
|
|
80
80
|
if (!fs.existsSync(myclawSkillsDir)) {
|
|
81
81
|
console.log('[myclaw-skill] ⚠ 无 skill 可注入 (skills/ 目录不存在)');
|
|
@@ -167,7 +167,7 @@ function listSkills() {
|
|
|
167
167
|
return [];
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
const myclawSkillsDir = path.join(__dirname, 'skills');
|
|
170
|
+
const myclawSkillsDir = path.join(__dirname, '..', 'skills');
|
|
171
171
|
if (!fs.existsSync(myclawSkillsDir)) {
|
|
172
172
|
return [];
|
|
173
173
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: yiran-skill-media
|
|
3
|
-
description: 统一多媒体生成技能。支持图片和音乐生成,按资源类型自动路由到最优 provider
|
|
3
|
+
description: 统一多媒体生成技能。支持图片和音乐生成,按资源类型自动路由到最优 provider,支持主备切换。生成文件保存在当前 workspace 的 media/ 目录。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 统一多媒体生成
|
|
@@ -10,22 +10,22 @@ description: 统一多媒体生成技能。支持图片和音乐生成,按资
|
|
|
10
10
|
| 变量 | 默认值 | 说明 |
|
|
11
11
|
|------|--------|------|
|
|
12
12
|
| `WORKSPACE_NAME` | `main` | workspace 名称 |
|
|
13
|
-
| `
|
|
13
|
+
| `OPENCLAW_HOME` | `~/.openclaw` | OpenClaw 安装目录(可选,用于覆盖默认路径) |
|
|
14
|
+
| `VAPI_API_KEY` | - | VAPI 图片 API Key(备 provider) |
|
|
14
15
|
|
|
15
16
|
## 输出路径规则
|
|
16
17
|
|
|
17
|
-
-
|
|
18
|
-
- 其他 workspace → `/root/.openclaw/workspace-{name}/media/`
|
|
18
|
+
- 生成文件保存在**当前 workspace 的 media/ 目录**
|
|
19
19
|
- 文件名:`image_{时间戳}.png` / `music_{时间戳}.mp3`
|
|
20
20
|
|
|
21
21
|
## 一键脚本
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
24
|
# 图片生成
|
|
25
|
-
WORKSPACE_NAME=main ./image.sh "描述" [--aspect-ratio 16:9]
|
|
25
|
+
WORKSPACE_NAME=main ./image.sh "描述" [--aspect-ratio 16:9]
|
|
26
26
|
|
|
27
27
|
# 音乐生成
|
|
28
|
-
WORKSPACE_NAME=main ./music.sh "描述" [--lyrics "歌词"] [--instrumental]
|
|
28
|
+
WORKSPACE_NAME=main ./music.sh "描述" [--lyrics "歌词"] [--instrumental]
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
## 参数说明
|
|
@@ -36,7 +36,6 @@ WORKSPACE_NAME=main ./music.sh "描述" [--lyrics "歌词"] [--instrumental] [--
|
|
|
36
36
|
|------|------|------|
|
|
37
37
|
| `prompt` | 是 | 图片描述 |
|
|
38
38
|
| `--aspect-ratio` | 否 | 比例,默认 1:1。可选:16:9, 9:16, 4:3 等 |
|
|
39
|
-
| `--registry` | 否 | 生成后注册到 `__MY_ARTIFACTS__.json` |
|
|
40
39
|
|
|
41
40
|
### music.sh
|
|
42
41
|
|
|
@@ -45,7 +44,6 @@ WORKSPACE_NAME=main ./music.sh "描述" [--lyrics "歌词"] [--instrumental] [--
|
|
|
45
44
|
| `prompt` | 是 | 音乐风格/情绪描述 |
|
|
46
45
|
| `--lyrics` | 否 | 歌词文本 |
|
|
47
46
|
| `--instrumental` | 否 | 纯音乐模式 |
|
|
48
|
-
| `--registry` | 否 | 生成后注册到 `__MY_ARTIFACTS__.json` |
|
|
49
47
|
|
|
50
48
|
## 架构
|
|
51
49
|
|
|
@@ -54,10 +52,9 @@ image.sh / music.sh → 智能体调用的薄壳入口
|
|
|
54
52
|
generate.py → 统一路由调度(主备切换)
|
|
55
53
|
config.json → provider 配置中心(key、模型、地址)
|
|
56
54
|
providers/ → 各 provider 适配器
|
|
57
|
-
|
|
58
|
-
|
|
55
|
+
minimax_image.py → MiniMax 图片(主)
|
|
56
|
+
vapi_image.py → VAPI 图片(备)
|
|
59
57
|
minimax_music.py → MiniMax 音乐(主)
|
|
60
|
-
registry.py → 资源注册到 __MY_ARTIFACTS__.json
|
|
61
58
|
```
|
|
62
59
|
|
|
63
60
|
## Provider 配置
|
|
@@ -65,7 +62,7 @@ registry.py → 资源注册到 __MY_ARTIFACTS__.json
|
|
|
65
62
|
编辑 `config.json` 可切换主备 provider、更换模型或 API Key。
|
|
66
63
|
|
|
67
64
|
当前配置:
|
|
68
|
-
- **图片**:
|
|
65
|
+
- **图片**:MiniMax (image-01) → fallback VAPI (nano-banana-pro)
|
|
69
66
|
- **音乐**:MiniMax (music-2.6)
|
|
70
67
|
|
|
71
68
|
## 详细 API 参考
|
|
@@ -1,24 +1,22 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# 图片生成入口
|
|
3
|
-
# 用法: WORKSPACE_NAME=main ./image.sh "描述" [--aspect-ratio 16:9]
|
|
3
|
+
# 用法: WORKSPACE_NAME=main ./image.sh "描述" [--aspect-ratio 16:9]
|
|
4
4
|
set -euo pipefail
|
|
5
5
|
|
|
6
6
|
PROMPT="${1:-}"
|
|
7
7
|
shift 2>/dev/null || true
|
|
8
8
|
|
|
9
9
|
if [ -z "$PROMPT" ]; then
|
|
10
|
-
echo "用法: WORKSPACE_NAME=xxx ./image.sh \"描述\" [--aspect-ratio 16:9]
|
|
11
|
-
echo "示例: WORKSPACE_NAME=main ./image.sh \"a cute cat\" --aspect-ratio 16:9
|
|
10
|
+
echo "用法: WORKSPACE_NAME=xxx ./image.sh \"描述\" [--aspect-ratio 16:9]"
|
|
11
|
+
echo "示例: WORKSPACE_NAME=main ./image.sh \"a cute cat\" --aspect-ratio 16:9"
|
|
12
12
|
exit 1
|
|
13
13
|
fi
|
|
14
14
|
|
|
15
15
|
ASPECT_RATIO=""
|
|
16
|
-
REGISTRY=false
|
|
17
16
|
|
|
18
17
|
while [ $# -gt 0 ]; do
|
|
19
18
|
case "$1" in
|
|
20
19
|
--aspect-ratio) ASPECT_RATIO="$2"; shift 2 ;;
|
|
21
|
-
--registry) REGISTRY=true; shift ;;
|
|
22
20
|
*) shift ;;
|
|
23
21
|
esac
|
|
24
22
|
done
|
|
@@ -31,13 +29,4 @@ ARGS+=("image")
|
|
|
31
29
|
ARGS+=("$PROMPT")
|
|
32
30
|
[ -n "$ASPECT_RATIO" ] && ARGS+=(--aspect-ratio "$ASPECT_RATIO")
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
echo "$RESULT"
|
|
36
|
-
|
|
37
|
-
# Parse output path and optionally register
|
|
38
|
-
if [ "$REGISTRY" = true ]; then
|
|
39
|
-
OUTPUT=$(echo "$RESULT" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['files'][0])" 2>/dev/null || true)
|
|
40
|
-
if [ -n "$OUTPUT" ]; then
|
|
41
|
-
WORKSPACE_NAME="${WORKSPACE_NAME:-main}" AUTO_REGISTRY=true python3 "$SCRIPT_DIR/registry.py" "$OUTPUT"
|
|
42
|
-
fi
|
|
43
|
-
fi
|
|
32
|
+
python3 "$SCRIPT_DIR/generate.py" "${ARGS[@]}"
|
|
@@ -1,26 +1,24 @@
|
|
|
1
1
|
#!/bin/bash
|
|
2
2
|
# 音乐生成入口
|
|
3
|
-
# 用法: WORKSPACE_NAME=main ./music.sh "描述" [--lyrics "歌词"] [--instrumental]
|
|
3
|
+
# 用法: WORKSPACE_NAME=main ./music.sh "描述" [--lyrics "歌词"] [--instrumental]
|
|
4
4
|
set -euo pipefail
|
|
5
5
|
|
|
6
6
|
PROMPT="${1:-}"
|
|
7
7
|
shift 2>/dev/null || true
|
|
8
8
|
|
|
9
9
|
if [ -z "$PROMPT" ]; then
|
|
10
|
-
echo "用法: WORKSPACE_NAME=xxx ./music.sh \"描述\" [--lyrics \"歌词\"] [--instrumental]
|
|
11
|
-
echo "示例: WORKSPACE_NAME=main ./music.sh \"relaxing guitar\" --instrumental
|
|
10
|
+
echo "用法: WORKSPACE_NAME=xxx ./music.sh \"描述\" [--lyrics \"歌词\"] [--instrumental]"
|
|
11
|
+
echo "示例: WORKSPACE_NAME=main ./music.sh \"relaxing guitar\" --instrumental"
|
|
12
12
|
exit 1
|
|
13
13
|
fi
|
|
14
14
|
|
|
15
15
|
LYRICS=""
|
|
16
16
|
INSTRUMENTAL=false
|
|
17
|
-
REGISTRY=false
|
|
18
17
|
|
|
19
18
|
while [ $# -gt 0 ]; do
|
|
20
19
|
case "$1" in
|
|
21
20
|
--lyrics) LYRICS="$2"; shift 2 ;;
|
|
22
21
|
--instrumental) INSTRUMENTAL=true; shift ;;
|
|
23
|
-
--registry) REGISTRY=true; shift ;;
|
|
24
22
|
*) shift ;;
|
|
25
23
|
esac
|
|
26
24
|
done
|
|
@@ -34,13 +32,4 @@ ARGS+=("$PROMPT")
|
|
|
34
32
|
[ -n "$LYRICS" ] && ARGS+=(--lyrics "$LYRICS")
|
|
35
33
|
[ "$INSTRUMENTAL" = true ] && ARGS+=(--instrumental)
|
|
36
34
|
|
|
37
|
-
|
|
38
|
-
echo "$RESULT"
|
|
39
|
-
|
|
40
|
-
# Parse output path and optionally register
|
|
41
|
-
if [ "$REGISTRY" = true ]; then
|
|
42
|
-
OUTPUT=$(echo "$RESULT" | python3 -c "import json,sys; d=json.load(sys.stdin); print(d['files'][0])" 2>/dev/null || true)
|
|
43
|
-
if [ -n "$OUTPUT" ]; then
|
|
44
|
-
WORKSPACE_NAME="${WORKSPACE_NAME:-main}" AUTO_REGISTRY=true python3 "$SCRIPT_DIR/registry.py" "$OUTPUT"
|
|
45
|
-
fi
|
|
46
|
-
fi
|
|
35
|
+
python3 "$SCRIPT_DIR/generate.py" "${ARGS[@]}"
|