@xcanwin/manyoyo 4.0.0 → 4.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 CHANGED
@@ -46,8 +46,9 @@
46
46
  ```bash
47
47
  npm install -g @xcanwin/manyoyo # 安装
48
48
  podman pull ubuntu:24.04 # 仅 Podman 需要
49
- manyoyo --ib --iv 1.7.0 # 构建镜像
50
- manyoyo -y c # 运行 Claude Code YOLO 模式
49
+ manyoyo --ib --iv 1.7.4 # 构建镜像
50
+ manyoyo --init-config all # 从本机 Agent 配置迁移到 ~/.manyoyo
51
+ manyoyo -r claude # 使用迁移后的运行配置启动
51
52
  ```
52
53
 
53
54
  注意:YOLO/SOLO 会跳过权限确认,请确保在可控环境中使用。
@@ -96,7 +97,7 @@ npm install -g @xcanwin/manyoyo
96
97
 
97
98
  ```bash
98
99
  # 构建完整版本(推荐)
99
- manyoyo --ib --iv 1.7.0
100
+ manyoyo --ib --iv 1.7.4
100
101
 
101
102
  # 构建精简版本
102
103
  manyoyo --ib --iba TOOL=common
@@ -110,6 +111,9 @@ manyoyo --ib --iba TOOL=go,codex,java,gemini
110
111
  ## 常用命令
111
112
 
112
113
  ```bash
114
+ # 配置迁移(推荐首步)
115
+ manyoyo --init-config all
116
+
113
117
  # 启动常见智能体
114
118
  manyoyo -y c # Claude Code(或 claude / cc)
115
119
  manyoyo -y gm # Gemini(或 gemini / g)
@@ -118,8 +122,8 @@ manyoyo -y oc # OpenCode(或 opencode)
118
122
 
119
123
  # 容器管理
120
124
  manyoyo -l
121
- manyoyo -n myy-dev -x /bin/bash
122
- manyoyo -n myy-dev --crm
125
+ manyoyo -n my-dev -x /bin/bash
126
+ manyoyo -n my-dev --crm
123
127
  manyoyo --server 3000
124
128
  manyoyo --server 3000 --server-user admin --server-pass 123456
125
129
 
package/bin/manyoyo.js CHANGED
@@ -26,6 +26,18 @@ function formatDate() {
26
26
  return `${month}${day}-${hour}${minute}`;
27
27
  }
28
28
 
29
+ function detectCommandName() {
30
+ const rawArgv1 = process.argv[1] || '';
31
+ const baseName = path.basename(rawArgv1).replace(/\.(cjs|mjs|js)$/i, '');
32
+
33
+ if (baseName === 'docker-manyoyo') {
34
+ const pluginCommand = String(process.argv[2] || '').trim();
35
+ return pluginCommand || 'manyoyo';
36
+ }
37
+
38
+ return baseName || 'manyoyo';
39
+ }
40
+
29
41
  // ==============================================================================
30
42
  // Configuration Constants
31
43
  // ==============================================================================
@@ -38,7 +50,7 @@ const CONFIG = {
38
50
  };
39
51
 
40
52
  // Default configuration
41
- let CONTAINER_NAME = `myy-${formatDate()}`;
53
+ let CONTAINER_NAME = `my-${formatDate()}`;
42
54
  let HOST_PATH = process.cwd();
43
55
  let CONTAINER_PATH = HOST_PATH;
44
56
  let IMAGE_NAME = "localhost/xcanwin/manyoyo";
@@ -52,7 +64,7 @@ let IMAGE_BUILD_NEED = false;
52
64
  let IMAGE_BUILD_ARGS = [];
53
65
  let CONTAINER_ENVS = [];
54
66
  let CONTAINER_VOLUMES = [];
55
- let MANYOYO_NAME = "manyoyo";
67
+ let MANYOYO_NAME = detectCommandName();
56
68
  let CONT_MODE = "";
57
69
  let CONT_MODE_ARGS = [];
58
70
  let QUIET = {};
