@302ai/media-studio-cli

中文文档
0.1.6发布于 2026/11/06Apache-2.0ES Module零依赖近 30 天下载 1985

AI Media Studio的CLI——让外部代理驱动核心媒体- studio功能

中文使用文档
文档目录19 节
  1. 安装
  2. 使用量
  3. CLI 兼容性和更新
  4. 多回合对话
  5. 配置和存储
  6. 技能
  7. 特工技能( A) 302ai/msc-skill (中文(简体) )
  8. 附录
  9. Stage 服务器( 过期的 TLS 证书)
  10. TLS 干扰代理
  11. 代理
  12. 发展
  13. 测试(在运送任何变化之前)
  14. 1. 发展周期(最快)
  15. 2. 自动外部消费者检查(需要)
  16. 3. 人工用户安装模拟
  17. 4. 端到端对正服务器
  18. 笔记学会了艰难的方法
  19. 许可证

@302ai/ 媒体- studio- cli

AI Media Studio的CLI – 驱动任意媒体- studio聊天 终端或外部代理.

安装

npm install -g @302ai/media-studio-cli
# requires Node.js >= 22

硬币和本地版只有发行前版本. 地区 可见度跟随软件包版本,而不是 npm dist- tag: 已发布 预放会暴露它们,同时安装一个稳定的版本从 @beta 没有.

如果你通过 包头 获得 command not found: bun 的全球垃圾桶 dir 默认不在 PATH 上 。 运行一次 :

echo 'export PATH="$HOME/.bun/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc

使用量

msc login                   # authenticate in a browser
msc guide                   # the full agent-facing manual
msc whoami                  # show current auth status
msc chat "hi"               # one chat turn (multi-turn by default)
msc sessions                # list sessions from the server
msc skills                  # list the skill catalog you can reference
msc logout                  # clear stored credentials

media-studio-cli 是长的别名 msc - 同一个方案,两个 已安装。 文档、 帮助输出和每条错误消息都使用短信息 名称 :

msc chat "画一只猫" -r        # -r/--show-reasoning = 展示模型推理过程
msc chat "hi" --json          # machine-readable output
msc chat "hi" --session <id>  # 切换到已有会话(先校验存在)并设为默认
msc chat "hi" --new           # 新建会话并设为默认(id 不复用)
msc sessions                  # 列出所有会话(标记当前默认 `(current)`)
msc sessions --json           # 机器可读的原始 JSON 数组
msc sessions use <id>         # 校验存在后切换默认会话
msc sessions use --new        # 新建会话并设为默认
msc skills                    # 列出技能库(--plaza 浏览技能广场)
msc skills add <slug>          # 从广场安装技能(如 brainstorming,见 --plaza --json 的 slug)
msc skills rm <command>       # 从技能库移除(-y/--yes 跳过确认)
msc skills enable <command>   # 启用 / disable 停用
msc --help                    # all flags

CLI 中没有会话删除功能 。 要删除会话,请打开 在Media Studio Web app中相应的会话页面并手动删除.

msc --help 具有面向代理人的快速启动——认证的先决条件 三个犬科电话,和 --json 合同. msc guide 打印全文 手动:每个命令, JSON 两种策略 nextStep 值,退出代码, 流管,和技能语义学。 指向那两个特工 而不是 在这里复制它们.

CLI 兼容性和更新

在线CLI请求携带 X-Agent-Cli-Version: <package version>. BFF 应用内容管理系统 CliVersionPolicy (单位:千美元)cli-version-policy(f) 给予whoami、聊天、会议、技能和附属物. enabled 默认为真; enabled=false 是紧急禁用。 空白 minSupportedVersion 使用被捆绑在 BFF 构建中的 CLI 包版本( 此发布为 0. 1. 4) ; 一个自定义稳定的 SemVer 可以提升或降低地板. 清除最低限值可以恢复释放基线,而不是使执行失效。 无头熊的请求是遗留下来的CLI,通常收到 426 (以下为预热例外);无头浏览器-cookie/匿名请求不受影响. 这不是一个认证边界 。 本地帮助,版本,指南,登录和浏览器登录仍然可用.

