Skip to content

Commit 5928da0

Browse files
authored
Merge pull request #318 from modelstudioai/feat/app-control-plane-commands
feat(app): add control-plane commands for agents and workflows (prepare 2.9.0)
2 parents 1a17ac8 + 7508d90 commit 5928da0

39 files changed

Lines changed: 2552 additions & 38 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,29 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and
66

77
[中文版](CHANGELOG.zh.md) · [README](README.md) · [Contributing](CONTRIBUTING.md)
88

9+
## [2.9.0] - 2026-11-12
10+
11+
### Added
12+
13+
- **App control-plane commands**: Manage Bailian applications from the CLI via the console gateway.
14+
- `bl app create` / `get` / `update` / `publish` / `delete` / `copy` / `versions` for agents (app-control 2.0) and workflows; `delete` is high-risk and requires `--yes`.
15+
- `bl app workflow get` / `save` / `publish` / `export` for workflow canvases; `save` replaces the whole draft with optimistic-lock versioning, `publish` normalizes triggers like the console editor.
16+
- Agent config updates read the current draft and merge `--model` / `--instructions` / `--config-json` / `--config-file`.
17+
- **App list filtering**: `bl app list --type workflow` lists workflows using the console exclusion filter.
18+
19+
### Changed
20+
21+
- **Omni default model**: `bl omni` now defaults to `qwen3.8-omni-flash` (was `qwen3.5-omni-plus`).
22+
23+
### Fixed
24+
25+
- **Free-tier model operations**: Tighten confirmation gating and error handling; recovery stays behind the confirmation gate.
26+
- **Recovery hints**: Preserve the explicit `--config` profile after API Key fallback, and append `--config` for named profiles.
27+
28+
### Internal
29+
30+
- **Telemetry identity**: Replace the anonymous device_id with a persisted anonymous uid, published atomically (temp+rename) to avoid short-writes and stale-lock races.
31+
932
## [2.8.6] - 2026-11-12
1033

1134
### Added

‎CHANGELOG.zh.md‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,29 @@
66

77
[English](CHANGELOG.md) · [README](README.zh.md) · [参与贡献](CONTRIBUTING.zh.md)
88

9+
## [2.9.0] - 2026-11-12
10+
11+
### 新增
12+
13+
- **应用控制面命令**:通过控制台网关在命令行管理百炼应用。
14+
- `bl app create` / `get` / `update` / `publish` / `delete` / `copy` / `versions`:管理智能体(app-control 2.0)与工作流;`delete` 为高风险操作,需 `--yes`。
15+
- `bl app workflow get` / `save` / `publish` / `export`:管理工作流画布;`save` 整幅替换草稿并带乐观锁版本,`publish` 按控制台编辑器逻辑规范化触发器。
16+
- 智能体配置更新先读取当前草稿,再合并 `--model` / `--instructions` / `--config-json` / `--config-file`。
17+
- **应用列表筛选**:`bl app list --type workflow` 按控制台排除法列出工作流。
18+
19+
### 变更
20+
21+
- **Omni 默认模型**:`bl omni` 默认模型改为 `qwen3.8-omni-flash`(原 `qwen3.5-omni-plus`)。
22+
23+
### 修复
24+
25+
- **免费额度模型操作**:收紧确认闸门与错误处理;恢复操作保持在确认闸门之后。
26+
- **恢复提示**:API Key 回退后保留显式 `--config` 配置 profile,并为命名 profile 追加 `--config` 提示。
27+
28+
### 内部
29+
30+
- **遥测身份**:以持久化的匿名 uid 替代匿名 device_id,采用原子发布(临时文件+重命名),避免短写与陈旧锁竞争。
31+
932
## [2.8.6] - 2026-11-12
1033

1134
### 新增

‎README.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ _Built for AI Agents. Every command works as a structured tool call._
2525

2626
- **Model generation** — Full-modality generation across text, image, video, and speech, with editing and reference-based generation
2727
- **Asset understanding** — Parse and ask questions about images, documents, audio, and long videos
28-
- **App orchestration** — Call Managed Agents, agents, and workflows published on Aliyun Model Studio, wired to knowledge bases, memory, web search, and MCP tools
28+
- **App orchestration** — Call Managed Agents, agents, and workflows published on Aliyun Model Studio, wired to knowledge bases, memory, web search, and MCP tools; create, update, publish, copy, and delete agents/workflows, and edit workflow canvases from the CLI
2929
- **Native MCP setup** — Register Bailian MCP servers in Codex, Claude Code, Cursor, Qoder, Qoder Work, QwenWork (千问办公), Qwen Code, Gemini CLI, or Pi
3030
- **Training & deployment** — Validate and upload datasets, fine-tune models, deploy dedicated models as endpoints
3131
- **Batch inference** — Prepare CSV/JSONL, create and follow asynchronous Chat/Embedding tasks, download original results/errors with optional CSV, or send one synchronous Batch Chat request

‎README.zh.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ _专为 AI Agent 打造,每个命令均可作为结构化工具调用。_
2424

