diff --git a/package.json b/package.json index 5ad800c..4372756 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,7 @@ "sync:skill-assets": "pnpm --filter bailian-cli-core run build && pnpm --filter bailian-cli run generate:reference && pnpm --filter bailian-cli run sync:skill-version", "dev": "pnpm -F bailian-cli-core dev", "bl": "pnpm -F bailian-cli dev", - "rag": "pnpm -F bailian-cli-rag dev", + "kscli": "pnpm -F knowledge-studio-cli dev", "test": "vp test", "release:check": "node tools/release/check.mjs", "wiki:crawl": "node tools/wiki-crawler/index.mjs", diff --git a/packages/rag/.gitignore b/packages/kscli/.gitignore similarity index 100% rename from packages/rag/.gitignore rename to packages/kscli/.gitignore diff --git a/packages/kscli/LICENSE b/packages/kscli/LICENSE new file mode 100644 index 0000000..9eb125c --- /dev/null +++ b/packages/kscli/LICENSE @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2026 Aliyun Model Studio (DashScope) AI Platform + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/packages/kscli/README.md b/packages/kscli/README.md new file mode 100644 index 0000000..5757458 --- /dev/null +++ b/packages/kscli/README.md @@ -0,0 +1,91 @@ +
+ +# Knowledge Studio CLI + +**Lightweight RAG CLI for Aliyun Model Studio — focused on knowledge-base retrieval.** + +[![npm version](https://img.shields.io/npm/v/knowledge-studio-cli?color=0969da&label=npm)](https://www.npmjs.com/package/knowledge-studio-cli) +[![Node.js](https://img.shields.io/badge/node-%3E%3D22.12-brightgreen)](https://nodejs.org) +[![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178c6)](https://www.typescriptlang.org) +[![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE) + +[Knowledge Studio Console](https://rag.console.aliyun.com/) · [中文文档](README.zh.md) · [API Documentation](https://help.aliyun.com/zh/model-studio/) + +
+ +## What is this? + +`kscli` is a standalone CLI for **knowledge-base retrieval** on Aliyun Model Studio (DashScope), purpose-built for RAG (Retrieval-Augmented Generation) workflows. + +## Installation + +```bash +npm install -g knowledge-studio-cli +``` + +> Requires Node.js >= 22.12. + +## Quick Start + +```bash +# Retrieve from a knowledge base +kscli retrieve \ + --index-id \ + --query "What is Model Studio?" +``` + +## Commands + +| Command | Description | +| :------------ | :-------------------------------- | +| `retrieve` | Query a knowledge base (RAG) | +| `config show` | Display current configuration | +| `config set` | Set a configuration value | +| `update` | Self-update to the latest version | + +## Authentication + +A DashScope API Key is recommended. Get yours from the [DashScope Console](https://bailian.console.aliyun.com/?tab=app#/api-key). + +```bash +# Option 1: Environment variable +export DASHSCOPE_API_KEY=sk-xxxxx + +# Option 2: Persist to config (~/.bailian/config.json) +kscli config set --key api_key --value sk-xxxxx + +# Option 3: Per-command flag +kscli retrieve --api-key sk-xxxxx --index-id --query "..." +``` + +## Configuration + +```bash +# View current config +kscli config show + +# Set defaults +kscli config set --key base_url --value https://dashscope-us.aliyuncs.com +kscli config set --key timeout --value 600 + +# Self-update +kscli update +``` + +Config file location: `~/.bailian/config.json` + +## Links + +| Resource | URL | +| :----------------------- | :--------------------------------------------------- | +| Knowledge Studio Console | https://rag.console.aliyun.com/ | +| DashScope API Docs | https://help.aliyun.com/zh/model-studio/ | +| Get API Key | https://bailian.console.aliyun.com/?tab=app#/api-key | + +## Contributing + +Bug reports, feature requests, and PRs are welcome. See [CONTRIBUTING.md](https://github.com/modelstudioai/cli/blob/main/CONTRIBUTING.md) for developer setup and contribution workflow. + +## License + +[Apache 2.0](LICENSE) diff --git a/packages/kscli/README.zh.md b/packages/kscli/README.zh.md new file mode 100644 index 0000000..d701797 --- /dev/null +++ b/packages/kscli/README.zh.md @@ -0,0 +1,91 @@ +
+ +# Knowledge Studio CLI + +**阿里云 Model Studio 轻量级 RAG 命令行工具 — 专注知识库检索。** + +[![npm version](https://img.shields.io/npm/v/knowledge-studio-cli?color=0969da&label=npm)](https://www.npmjs.com/package/knowledge-studio-cli) +[![Node.js](https://img.shields.io/badge/node-%3E%3D22.12-brightgreen)](https://nodejs.org) +[![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178c6)](https://www.typescriptlang.org) +[![License](https://img.shields.io/badge/license-Apache%202.0-blue)](LICENSE) + +[Knowledge Studio 控制台](https://rag.console.aliyun.com/) · [English](README.md) · [API 文档](https://help.aliyun.com/zh/model-studio/) + +
+ +## 这是什么? + +`kscli` 是阿里云 Model Studio (DashScope) 平台的**知识库检索**专用命令行工具,专为 RAG(检索增强生成)场景打造。 + +## 安装 + +```bash +npm install -g knowledge-studio-cli +``` + +> 需要 Node.js >= 22.12。 + +## 快速开始 + +```bash +# 检索知识库 +kscli retrieve \ + --index-id \ + --query "什么是 Model Studio?" +``` + +## 命令列表 + +| 命令 | 说明 | +| :------------ | :---------------- | +| `retrieve` | 查询知识库(RAG) | +| `config show` | 显示当前配置 | +| `config set` | 设置配置项 | +| `update` | 自更新到最新版本 | + +## 认证方式 + +推荐使用 DashScope API Key 进行认证。前往 [DashScope 控制台](https://bailian.console.aliyun.com/?tab=app#/api-key) 获取。 + +```bash +# 方式一:环境变量 +export DASHSCOPE_API_KEY=sk-xxxxx + +# 方式二:登录命令(持久化到 ~/.bailian/config.json) +kscli config set --key api_key --value sk-xxxxx + +# 方式三:命令行参数 +kscli retrieve --api-key sk-xxxxx --index-id --query "..." +``` + +## 配置 + +```bash +# 查看当前配置 +kscli config show + +# 设置默认值 +kscli config set --key base_url --value https://dashscope-us.aliyuncs.com +kscli config set --key timeout --value 600 + +# 自更新 +kscli update +``` + +配置文件位置:`~/.bailian/config.json` + +## 相关链接 + +| 资源 | 地址 | +| :---------------------- | :--------------------------------------------------- | +| Knowledge Studio 控制台 | https://rag.console.aliyun.com/ | +| DashScope API 文档 | https://help.aliyun.com/zh/model-studio/ | +| 获取 API Key | https://bailian.console.aliyun.com/?tab=app#/api-key | + +## 参与贡献 + +欢迎提 Issue、Feature Request 和 PR。开发环境搭建与贡献流程请见 [CONTRIBUTING.zh.md](https://github.com/modelstudioai/cli/blob/main/CONTRIBUTING.zh.md)。 + +## 许可证 + +[Apache 2.0](LICENSE) diff --git a/packages/rag/package.json b/packages/kscli/package.json similarity index 73% rename from packages/rag/package.json rename to packages/kscli/package.json index 01d15a0..e293b3b 100644 --- a/packages/rag/package.json +++ b/packages/kscli/package.json @@ -1,15 +1,18 @@ { - "name": "bailian-cli-rag", - "version": "1.4.0", - "description": "RAG CLI for Aliyun Model Studio (DashScope) — knowledge-base capabilities only.", + "name": "knowledge-studio-cli", + "version": "0.0.1", + "description": "Lightweight RAG CLI for Aliyun Model Studio — focused on knowledge-base retrieval.", "keywords": [ - "ai", - "cli", + "alibaba-cloud", + "aliyun", + "bailian", + "dashscope", "knowledge-base", "model-studio", - "rag" + "rag", + "retrieval" ], - "homepage": "https://bailian.console.aliyun.com/cli", + "homepage": "https://rag.console.aliyun.com/", "bugs": { "url": "https://github.com/modelstudioai/cli/issues" }, @@ -18,22 +21,22 @@ "repository": { "type": "git", "url": "git+https://github.com/modelstudioai/cli.git", - "directory": "packages/rag" + "directory": "packages/kscli" }, "bin": { - "rag": "dist/rag.mjs" + "kscli": "dist/kscli.mjs" }, "files": [ "dist" ], "type": "module", "exports": { - ".": "./dist/rag.mjs", + ".": "./dist/kscli.mjs", "./package.json": "./package.json" }, "publishConfig": { "exports": { - ".": "./dist/rag.mjs", + ".": "./dist/kscli.mjs", "./package.json": "./package.json" }, "registry": "https://registry.npmjs.org/" diff --git a/packages/kscli/src/main.ts b/packages/kscli/src/main.ts new file mode 100644 index 0000000..1a7a37d --- /dev/null +++ b/packages/kscli/src/main.ts @@ -0,0 +1,18 @@ +import { createCli } from "bailian-cli-runtime"; +import type { Command } from "bailian-cli-core"; +import { configShow, configSet, update, knowledgeRetrieve } from "bailian-cli-commands"; +import pkg from "../package.json" with { type: "json" }; + +const commands: Record = { + "config show": configShow, + "config set": configSet, + update, + retrieve: knowledgeRetrieve, +}; + +createCli(commands, { + binName: "kscli", + version: pkg.version, + clientName: "knowledge-studio-cli", + npmPackage: "knowledge-studio-cli", +}).run(); diff --git a/packages/rag/tsconfig.json b/packages/kscli/tsconfig.json similarity index 100% rename from packages/rag/tsconfig.json rename to packages/kscli/tsconfig.json diff --git a/packages/rag/vite.config.ts b/packages/kscli/vite.config.ts similarity index 100% rename from packages/rag/vite.config.ts rename to packages/kscli/vite.config.ts diff --git a/packages/rag/src/main.ts b/packages/rag/src/main.ts deleted file mode 100644 index acfdc9c..0000000 --- a/packages/rag/src/main.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { createCli } from "bailian-cli-runtime"; -import type { Command } from "bailian-cli-core"; -import { - authLogin, - authStatus, - authLogout, - configShow, - configSet, - update, - fileUpload, - usageFree, - usageFreetier, - usageStats, - quotaList, - quotaRequest, - quotaHistory, - quotaCheck, - knowledgeRetrieve, -} from "bailian-cli-commands"; -import pkg from "../package.json" with { type: "json" }; - -// rag-cli: knowledge-base product. Ships the base infrastructure commands -// (auth, config, usage, quota, update, file upload) plus knowledge retrieval, -// remapped to a flat `rag retrieve` path. Routing is driven entirely by these -// keys, and usage/examples/errors render the path from the key — so the same -// shared command shows `rag retrieve` here and `bl knowledge retrieve` in bl. -const commands: Record = { - "auth login": authLogin, - "auth status": authStatus, - "auth logout": authLogout, - "config show": configShow, - "config set": configSet, - update, - "file upload": fileUpload, - "usage free": usageFree, - "usage freetier": usageFreetier, - "usage stats": usageStats, - "quota list": quotaList, - "quota request": quotaRequest, - "quota history": quotaHistory, - "quota check": quotaCheck, - retrieve: knowledgeRetrieve, -}; - -createCli(commands, { - binName: "rag", - version: pkg.version, - clientName: "rag-cli", - npmPackage: "bailian-cli-rag", -}).run(); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3b1b203..a316881 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -133,7 +133,7 @@ importers: specifier: 'catalog:' version: 0.1.22(@types/node@24.12.2)(jiti@2.6.1)(typescript@6.0.3)(vite@8.0.10(@types/node@24.12.2)(jiti@2.6.1)(yaml@2.8.3))(yaml@2.8.3) - packages/rag: + packages/kscli: dependencies: bailian-cli-commands: specifier: workspace:*