下层申请收到HTTP 426, (中文(简体) ), CLI_UPGRADE_REQUIRED (单位:千美元)10010和 nextStep: "upgrade_cli" 在它的上游工作或溪流开始之前。 这是一个应用公约,而不是HTTP运输升级. CMS 读取失败使用有效的缓存策略或返回 503,而不是拒绝升级;不解释每个 whoami 1号出口作为过期的证书。 政策缓存使用自存-触发标记无效并定期再验证,而不是同时交叉激活.

老客户端可能不会解码 upgrade_cli;服务器消息仍然同时提供安装命令,需要先获得许可. 发布 CLI 不部署 BFF 或改变其捆绑的基线: 发布0.1.4 并同步匹配的 公共代理 Skill 在部署/激活 BFF 包含该列表的构建之前. 见下文操作员激活程序.

唯一的运输例外是拒绝升级 无页眉 POST /api/sessions/prewarm密码: HTTP 200 证监会 event:error 携带平面 { err_code: 10010, message: <full permission-first commands> },没有 session_ready 或上游作业。 旧的CLI出口1,并曝光 errCode: 10010 和消息,但没有 httpStatus. 印出客户端和所有其他接口 426; CMS 失败仍然存在 503 未转换为 SSE.

可选 npm 发现使用最优的24小时缓存并短时间出局;发现失败从不失败媒体任务或改变其退出状态. 聊天成功/不完全 JSON 可能包含一个稳定 updateAvailable: { current, latest, upgradeCommand, skillUpgradeCommand };成功者可能附带一个稳定的通知。 稳定的排放量在输出之后,在两个指令的每个目标版本中被复制,而不是承认。 交互式终端命令也可以报告β更新,用于预发式构建;β通知不被复制. 稳定版本通过 @beta 无法识别为β,并且没有收到β通知。 技能/会话阵列和单文档 JSON stdout保持不变。 代理在告知用户可选更新之前完成任务,从不默默地安装.

本地通知分解是最佳的,而不是完全的一次:同步进程或无法写入的缓存可以重复通知.

需要升级的恢复许可 两者 全球安装,顺序为:

npm install -g @302ai/media-studio-cli@latest
npx -y skills add 302ai/msc-skill --skill msc-skill -g -y
msc --version
msc guide

如果安装失败并报告已完成步骤, 请停止; 不要声称成功或自动滚回其他安装 。 Skill安装可能不会重新装入运行的 Agent 缓存上下文,所以在恢复前先读取指南. 重试只能是绝对不被接受的一代. 拒绝只涉及该项请求:较早阶段可能已经产生效果。 重用错误 sessionId 与 --session没有 --new;在接受与否不确定时检查现有的会话/艺术。 政策变化不得终止已接受的工作或建立SSE流.

运算符: 见 CLI 最小版本激活 在换地之前.

无头环境不能完成浏览器的登录, 所以 msc login 拒绝 而不是等待召回的最后期限:CI(CI 设定)和 没有的 Linux DISPLAY 也没有 WAYLAND_DISPLAY。从机器上签名 其浏览器可以到达回回调.

多回合对话

