# 更新记录

AIDC Developer 的 SDK、CLI 与 API 同步发版（SemVer）。版本号唯一真源：`developer/version.ts`。浏览器 SDK 的路径带大版本（`/developer/sdk/v1/`），破坏性变更才升大版本，旧版继续可用。

## 1.1.1 — 2026-09-26

### 修复

- **安装脚本在 Node 18 上装出来的 `aidc` 跑不起来**：CLI 是 ES 模块，原来存成没有扩展名的 `aidc`，Node 20.19+ 会按内容识别、Node 18 不会（`SyntaxError: Cannot use import statement outside a module`）。现在存成 `aidc.mjs`、`aidc` 指向它；重装即修复。在恒田客户箱（Node 18.19）装发布端时发现。
- **`aidc stream pipe` 常驻时的监听器泄漏**：发布循环每次空闲等待都在停止信号上挂一个监听器、被唤醒后不摘（心跳每 30 秒一次，一天近 3,000 个；吉兴箱 Node 20 上 6 分钟报 `MaxListenersExceededWarning`）。改为只挂一个；退避等待结束即摘掉监听器。已在跑的发布端重装 CLI、重启服务即可。
- **`aidc app status / history / publish / rollback` 支持 `<命名空间>/<slug>`**（如 `cell-gissing-ai/tj8100-live`），与 `aidc stream` 的写法一致；原来只能用 `-n`。

## 1.1.0 — 2026-09-26

### 新增

- **连接 SDK · 实时数据流**：数据源一变，源头旁边的发布端推给 AIDC，AIDC 按序落账、保存最新状态，几秒内推给所有订阅端——不用 cron、不轮询 ERP、数据源断了订阅端看得见。
  - SDK：`connect.stream(name).subscribe({ onUpdate, onNotice, onStatus })`（先全量、后增量，断线带序号续传）、`get()`、`publish()`、`publisher()`（全表自动算差）。
  - CLI：`aidc stream create / list / status / get / key / keys / revoke / publish / tail / pipe / delete`；`aidc stream pipe <流> -- <适配器>` 是边缘发布端（算差、幂等重试、心跳、全量校准、适配器崩溃重启并上报「连不上数据源」）。
  - API：`/api/v1/developer/streams/**`（声明带字段白名单、SSE 订阅 `?after=N` 续传、批量发布、发布 Key `aidc-pk-`）。
  - 应用清单新增 `streams`：应用只能订阅声明过的、同一命名空间的数据流。
- **版本号与更新状态**：应用清单新增必填的 `version`（语义化版本号）。测试与发布都用版本号称呼一个版本（Developer 预览显示「Developer 预览 · v1.2.0」，Nexus 显示「v1.2.0」）；每个版本有更新状态（已上线 / 测试中 / 已测未发 / 已被替换 / 已回滚 / 未测试）；每次进测试、发布、回滚都记一条发布记录（谁、何时、从哪个版本到哪个版本、说明）。`aidc app status` 看版本与状态，`aidc app history` 看记录；`publish` / `rollback` 的 `--version` 可写版本号，另可带 `--notes`。

### 变更

- **版本号一号一内容**：内容变了但 `version` 没升，部署返回 409 `version_conflict`。
- **清单进内容指纹**：只改清单（额度、模型、数据流…）也算新内容。此前这种改动再部署会被当成「内容未变」、新清单不生效——已修。存量版本的版本号按 `1.0.<构建序号-1>` 回填。
- `app()` 返回的 `version` 改为版本号字符串（如 `"1.2.0"`），构建序号在新增的 `build` 里。
- `aidc app init` 生成的清单从 `0.1.0` 起。

## 1.0.1 — 2026-09-26

### 修复

- **语音 SDK `voice.translate`**：数额按「万 / 亿」换算，不再把「预算 120 万」译成「120 千」（埃及阿拉伯语、孟加拉语：同一句翻 6 次，24 条译文错 5 条）；非中文、日语的译文不再残留原文汉字（孟加拉语「…এটি负责।」：同一句翻 50 次，9 次残留）；人名、地名改为按目标语言音译。改后两项在同样的测试里都是 0 次。会议纪要样板直接加载 `/developer/sdk/v1/aidc.js`，随官网部署生效，不用重发应用。
- **会议纪要样板（v2）**：去掉写死的转写关键词 `AIDC / Nexus / Developer`——转写会偏向关键词，实测把会上说的「SAP」听成了「Nexus」；去掉后同一段录音 4 处「SAP」全部听对。文档补充：`keywords` 只放会上真会出现的词。
- **CLI `aidc --version`**：管道里也只打印版本号（此前非终端输出 JSON，安装脚本的「已安装」提示里会夹一段 JSON）；要 JSON 用 `aidc --version --json`。

## 1.0.0 — 2026-09-26

首个版本。

### 新增

- **七个 SDK**：视觉（摄像头、拍照、选图、结构化质检、画框标注）、语音（实时转写、录音、音量、文件转写、多语翻译、会议纪要）、视频（带声录像、定时抽帧、视频分析）、模型（OpenAI 兼容：LLM / 视觉 / 转写 / 实时转写 / Jev，账单记调用方公司）、数据（解析、画像、聚合、透视、时间序列、异常、格式化、图表）、发布（清单、版本、双通道、回滚）、连接（数据集固定报告、智能体 Agent API）。
- **aidc CLI**：设备授权登录；`models` / `model` / `vision` / `voice` / `video`（ffmpeg）/ `data` / `connect` / `app` 全套命令；`--json`、`--dry-run`、稳定退出码。
- **API**：`/api/v1/developer/**`（登录、Key、应用、版本、通道、票据、数据集）与 `/api/v1/models/**`（目录、chat.completions、audio.transcriptions、实时转写票据、Jev）。
- **托管**：Developer 预览 `/developer/apps/<slug>`、Nexus 正式 `/nexus/apps/<slug>`；客户应用挂在 `/developer/<cellId>/apps/<slug>` 与 `/nexus/<cellId>/apps/<slug>`。
- **智能体接入**：`/developer/llms.txt`、每页 Markdown 原文、`/developer/skills/aidc-sdk/SKILL.md`、`/developer/openapi.json`、应用清单 JSON Schema。
- **样板应用**：瑕疵检测、会议纪要、ERP 数据自动分析（公开）。
- **合成 ERP 演示库** `demo_erp`（虚构数据）。
