Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
75a7100
feat(memory): 完善记忆及画像相关命令支持并统一参数
clark-fc Sep 10, 2026
d9134d6
feat(memory): 增加长度校验及限流提示并强化安全确认
clark-fc Sep 10, 2026
7569996
Merge remote-tracking branch 'origin/main' into feat/memory
clark-fc Sep 10, 2026
6658652
feat: add .nvmrc file and update Node.js version requirements in pack…
clark-fc Sep 22, 2026
47704d4
refactor: update memory library parameter naming and documentation
clark-fc Sep 22, 2026
c803ef7
feat(memory): enhance documentation and add new commands for memory m…
clark-fc Sep 22, 2026
33c5de1
refactor(memory): remove outdated memory documentation files
clark-fc Sep 22, 2026
298d48d
fix(docs): update memory documentation links in README files
clark-fc Sep 22, 2026
c7f8c6a
fix(docs): correct formatting and consistency in documentation
clark-fc Sep 22, 2026
4dcc4fe
feat(memory): introduce bailian-memory skill and enhance memory manag…
clark-fc Sep 23, 2026
331c7ac
refactor(commands): remove deprecated retrieve command and update doc…
clark-fc Sep 23, 2026
6406a41
Merge remote-tracking branch 'origin/main' into feat/memory
clark-fc Sep 23, 2026
c6127fd
Merge remote-tracking branch 'origin/main' into feat/memory
clark-fc Oct 8, 2026
44dd129
feat(memo-dsh): add bailian-memo-dsh package for personal memory func…
clark-fc Oct 8, 2026
9cf5883
feat(bailian-kb-dsh): update dependencies and configuration for new p…
clark-fc Oct 9, 2026
ae0356d
refactor(bailian-memo-dsh): remove pause/resume functionality and upd…
clark-fc Oct 9, 2026
4475601
Merge remote-tracking branch 'origin/main' into feat/memory
clark-fc Oct 16, 2026
2c40a08
Merge remote-tracking branch 'origin/main' into feat/memory
clark-fc Oct 19, 2026
0af2d7c
refactor(release): unify CLI and dsh plugin publishing
clark-fc Oct 19, 2026
0b14869
fix(memory): resolve review findings and add live journey acceptance
clark-fc Oct 19, 2026
d3fe612
feat(memory): enhance CLI commands with improved validation, error ha…
clark-fc Oct 19, 2026
344bfb7
chore(memory): remove outdated acceptance results and CLI release aud…
clark-fc Oct 19, 2026
09053d4
chore(memory): remove user guide document and update README to reflec…
clark-fc Oct 19, 2026
d4cba21
Merge remote-tracking branch 'origin/main' into feat/memory
clark-fc Oct 20, 2026
be79301
chore(release): prepare unified 2.5.0 release
clark-fc Oct 20, 2026
39461f7
refactor(tests): update test imports to use vite-plus/test and remove…
clark-fc Oct 20, 2026
1434584
chore(docs): update links in README and related documents to reflect …
clark-fc Oct 20, 2026
0c82524
docs(dsh-plugin): adjust table formatting for clarity in package resp…
clark-fc Oct 20, 2026
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
71 changes: 9 additions & 62 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,6 @@ name: Publish
on:
workflow_dispatch:
inputs:
package:
description: "Which package set to publish"
required: true
type: choice
options:
- bailian-cli
- knowledge-studio-cli
- bailian-kb-dsh
mode:
description: "Publish mode"
required: true
Expand All @@ -19,18 +11,18 @@ on:
- channel
- stable
channel:
description: "Required when mode=channel. npm dist-tag only (lowercase, digits, dashes), e.g. mcp / plugin / sync-release. bailian-cli binary CDN always overwrites sync-release.json; knowledge-studio-cli and bailian-kb-dsh are npm-only."
description: "Required when mode=channel. npm dist-tag only (lowercase, digits, dashes), e.g. mcp / plugin / sync-release. bailian-cli binary CDN always overwrites sync-release.json; knowledge-studio-cli and dsh plugins are npm-only."
required: false
type: string

concurrency:
group: publish-${{ inputs.package }}-${{ inputs.mode }}-${{ inputs.channel }}
group: publish-${{ inputs.mode }}-${{ inputs.channel }}
cancel-in-progress: false