chat 默认是多转-不需要旗帜。 CLI只保留一个 lastSessionId 指针 config.json (在配置目录下):

  • 第一次聊天 通过相同的预温提供会话流出网络 应用用途(来源) cli),打印阶段进展(创建/沙盒/ 技能/完成),然后聊天。 指针刻出于 届会在上游长期存在——从未中断 失去现场直播.
  • 后来的聊天 本届会议继续举行——上游会议 以会话编号进行交谈,所以没有历史被怨恨.
  • 如果本届会议结束 在回合产生任何输出之前、国家行动倡议 透明地提供新的服务,并重回正轨——第一回合 失败永远不会拖累你.
  • 一旦转弯开始产生产出,会话失败就报告 反之:部分结果维持不变,没有重新运行,没有替换 会话被创建( 重试会重放输出和重新发送工具调用或 生成任务,第一次尝试可能已经启动).
  • --session <id> 切换到现有的会话(包括网页创建) 并以此为默认。 识别码首先在上游核实:缺失 id 失败的提示, 它从不为您提供不同的会话 回来.
  • --new 以新生成的 id 创建新会话并使其成为 默认为以后运行 。 碘从不被再利用或被采用:CLI要么使用 id生成或报告拒绝.

手动证明连续性:

msc chat "记住数字42"
msc chat "刚才的数字是几?"   # answers 42

通过 : msc login --region default|cn|local (单位:千美元) 已保存并重新使用您登录的服务器; local 喜欢 staging 是一个 预发区,见上方注.

配置和存储

CLI 将证书和本地设置存储在 :

  • 默认数字 : ~/.config/media-studio-cli/
  • XDG 标准数字 : $XDG_CONFIG_HOME/media-studio-cli/
  • 覆盖数字 : MEDIA_STUDIO_CONFIG_DIR=/path/to/dir

关键文件 :

  • auth.json:存储活动平台证书和用户会话元数据(许可) 0600 (波兰文)
  • config.json:存储 CLI 客户端设置,包括 lastSessionId 指针

auth.json是因为 apiUrl 只有在主机在CLI许可列表中被接受时: 正式主机( 拒绝信件列表) 加上本地端 主机 localhost 编号 : 127.0.0.1 编号 : ::1。该列表以外的手版 URL 是 在发出任何请求之前就被拒绝了,而CLI将其报告为被拒绝 证书命名 URL —— 不作为“ 未登录的 ” , 因为 标志本身可能 没事. msc login 以服务器提供的 URL 重写文件, 是 修补; 拒绝的 URL 从未使用过, 且 Base- URL 分辨率回落到 官方默认主机.

单位 --json 模式 : 信件: 被拒绝的证书 "nextStep": "relogin" 联合国 guidance),虽然所有报告都没有证书 status 财务报告和审定财务报表 message 只有这个.

技能

发现你的账户可以参考的东西,然后参考它——参考 必须指定目录中存在的技能 :

msc skills                     # list your library
msc skills --json              # raw catalog array (see fields below)
msc skills --plaza             # browse the Skill Plaza with your library
                               # state merged in (built-ins excluded)
msc skills --plaza --json

msc skills add <slug>           # install a plaza entry by slug
msc skills rm <command>        # remove a library skill by command
msc skills enable <command>    # flip a library skill's enabled flag
msc skills disable <command>

add 取入方块的弹片(brainstorming,显示于 msc skills --plaza --json 作为 slug); 图书馆的变异取取 命令字符串 (brainstorming 财务报告和审定财务报表 /brainstorming 均为同一条目) - 与引用技能的提示使用相同的字符串.

