# @devmotion/cli 中文文档

规范地址：https://npmcn.com/package/%40devmotion/cli/

版本：1\.9\.4
npm 元数据更新时间：2026-11-10T14:29:29.609Z
中文译文更新时间：2026-11-12T03:59:06.309Z
软件包许可：SEE LICENSE IN LICENSE

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40devmotion/cli
原文对照：https://npmcn.com/package/%40devmotion/cli/?lang=original
项目主页：https://devmotion.app/developers

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：95.1 MB，2492 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=20
- 运行依赖：27 个
- 首次发布：2026-05-28T13:41:26.611Z
- 最新版本发布：2026-11-10T14:29:29.121Z
- 近 30 天下载量：3021（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：29（近 12 个月 29 个）

## 中文简介

DevMotion本地工作室:项目文件夹上的DevMotion编辑器,渲染器和MCP服务器.

## 安装

```sh
npm install @devmotion/cli
```

也可以使用：`pnpm add @devmotion/cli`、`yarn add @devmotion/cli`、`bun add @devmotion/cli`

## README

# @ devmotion/ cli (英语)

**DevMotion本地工作室.** DevMotion 编辑器、渲染器和 MCP 服务器,运行在一个 机器上的工程文件夹 。 生成(语音、图像、视频、音乐、字幕、, {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}DevMotion的聊天在Devmotion上进行 {\\fn黑体\\fs22\\bord1\\shad0\\3aHBE\\4aH00\\fscx67\\fscy66\\2cHFFFFFF\\3cH808080}我还得说 应用与您的账户; 聊天也可以 驱动您已经安装的 Claude 代码或代码 .

![The Local Studio open on a project while its scene files change on disk: each edit lands on the canvas as it is saved](https://devmotion.app/demo/cli/live-edit.gif)

```bash
npx @devmotion/cli init my-video
cd my-video
npx @devmotion/cli          # opens the Studio in your browser
```

* * *

## 安装

```bash
npm i -g @devmotion/cli     # then: devmotion …
# or without installing
npx @devmotion/cli <command>
```

要求数 **节点.js 20**带货包的ffmpeg船(`@ffmpeg-installer/ffmpeg`),以及 (单位:千美元) `postinstall` 步骤下载 Playwright Chromium(~150 MB,一次)用于渲染. 跳过它 与 `DEVMOTION_SKIP_POSTINSTALL=1`· ; `devmotion render` 先用取来.

* * *

## 图标

| 命令 | 目的 |
| --- | --- |
| `devmotion` | 在此文件夹中打开工程工作室( 或显示帮助) |
| `devmotion init [dir] [--name] [--size 1920x1080] [--fps 30]` | 创建一个项目, `.gitignore` 和代理设置( e)`--no-agent` 跳过) |
| `devmotion studio [dir] [--port 4747] [--no-open]` | 运行工作室:编辑器、渲染器和 MCP 服务器(别名) `preview`(中文(简体) ) |
| `devmotion render [dir] [-o file.mp4] [--port]` | 调整到 `renders/` (使用运行的工作室或启动一个) |
| `devmotion record <tour.mjs> [-p dir]` 编号 : `--check` | 在一个巡回演唱时记录一个应用程序; `-p` 编辑它为工程 |
| `devmotion record init [url]` | 写一个首个巡回演唱会 |
| `devmotion beats <script.txt> -w <words.json> [-o take.json]` | 放置一个描述 `{beat}` 语音定时词上的标记(离线) |
| `devmotion skill install [--global]` 编号 : `skill print` | 给 Claude 代码、 Codex 或 Cursor 演示技能 |
| `devmotion login` 编号 : `logout` 编号 : `whoami` | 您的 devmotion.app账户: 世代信用和云聊天 |
| `devmotion doctor` | 检查ffmpeg, Chromium, 登录, 服务器兼容性和本地代理 |

| `devmotion render --changed [-c config]` QQ 仅显示/ 丢失/ 修改目标, 更新锁定QQ | `devmotion render --all` 编号 : `--target a,b` 编号 : `--watch` QQ 将每个/ 选择的目标渲染; 当目标更改后重放 QQ | `devmotion check [-c config]` QQ 不渲染: 退出 1 列出 stale, 缺少或修改的目标 QQ | `devmotion lock [-c config]` QQ 在锁中记录当前输出而不渲染QQ | `devmotion studio -c config [--target id]` QQ 打开目标项目, 或选择一个配置项目 QQ

工作室听着 `127.0.0.1:4747` 默认情况下——一个端口,一个项目. 运行一秒钟 与 `--port`在包含几个项目(每个语言一个)的回购中 目标文件的工作室 : `devmotion studio -c videos/devmotion.config.json` 列出其 并询问要打开哪个项目,以及 `--target intro.it` 打开目标的项目 直接( 没有终端可以请求, `--target` (见e/cn.4/sub.2/2003/l.10。).

* * *

## 你的计划

在你的机器上的渲染(`devmotion render` 每个模式,工作室的导出,MCP `render_project` (b) 遵循与CLI登录的账户计划 规则作为 devmotion.app的导出:没有出口干净的计划,视频带有 DevMotion徽章,每个计划在其出口分辨率上都封住大小. 一个更大的项目是 它的布局没有改变。 当地土地不计算,也不使用信贷. 当一个纹身带有徽章或被缩小时, `devmotion render` 说一次和名字 提拔它的计划[驳回.申请/定价](https://devmotion.app/pricing));工作室的 显示渲染器将携带的徽章.

这个计划是来自虔诚的 应用,当你在一天之内完成和记住 (单位:千美元)`~/.config/devmotion/plan.json`)),所以离线渲染保留了最后已知的计划. 未登录 或者没有答案 也不记得了 自由计划 在CI中,设置 `DEVMOTION_API_KEY` 键 计划出口干净的账户;没有这种账户,CI会携带徽章。 账户 在下面的渲染锁中不播放任何角色: `devmotion check` 是否给出同样的答案 钥匙.

* * *

## 目标与锁

宣布产出一次 `devmotion.config.json` (路径相对于文件). 若干目标 可共享项目; 变体是一个目标 `values` 或者说 `range`。 。 。 .

```json
{
  "version": 1,
  "lock": "devmotion.lock.json",
  "targets": {
    "intro": {
      "source": "videos/intro",
      "values": { "headline": "Hello" },
      "range": { "start": 0, "end": 8 },
      "audio": false,
      "encode": { "crf": 23, "maxCrf": 35, "maxBytes": 1572864 },
      "output": "public/intro.mp4",
      "poster": { "path": "public/intro.jpg", "time": 5 }
    }
  }
}
```

`devmotion render --changed` 摧毁每一个目标,只让那些需要它的人。 目标 `sourceHash` 是其项目文件上的sha256; `renders/`, (中文(简体) ), `.devmotion/`, (中文(简体) ), `node_modules/` (不包括), `values`, (中文(简体) ), `range`, (中文(简体) ), `audio`, (中文(简体) ), `encode`,海报时间和渲染器 版本(CLI major.minor). `devmotion.lock.json` 承诺:

```json
{
  "lockVersion": 1,
  "renderer": "1.1",
  "targets": {
    "intro": {
      "sourceHash": "<sha256>",
      "outputs": { "public/intro.mp4": { "sha256": "<sha256>", "bytes": 123456 } }
    }
  }
}
```

目标在散列不同或没有被锁定时会停滞,在输出消失时会丢失,以及 当输出的校验和与锁不同时修改. `devmotion check` 在 CI 中运行, 无 已安装了渲染器 。 在小的 CLI 升级后运行 `devmotion render --changed` (或 `devmotion lock` 如果产出不变).

程序用途 : `import { loadConfig, readLock, checkTargets, recordTarget, writeLock } from '@devmotion/cli'` (与 `@devmotion/cli/lock`) (中文(简体) ).

* * *

## 项目文件夹

```
my-video/
├── project.json        # the project (the same JSON devmotion.app stores)
├── scenes/<layerId>/   # HTML / CSS / script sources of scripted scenes
├── assets/             # your media, referenced as /local-assets/<path>
├── renders/            # rendered MP4s
└── .devmotion/         # local state (chat history, cloud cache) — not versioned
```

在工作室中编辑,使用代理,或用手:当文件更改时工作室会重新加载. 场景 来源为普通文件( r)`index.html`, (中文(简体) ), `style.css`, (中文(简体) ), `script-<n>.js`页:1 `project.json` 作为 `{ "$file": "scenes/<layerId>/index.html" }`。当 工作室保存,不管它叫什么.

### 共享文件夹

文件使用多个工程(一个工具箱,一个场景的逻辑,声音效果)一次直播,在任意 项目。 相对于它自己的文件夹的工程名称 :

```json
{
  "shared": { "kit": "../../kit", "scene": "../shared" },
  "layers": [
    {
      "type": "html",
      "props": {
        "scripts": [
          { "src": "/local-shared/kit/world.js" },
          { "src": "/local-shared/scene/scene.js" }
        ]
      }
    },
    { "type": "audio", "props": { "src": "/local-shared/kit/sfx/tick.wav" } }
  ]
}
```

工作室为他们服务 `/local-shared/<name>/<path>` 当他们变换时,他们将重新加载 将文件与项目本身的: 换套装,每个使用它的项目都僵化。 每个语言一个项目,分享场景, 使每种语言都有自己的声音、时间和长度.

### 编辑器支持

`init` 点 `project.json` 在创建它的CLI版本的JSON Schema:

```json
{ "$schema": "https://unpkg.com/@devmotion/cli@<version>/schema/project.schema.json" }
```

它来自工作室自己的计划, 层道具每类型包含, 所以一个编辑器 验证并完成文件. `devmotion.config.json` 还有一个: `https://unpkg.com/@devmotion/cli@<version>/schema/config.schema.json`。 。 。 .

* * *

## 记录一个应用程序

![A take edited by devmotion record: the camera closes in as a click lands on Render video, a ring spreads from it, then the camera pulls back](https://devmotion.app/demo/record/click.gif)

`devmotion record` 在脚本驱动时记录一个真实的应用程序,即Screen Studio记录的方式 个人:网站,电子应用(VS代码,Cursor,Slack.)或桌面应用,被该软件捕获 操作系统在60英尺处有一个软物理指针,加上每个动作的音轨,点击和 键.

```js
// my-app.tour.mjs
export default {
  app: { kind: 'browser', url: 'https://example.com' },
  async run(D) {
    await D.click('text=Get started');
    await D.click({ describe: 'The email field of the sign-up form' });
    await D.type('ada@example.com');
    await D.key('Meta+Enter');
  }
};
```

```bash
devmotion record --check                     # permissions, helpers and login on this machine
devmotion record init https://example.com    # a starter tour: example.tour.mjs
devmotion record my-app.tour.mjs             # recordings/my-app.mp4 + my-app.track.json
devmotion record my-app.tour.mjs -p demo     # … edited into the project ./demo
```

**`record init [url]`** 写一个第一部作品的巡演:它等待,向下滚动 后,并单击页面头的首个链接,只有选择器. `--name <name>` 命名文件( r)`<name>.tour.mjs`,默认从站点), `--app electron` (VS代码由 默认)或 `--app native` (默认计算器)开始一个应用的巡演取而代之. 从来没有 覆盖文件,并打印记录巡演的命令.

导演: `D.move`, (中文(简体) ), `D.click`, (中文(简体) ), `D.type`, (中文(简体) ), `D.key`, (中文(简体) ), `D.scroll`, (中文(简体) ), `D.drag`, (中文(简体) ), `D.show` (一秒钟) 值得仔细观察, `D.skip(work)` (切出视频的慢步), `D.at` 编号 : `D.wait` (拍打声). 一个目标是一个选择器,一个点,或者一个要点击的描述.

**`--project <dir>`** 在已编辑的工程中登陆所带( 文件夹的创建方式如下 ) `devmotion init` 当它没有项目时:一个自动相机,每点击一次就关闭, 键入字段并显示目标,然后向后拉;每次点击时取出一个环;每次取出一个芯片 键盘快捷键( e)`⌘⇧P`); 视频没有指针时为鼠标层. 这一切都很平淡 您可以在工作室中更改层和键框。 再次录制同样的巡回演唱会,它的拍摄是 替换到原地,其余项目没有被改变:新发行只需新买. 在巡演中说:

```js
edit: { camera: { maxZoom: 1.6, hold: 1.2 }, ripple: true, keystrokes: 'shortcuts' }
// camera: false for the whole screen throughout; keystrokes: 'all' | 'none'
```

**叙事: `devmotion beats`。 。 。 .** 给一次巡回演唱会的时间 给它打个记号 脚本为 `{name}` 一言为定 `beats` 声音的定时词:工作室的 转换音频动作( T)`action_transcribe_audio`, (中文(简体) ), `{ text, language, words: [{ word, start, end }] }`)或(或) `[word, start, end]` 三发. 它在下线后写下:

