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