Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,23 @@ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and

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

## [1.15.0] - 2026-08-14

### Added

- **Native Bailian Managed Agent Deployments** — `deployments` declared in `agents.yaml` now materialize as native AgentStudio resources, with server-side cron schedules, local file resource uploads, archival through `destroy`, and migration of legacy emulated state on the next `apply`.
- **Skill registry management** — added `bl skill add`, `bl skill list`, `bl skill update`, and `bl skill remove` for installing, reconciling, atomically updating, and removing registry skills across detected coding agents.

### Changed

- **Request IDs in command output** — dataset, model deployment, and fine-tuning commands now expose server request IDs in text and JSON output for troubleshooting.
- **Skill packaging and routing** — Bailian skills are split into the shared protocol, generation, fine-tuning, Managed Agent, and CLI hub domains. The supported installation flow now installs the complete family with `npx skills add modelstudioai/cli --all -g`.
- **Advisor knowledge refresh** — the model advisor knowledge package is pre-fetched during npm installation and automatically refreshed when needed; download failures do not block CLI installation.

### Internal

- Bailian and DashScope API requests now include CLI binary and version source-attribution tags.

## [1.14.0] - 2026-08-04

### Added
Expand Down
17 changes: 17 additions & 0 deletions CHANGELOG.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,23 @@

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

## [1.15.0] - 2026-08-14

### 新增

- **百炼原生 Managed Agent Deployment** —— `agents.yaml` 中声明的 `deployments` 现在会创建原生 AgentStudio 资源,支持服务端 Cron 调度、本地文件资源上传、通过 `destroy` 归档,以及在下次 `apply` 时迁移旧版模拟 Deployment state。
- **Skill Registry 管理** —— 新增 `bl skill add`、`bl skill list`、`bl skill update` 和 `bl skill remove`,支持向检测到的编码 Agent 安装 Skill、核对状态、原子更新及卸载 Registry Skill。

### 变更

- **命令输出 Request ID** —— 数据集、模型部署和模型精调命令现在会在文本及 JSON 输出中展示服务端 Request ID,便于故障排查。
- **Skill 分包与路由** —— 百炼 Skill 拆分为共享协议、生成、精调、Managed Agent 和 CLI Hub 等领域;支持的安装方式统一为 `npx skills add modelstudioai/cli --all -g`,一次安装完整 Skill 家族。
- **Advisor 知识更新** —— npm 安装时会预下载模型推荐知识包,并在需要时自动刷新;下载失败不会阻断 CLI 安装。

### 内部

- 百炼和 DashScope API 请求现在会携带 CLI 二进制名称及版本来源标签。

## [1.14.0] - 2026-08-04