--json 是用于代理的预期输出:目录是输入 a 决定调用程序本身。 两者 descriptionEn编号 :descriptionZh 上游地区不能保证 En 槽为 英语,所以CLI选择什么。 人体渲染物只列出姓名( 命令字符串在 --json满分 descriptionEn 编号 第二行和标记 [on] 启用 / [off] 已禁用 / 已禁用 [-] 未安装 在广场上.

共享 API 端点: 突变使用与网络应用完全相同的端点 (单位:千美元)POST /api/skills 用于安装, DELETE /api/skills?skillId= 用于清除, POST /api/skills/enabled 用于启用/残疾。 CLI 解决弹片/ 命令 转到条目/编号后,再拨打终点. rm 需求 --yes 外部a 终端。 内建条目被拒绝( 422) : 它们同步到您的库中 后门。 管理技能(上载,封面)留在Media Studio网络应用.

然后在提示中引用一个技能, CLI 将其安装到会话中 索要的沙盒 :

msc chat "/always-hello 不管我说什么"      # leading slash command
msc chat "%%/always-hello%%不管我说什么"    # web composer marker, paste-compatible

两种拼法都一致 上游只安装技能 从转弯 skill_urls 字段,所以 CLI 在您 目录( e)GET /api/skills)并发送匹配软件包 URL — 即时文本 单凭一己之力不会引发什么.

  • A 类 赤线 /command 仅在提示开始时计数,所以中期判决 鞭打会继续传教check /etc/hosts 这不是一个技能参考。 这个 %%…%% 标记也在任何地方被识别——一个被迅速粘贴的逐字记录保持其 迹象,但技巧 仅在标记引导上游时激活 消息,所以引导 及时用它。 主要的标志可以是任何赤裸的一发子弹, 包括: /tmp what is this 决定 /tmp ——和a 与列表中的目录匹配的参考文献不会失败, 所以 texto从来不会默默地被贬为一个没有技能的答案.
  • 已获取目录 只有在提示时; 无技能 转弯不需要额外要求.
  • 未知技能在任何会话之前以非零退出方式失败转弯 已提供。 A 类 已禁用 技能是首先自动启用的——相同的ADR-0001 作为网络“用在聊天”的行为——因为上游对待 enabled 作为援引的硬先决条件,否则将下载 包和默默运行它。 {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}能翻转技能 enabled 标记(持续变化),报告为 Auto-enabled for this turn: …,失败后可以中止转弯.

特工技能( A)302ai/msc-skill(中文(简体) )

教一个外部AI代理( Claude Code, Cursor, Codex, OpenCode, Gemini CLI等) 如何和何时引用 msc,安装公共代理技能:

npx -y skills add 302ai/msc-skill --skill msc-skill -g -y

对于选入的β,配对 @beta 带有 β 技能安装。安装另一个频道取代相同的全球CLI或Skill;在切换前请求许可。 公共β分支由第一个成功的β同步所创建.

  • 真相来源: Canonical 技能来源 生活在此寄存处 msc-skill/。经过验证的 CLI 释放会同步其匹配通道到 302ai/msc-skill(英语:;相容的 Skill-只修改并重试使用手动调度.
  • 合同合并: 当修改 CLI 命令时, --json 有效载荷、出站代码、出站错误结构(nextStep,认证行为,或文件附件语法 media-studio-cli, (中文(简体) ), 总是更新 msc-skill/skills/msc-skill/SKILL.md 同样的承诺.

附录

在聊天回合中附加本地文件 @path 在提示中任意位置 :

msc chat "看看 @cover.png 这张图"             # bare path (ends at whitespace)
msc chat "总结 @/abs/path/notes.pdf"          # absolute path
msc chat '对比 @"my docs/report.docx" 内容'   # quoted path with spaces

CLI映射了网络作曲家上传流:

  1. 在任何网络调用前验证每个本地引用的文件( 存在, 可读, 支持扩展名, 低于 50 MB) .
  2. 通过网络应用程序上传每个文件 POST /api/chat/attachments 带有终端自旋器的终点( u)Uploading attachment 1/2: cover.png) (中文(简体) ).
  3. 重写使用网络插入远程 URL 的提示 &&<url>&& 标记,上游模式和网络会话历史都从本质上理解.
  4. 每个转弯最多可有10个独特的附件(与网络作曲者相同);引用同一文件两次上传一次.
  5. 一个无法附加的引用( 丢失文件, 不支持的格式) 在任何会话提供之前都失败 .
  6. Prose提到(@team 辛苦了,电子邮件地址) 保留文字文本——只有带有文件扩展名或路径斜线的符号作为附件处理.
  7. @path 仅为本地文件系统 : @https://example.com/a.png 失败 no such file没有 @url 窗体 — 远程 URL 不是附件.

单位 --json 模式:上传附件在 attachments 数组 : [{ name, type, size, remoteUrl }]。 。 。 .

Stage 服务器( 过期的 TLS 证书)

中转服务器的证书已过期( ops develops reservation), 因此 CLI 跳过 TLS 证书验证 只指着中转 东道主; 服务器选择本身是选入, 默认 / CN 主机 总是核实。 互动 msc login 区域列表显示每个服务器 URL和标记自动关闭行为; msc login --region staging 选择加入.

稳定(生产) msc login 区域 菜单和 --region,但坚持 auth.json 从预释登录保存中 指向那个服务器——一个仍然自动通过 TLS 的中转器 核查。 这是有意的(登录持续到升级),而不是 监督.

白名单是绕道开通的唯一途径——没有环境变量 将其扩展至另一个服务器,所以生产永远不能跳过验证. 改为: 部队核查返回 打开 一旦行动更新 证书,或调试其链条:

MEDIA_STUDIO_INSECURE_TLS=0 msc chat "hi"   # also accepts "false"

简单http:// 服务器完全跳过绕行(无可验证). 这个 绕行无打印:在 msc login 菜单和此处,因此每个命令上都不再重复警告(--help 财务报告和审定财务报表 --version 包括,其输出脚本和代理 .

TLS 干扰代理

如果浏览器 SSO 登录有效, 但每个 API 调用失败 fetch failed页:1 TLS- 截取代理( Clash/ FlClash TUN 模式, 公司 MITM) 正在中断 证书验证( e)unable to verify the first certificate) (中文(简体) ). 节点/ Bun 不使用 OS 密钥链, 因此您浏览器信任的代理 CA 不被 CLI 信任。 或明确信任代理 CA :

