@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiyiran/myclaw",
3
- "version": "1.0.205",
3
+ "version": "1.0.207",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "bin": {
@@ -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
 
@@ -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,支持主备切换。生成文件统一保存到 workspace 的 media/ 目录。
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
- | `VAPI_API_KEY` | - | VAPI 图片 API Key(主 provider) |
13
+ | `OPENCLAW_HOME` | `~/.openclaw` | OpenClaw 安装目录(可选,用于覆盖默认路径) |
14
+ | `VAPI_API_KEY` | - | VAPI 图片 API Key(备 provider) |
14
15
 
15
16
  ## 输出路径规则
16
17
 
17
- - **main** workspace `/root/.openclaw/workspace/media/`
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] [--registry]
25
+ WORKSPACE_NAME=main ./image.sh "描述" [--aspect-ratio 16:9]
26
26
 
27
27
  # 音乐生成
28
- WORKSPACE_NAME=main ./music.sh "描述" [--lyrics "歌词"] [--instrumental] [--registry]
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
- vapi_image.py VAPI 图片(主)
58
- minimax_image.py MiniMax 图片(备)
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
- - **图片**:VAPI (nano-banana-pro) → fallback MiniMax (image-01)
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] [--registry]
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] [--registry]"
11
- echo "示例: WORKSPACE_NAME=main ./image.sh \"a cute cat\" --aspect-ratio 16:9 --registry"
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
- RESULT=$(python3 "$SCRIPT_DIR/generate.py" "${ARGS[@]}")
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] [--registry]
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] [--registry]"
11
- echo "示例: WORKSPACE_NAME=main ./music.sh \"relaxing guitar\" --instrumental --registry"
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
- RESULT=$(python3 "$SCRIPT_DIR/generate.py" "${ARGS[@]}")
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[@]}"