```bash
devmotion beats script.txt --words transcription.json --out take.json
```

```text
# script.txt: # lines are notes, [tags] and *accents* are ignored, {end} is reserved
[warm] {open}Open the *editor*. {render}Then render it.
```

```json
{ "words": [["Open", 0.1, 0.4], …], "beats": { "open": 0.1, "render": 1.4, "end": 2.3 } }
```

每拍子是声速数秒的开始, `end` 最后一个词的结尾(a) 重音单词包含第四个元素, `1`) (中文(简体) ). 单词对齐大小写 数字(`2` 编号 : `two`),其音译所不言出失命令而取名. 单位 参观, `await D.at(take.beats.render)` 等待那节拍.

macOS 14+ (Screen Recording perference; 可访问驱动桌面应用程序); Linux X11 是 实验和未经测试。 用文字描述的目标(和每个桌面应用程序)在 由 DevMotion 绘制的截图并使用您的 AI 信用值: 登录到第一个( D)`devmotion login`) (中文(简体) ). a 之前,一个 拿着它, `record` 印出价钱和余额,当您不在时停止 登录入或出入入入. 选择者和点数是免费的,不需要账号.

* * *

## 代理人(MCP和技能)

工作室为DevMotion MCP服务器服务 `http://127.0.0.1:4747/mcp`: 与 devmotion.app (英语:`get_design_guide`, (中文(简体) ), `get_project`, (中文(简体) ), `upsert_layer`, (中文(简体) ), `write_layer_source`, (中文(简体) ), `instantiate_block`, (中文(简体) ), `inspect_frames`, (中文(简体) ), `action_*`,写入项目文件夹。 留着 工作室在工作时运行. `devmotion init` 写入 Claude 代码的 MCP 配置 (单位:千美元)`.mcp.json`)和 Codex ((`.codex/config.toml`),外加减速技巧.

该技能告诉一个代理人如何使用CLI:项目文件夹,工作室及其MCP工具, 制造和制造目标, `record`,账户, 以及完整的文件在哪里。 装入 任何存储器,或每个项目:

```bash
devmotion skill install                  # this folder, for Claude Code, Codex and Cursor
devmotion skill install --global         # every project of this user (your home folder)
devmotion skill install --agent cursor   # one agent: claude, codex or cursor
devmotion skill print                    # print it, for any other agent
```

默认情况下它会写 `.claude/skills/devmotion/SKILL.md` (法规)和 `.agents/skills/devmotion/SKILL.md` (代码;光标同时读取); `--agent cursor` 独自写作 `.cursor/skills/devmotion/SKILL.md`。更新后再运行它。 同一文件已经送达 `https://devmotion.app/skills/devmotion/SKILL.md` 一个特工说要读它.

* * *

## 云层特征

`devmotion login` 打开 devmotion.app为此机器创建 API 密钥( 存储于 `~/.config/devmotion/credentials.json`) (中文(简体) ). 然后所有在工作室和 MCP 磁共振 `action_*` 工具运行于 devmotion。 应用与您的计划信用; 输入一次上传 并下载结果到 `assets/generated/`. . 您的项目留在本地.

环境覆盖 : `DEVMOTION_API_KEY` (使用此键)和 `DEVMOTION_API_URL` (另一个) DevMotion 服务器).