export NODE_EXTRA_CA_CERTS=/path/to/proxy-ca.crt

或只跳过 CLI 验证(没有证书检查) 。 中转主机 已自动完成, 因此仅需要用于其他服务器 现在这是绕过一个非固定主机的唯一方法,因为没有 msc 旗帜或嵌入 var就是这样 请注意,这是全过程的:每个主办国都停止CLI会谈 经核实.

NODE_TLS_REJECT_UNAUTHORIZED=0 msc sessions

代理

msc 遵循通常的《国家劳工责任公约》(git, (中文(简体) ), gh, (中文(简体) ), curl环境 拥有代理,CLI只读取. 没有OS级"系统代理"检测,没有 --proxy 旗帜,没有印刷.

export HTTPS_PROXY=http://127.0.0.1:7890
export NO_PROXY=localhost,127.0.0.1,::1    # appended automatically when absent

HTTP_PROXY 编号 : HTTPS_PROXY 编号 : NO_PROXY 他们的小写拼写是 已接受. ALL_PROXY 没有, 匹配 gh环背从不代理,所以 msc login 调用和任何未来的本地助手 即使在 代理列表为空 .

节点仅在构建全局调度器时读取代理服务器设置, 时间在 任意的 CLI 代码运行,所以一个设置代理变量可以 msc 重新运行过一次 --use-env-proxy (一个额外的进程启动; 当没有代理时完全没有) 变量为设置)。 设置 NODE_USE_ENV_PROXY=1 在环境中跳过 重新启动 . NO_PROXY 条目是主机名称, .suffix 或者说 host:port; CIDR 数据 区域不匹配。 Bun dev 运行 (bun run dev和独立的 二进制忽略了代理变量——节点旗不存在.

代理浏览器不是 CLI 能到达主机的证据 : 如果 SSO 登录 工作但每个命令都失败 fetch failed,检查主机名 在责备证书之前就决定了.

发展

bun run dev                   # run from TS source (bun), no build step
bun run build                 # bundled JS entry -> dist/ (the npm artifact)
bun run build:binary          # standalone single-file binary -> bin/

测试(在运送任何变化之前)

测试层从快到忠实 最小栏: 第2层通过;在前 实际发布还运行了第4层.

1. 发展周期(最快)

bun run dev -- chat "hi"      # runs TS source directly, no packaging

2. 自动外部消费者检查(需要)

# from repo root
bun run package:cli:check

构建、类型检查、包装 真实的柏油球,将其安装为临时 repo 外部目录,并执行已安装的二进制 (单位:千美元)--version 编号 : --help ))). 论. 仅接获包装破损 (错过了shebang, 失去执行位, stale bin target) 在repo运行 永远看不到.

