kmeng MCP 服务接入说明
本页面向编程 Agent(ZCode / Claude Code 等)及其使用者。把本页链接和一个 MCP 令牌发给 Agent,Agent 按下文自行完成接入。
给 AI 助手:就做这两条命令(其余章节都是补充说明)
你在本机执行(需 Node ≥ 18;把占位符换成用户发给你的令牌,其余参数默认即可,不用问用户):
curl -fsSL https://kmeng.tech/mcp-install.mjs -o mcp-install.mjs
node mcp-install.mjs --token kma_用户发给你的令牌
Windows PowerShell 里 curl 是 Invoke-WebRequest 的别名、不认 -fsSL,请用系统自带的 curl.exe:
curl.exe -fsSL https://kmeng.tech/mcp-install.mjs -o mcp-install.mjs
node mcp-install.mjs --token kma_用户发给你的令牌
- 宿主选择:你在 ZCode 里运行无需额外参数(默认写
~/.zcode/cli/config.json);你在 Claude Code 里运行无需额外参数(安装器识别到CLAUDECODE环境变量自动选 claude,并用claude mcp add --scope user真正注册,全项目可见);也可显式加--host claude;不写宿主配置加--host none。--host省略时安装器自动识别(CLAUDECODE环境变量 → claude;否则本机有~/.zcode/cli选 zcode,有~/.claude选 claude,都没有选 zcode)。 - 成功判据:安装器末行输出「令牌验证通过:用户名(余额 N 积分…)」即接入完成,把结果转告用户;随后重启宿主(或重连 MCP),调用
whoami应返回同一身份。401 = 令牌失效,请用户在「我的账户 → MCP 接入」重新生成。
你会拿到什么
用户会发给你两样东西:
- 本页链接(接入说明);
- 一个
kma_开头的 MCP 令牌(即用户身份凭证)。
令牌对应用户在 kmeng 平台的完整身份:工作区数据隔离、积分计费、任务归属与该用户网页登录完全一致。所有以该令牌做的生成任务都会出现在用户自己的项目与任务中心里,用户可随时查看、纠正、吊销。
第 1 步:安装 kmeng-mcp(推荐:一条命令,全自动)
kmeng-mcp 是 stdio 形态的本地 MCP 服务,全部调用走 kmeng 平台 REST API,平台服务器不承载任何额外组件。本机装有 Node ≥ 18 即可:
curl -fsSL https://kmeng.tech/mcp-install.mjs -o mcp-install.mjs
node mcp-install.mjs --token kma_用户发给你的令牌
安装器自动完成:按平台分发清单逐文件下载 kmeng-mcp(sha256 校验)→ npm install → 写入宿主配置(ZCode:自动备份,只更新 mcp.servers.kmeng 节点;Claude Code:claude mcp add --scope user 真注册)→ 自动建本机上传根 ~/.kmeng/upload 并双层写入 KMENG_MCP_ALLOWED_UPLOAD_ROOTS(宿主 config + 用户级环境变量,其它客户端也继承)→ 立即验证令牌并回报用户名/余额。可选参数:
| 参数 | 默认 | 说明 |
|---|---|---|
--base | https://kmeng.tech | 对接开发版填 http://127.0.0.1:3002 |
--dir | ~/.kmeng/mcp | kmeng-mcp 安装目录 |
--host | 自动识别(默认 zcode) | zcode 自动写配置 / claude 调 claude mcp add --scope user 真注册(无 claude 命令时回退直写 ~/.claude.json,先备份)/ none 只装不配;省略时先看 CLAUDECODE 环境变量,再按本机 ~/.zcode/cli、~/.claude 目录自动识别 |
--skip-npm | — | 跳过依赖安装(离线/自管 npm 时用) |
--skip-skill | — | 跳过工作流 skill 装入宿主技能目录(默认 zcode → ~/.agents/skills、claude → ~/.claude/skills) |
--upload-root | ~/.kmeng/upload | 本机文件上传根:自动建目录并写入 KMENG_MCP_ALLOWED_UPLOAD_ROOTS(画面提示/参考素材等可直接传路径);改成你自己的素材盘用 --upload-root /你的素材目录;禁用本机路径上传(仅 base64)用 --upload-root "" |
手动途径(离线环境):本机已有 kmeng 仓库(开发机)直接用 kmeng-mcp/ 目录;否则向 kmeng 官方索取目录拷贝,然后 cd kmeng-mcp && npm install。
第 2 步:宿主配置(安装器已代写,手动时按下述)
ZCode——配置文件是 ~/.zcode/cli/config.json(注意:mcp.servers 是嵌套在 mcp 下的;该文件还承载其他服务器配置,手改请先备份、只动 kmeng 节点;Windows 路径在 JSON 里用正斜杠 /):
{
"mcp": {
"servers": {
"kmeng": {
"command": "node",
"args": ["C:/Users/你/.kmeng/mcp/server.js"],
"env": {
"KMENG_BASE_URL": "https://kmeng.tech",
"KMENG_MCP_TOKEN": "kma_用户发给你的令牌"
}
}
}
}
}
Claude Code——安装器已代注册(--scope user,写入 ~/.claude.json 的 mcpServers.kmeng)。手动时:
claude mcp remove kmeng --scope user # 已有旧注册时先删(不存在会报错,可忽略)
claude mcp add kmeng --scope user -e KMENG_BASE_URL=https://kmeng.tech -e KMENG_MCP_TOKEN=kma_… -- node "<kmeng-mcp 目录>/server.js"
- 作用域:
claude mcp add默认是local(只对当前项目目录生效),换目录就“消失”;必须带--scope user才全项目可见。claude mcp list应显示kmeng ✓ Connected;会话内/mcp可看状态与重连。 - 注册后须重启 Claude Code 会话(或
/mcp重连)才会出现 82 个mcp__kmeng__*工具;工作流 skill 已装入~/.claude/skills/kmeng-film-production,新会话自动可用。 - 启动超时:Claude Code 默认约 30 秒内 MCP 必须握手成功。kmeng-mcp 启动时会先查更新;网络慢时可设
MCP_TIMEOUT=60000(毫秒),或临时设KMENG_MCP_AUTO_UPDATE=0跳过启动检查(会话内 5 分钟复查不受影响)。 - 输出上限:Claude Code 单次工具输出默认上限 25000 token,超出会被截断;
list_projects/get_project detail:true/list_desk_keyframes等大返回请先export MAX_MCP_OUTPUT_TOKENS=50000再启动,并用limit/offset分页。长耗时工具调用上限用MCP_TOOL_TIMEOUT(毫秒)调整。 - 权限提示:默认每个
mcp__kmeng__*工具首次调用都会询问。可在~/.claude/settings.json的permissions.allow里只放行只读工具(如mcp__kmeng__whoami、mcp__kmeng__list_projects、mcp__kmeng__get_project、mcp__kmeng__list_asset_slots、mcp__kmeng__list_assets、mcp__kmeng__quote_generation);会扣积分的提交类工具(click_generate_*、generate_asset、synthesize_speech、post_process_video等)不要放进 allow,保留逐次确认作为花钱闸门。 - 令牌存放:令牌明文存于
~/.claude.json(安装器写入时权限 600,不回显)。令牌泄露请立即在「我的账户 → MCP 接入」重新生成(旧令牌即刻作废)。
| 环境变量 | 必填 | 说明 |
|---|---|---|
KMENG_MCP_TOKEN | 是 | 用户级 MCP 令牌 |
KMENG_BASE_URL | 否 | 默认 https://kmeng.tech;对接开发版填 http://127.0.0.1:3002 |
KMENG_WORKSPACE | 否 | 工作区 id,不填用用户默认空间;团队协作项目填团队 workspace id(whoami 返回的 workspaces 里可查) |
KMENG_MCP_ALLOWED_UPLOAD_ROOTS | 否(安装器默认填入) | 本机文件上传根(分号分隔多个目录)。装了 mcp-install.mjs 会默认配 ~/.kmeng/upload;不配则 filePath 本机路径上传被禁用(仅 base64 通道)。详见下方「本机文件上传」小节 |
验证:安装器末尾会自动验证令牌(回报用户名/余额即成功,401 = 请用户重新生成)。写入宿主配置后重启宿主(或重连 MCP),首次调用 whoami 应返回用户名、工作区与积分余额。
本机文件上传(图片/视频/音频/xlsx 直接传路径)
upload_asset(图片/视频/音频)与 upload_storyboard(xlsx)支持两种本机文件输入,让你不用把大文件手动贴成 base64:
filePath路径上传(推荐,装好即用):安装器已默认建~/.kmeng/upload并自动写入KMENG_MCP_ALLOWED_UPLOAD_ROOTS。把要上传的素材丢进该目录即可直接传路径;想开放自己的素材盘,重装时用--upload-root /你的素材目录(多个目录分号分隔)。base64上传(兜底):任意环境可用,不受目录限制;大文件建议优先用filePath。
resolve + realpath 校验落在根外一律拒绝(含符号链接逃逸);敏感目录(.ssh、.aws、AppData 凭据区等)整段拒绝;仅接受白名单类型与上限(图片 / xlsx ≤ 20MB,音频 ≤ 50MB,视频 ≤ 500MB),magic bytes 与扩展名交叉校验,伪装媒体拒绝;返回不回显本机绝对路径。用户级环境变量只对新启动的客户端生效——写完该变量后请重启宿主(或重连 MCP)。装完即自动保持最新
kmeng-mcp 每次启动(宿主启动/重连 MCP 都会重新拉起本服务)时自动对比平台分发清单(逐文件 sha256),有更新就静默下载校验并原子替换——平台功能更新后,用户侧无需任何操作,随下次宿主启动自动同步;工作流 skill kmeng-film-production 副本(安装器装入宿主技能目录,带 .kmeng-managed 标记)一并同步。更新失败不影响使用本地版本;依赖清单变化时后台自动 npm install。whoami 返回的 mcpVersion 是当前版本,若出现 mcpUpdatePendingRestart 表示已拉新待宿主重启完全生效。
KMENG_MCP_AUTO_UPDATE=0:停用自动更新(固定本地版本);KMENG_MCP_UPDATE_INTERVAL_MS:分发清单检查间隔(默认 0 = 每次启动都查;设置成毫秒数则在该间隔内不重复查);KMENG_MCP_SKILL_ROOTS:自定义 skill 目录(分号分隔,默认~/.agents/skills+~/.claude/skills)。
工具清单(130 个)
精简工具表:为降低每轮上下文开销,工具表里的描述与参数说明是精简版(末尾带〔全文:get_tool_help〕);完整说明用 get_tool_help({name}) 按需取回,只读不扣费。默认只直接列出身份、说明与计费/删除类工具,其余工具经 call_tool({name, args}) 调用(参数相同);需要全部直接列出可设环境变量 KMENG_MCP_TOOL_MODE=all。
协作:绑定项目槽位的图片/视频提交会占用 asset/video-shot 锁并保持到任务终态,轮询会续租;同项目不同槽位可并行,同一槽位/镜头遇到 423 必须等待,不抢锁。导演台锁按用户判归属:同一个人的浏览器页面与 MCP 连接视为同一个编辑者,可以一起改同一台台(不互相 423),只有别的成员正在编辑该台时才 423;check_episode_references 只读,不会复制资产或消耗授权。
| 类别 | 工具 |
|---|---|
| 只读 | whoami(身份/工作区/积分/MCP 当日额度)、list_models(模型目录/参数档位/参考上限)、quote_generation(提交前查积分花费,只读不扣费)、list_projects、get_project(分镜版本明细,detail=true 附分镜行原文)、list_asset_slots(资产槽位=资产准备页的表格行,格子状态与界面一致:待生成/生成中三阶段/已生成/生成失败)、get_asset_slot(盯单个格子:读一个槽位的当前状态,等价用户盯着那个格子等结果)、list_tasks、get_task(兜底:状态+产物链接;可带 waitSeconds≤25 服务端长轮询等到终态或超时)、list_desks(导演台目录)、get_desk(导演台工程 JSON)、list_desk_pose_keys(姿势键和值域)、list_desk_keyframes(对象/机位关键帧清单:全集秒、锚点坐标、朝向、姿势、拍摄段,只读免锁)、check_episode_references(跨集引用只读检查)、list_scene_library(导演台「场景库」清单:按工作空间共享的识图建模场景参数,名字多为识图时间戳,靠 objectNames/world 认出"这集要的是哪个场景")、resolve_scene_desk(反查:某集按平台规则绑定的那台导演台 id + 该台是否已存在,用于"进对台")、ensure_scene_desk(该台不存在时按平台"一场景一台"规则建出绑定台,幂等,无需用户去分镜表点「导演台搭建」)、find_scene_file_for_episode(场景复用指纹:拿某集分镜里的道具名与场景文案去跟场景库逐个比对,给出这集该载入哪个场景文件、置信度与依据)、list_series_scene_files(整剧集逐集场景文件指纹 + 「参考【第N集】」引用链,用于判断本集能否复用上一集的场景文件) |
| 创建链路 | create_folder、create_project、update_project(编辑项目卡)、upload_storyboard(分镜 xlsx 自动匹配)、generate_storyboard_from_text(剧本直生成分镜)、select_storyboard_version、update_storyboard_cell(编辑分镜格)、upload_asset(入库,支持 slotKey 归位到行、shotSegment 归位到分镜图段白模参考位;可传 deskId 写入导演台来源留痕)、open_image_generator → read_image_generator → update_image_generator → click_generate_image → poll_image_generator(图片必须按缩略图生成器流程操作)、open_video_generator → read_video_generator → update_video_generator → click_generate_video → poll_video_generator(创作页或项目镜头视频,参数与页面一致;poll 支持 waitSeconds)、generate_image/generate_video(创作页一步直提:显式参数一次提交跳过会话流,model/resolution 硬闸同会话流)、get_task_file(拿任务号换该任务成品的 kmeng URL,配合 download_file 下载,可带 waitSeconds)、generate_asset(内部走同一图片生成器流程)、trigger_stitch(拼接/白模合成按钮:信号→平台合成→产物落格)、select_asset(多版本择优)、generate_scene_four_view(场景四视图)、synthesize_speech(TTS)、cancel_video_task、post_process_video/get_post_process_task(画质增强/去字幕/高清放大)、list_prompt_templates/create_prompt_template/delete_prompt_template(分镜图提示词模板=工作台模板:列表/新建/删除)、generate_workbench_image(「空白工作台」一步出图:新建该任务并直接出图——页面空白工作台卡片只存在浏览器本地,服务端没有对象,其等价物就是「用 AssetKey 生成一张图」)、download_file、list_desk_pose_keys、set_desk_pose、check_episode_references、copy_asset_to_project(把资产库里某张已有图的副本放进本集资产库再当素材引用:免费、不生成、不计费,支持 dryRun;可复用场景的四视图/角色图优先走它,别重做) |
| 导演台 | load_scene_into_desk(场景库「载入」:把某个场景文件注入指定导演台——用户端现成的复用逻辑,等价界面「搭建场景 → 场景库 → 载入」,replaceProps 默认清掉台内旧道具再按蓝图新建;典型用法是先 find_scene_file_for_episode 判定这集用哪个场景,再载入本集那台;库里若是导演台快照(shape='desk',如 save_desk_scene 存的),对象与内嵌模型资产原样落场、不降级)、save_desk_scene(场景库「存」:把台里搭好的整场存进平台场景库(界面同一份数据,跨集/跨台复用)——界面只存「识图建模」结果,手工/程序搭的高精度场景没有入库入口。存置景无损快照:图元类型/三轴旋转/模型资产引用(含 data URL 内嵌模型)全保留;角色与机位不入库(属于这一集这一台的表演数据)。隐私隔离:写进哪个空间只由 MCP 令牌 / KMENG_WORKSPACE 决定,不接受任何 workspaceId/ownerKey/scope 入参;个人空间仅本人可见、团队空间仅该团队可见,读取写入同令牌、跨空间的台直接 404,回传只含本 owner 库清单。建议先 dryRun:true 看件数/体积/写入空间)、set_desk_character_color(角色/假人配色:等价界面「选中角色 → 属性 → 颜色」,写角色对象的 color;同框 ≥2 人默认都是同一个蓝会分不清谁是谁,用 auto:true 按界面同款对比调色板依次分配,或 colors:[{name:"蒙恬",color:"#E0524D"}] 手工指定;只影响白模预演/白模分镜图里的假人,不影响分镜图引用的角色定稿图)、手工指定;只影响白模预演/白模分镜图里的假人,不影响分镜图引用的角色定稿图)、add_desk_object(往台上放一个场景对象:名称+几何体(box/sphere/cylinder/torus/cone/pyramid)+坐标+旋转(度)+缩放+颜色;position 默认按底面理解(anchor:"base",放地面给 y:0),anchor:"center" 则 y 是网格中心;也可只给 assetRefId 把已导入的模型文件摆上台——模型要先在页面「模型库/本地导入」进台)、update_desk_object(改已有对象的坐标/角度/缩放/颜色/名称/可见/锁定/几何体:修穿模(把桌子方块挪开、把假人脚底落回 y=0)、调朝向尺寸都走它,返回 before/after)、set_desk_scene_group(0.12.28+:把搭场景用的几何体/模型批量归进界面左栏「场景」分组并可整组上锁/隐藏——选择器 names/objectIds/namePattern/allProps(+exceptNames)/onGroup,动作 scenePreset/locked/visible,支持 dryRun;add_desk_object / import_desk_scene_model 也可直接带 scenePreset,update_desk_object 可改所属分组)、delete_desk_object(删置景/道具对象,角色与机位会被拒;dryRun 只报不删)、set_desk_camera_aim(把某机位对准某对象或坐标,并可给机距/方位/高度重摆:对准角色按 atSec 在路线上取样(角色 transform.position 是建台旧坐标,不取样会对着旧位置拍),朝向按台里口径重算并同步「镜头 N-K」helper)、update_desk(merge-patch 增量改工程,自动持锁/放锁/处理冲突)、open_desk(发渲染会话 + 深链,供本机 playwright 渲染白模;满载自动逐出最久不活跃的旧残留,新工作不被挡)、export_desk_video/get_desk_export(白模视频一键导出:后台本机 playwright 自动流,作业异步轮询;逐镜段导出默认逐帧离屏导出,恒定帧率不跳帧,标记 mcpShotFrameVideo)、capture_desk_shot_frame/get_desk_shot_capture(镜头第一视角机位截图:异步作业,产物落本机文件后用 upload_asset 的 shotSegment 回传成该段白模分镜图,标记 mcpDeskShotFrameCapture)、set_desk_objects_visibility(遮挡处理:按名隐藏/取消隐藏对象、角色、机位——等价左栏对象行的「眼睛」按钮,拍完自动恢复)、set_desk_pose(骨骼姿势直控:PATCH /api/director-desks/:id/pose-controls,传 objectId + 控制键/角度字典即可摆假人姿势,控制键与值域 GET /api/director-desks/pose-keys 自发现,38 键白名单,自动持锁/放锁,同一用户(含该用户的浏览器页面)可并行编辑,其他成员编辑中返回 423;mode:"replace" 传空对象=复位站姿)、set_desk_path(位移路线语义直控:PATCH /api/director-desks/:id/object-path,全集时间轴按秒打路线点 keyframes={tSec,x,y,z},坐标默认锚点=胯骨轴中心(服务端按体型 hipY 自动换算),移动方式预设 linear/smooth/eased/glide,返回请求秒↔存储归一化 time 逐点对照与渲染钳制警告)、set_desk_action_track(动作流语义直控:PATCH /api/director-desks/:id/object-action-track,时间片段 [t1,t2] 两端各给一套骨骼 controls,服务端生成双关键帧自建动作做线性姿势过渡;角色有 actionTrack 即完全接管动作解析)、set_desk_object_keyframe(对象关键帧语义直控:PATCH /api/director-desks/:id/object-keyframe,「某物体在某时刻以某姿态位于某坐标」一次调用打一个点——tSec 全集绝对秒 + x/y/z(默认胯骨轴锚点)+ yawDeg/rotationDeg + posePresetId(节点姿势,20 个预设之一)或 poseControls(骨骼节点角度字典 → 写成动作流姿势区间,相邻两姿势自动形成过渡);四路动作与前端菜单同名同义:loopActionPresetId(+loopActionEndSec/loopActionSpeed,位移阶段用 walk-cycle)、singleActionPresetId(+singleActionHoldToSec,单次动作精确占自身时长并播完定格,加 hold 即「坐下不动」)、poseControls(+transitionSec 压缩过渡;姿势区间是**绝对姿势**,配 posePresetId 时按「基础站姿⊕预设⊕给定关节」合并)、posePresetRegion:true(把预设本身写成静态姿势区间);朝向口径:角色正前 = (sin y, cos y)(rotation.y=0 朝 +Z,面朝 (dx,dz) 用 atan2(dx,dz)),机位是另一套(0=朝 -Z、90=朝 -X),两套差 180°;走路别给朝向——角色默认 facingMode:"path" 自动面朝行进方向,转身没有动作预设,靠路线拐弯(默认 smooth 插值,拐点圆弧连续转身),朝向与行进方向差 >45° 会告警并给出正确角度;服务端把路线 speedMode 钉成 custom,请求的秒才等于到达秒;同刻重写即更新该点)、set_desk_camera_keyframe(机位关键帧语义直控:PATCH /api/director-desks/:id/camera-keyframe,「某时刻镜头以某旋转角+FOV 位于某坐标」——机位只存 position+target+fov,故按 three.js YXZ 前向把 rotationDeg=[pitch,yaw,roll] 换算成瞄准点存储(roll 不落库),fov 钳 10..120;拍摄段起点 nextSegReleased 与前端口径一致自动释放跨机位冲突段)、copy_desk_object(0.12.42+:复制台上已有对象(不重导模型),可带 offset 平移、name 改名;add_desk_object 另支持 count/spacing/layout(line/arc/grid)一次阵列出 N 个,回执列出全部新建 id)、check_shot_visibility(0.12.42+:免截图的画面预判——给 shotName 或 atSec,按机位关键帧+FOV 纯算每个对象占画幅比例 screenShare、inFrame、被谁遮挡 occludedBy、出框原因 offscreenReason;免费、不开浏览器,用来抓帧前先排掉明显空镜/出框) |
| 素材库 / 清理 | list_assets(素材库清单:真分页——offset 翻页、keyword 按名称(displayName/name/fileName)服务端全量过滤、ids 精确查一批;返回 returned/matched/total/hasMore/nextOffset,单页上限 200 按 nextOffset 翻页)、delete_assets(批量删素材库条目:默认 dryRun 只预览、必须 dryRun:false + confirm:true 才删;默认级联清掉引用被删条目的槽位绑定,避免槽位挂死链;也能用 contentHandles 删槽位内容)、copy_asset_to_project(把库里某张已有图的副本放进本集资产库再当素材引用:免费、不生成;可复用场景的四视图/角色图优先走它,别重做)、prune_slot_versions(清理「本镜头素材」里堆叠的历史缩略图:默认保留被采用的那条,allowEmpty:true / keepLatest:0 可清空该格到 0 条)、delete_slot_content(清空一个镜段的正解:按不透明内容句柄 contentHandle 精确删到条,或 kind/slots + all:true 整格清空;可删到 0 条、不会留占位白框) |
| 画面验收 / 容量 / 回读 | record_frame_review(审帧记录,由 Agent 亲自写:看完抓帧后落盘「看到了什么 + pass/fail」;fail 必须带原因与改法,fail 之后改判 pass 必须对应重新渲染出的新帧;脚本不判画面)、audit_episode_desks(整集覆盖审计:漏抓/未看/未改好的镜段,只统计记录、不判画面)、
audit_whitebox_scale(白模/道具尺寸体检:批量读每个 kind=prop 的 transform.scale 与它引用 GLB 的 POSITION 包围盒,按渲染层归一化公式算「应有 scale = GLB 最大边 ÷ 2」与实际值之比,给 ok/oversized/undersized 判定与可直接照抄的 fixList;填大会把机位埋进模型内部 ⇒ 画面「背景纯黑 + 顶部褐色横带、角色正常但场景全无」,填小则白模看不见;只读、不计费)、submit_capture_batch(批量限流投递抓帧/导出任务:按准入余量分批提交,遇 RENDER_QUEUE_FULL 按 retryAfterSec 退避,返回已投 jobIds 与待续清单)、get_render_capacity(评估本机渲染能力与并发配置)、read_shot_video_workspace(只读回读某镜头在视频生成页的落点与提交记录) |
audit_shot_framing(景别↔距离↔fov 反查:读某台全部相机关键帧,逐帧算实际垂直覆盖 cover 和「实际拍成了什么景别」,给了 targetShot 时直接回「调近/调远多少米」;顺带报机位覆盖率(唯一机位数/段数)。只读、不计费。🔴 只做设计阶段参考 —— fov/机位/距离不作验收门槛、不判帧生死;审帧一律由会话亲自看画面。平台存的 fov 是垂直,工具同时给 fovDegDiagonal 换算回对角供对分镜 F 列) |
audit_shot_framing(deskId, targetShot?, subjectHeightMeters?) |
| 样片复刻 | plan_desk_shot_switch(同台多镜硬切计划:x 偏移法 / 可见性窗法 / 两者,含复原方式与「隐藏 ≠ 不存在」风险;只出计划不改台)、export_desk_frames(一个作业连出多个时间点的帧,作业内复用同一页面;dryRun 先看计划与耗时估算,逐帧回执在作业目录) |
slotKey 句柄,Agent 原样回传即可。平台内部实现细节与键名拼装规则不随工具输出外泄;Agent 也请勿尝试读取平台代码或猜测内部接口。list_desk_pose_keys({guide:true}) 拉一次完整手册(心智模型 + 动作四路 + 6 个复制粘贴配方 + 8 条「常见错误→正确写法」),预设 id 也只能从这里取;
② list_desk_keyframes 看时间轴与现势(对象/机位 id、现有秒数);
③ set_desk_object_keyframe 逐点打「某秒在某坐标 + 姿态」——走路别给朝向(角色正前=(sin y, cos y),rotation.y=0 朝 +Z,面朝 (dx,dz) 用 atan2(dx,dz);机位是另一套:yaw=0 朝 -Z,两套差 180°),不给朝向即 facingMode:"path" 自动面朝行进方向,拐弯就是转身(没有「转身」动作预设);秒数 = 距离 ÷ 动作自然步速(walk-cycle 1.25 m/s)才不滑步;
④ set_desk_camera_keyframe 打机位(旋转角或瞄准点 + FOV,≥2 点才运镜);一次要改很多段机位(按分镜逐段配机位、补唯一机位)用 set_desk_camera_keyframes_batch(一次调用写同台 N 段,串行执行、逐条回执;🔴 dryRun 默认 true——不显式给 dryRun:false 只演算不写台,先演算核对再真写);
⑤ 写完必须再 list_desk_keyframes 读回:看 objects[].selfCheck.summary(人话时间线)与 diagnostics(朝向偏差多少度 / 滑步差几倍应走几秒 / 原地踏步 / 只有一个点)——diagnostics 非空就不要交付,改完再读。典型流程:create_project → upload_storyboard → get_project 读分镜行 → upload_asset 备参考图 → list_asset_slots → 图片走 open_image_generator → read_image_generator → update_image_generator → click_generate_image → poll_image_generator;视频走 open_video_generator → read_video_generator → update_video_generator → click_generate_video → poll_video_generator→ trigger_stitch 拼接/白模合成 → download_file 取成品;摆台用 get_desk 读工程 → list_desk_pose_keys/set_desk_pose 摆姿势 → 关键帧模式:list_desk_keyframes 看现有关键帧 → 角色/道具用 set_desk_object_keyframe(某秒某坐标+朝向+姿势,poseControls 给骨骼角度)、机位用 set_desk_camera_keyframe(某秒坐标+镜头旋转角+FOV);成批路线仍可用 set_desk_path(全集秒打点+胯骨锚点,要精确到达用 preset:"exact")与动作流 set_desk_action_track(片段起止骨骼角度线性过渡)语义直控 → 复杂结构化改动再 update_desk 提交增量;新建/重命名/归组/删除导演台与文件夹用 create_desk / rename_desk / move_desk / delete_desk / create_desk_folder / rename_desk_folder / delete_desk_folder(删除类必须显式 confirm:true)。
导演台白模渲染(本机执行)
导演台的 3D 渲染发生在浏览器端,白模截图/视频由 Agent 在本机用 playwright + ffmpeg 完成(Agent 会自检并安装依赖):
open_desk返回:短时效登录 cookie(sid/did,默认 30 分钟,令牌吊销即失效)+ 导演台深链/director-desk/?hostOrigin=…&workspaceId=…;- playwright 把 cookie 注入上下文后打开深链,等 3D 画布就绪,在页面目录中选择目标导演台(id 来自
list_desks); - 截图/逐帧导出在本机完成后,必须用
upload_asset回传平台项目——否则用户在平台上看不到渲染产物; - 摆台数据修改走
update_desk(JSON Merge Patch:对象深合并、null 删键、数组整体替换),不要整包回传工程;同一个用户的浏览器页面开着也能改(锁按用户判归属,不再互相 423);只有别的成员正在编辑该台时才会收到 423,请稍后重试。 - 画面「有角色、没场景」(背景纯黑 + 顶部一条褐色横带)先跑
audit_whitebox_scale:渲染层把导入模型最大边归一化到 2 单位再乘对象的transform.scale⇒ 最终渲染最大边 = 2 × transform.scale[0](与模型原始大小无关)。回执按modelClass分两类:native(原始尺寸模型,GLB 最大边 6.9~108 米)才用「应有 = GLB 最大边 ÷ 2」;normalized(归一化单位模型,最大边恰好 1~2 米)的scale本身就是「设计尺寸 ÷ 2」、不判 ratio。看到suspicion=camera-buried-in-oversized-model(归一化模型被撑到 20 米以上且机位在包围盒内)⇒ 修法是改机位(抬到模型外 / 按段配机位),不是缩白模。只有verdict为oversized/undersized的才按fixList改transform.scale,改完必须重抓帧(旧帧作废)。
MCP 只管功能,工作流看 skill
本 MCP 的每个工具只负责"单个平台功能怎么调";整条影视生产流水线的作业顺序(建项目→分镜→资产→摆台→白模→分镜图→视频→交付,先做什么、何时停、何时问用户)封装在宿主的 kmeng-film-production skill 里,随 kmeng-mcp 一起分发(kmeng-mcp/skills/kmeng-film-production/SKILL.md,装入宿主技能目录即可)。用户说"用 kmeng 做视频/跑流水线"时会自动触发。
使用纪律(Agent 必读)
get_task不带 waitSeconds 时对同一任务强制 ≥10 秒间隔(平台任务查询会触发上游刷新),过密返回缓存并标注throttled;带waitSeconds≤25 则由服务端长轮询按 ≥10 秒节奏驱动上游刷新、状态变化立即返回,提交后等结果优先用它;- 图片必须使用
open_image_generator→read_image_generator→update_image_generator→click_generate_image→poll_image_generator,不得直接提交裸图片参数;视频任务立即返回任务号,不要在一次工具调用里等待生成完成(生视频通常需数分钟),用格子工具轮询; - 创建与提交硬闸:①
create_project前,题材(dramaStyle)与视觉风格(visualStyle)必须先向用户询问、得到明确答复(带平台预设选项问;题材:科幻/现代/古风/悬疑/玄幻/神话/历史/动画片/近现代架空/哥特西幻,视觉风格:超写实/3D动漫/3D国漫仿真/2D动漫/MG卡通/定格动画),用户明确说"随意/你定"才允许走默认「都市现代×超写实」;②model(模型选择)与resolution(分辨率)必须先向用户询问、得到明确答复后才能click_generate_image/click_generate_video提交任务,先list_models带着选项去问;③生视频只问模型、分辨率、比例(16:9/9:16/auto)三项,其余按定稿执行不问:音频默认开、条数固定 1、输入模式默认多模态参考、时长按分镜该镜段时间窗自设(list_asset_slots镜头视频槽位的segRange/segStartSeconds/segEndSeconds;创作页无分镜依据时才与用户确认); - 参考图/参考素材一律使用 kmeng 域链接(
upload_asset返回的src或资产库list_assets里的地址); - 从平台取图/取片到本地(
download_file→ 写盘)全程静默执行:不逐张、不逐步向用户汇报过程(不发"正在下载…/已保存到…"类消息),做完直接进入最终交付展示;只在下载失败或用户主动询问时才说明过程; - 生成过程进度可展示:
get_task返回的progressText是平台三段式进度字样(正在理解需求 / 正在进行创作 / 即将为您呈现;终态:图片已生成 / 视频已生成 / 生成报错),用户等待或询问进度时可原样转述(仅标题字样,无明细)。 - 看图微调提示词:
get_task返回的图片链接可直接下载后用你的视觉能力评审,再改 prompt 重新提交。 - 下载成品:轮询拿到任务号后,用
get_task_file {kind, taskId}换出该任务成品的 kmeng URL(图片任务多张全给、视频任务含成片与封面),再把files[].url逐个传给download_file写盘交付;项目槽位产物也可直接取格子状态里的current.url。
平台侧安全规则
- kmeng 出口原则:工具返回的一切 URL 只能是 kmeng 域,上游供应商链接一律被改写为占位符;上游报文(错误详情等)一律剥除,失败信息与普通用户看到的通用文案一致;
- 令牌不能访问平台管理面,也不能管理令牌自身;
- 每令牌每分钟限 120 次请求;每日消费上限由用户在生成令牌时设定(0 = 不限),超限提交会被拒绝;
- 用户吊销令牌或重新生成后,旧令牌立即失效(表现为全部请求 401)。
常见故障
| 现象 | 原因与处理 |
|---|---|
| 全部请求 401 | 令牌已失效(用户重新生成或吊销)→ 请用户在「我的账户 → MCP 接入」重新生成并发给你 |
| 提交生成 429(mcp_daily_cap_reached) | 触发用户设定的当日消费上限 → 停止提交,请用户调整额度或次日再试 |
| 偶发 429 | 超过每分钟 120 次限流 → 降低调用频率 |
| 403 | 尝试了令牌无权访问的接口(管理面/令牌自管)→ 没有绕过方式,属平台红线 |
—— kmeng 平台 · 本说明随平台版本更新,Agent 应以拉取到的最新页面为准。