## 聊天

聊天板提供 **减号云** 模型(需要登录)以及安装和 登录在你的机器上, **克劳德代码** 财务报告和审定财务报表 **代码**:工作室运行他们与自己的 MCP服务器,编辑器跟随他们的编辑活性.

* * *

## 许可证

专有和封闭源码:使用须遵守 [变动服务条件](https://devmotion.app/terms)。见 `LICENSE`; 第三方许可证 `THIRD_PARTY_LICENSES.txt`。 。 。 .

## 常见问题

### @devmotion/cli 是什么？

DevMotion本地工作室:项目文件夹上的DevMotion编辑器,渲染器和MCP服务器\.

### 如何安装 @devmotion/cli？

在项目目录运行 npm install @devmotion/cli，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 devmotion，可以用 npx devmotion 直接运行。

### @devmotion/cli 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/devmotion\_\_cli 是否存在。

### @devmotion/cli 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @devmotion/cli 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=20。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @devmotion/cli 可以商用吗？

@devmotion/cli 使用 SEE LICENSE IN LICENSE 许可。许可条款写在包内的独立文件中，请阅读该文件确认可否商用。以上为概括，不构成法律意见，请以许可原文为准。

### @devmotion/cli 的下载量有多少？

根据 npm 官方下载统计，@devmotion/cli 在 2026/10/12 – 2026/11/10 这 30 天内被下载 3,021 次，日均约 101 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @devmotion/cli 还在维护吗？

最新版本 1\.9\.4 发布于 2026/11/10（1 天前）；至今共发布 29 个版本，其中过去 12 个月发布了 29 个；首次发布于 2026/05/28。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