3. 人工用户安装模拟

cd packages/media-studio-cli
bun pm pack --destination /tmp/cli-test

# option A: clean local consumer
mkdir /tmp/cli-consumer && cd /tmp/cli-consumer
bun add /tmp/cli-test/302ai-media-studio-cli-0.1.0.tgz
./node_modules/.bin/msc --version

# option B: global install (also verifies the short name doesn't collide)
bun add -g /tmp/cli-test/302ai-media-studio-cli-0.1.0.tgz
msc --version

# cleanup afterwards — one command removes BOTH bin names
bun remove -g @302ai/media-studio-cli

4. 端到端对正服务器

# terminal 1: local gateway (CLI defaults to localhost:3000)
bun run dev

# terminal 2:
msc login                     # browser sign-in
msc whoami                    # verify auth state
msc chat "画一只猫" -r        # real streaming turn
msc chat "hi" --json

# Multi-turn continuity acceptance recipe:
msc chat "记住数字42"
msc chat "刚才的数字是几?"     # answers 42

# Session management verification:
msc sessions                  # shows session list with (current) marker
msc chat "hi" --session <id>  # switch to an existing session
msc chat "hi" --new           # start a new session
msc sessions use <id>         # switch default pointer to an existing session
msc sessions use --new        # create a new session and switch to it

没有本地服务器, 点到生产方式 msc login --region default。 。 。 .

笔记学会了艰难的方法

  • bun pm pack 不运行发布生命周期脚本; 烟雾脚本 明确先建. 不要假设包 产生新鲜的地盘.
  • 两个 bin 指向 SAME 文件制作的条目 bun pm pack 发射 重复的柏油球条目——这就是为什么 msc 目标小 dist/msc.js 嘘而不是 dist/index.js保持本站目标的独特性.
  • bun publish 需要现代包子( 生命周期脚本); repo 标准 发布门是 bun run package:cli:check 先说.

许可证

阿帕奇 - 2.0

版本与发布记录

@302ai/media-studio-cli 共发布 24 个版本,首次发布于 2026/09/04;过去 12 个月发布了 24 个版本。

版本发布日期距今
0.1.6latest2026/11/061 天前
0.1.6-beta.1beta2026/11/061 天前
0.1.6-beta.02026/11/061 天前
0.1.52026/10/308 天前
0.1.5-beta.02026/10/308 天前
0.1.42026/10/308 天前

关于 @302ai/media-studio-cli 的常见问题

@302ai/media-studio-cli 是什么?

AI Media Studio的CLI——让外部代理驱动核心媒体- studio功能

如何安装 @302ai/media-studio-cli?

在项目目录运行 npm install @302ai/media-studio-cli,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 msc、media-studio-cli,可以用 npx msc 直接运行。

@302ai/media-studio-cli 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/302ai__media-studio-cli 是否存在。

@302ai/media-studio-cli 支持 ESM 还是 CommonJS?

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

@302ai/media-studio-cli 需要什么版本的 Node.js?

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

@302ai/media-studio-cli 可以商用吗?

@302ai/media-studio-cli 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@302ai/media-studio-cli 的下载量有多少?

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

@302ai/media-studio-cli 还在维护吗?

最新版本 0.1.6 发布于 2026/11/06(1 天前);至今共发布 24 个版本,其中过去 12 个月发布了 24 个;首次发布于 2026/09/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。