@lingjingai/scriptctl 0.66.18 → 0.66.20

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lingjingai/scriptctl",
3
- "version": "0.66.18",
3
+ "version": "0.66.20",
4
4
  "description": "剧本阶段统一 CLI:素材转 Script v4,并兼容 Script v3 的本地写作、精修、校验和发布。",
5
5
  "type": "module",
6
6
  "bin": {
@@ -22,6 +22,20 @@
22
22
  "engines": {
23
23
  "node": ">=22.22.0"
24
24
  },
25
+ "scripts": {
26
+ "build": "pnpm run clean && pnpm --filter @lingjingai/screenplay build && pnpm --filter @lingjingai/review-agent build && tsc && node scripts/bundle.mjs",
27
+ "clean": "rm -rf dist packages/screenplay/dist packages/review-agent/dist",
28
+ "postinstall": "node scripts/install-skill.mjs",
29
+ "install-skill": "node scripts/install-skill.mjs",
30
+ "prepublishOnly": "pnpm run build",
31
+ "pretest": "pnpm run build",
32
+ "test": "vitest run",
33
+ "pretest:coverage": "pnpm run build",
34
+ "test:coverage": "c8 --reporter=text --reporter=html --reporter=lcov --report-dir=coverage vitest run",
35
+ "test:watch": "vitest",
36
+ "typecheck": "tsc --noEmit",
37
+ "surface:snapshot": "node scripts/scriptctl-surface-snapshot.mjs"
38
+ },
25
39
  "dependencies": {
26
40
  "@anthropic-ai/sdk": "^0.111.0",
27
41
  "@google/genai": "^2.11.0",
@@ -39,8 +53,8 @@
39
53
  "zod": "^4.5.4"
40
54
  },
41
55
  "devDependencies": {
42
- "@lingjingai/review-agent": "0.1.0",
43
- "@lingjingai/screenplay": "0.1.0",
56
+ "@lingjingai/review-agent": "workspace:*",
57
+ "@lingjingai/screenplay": "workspace:*",
44
58
  "@types/jsdom": "^30.0.0",
45
59
  "@types/node": "^20.14.0",
46
60
  "@types/proper-lockfile": "^4.1.4",
@@ -68,18 +82,5 @@
68
82
  "@ai-sdk/openai-compatible": "^3.0.48",
69
83
  "@ai-sdk/provider": "^4.0.4",
70
84
  "@mastra/core": "^1.64.0"
71
- },
72
- "scripts": {
73
- "build": "pnpm run clean && pnpm --filter @lingjingai/screenplay build && pnpm --filter @lingjingai/review-agent build && tsc && node scripts/bundle.mjs",
74
- "clean": "rm -rf dist packages/screenplay/dist packages/review-agent/dist",
75
- "postinstall": "node scripts/install-skill.mjs",
76
- "install-skill": "node scripts/install-skill.mjs",
77
- "pretest": "pnpm run build",
78
- "test": "vitest run",
79
- "pretest:coverage": "pnpm run build",
80
- "test:coverage": "c8 --reporter=text --reporter=html --reporter=lcov --report-dir=coverage vitest run",
81
- "test:watch": "vitest",
82
- "typecheck": "tsc --noEmit",
83
- "surface:snapshot": "node scripts/scriptctl-surface-snapshot.mjs"
84
85
  }
85
- }
86
+ }
@@ -2,8 +2,8 @@
2
2
  name: scriptctl
3
3
  description: "剧本 script.json 的本地阅读、定位、原子修改、整场整集回写、素材 ingest 与 revision publish CLI。处理 Script v3/v4、剧本资产与 state、Action、场景引用或视频证据核对时使用。"
4
4
  metadata:
5
- version: "0.32.3"
6
- scriptctl_version: "0.66.17"
5
+ version: "0.32.4"
6
+ scriptctl_version: "0.66.19"
7
7
  author: "official"
8
8
  ---
9
9
 
@@ -230,9 +230,9 @@ GrsAI 使用 `GRSAI_API_KEY` 和 base64 视频,每个型号最多尝试 3 次
230
230
  豆包需要 `ARK_API_KEY`,`ARK_MODEL` 可指定端点。