jobs:
publish-stable:
if: inputs.mode == 'stable' && inputs.package != 'bailian-kb-dsh'
name: publish stable (${{ inputs.package }}) to npm + binary + tag
if: inputs.mode == 'stable'
name: publish stable (bailian-cli + kscli + dsh plugins) to npm + binary + tag
runs-on: ubuntu-latest
environment: production # Required Reviewers gate
permissions:
Expand Down Expand Up @@ -96,11 +88,11 @@ jobs:
FC_RELEASE_AUDIENCE: ${{ vars.FC_RELEASE_AUDIENCE }}
# Script order: git tag, then binary GitHub Release + OSS, then npm.
# OSS upload can fail on a network blip; npm must not succeed first.
run: node tools/release/publish-stable.mjs ${{ inputs.package == 'knowledge-studio-cli' && '--knowledge' || '' }}
run: node tools/release/publish-stable.mjs

publish-channel:
if: inputs.mode == 'channel' && inputs.package != 'bailian-kb-dsh'
name: publish channel (${{ inputs.package }}) to npm + binary
if: inputs.mode == 'channel'
name: publish channel (bailian-cli + kscli + dsh plugins) to npm + binary
runs-on: ubuntu-latest
permissions:
contents: write # create prerelease GitHub Release with binary assets
Expand Down Expand Up @@ -164,52 +156,7 @@ jobs:
# credentials in this repo (see publish-stable env notes).
FC_TRIGGER_URL: ${{ vars.FC_TRIGGER_URL }}
FC_RELEASE_AUDIENCE: ${{ vars.FC_RELEASE_AUDIENCE }}
RELEASE_CHANNEL: ${{ inputs.channel }}
# Script order: binary GitHub Release + OSS, then npm.
# OSS upload can fail on a network blip; npm must not succeed first.
run: node tools/release/publish-channel.mjs ${{ inputs.package == 'knowledge-studio-cli' && '--knowledge' || '' }} --channel "${{ inputs.channel }}"

# bailian-kb-dsh is the dsh plugin (downstream host adapter): independent version,
# tsc + tsdown build, npm-only. It shares this workflow's entry UI and setup steps
# but NOT publish-stable.mjs / publish-channel.mjs — those broadcast one version
# across the locked bl package set and produce binary artifacts, neither of which
# applies here. See docs/agents/dsh-plugin.md.
publish-kb-dsh:
if: inputs.package == 'bailian-kb-dsh'
name: publish ${{ inputs.mode }} (bailian-kb-dsh) to npm
runs-on: ubuntu-latest
# stable goes through the Required Reviewers gate, same as the bl stable job;
# channel stays ungated so dist-tag drops need no approval.
environment: ${{ inputs.mode == 'stable' && 'production' || '' }}
permissions:
contents: write # push the bailian-kb-dsh-v<version> tag (stable only)
id-token: write # OIDC for npm Trusted Publishing + provenance
steps:
- name: Require channel input
if: ${{ inputs.mode == 'channel' && inputs.channel == '' }}
run: |
echo "::error::mode=channel requires the workflow input \"channel\" (npm dist-tag, e.g. mcp / plugin). Leave mode=stable if you do not need a dist-tag."
exit 1

- uses: actions/checkout@v6

- uses: pnpm/action-setup@v6

- uses: actions/setup-node@v6
with:
node-version: "24"
cache: pnpm
registry-url: "https://registry.npmjs.org/"

- name: Install gitleaks
run: |
set -euo pipefail
GITLEAKS_VERSION=8.21.2
curl -sSfL \
"https://github.com/gitleaks/gitleaks/releases/download/v${GITLEAKS_VERSION}/gitleaks_${GITLEAKS_VERSION}_linux_x64.tar.gz" \
| sudo tar -xz -C /usr/local/bin gitleaks
gitleaks version

- run: pnpm install --frozen-lockfile