2525
- **模型生成** — 文本、图像、视频、语音全模态生成,支持编辑与参考生成
2626
- **素材理解** — 图像、文档、音频、长视频的解析与问答
27-
- **应用编排** — 调用百炼已发布的 Managed Agent、智能体和工作流,接入知识库、记忆库、联网搜索与 MCP 工具
27+
- **应用编排** — 调用百炼已发布的 Managed Agent、智能体和工作流,接入知识库、记忆库、联网搜索与 MCP 工具;并可在命令行创建/更新/发布/复制/删除智能体与工作流、编辑工作流画布
2828
- **原生 MCP 接入** — 将百炼 MCP 服务注册到 Codex、Claude Code、Cursor、Qoder、Qoder Work、千问办公(QwenWork)、Qwen Code、Gemini CLI 或 Pi
2929
- **模型训推** — 数据集校验上传、模型精调、专属模型部署上线
3030
- **批量推理** — CSV/JSONL 构造、异步 Chat/Embedding 任务创建与跟踪、原始结果/错误下载及可选 CSV,或同步单请求 Batch Chat

‎packages/bailian-kb-dsh/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bailian-kb-dsh",
3-
"version": "2.8.6",
3+
"version": "2.9.0",
44
"description": "Bailian knowledge-base tools for DeepSeek Harness: kb_search and kb_chat over the DashScope RAG API, plus the bl CLI management skill.",
55
"keywords": [
66
"alibaba-cloud",

‎packages/bailian-memo-dsh/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bailian-memo-dsh",
3-
"version": "2.8.6",
3+
"version": "2.9.0",
44
"description": "Bailian personal memory for DeepSeek Harness: automatic recall, silent curation, and user-controlled remember/forget.",
55
"keywords": [
66
"alibaba-cloud",

‎packages/cli/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bailian-cli",
3-
"version": "2.8.6",
3+
"version": "2.9.0",
44
"description": "CLI for Aliyun Model Studio (DashScope) AI Platform.",
55
"keywords": [
66
"agent",

‎packages/cli/src/commands.ts‎

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,17 @@ import {
3434
update,
3535
appCall,
3636
appList,
37+
appCreate,
38+
appGet,
39+
appUpdate,
40+
appPublish,
41+
appDelete,
42+
appCopy,
43+
appVersions,
44+
appWorkflowGet,
45+
appWorkflowSave,
46+
appWorkflowPublish,
47+
appWorkflowExport,
3748
memoryAdd,
3849
memorySearch,
3950
memoryList,
@@ -378,6 +389,17 @@ export const commands: Record<string, AnyCommand> = {
378389
update,
379390
"app call": appCall,
380391
"app list": appList,
392+
"app create": appCreate,
393+
"app get": appGet,
394+
"app update": appUpdate,
395+
"app publish": appPublish,
396+
"app delete": appDelete,
397+
"app copy": appCopy,
398+
"app versions": appVersions,
399+
"app workflow get": appWorkflowGet,
400+
"app workflow save": appWorkflowSave,
401+
"app workflow publish": appWorkflowPublish,
402+
"app workflow export": appWorkflowExport,
381403
"memory add": memoryAdd,
382404
"memory search": memorySearch,
383405
"memory list": memoryList,

‎packages/commands/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bailian-cli-commands",
3-
"version": "2.8.6",
3+
"version": "2.9.0",
44
"description": "Command library for bailian-cli products (knowledge, memory, media, …). See https://www.npmjs.com/package/bailian-cli for usage.",
55
"homepage": "https://bailian.console.aliyun.com/cli",
66
"bugs": {
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import { defineCommand } from "bailian-cli-core";
2+
import {
3+
APP_CONTROL_COPY_API,
4+
APP_ID_FLAG,
5+
consoleCall,
6+
consoleDryRunPreview,
7+
extractAppCode,
8+
} from "./shared.ts";
9+
10+
export default defineCommand({
11+
description: {
12+
"en-US": "Copy a Bailian application (agent or workflow)",
13+
"zh-CN": "复制百炼应用(智能体或工作流)",
14+
},
15+
auth: "console",
16+
usageArgs: "--app-id <id> [flags]",
17+
flags: {
18+
...APP_ID_FLAG,
19+
},
20+
exampleArgs: ["--app-id abc123"],
21+
async run(ctx) {
22+
const { settings, flags } = ctx;
23+
const code = flags.appId;
24+
const data = { reqDTO: { code } };
25+
26+
if (settings.dryRun) {
27+
ctx.output.result(consoleDryRunPreview(settings, APP_CONTROL_COPY_API, data));
28+
return;
29+
}
30+
31+
const payload = await consoleCall(ctx.client, APP_CONTROL_COPY_API, data);
32+
const newAppCode = extractAppCode(payload);
33+
ctx.output.result(
34+
{ app_code: newAppCode ?? null, source_app_code: code, result: payload },
35+
settings.output === "text"
36+
? {
37+
text: ctx.localize({
38+
"en-US": `Application copied: ${newAppCode ?? "(see result)"}`,
39+
"zh-CN": `应用已复制:${newAppCode ?? "(见 result)"}`,
40+
}),
41+
}
42+
: undefined,
43+
);
44+
},
45+
});

0 commit comments

Comments
 (0)