231
231
  已完成集和跨集 context 保留,同 source、同 workspace 重跑会从失败集续接。
232
232
 
233
- 有原视频的 `review` 按集执行「豆包 Flash ASR → Gemini 对比 → 校时落盘 → Mastra 审核 → 落盘」,`--concurrency` 控制整集流程并发,默认 5。需要 `SD_AUDIO_APIKEY`、ffmpeg 和按集对应的视频。Gemini 阅读带时间戳、行锚点的亚洲格式正文及 ASR 句/词时间,选择整条台词开头对应的 ASR 起点;程序校时并落盘,保留原台词和其他字段。缺漏按集记录原话、时间与理由,随后交给本集 Agent 逐项 `watch` 核对原片再修复,并按窗口数增加看片预算;不确定项保留原样并记录待核对线索。单集服务或响应失败会记录为失败集,其他集继续执行。
233
+ 有原视频的 `review --review-strategy batch` 启用可选联合审核:豆包 Flash ASR → Gemini 对比 → Mastra 联合核对校时与内容 → 落盘。`--concurrency` 控制整集流程并发,默认 5;需要 `SD_AUDIO_APIKEY`、ffmpeg 和按集对应的视频。Agent 一次收到本集完整正文、相关人物状态卡、相邻集梗概与尚未写入的 ASR 建议,用 `read_many` 集中补读,`apply_changes` 一起修正关联字段并返回最终回读和校验,`record_findings` 记录实质结论。已核实的词级时间保留原精度;出现原音与整集 ASR 的具体冲突时,`asr_window` 对至多 15 秒的声音重识别并返回本集绝对句/词时间,共用媒体核验预算。画面约数用于判断内容和先后,证据矛盾保留原文并记录 unresolved。单集失败保留已执行修改,其他集继续。默认 `legacy` 使用先写入 ASR 时间、再逐项审核的流程。批量方式的成本随上下文、缓存与取证次数变化;证据冲突和重要分段边界需人工复核后验收。
234
234
 
235
- ASR 对比同时读取台词前后的画面 Action。音轨起音可到毫秒,画面记录按其原片证据保留整秒或小数。校时后的本集时间轴错误、相邻原文和短看片窗口直接交给审核 Agent,并按窗口补充媒体预算;修复依据原片起点,保留原文顺序。结束时仍有 Script 时间轴校验错误的集标为未完成,保留已成功修改并从同一项目续审。
235
+ ASR 对比同时读取台词前后的画面 Action。音轨起音可到毫秒,画面记录按其原片证据保留整秒或小数。模拟采纳 ASR 建议产生的本集时间轴错误、相邻原文和短看片窗口交给 Agent,并按窗口补充媒体预算;修复依据原片声画先后。结束时仍有 Script 时间轴校验错误的集标为未完成,保留已成功修改并从同一项目续审。批量流程在单集落盘后发出 `asr-applied`,只统计最终实际采纳的 ASR 建议;结论中的实质内容修正单独记录。
236
236
 
237
237
  逐集审核同时明确动作叙述的人物指代:依据资产、上下文与原片证据,将可确认的称呼、别名和代词写成资产正式名;普通词义、台词和画面文字原文保留,歧义记 unresolved。全剧收敛核对人物合并、更名后的叙述名称一致性。具体边界见 [references/video-transcript-repair.md](references/video-transcript-repair.md)。
238
238
 
@@ -240,7 +240,7 @@ ASR 返回有效语句后,程序将整集对白与心声按顺序拼接,与
240
240
 
241
241
  `.review/asr/episode-N/` 保存成功 ASR 缓存及每次对比的正文、原始响应、前后时间与缺漏报告。源视频经 ffprobe 确认无音轨时,发出 `asr-skipped`(`reason=source_no_audio`),保留台词与时间并继续画面审核;分集结果保留“ASR 校时未执行”的未解决项,说明无法核验实际发声时间、漏词或无字幕画外音。探测、解码及服务错误仍作为失败集处理。`asr-compared` 仅表示对比完成,带 `episode_number` 的 `asr-applied` 表示本集校时已落盘,不等于 Agent 审核完成。`--episodes` 只重跑指定集的 ASR 和审核,`--converge-only` 只做全剧收敛。纯剧本和原文对照审核不执行 ASR;`--check` 不发模型请求。