- name: publish-kb-dsh
run: node tools/release/publish-kb-dsh.mjs ${{ inputs.mode == 'channel' && format('--channel "{0}"', inputs.channel) || '' }}
run: node tools/release/publish-channel.mjs --channel "$RELEASE_CHANNEL"
2 changes: 2 additions & 0 deletions .vite-hooks/pre-commit
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ git add \
skills/bailian-managed-agent/reference \
skills/bailian-sandbox/SKILL.md \
skills/bailian-sandbox/reference \
skills/bailian-memory/SKILL.md \
skills/bailian-memory/reference \
skills/bailian-web-search/SKILL.md

vp staged
53 changes: 27 additions & 26 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@ monorepo 现在按"纯逻辑 → 运行时框架 → 命令库 → 产品入口"
- `packages/commands` — `bailian-cli-commands`,可复用命令实现库,只导出 command,不决定产品路径
- `packages/cli` — `bailian-cli`,完整 `bl` 产品入口;`src/commands.ts` 组装 `bl` 暴露的命令路径
- `packages/kscli` — `knowledge-studio-cli`,Knowledge Studio 专用入口;`src/main.ts` 复用 commands 并重映射为 `kscli` 路径
- `packages/bailian-kb-dsh` — `bailian-kb-dsh`,**下游宿主适配层**(依赖方向朝外):百炼知识库的 DeepSeek Harness (dsh) 插件,消费 `bl` CLI 与知识库 API,不在上面这条分层链上;版本、构建、发布都独立,见 [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md)
- `packages/bailian-kb-dsh` — `bailian-kb-dsh`,**下游宿主适配层**(依赖方向朝外):百炼知识库的 DeepSeek Harness (dsh) 插件,消费 `bl` CLI 与知识库 API,不在上面这条分层链上;构建独立,版本与发布跟随 bailian-cli,见 [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md)
- `packages/bailian-memo-dsh` — `bailian-memo-dsh`,**下游宿主适配层**:百炼个人记忆 dsh 插件(dsh 0.2.1 Volatile Config / SettingsForms);身份在 `~/.bailian/personal-memory/config.json`;构建独立,版本与发布跟随 bailian-cli,见 [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md)

### 关键文件