### 新增
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bailian-cli",
"version": "1.14.0",
"version": "1.15.0",
"description": "CLI for Aliyun Model Studio (DashScope) AI Platform.",
"keywords": [
"agent",
Expand Down
4 changes: 2 additions & 2 deletions packages/commands/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bailian-cli-commands",
"version": "1.14.0",
"version": "1.15.0",
"description": "Command library for bailian-cli products (knowledge, memory, media, …). See https://www.npmjs.com/package/bailian-cli for usage.",
"homepage": "https://bailian.console.aliyun.com/cli",
"bugs": {
Expand Down Expand Up @@ -40,7 +40,7 @@
"check": "vp check"
},
"dependencies": {
"@openagentpack/sdk": "0.3.1",
"@openagentpack/sdk": "0.3.2",
"bailian-cli-core": "workspace:*",
"bailian-cli-runtime": "workspace:*",
"boxen": "catalog:",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
version: "1"

providers:
bailian:
api_key: ${DASHSCOPE_API_KEY}
base_url: ${BAILIAN_BASE_URL}

defaults:
provider: bailian

environments:
dev:
config:
type: cloud
networking:
type: unrestricted

agents:
reporter:
description: "Invalid deployment integration fixture"
model: qwen3.7-max
instructions: |
Generate a concise engineering report from the mounted template.
environment: dev

deployments:
invalid-report:
agent: reporter
initial_events:
- type: user.define_outcome
rubric: "Report is concise and actionable."
resources:
- type: file
source: ./report-template.md
- type: file
source: ./report-template.md
mount_path: report-template.md
- type: file
source: ./report-template.md
mount_path: /mnt/report-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
version: "1"

providers:
bailian:
api_key: ${DASHSCOPE_API_KEY}
base_url: ${BAILIAN_BASE_URL}

defaults:
provider: bailian

environments:
dev:
config:
type: cloud
networking:
type: unrestricted

agents:
reporter:
description: "Deployment integration fixture"
model: qwen3.7-max
instructions: |
Generate a concise engineering report from the mounted template.
environment: dev

deployments:
daily-report:
agent: reporter
description: "Native Bailian deployment"
schedule:
expression: "0 9 * * *"
timezone: UTC
initial_events:
- type: user.message
content: "Generate today's engineering report."
resources:
- type: file
source: ./report-template.md
mount_path: /mnt/report-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Engineering report

Summarize completed work, current risks, and next actions.
112 changes: 111 additions & 1 deletion packages/commands/tests/e2e/managed-agent.e2e.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,21 @@
import { join } from "node:path";
import { describe, expect, test } from "vite-plus/test";
import { parseStdoutJson, runCommandE2e } from "./helpers.ts";
import { e2eFixturesDir, parseStdoutJson, runCommandE2e } from "./helpers.ts";
import { MANAGED_AGENT_ROUTES } from "./topic-routes.ts";

const AGENTS_DEPLOYMENT_YAML = join(e2eFixturesDir, "managed-agent", "agents-deployment.yaml");
const AGENTS_DEPLOYMENT_INVALID_YAML = join(
e2eFixturesDir,
"managed-agent",
"agents-deployment-invalid.yaml",
);

const DEPLOYMENT_SAFETY_DIAGNOSTIC_CODES = [
"bailian.deployment.initial_events.message_required",
"bailian.deployment.file.mount_path.required",
"bailian.deployment.file.mount_path.duplicate",
];

/**
* managed-agent:help / 缺参不依赖密钥;所有 mutation 命令的 --dry-run
* 必须在构建 SDK runtime(凭证注入 / 联网 / 写盘)之前短路,因此同样不需要密钥。
Expand All @@ -12,6 +26,102 @@ import { MANAGED_AGENT_ROUTES } from "./topic-routes.ts";
*/

describe("e2e: managed-agent", () => {
test("validate 接受原生 Bailian Deployment 配置", async () => {
const { stdout, stderr, exitCode } = await runCommandE2e(MANAGED_AGENT_ROUTES, [
"managed-agent",
"validate",
"--file",
AGENTS_DEPLOYMENT_YAML,
"--output",
"json",
]);
expect(exitCode, stderr).toBe(0);
const data = parseStdoutJson<{
valid?: boolean;
diagnostics?: Array<{ code?: string; severity?: string }>;
}>(stdout);
expect(data.valid).toBe(true);
expect(data.diagnostics).not.toContainEqual(
expect.objectContaining({ code: "bailian.deployment.schedule_unsupported" }),
);
});

test("plan --dry-run 通过 SDK planner 规划原生 Bailian Deployment", async () => {
const { stdout, stderr, exitCode } = await runCommandE2e(MANAGED_AGENT_ROUTES, [
"managed-agent",
"plan",
"--dry-run",
"--file",
AGENTS_DEPLOYMENT_YAML,
"--output",
"json",
]);
expect(exitCode, stderr).toBe(0);
const data = parseStdoutJson<{
actions?: Array<{
action?: string;
address?: { provider?: string; type?: string; name?: string };
}>;
diagnostics?: Array<{ code?: string; severity?: string }>;
}>(stdout);
expect(data.actions).toContainEqual(
expect.objectContaining({
action: "create",
address: {
provider: "bailian",
type: "deployment",
name: "daily-report",
},
}),
);
expect(data.diagnostics).not.toContainEqual(
expect.objectContaining({ code: "bailian.deployment.schedule_unsupported" }),
);
});

test("validate 拒绝会产生空消息或无效挂载路径的 Bailian Deployment", async () => {
const { stdout, exitCode } = await runCommandE2e(MANAGED_AGENT_ROUTES, [
"managed-agent",
"validate",
"--file",
AGENTS_DEPLOYMENT_INVALID_YAML,
"--output",
"json",
]);
expect(exitCode).toBe(1);
const data = parseStdoutJson<{
valid?: boolean;
diagnostics?: Array<{ code?: string; severity?: string }>;
}>(stdout);
expect(data.valid).toBe(false);
for (const diagnosticCode of DEPLOYMENT_SAFETY_DIAGNOSTIC_CODES) {
expect(data.diagnostics).toContainEqual(
expect.objectContaining({ code: diagnosticCode, severity: "error" }),
);
}
});

test("plan --dry-run 在 Deployment 安全诊断失败时阻断计划", async () => {
const { stdout, exitCode } = await runCommandE2e(MANAGED_AGENT_ROUTES, [
"managed-agent",
"plan",
"--dry-run",
"--file",
AGENTS_DEPLOYMENT_INVALID_YAML,
"--output",
"json",
]);
expect(exitCode).toBe(1);
const data = parseStdoutJson<{
diagnostics?: Array<{ code?: string; severity?: string }>;
}>(stdout);
for (const diagnosticCode of DEPLOYMENT_SAFETY_DIAGNOSTIC_CODES) {
expect(data.diagnostics).toContainEqual(
expect.objectContaining({ code: diagnosticCode, severity: "error" }),
);
}
});

test("managed-agent apply --help 正常退出", async () => {
const { stderr, exitCode } = await runCommandE2e(MANAGED_AGENT_ROUTES, [
"managed-agent",
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bailian-cli-core",
"version": "1.14.0",
"version": "1.15.0",
"description": "Core SDK for bailian-cli. See https://www.npmjs.com/package/bailian-cli for usage.",
"homepage": "https://bailian.console.aliyun.com/cli",
"bugs": {
Expand Down
2 changes: 1 addition & 1 deletion packages/kscli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "knowledge-studio-cli",
"version": "1.14.0",
"version": "1.15.0",
"description": "Lightweight RAG CLI for Aliyun Model Studio — focused on knowledge-base retrieval.",
"keywords": [
"alibaba-cloud",
Expand Down
2 changes: 1 addition & 1 deletion packages/runtime/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "bailian-cli-runtime",
"version": "1.14.0",
"version": "1.15.0",
"description": "Runtime framework for bailian-cli (createCli, registry, args, output, pipeline). See https://www.npmjs.com/package/bailian-cli for usage.",
"homepage": "https://bailian.console.aliyun.com/cli",
"bugs": {
Expand Down
16 changes: 8 additions & 8 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion skills/bailian-cli/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: bailian-cli
metadata:
version: "1.14.0"
version: "1.15.0"
requires:
bins: ["bl"]
description: >-
Expand Down
2 changes: 1 addition & 1 deletion skills/bailian-finetune/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: bailian-finetune
metadata:
version: "1.14.0"
version: "1.15.0"
requires:
bins: ["bl"]
description: >-
Expand Down
2 changes: 1 addition & 1 deletion skills/bailian-gen/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
name: bailian-gen
metadata:
version: "1.14.0"
version: "1.15.0"
requires:
bins: ["bl"]
description: >-
Expand Down
Loading