242
242
 
243
- 视频和纯剧本审核使用 `review-agent`,文本和漫画使用 `review-text`、`review-comic`;主 Agent 默认共用 MSUICODE Vertex → MSUICODE GCP → MSUICODE T3 → NNYYAI(均为 `gemini-3.8-flash`)→ LiteLLM `grok-4.7-packy` → `grok-4.6-packy` → `grok-4.5-packy`。MSUICODE 地址为 `http://15.204.107.123:3000`,三个来源分别读取 `MSUICODE_VERTEX_API_KEY`、`MSUICODE_GCP_API_KEY`、`MSUICODE_T3_API_KEY`;NNYYAI 读取 `NNYYAI_API_KEY`。主渠道密钥必需,额外渠道仅在配置对应密钥时参与。Grok 读取 `PROJECT_LITELLM_GATEWAY_BASE_URL` 和 `PROJECT_LITELLM_GATEWAY_API_KEY`。普通服务错误按配置顺序切换;Gemini 返回明确的内容拦截时,本轮 Agent 跳过所有剩余 Gemini 渠道,直接进入 Grok;这一状态只作用于当前 Agent 会话。各模型沿用 provider 的 `maxAttempts`,内置最多三次。模型切换发生在当前调用内,保留成功的工具操作;用量记录实际渠道和模型,Gemini 思考签名只在生成它的渠道内复用。自定义 profile 的 `fallbacks` 按声明顺序执行。`--no-fallback` 或 `SCRIPTCTL_REVIEW_SINGLE_MODEL=1` 仅使用选定模型。
243
+ 视频和纯剧本审核使用 `review-agent`,文本和漫画使用 `review-text`、`review-comic`;主 Agent 的每次模型请求独立以 50% 概率选择 MSUICODE 或 NNYYAI 优先(均为 `gemini-3.8-flash`):MSUICODE 优先时按 Vertex → GCP → T3 → NNYYAI;NNYYAI 优先时按 NNYYAI → MSUICODE Vertex → GCP → T3。全部 Gemini 渠道耗尽后进入 LiteLLM `grok-4.7-packy` → `grok-4.6-packy` → `grok-4.5-packy`。分配按请求进行,重试不重新抽选;长期首选比例约为 50/50,不保证每两次各一次。MSUICODE 地址为 `http://15.204.107.123:3000`,三个来源分别读取 `MSUICODE_VERTEX_API_KEY`、`MSUICODE_GCP_API_KEY`、`MSUICODE_T3_API_KEY`;NNYYAI 读取 `NNYYAI_API_KEY`。主渠道密钥必需,额外渠道仅在配置对应密钥时参与。Grok 读取 `PROJECT_LITELLM_GATEWAY_BASE_URL` 和 `PROJECT_LITELLM_GATEWAY_API_KEY`。普通服务错误按配置顺序切换;Gemini 返回明确的内容拦截时,本轮 Agent 跳过所有剩余 Gemini 渠道,直接进入 Grok;这一状态只作用于当前 Agent 会话。各模型沿用 provider 的 `maxAttempts`,内置最多三次。模型切换发生在当前调用内,保留成功的工具操作;用量记录实际渠道和模型,Gemini 思考签名只在生成它的渠道内复用。自定义 profile 同时以这两个渠道的 Gemini 3.8 为主链时也按上述策略分配,其他 profile 的 `fallbacks` 按声明顺序执行。`--no-fallback` 或 `SCRIPTCTL_REVIEW_SINGLE_MODEL=1` 仅使用选定模型。
244
244
 
245
245
  独立的 ASR JSON 比对和原片视频核验使用 `review-media`:NNYYAI Gemini 3.8 → 3.7 → 3.6 Flash → 豆包,凭据为 `NNYYAI_API_KEY`、`ARK_API_KEY`,`ARK_MODEL` 可指定豆包端点。显式 `--model` 或自定义配置仍决定媒体主渠道。豆包 Flash ASR 继续读取 `SD_AUDIO_APIKEY`。
246
246