Expand Down Expand Up @@ -41,7 +42,7 @@ Skill / 命令手册随 `skills/bailian-*/` 经 `bl skill init` 安装(装齐
约定:

- 命令实现文件路径仍按能力放置:`packages/commands/src/commands/text/chat.ts`
- 产品命令路径由入口 map 决定:同一个实现可暴露为 `bl knowledge retrieve` 或 `kscli retrieve`
- 产品命令路径由入口 map 决定:同一个实现可暴露为 `bl knowledge search` 或 `kscli search`
- `defineCommand` 只写命令元数据与逻辑: `auth`、`flags`、`usageArgs`、`exampleArgs`、`validate`、`run`
- `usageArgs` / `exampleArgs` 不写 `bl` 或 `kscli` 前缀;runtime / reference 生成器按产品路径补前缀
- 不再使用 `catalog.ts` 作为登记处;新增/重命名命令必须同时看命令库导出和产品入口 map
Expand All @@ -57,45 +58,45 @@ Skill / 命令手册随 `skills/bailian-*/` 经 `bl skill init` 安装(装齐

按当前任务从下表挑一条进入对应文档:

| 场景 | 何时进入 | 详见 |
| ----------------- | ------------------------------------------------------ | ---------------------------------------------------------------------------- |
| 命令增删改 | 增加 / 删除 / 重命名 `bl xxx` 或入口命令路径 | [docs/agents/command-add-remove.md](docs/agents/command-add-remove.md) |
| E2E 测试维护 | 新增/改命令或 e2e 用例、补 help/缺参/dry-run | [docs/agents/cli-e2e-tests.md](docs/agents/cli-e2e-tests.md) |
| 测试隔离 | 单测/E2E 受本地 HOME、语言、系统目录干扰;统一隔离基建 | [docs/agents/test-isolation.md](docs/agents/test-isolation.md) |
| 批量压测 | 改/跑多能力并发压测、`test:stress`、fixtures | [docs/agents/stress-batch-tests.md](docs/agents/stress-batch-tests.md) |
| 选项变更 | 给已有命令加 `--flag` 或改默认值 | [docs/agents/command-flag-change.md](docs/agents/command-flag-change.md) |
| 模型上下架 | 增加新模型 / 改默认模型 / 废弃旧模型 | [docs/agents/model-add-remove.md](docs/agents/model-add-remove.md) |
| Skill 文案 / 路由 | 改 SKILL 路由、安装约定、hand-off、hub/领域边界 | [docs/agents/skill-change.md](docs/agents/skill-change.md) |
| 错误文案变更 | 改 `BailianError` 的 message 或 hint | [docs/agents/error-hint-change.md](docs/agents/error-hint-change.md) |
| URL / 渠道变更 | 控制台域名 / 文档站 / 追踪参数 | [docs/agents/url-change.md](docs/agents/url-change.md) |
| 埋点变更 | 改 AEM 命令事件、后端渠道 header、User-Agent | [docs/agents/telemetry-change.md](docs/agents/telemetry-change.md) |
| 鉴权扩展 | 加 OAuth / SSO / 换 token 来源 | [docs/agents/auth-change.md](docs/agents/auth-change.md) |
| 配置项扩展 | 新 env var 或 `~/.bailian/config.json` 字段 | [docs/agents/config-add.md](docs/agents/config-add.md) |
| Profile / 激活 | 改命名 Profile、预设或 `active_config` | [docs/agents/config-profile-change.md](docs/agents/config-profile-change.md) |
| 安装文档 | 改安装、鉴权、验证流程或线上 install 页面 | [docs/agents/install-doc-change.md](docs/agents/install-doc-change.md) |
| 发布 | channel / stable 发布到 npm(CI 驱动) | [docs/agents/publish.md](docs/agents/publish.md) |
| Change Log | 发版说明 / 历史版本说明 | [docs/agents/changelog-write.md](docs/agents/changelog-write.md) |
| 工具链调整 | lint 规则 / 构建配置 / 依赖升级 | [docs/agents/lint-toolchain.md](docs/agents/lint-toolchain.md) |
| Command Pack | 扩展包 / 白名单 / plugin 管理命令 | [docs/agents/command-pack.md](docs/agents/command-pack.md) |
| dsh 插件 | 改 `packages/bailian-kb-dsh`、dsh 依赖、插件发布 | [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md) |
| 场景 | 何时进入 | 详见 |
| ----------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
| 命令增删改 | 增加 / 删除 / 重命名 `bl xxx` 或入口命令路径 | [docs/agents/command-add-remove.md](docs/agents/command-add-remove.md) |
| E2E 测试维护 | 新增/改命令或 e2e 用例、补 help/缺参/dry-run | [docs/agents/cli-e2e-tests.md](docs/agents/cli-e2e-tests.md) |
| 测试隔离 | 单测/E2E 受本地 HOME、语言、系统目录干扰;统一隔离基建 | [docs/agents/test-isolation.md](docs/agents/test-isolation.md) |
| 批量压测 | 改/跑多能力并发压测、`test:stress`、fixtures | [docs/agents/stress-batch-tests.md](docs/agents/stress-batch-tests.md) |
| 选项变更 | 给已有命令加 `--flag` 或改默认值 | [docs/agents/command-flag-change.md](docs/agents/command-flag-change.md) |
| 模型上下架 | 增加新模型 / 改默认模型 / 废弃旧模型 | [docs/agents/model-add-remove.md](docs/agents/model-add-remove.md) |
| Skill 文案 / 路由 | 改 SKILL 路由、安装约定、hand-off、hub/领域边界 | [docs/agents/skill-change.md](docs/agents/skill-change.md) |
| 错误文案变更 | 改 `BailianError` 的 message 或 hint | [docs/agents/error-hint-change.md](docs/agents/error-hint-change.md) |
| URL / 渠道变更 | 控制台域名 / 文档站 / 追踪参数 | [docs/agents/url-change.md](docs/agents/url-change.md) |
| 埋点变更 | 改 AEM 命令事件、后端渠道 header、User-Agent | [docs/agents/telemetry-change.md](docs/agents/telemetry-change.md) |
| 鉴权扩展 | 加 OAuth / SSO / 换 token 来源 | [docs/agents/auth-change.md](docs/agents/auth-change.md) |
| 配置项扩展 | 新 env var 或 `~/.bailian/config.json` 字段 | [docs/agents/config-add.md](docs/agents/config-add.md) |
| Profile / 激活 | 改命名 Profile、预设或 `active_config` | [docs/agents/config-profile-change.md](docs/agents/config-profile-change.md) |
| 安装文档 | 改安装、鉴权、验证流程或线上 install 页面 | [docs/agents/install-doc-change.md](docs/agents/install-doc-change.md) |
| 发布 | channel / stable 发布到 npm(CI 驱动) | [docs/agents/publish.md](docs/agents/publish.md) |
| Change Log | 发版说明 / 历史版本说明 | [docs/agents/changelog-write.md](docs/agents/changelog-write.md) |
| 工具链调整 | lint 规则 / 构建配置 / 依赖升级 | [docs/agents/lint-toolchain.md](docs/agents/lint-toolchain.md) |
| Command Pack | 扩展包 / 白名单 / plugin 管理命令 | [docs/agents/command-pack.md](docs/agents/command-pack.md) |
| dsh 插件 | 改 `packages/bailian-kb-dsh` / `bailian-memo-dsh`、dsh 依赖、插件发布 | [docs/agents/dsh-plugin.md](docs/agents/dsh-plugin.md) |

如果当前任务无法对应任何场景,先按经验完成,然后**回来评估这是不是一类新场景** —— 是就新增 `docs/agents/<scenario>.md`,把清单沉淀下来。

## 通用约定

### 1. 发布包版本号同步

源码包的 `version` 当前保持一致: `packages/core`、`packages/runtime`、`packages/commands`、`packages/cli`、`packages/kscli`。做版本 bump 时一动多动。release 工具当前强校验 / 发布范围以 `tools/release/lib/packages.mjs` 为准;把新包纳入发布前必须同步该清单和 [publish.md](docs/agents/publish.md)。
源码包的 `version` 当前保持一致: `packages/core`、`packages/runtime`、`packages/commands`、`packages/cli`、`packages/kscli`、`packages/bailian-kb-dsh`、`packages/bailian-memo-dsh`。做版本 bump 时一动多动。release 工具当前强校验 / 发布范围以 `tools/release/lib/packages.mjs` 为准;把新包纳入发布前必须同步该清单和 [publish.md](docs/agents/publish.md)。

**例外**: `packages/bailian-kb-dsh` 不参与这个锁步(独立 `0.1.x`,跟随 dsh rc 节奏),也不在 release 白名单里;它走 `publish.yml` 里 `package=bailian-kb-dsh` 的独立 job(`tools/release/publish-kb-dsh.mjs`)。
两个 dsh 插件也纳入七包锁步版本和统一发布,仅构建方式保留各自的 `tsc` / `tsdown`。

### 2. 分层边界

- `core` 是纯库:不依赖 `runtime` / `commands` / 产品入口;不调 `process.exit`;新增/改动时不硬编码 `bl` / `kscli` 命令名、控制台 URL 或渠道追踪参数。当前遗留项见 [error-hint-change.md](docs/agents/error-hint-change.md) 与 [url-change.md](docs/agents/url-change.md),触碰相关代码时顺手收敛
- `runtime` 是通用 CLI 框架:可以处理 TTY、help、错误输出、middleware,但不写具体业务命令逻辑
- `commands` 是命令实现库:不决定产品路径;不在 `usageArgs` / `exampleArgs` / hint 里硬编码产品 bin 前缀
- `cli` / `kscli` 是产品层:负责命令路径 map、产品 identity、README、技能 reference、发版入口
- `bailian-kb-dsh` 在这条链之外:它是别的宿主(dsh)里的插件,只允许依赖 `core`(且当前刻意零依赖),反过来 `core` / `runtime` / `commands` / 产品层**永远不许**依赖它
- `bailian-kb-dsh` / `bailian-memo-dsh` 在这条链之外:它们是别的宿主(dsh)里的插件,刻意不依赖本仓 `core`/`runtime`/`commands`(自包含 endpoints/client);反过来产品层**永远不许**依赖它们
- URL 集中在 `packages/runtime/src/urls.ts`(用户面控制台)和 `packages/core/src/config/schema.ts` / client 层(API)

### 3. 错误处理边界:CLI 不翻译服务端错误
Expand Down
Loading
Loading