@@ -630,7 +642,7 @@ function collectOpenCodeInitData(homeDir) {
630
642
 
631
643
  function writeInitEnvFile(filePath, keys, values) {
632
644
  const lines = [
633
- '# Auto-generated by manyoyo --init-config',
645
+ `# Auto-generated by ${MANYOYO_NAME} --init-config`,
634
646
  '# Remove leading # and fill values if missing.',
635
647
  ''
636
648
  ];
@@ -993,7 +1005,7 @@ function showImagePullHint(err) {
993
1005
  }
994
1006
  const image = `${IMAGE_NAME}:${IMAGE_VERSION}`;
995
1007
  console.log(`${YELLOW}💡 提示: 本地未找到镜像 ${image},并且从 localhost 注册表拉取失败。${NC}`);
996
- console.log(`${YELLOW} 你可以: (1) 更新 ~/.manyoyo/manyoyo.json 的 imageVersion。 (2) 或先执行 manyoyo --ib --iv <version> 构建镜像。${NC}`);
1008
+ console.log(`${YELLOW} 你可以: (1) 更新 ~/.manyoyo/manyoyo.json 的 imageVersion。 (2) 或先执行 ${MANYOYO_NAME} --ib --iv <version> 构建镜像。${NC}`);
997
1009
  }
998
1010
 
999
1011
  function runCmd(cmd, args, options = {}) {
@@ -1354,7 +1366,7 @@ async function buildImage(IMAGE_BUILD_ARGS, imageName, imageVersion) {
1354
1366
  execSync(buildCmd, { stdio: 'inherit' });
1355
1367
  console.log(`\n${GREEN}✅ 镜像构建成功: ${fullImageTag}${NC}`);
1356
1368
  console.log(`${BLUE}使用镜像:${NC}`);
1357
- console.log(` manyoyo -n test --in ${imageName} --iv ${version}-${imageTool} -y c`);
1369
+ console.log(` ${MANYOYO_NAME} -n test --in ${imageName} --iv ${version}-${imageTool} -y c`);
1358
1370
 
1359
1371
  // Prune dangling images
1360
1372
  pruneDanglingImages();
@@ -1393,17 +1405,18 @@ async function setupCommander() {
1393
1405
 
1394
1406
  示例:
1395
1407
  ${MANYOYO_NAME} --ib --iv ${IMAGE_VERSION_BASE || "1.0.0"} 构建镜像
1408
+ ${MANYOYO_NAME} --init-config all 从本机 Agent 配置初始化 ~/.manyoyo
1409
+ ${MANYOYO_NAME} -r claude 使用初始化后的运行配置快速启动
1396
1410
  ${MANYOYO_NAME} -r c 使用 ~/.manyoyo/run/c.json 配置
1397
1411
  ${MANYOYO_NAME} -r codex --ss "resume --last" 使用命令后缀
1398
1412
  ${MANYOYO_NAME} -r ./myconfig.json 使用当前目录 ./myconfig.json 配置
1399
1413
  ${MANYOYO_NAME} -n test --ef claude -y c 使用 ~/.manyoyo/env/claude.env 环境变量文件
1400
1414
  ${MANYOYO_NAME} -n test --ef ./myenv.env -y c 使用当前目录 ./myenv.env 环境变量文件
1401
- ${MANYOYO_NAME} --init-config all 从本机 Agent 配置初始化 ~/.manyoyo
1402
1415
  ${MANYOYO_NAME} -n test -- -c 恢复之前会话
1403
1416
  ${MANYOYO_NAME} -x echo 123 指定命令执行
1404
1417
  ${MANYOYO_NAME} --server --server-user admin --server-pass 123456 启动带登录认证的网页服务
1405
1418
  ${MANYOYO_NAME} --server 3000 启动网页交互服务
1406
- ${MANYOYO_NAME} --server 0.0.0.0:3000 监听全部网卡,便于局域网访问
1419
+ ${MANYOYO_NAME} --server 0.0.0.0:3000 监听全部网卡,便于局域网访问
1407
1420
  ${MANYOYO_NAME} -n test -q tip -q cmd 多次使用静默选项
1408
1421
  `);
1409
1422
 
@@ -1420,6 +1433,7 @@ async function setupCommander() {
1420
1433
  .option('--iv, --image-ver <version>', '指定镜像版本')
1421
1434
  .option('--ib, --image-build', '构建镜像')
1422
1435
  .option('--iba, --image-build-arg <arg>', '构建镜像时传参给dockerfile (可多次使用)', (value, previous) => [...(previous || []), value], [])
1436
+ .option('--init-config [agents]', '初始化 Agent 配置到 ~/.manyoyo (all 或逗号分隔: claude,codex,gemini,opencode)')
1423
1437
  .option('--irm, --image-remove', '清理悬空镜像和 <none> 镜像')
1424
1438
  .option('-e, --env <env>', '设置环境变量 XXX=YYY (可多次使用)', (value, previous) => [...(previous || []), value], [])
1425
1439
  .option('--ef, --env-file <file>', '设置环境变量通过文件 (name → ~/.manyoyo/env/name.env, ./file.env → 当前目录文件)', (value, previous) => [...(previous || []), value], [])
@@ -1429,8 +1443,7 @@ async function setupCommander() {
1429
1443
  .option('--ss, --shell-suffix <command>', '指定命令后缀 (追加到-s之后,等价于 -- <args>)')
1430
1444
  .option('-x, --shell-full <command...>', '指定完整命令执行 (代替--sp和-s和--命令)')
1431
1445
  .option('-y, --yolo <cli>', '使AGENT无需确认 (claude/c, gemini/gm, codex/cx, opencode/oc)')
1432
- .option('--init-config [agents]', '初始化 Agent 配置到 ~/.manyoyo (all 或逗号分隔: claude,codex,gemini,opencode)')
1433
- .option('--install <name>', '安装manyoyo命令 (docker-cli-plugin)')
1446
+ .option('--install <name>', `安装${MANYOYO_NAME}命令 (docker-cli-plugin)`)
1434
1447
  .option('--show-config', '显示最终生效配置并退出')
1435
1448
  .option('--show-command', '显示将执行的 docker run 命令并退出')
1436
1449
  .option('--server [port]', '启动网页交互服务 (默认 127.0.0.1:3000,支持 host:port)')
@@ -2,7 +2,7 @@
2
2
  // MANYOYO 全局配置文件,保存到 ~/.manyoyo/manyoyo.json
3
3
 
4
4
  // 覆盖型参数(命令行 > 运行配置 > 全局配置)
5
- "containerName": "myy-dev",
5
+ "containerName": "my-dev",
6
6
  "hostPath": "/path/to/your/project",
7
7
  "containerPath": "/path/to/your/project",
8
8
  "imageName": "localhost/xcanwin/manyoyo",
@@ -25,7 +25,7 @@
25
25
  >关闭</button>
26
26
  </div>
27
27
  <form class="new-session" id="newSessionForm">
28
- <input id="newSessionName" placeholder="容器名 (例如 myy-dev)" />
28
+ <input id="newSessionName" placeholder="容器名 (例如 my-dev)" />
29
29
  <button type="submit">新建</button>
30
30
  </form>
31
31
  <div class="session-head">
package/lib/web/server.js CHANGED
@@ -471,7 +471,7 @@ async function handleWebApi(req, res, pathname, ctx, state) {
471
471
  const payload = await readJsonBody(req);
472
472
  let containerName = (payload.name || '').trim();
473
473
  if (!containerName) {
474
- containerName = `myy-${ctx.formatDate()}`;
474
+ containerName = `my-${ctx.formatDate()}`;
475
475
  }
476
476
  if (!ctx.isValidContainerName(containerName)) {
477
477
  sendJson(res, 400, { error: `containerName 非法: ${containerName}` });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xcanwin/manyoyo",
3
- "version": "4.0.0",
3
+ "version": "4.0.2",
4
4
  "imageVersion": "1.7.4",
5
5
  "description": "AI Agent CLI Security Sandbox for Docker and Podman",
6
6
  "keywords": [
@@ -26,7 +26,7 @@
26
26
  "main": "bin/manyoyo.js",
27
27
  "bin": {
28
28
  "manyoyo": "bin/manyoyo.js",
29
- "myy": "bin/manyoyo.js"
29
+ "my": "bin/manyoyo.js"
30
30
  },
31
31
  "scripts": {
32
32
  "install-link": "npm link",