用 Kiro CLI 快速安装 Wren AI:Skill 安装、onboarding 流程与源码级解读
【免费下载链接】WrenAIGenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20+ data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.项目地址: https://gitcode.com/GitHub_Trending/wr/WrenAI
Wren AI(GenBI 开源项目)通过一套可复用的 AI Agent 技能(Skills)系统,让 Kiro CLI(AWS 推出的终端 AI 编程助手)等编码代理自动完成 Wren 引擎的安装、连接配置、项目脚手架与首次查询。本文以 kiro-cli.md 为主线,完整讲解 Kiro CLI 场景下的安装与 onboarding 步骤,并结合仓库中skills/目录与wrenCLI 源码,解释这套"技能分发"机制为什么能做到版本零漂移。
Kiro CLI 与 Wren AI:一次对话完成本地数据分析栈搭建
Wren AI 是一个开源的、受控的 text-to-SQL 上下文层:它对 20+ 数据源(BigQuery、Snowflake、PostgreSQL、ClickHouse、Amazon Redshift、Databricks 等)建立语义层(MDL),让 AI Agent 用业务语言而非裸表名写 SQL。官方推荐的接入方式是把wren技能装进你的编码代理——对 Kiro CLI 用户而言,这意味着你不需要手动敲安装命令、不需要手写 YAML 项目骨架,只需启动 Kiro 会话并说一句"用 /wren 技能安装并配置 Wren AI",代理就会自动完成:环境检查 → 连接 profile 创建 → 项目脚手架 → 首次查询验证。
前置条件:两个必选项
开始之前,请确认以下两项已就绪(对应文档原文的 Prerequisites 部分):
- Kiro CLI 已安装并通过认证。Kiro 是 AWS 推出的终端 AI 编程助手,需要处于已登录状态才能正常启动代理会话、写入本地配置文件。
- 自定义 agent 的资源配置(仅当你不使用默认 agent 时)。Kiro 的默认 agent 会自动加载技能;如果你使用了自定义 agent,必须在
.kiro/agents/<agent>.json中显式声明技能资源路径,让代理在会话启动时能够发现wren技能:
{ "resources": ["skill://.kiro/skills/**/SKILL.md"] }skill://协议指向 Kiro 本地技能目录中的每个SKILL.md发现桩文件。这与仓库中skills/wren/SKILL.md的定位一致——它只是一个约 50 行的"发现桩"(discovery stub),真正的流程指南由 CLI 按需下发(详见下文"技能分发模型")。
安装 Wren skills:一行命令
在终端中执行:
npx skills add Canner/WrenAI --agent kiro-cli这条命令通过 npm 生态的skillsCLI 从 WrenAI 仓库拉取技能,并把wren发现桩安装到 Kiro CLI 的技能目录。--agent kiro-cli用于显式指定目标客户端;仓库的 skills/install.sh 展示了安装脚本的等效逻辑:脚本默认目标目录是~/.claude/skills,但会尊重环境变量,并支持--force覆盖重装。如果你安装了多个代理并希望一次全装,可参考 installation.md 中的npx skills add Canner/WrenAI --agent '*'用法。
只安装一个wren技能是预期行为:自 Wren0.8起,onboarding、usage、generate-mdl、dlt-connector、enrich-context、genbi等工作流指南不再作为独立技能安装,而是打包进wrenaiPython 包,由发现桩按需拉取。详见 skills.md。
运行 onboarding:启动 Kiro 并下达指令
技能安装完成后,启动 Kiro:
kiro然后在会话中输入:
Use the /wren skill to install and set up Wren AI.这条提示词触发wren技能的onboarding工作流。根据 skills.md 中的 onboarding 章节,整个流程包含六个阶段:
User says "install wren" / "set up wren" │ ├── Preflight(只读检查) │ Python 3.11+、虚拟环境、wren CLI、工作目录 │ ├── 分支:内置 demo 还是自有数据库? │ demo → 进入 quickstart 指南,结束 │ 自有 DB → 继续 │ ├── Step 1. 项目名 + 数据库类型 │ (一起询问,此时不索取任何凭据) │ ├── Step 2. 项目初始化(批量执行) │ mkdir、pip install、wren context init、 │ 通过连接器 introspection 生成 .env 模板 │ ├── Step 3. 用户编辑 .env 填入凭据 │ (代理永远看不到凭据明文) │ ├── Step 4. 验证连接 │ wren profile debug │ ├── Step 5. 生成 MDL │ wren skills get generate-mdl │ └── Step 6. 首次查询 wren --sql "SELECT 1"(冒烟测试) 再对生成的 MDL 跑真实查询onboarding 的 Agent 侧铁律
仓库 skills.md 明确记录了四条强制规则,这也是为什么整个流程可以放心交给代理执行:
| 规则 | 原因 |
|---|---|
| 每轮往返只做一步 | 避免一次抛出过多信息,保持每轮聚焦 |
| 绝不在聊天中索要凭据 | host、port、user、password、token 全部只通过.env传递 |
| 绝不臆造连接字段名 | 始终先运行wren docs connection-info <ds>获取真实字段 |
| MDL 构建前绝不查询数据库 | 强制代理先搭好上下文层再写查询 |
幕后机制:技能内容住在 CLI 里,而不是 Agent 里
为什么安装只放了一个"发现桩"?仓库的 skills/wren/SKILL.md 给出了直接答案:
This is a discovery stub. The actual workflow guides and prompt helpers live inside the
wrenCLI itself, so they always match the installed wrenai version (no skill cache, no version drift).
旧的交付模型把每个技能作为独立 markdown 文件夹装进代理技能目录(~/.claude/skills/、Cursorrules/等),带来的两个顽疾是:打包的 markdown 与已安装的 CLI 版本漂移、Agent 启动时无论是否需要都全量加载。从 Wren0.8起改为"内容随 wheel 走":
- Agent 侧只装一个约 50 行的发现桩(skills/wren/SKILL.md),教会代理"工作流指南和成形提示词从 CLI 拉取";
- 真实工作流指南打包在
wrenaiPython 包中(src/wren/skills_content/),由wren skills get <name>打印到 stdout; - 提示词模板同样按需下发:
wren ask "<q>" --guided|--direct。
对应的 CLI 实现位于 skills_cli.py:wren skills get <name>支持--full(内联该技能的全部 references 文档)与--script <stem>(打印某个内置脚本源码,如 dlt-connector 的introspect_dlt.py)。技能内容随wrenaiwheel 一起发布,所以代理读到的指南永远与已安装的 CLI 版本一致,不存在缓存漂移。
另外,仓库内置了一个 CI 守卫测试(test_served_content_guard.py),会扫描技能内容、参考文档和 ask 模板中出现的每一个wren <cmd>调用,与真实 CLI 命令树比对——指南永远不会教代理运行不存在的命令或 flag。这是"技能内容可信"的工程保证。
技能清单:onboarding 之后你能做什么
wren发现桩支持的技能并不止 onboarding。Kiro 会话中你可以随时让代理按需拉取:
wren skills list # 列出全部可用指南 wren skills get onboarding # 端到端安装 Wren wren skills get usage # 日常查询工作流 wren skills get generate-mdl # 从数据库 schema 生成 MDL wren skills get dlt-connector # 通过 dlt 接入 SaaS 数据源 wren skills get enrich-context # 补充业务上下文(单位、枚举、cube) wren skills get genbi # 构建并部署可分享的 GenBI Web 应用对应的六大指南用途如下(摘自 skills.md):
| 指南 | 用途 |
|---|---|
| onboarding | 入口:环境检查、项目脚手架、profile 配置、首次查询 |
| usage | 日常:收集 schema 上下文、召回历史查询、写 SQL、执行、存储结果 |
| generate-mdl | 一次性:探索数据库 schema、规范化类型、脚手架 MDL YAML 项目 |
| enrich-context | 深化 schema 无法承载的业务语义(enum/单位/NULL 语义、默认过滤、同义词、货币规则、命名聚合指标 cube) |
| dlt-connector | 通过 dlt 把 SaaS API(HubSpot、Stripe、Salesforce、GitHub、Slack 等)导入 DuckDB 并自动生成 Wren 项目 |
| genbi | 把项目的上下文层变成浏览器端 GenBI Web 应用并部署到 Vercel / Cloudflare Pages |
下一步:从快速示例到真实数据库
onboarding 完成后,文档指向两条进阶路径:
- 使用样例数据走完端到端流程:见 quickstart.md。该指南使用 dbt Labs 公开的
jaffle_shop样例库(DuckDB),无需云数据库、无需 Docker,约 15 分钟即可获得一个"本地上下文层 + 记忆系统":创建虚拟环境、pip install "wrenai[memory,main]"、wren profile add jaffle-shop、wren context init、让代理生成 MDL,然后直接用自然语言提问("How many customers placed more than one order?")。 - 连接你自己的真实数据库:见 connect.md。创建连接 profile 后,
wren context set-profile <name>会把 profile 绑定到项目,之后日常查询就由usage指南驱动:wren memory fetch收集上下文 →wren memory recall召回相似历史查询 →wren --sql "..."经上下文层执行 →wren memory store存储成功的 NL→SQL 对。你问得越多,系统召回越准。
小结
Kiro CLI 场景下的 Wren AI 安装,本质是"一个发现桩 + 一个 onboarding 提示词":npx skills add Canner/WrenAI --agent kiro-cli装入技能,kiro会话中的一句 "Use the /wren skill to install and set up Wren AI" 触发全自动安装流程。理解背后的技能分发模型(内容随 CLI 走、按需下发、CI 守卫验证命令真实性)能帮你更放心地把整个数据分析栈的搭建交给代理——这与仓库中"技能"的定位完全一致:技能是教 Agent 使用 Wren CLI 的流程指南,而非一堆会过期的静态 markdown。
【免费下载链接】WrenAIGenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, charts, and SQL across 20+ data sources, such as BigQuery, Snowflake, PostgreSQL, ClickHouse, Amazon Redshift, Databricks and more.项目地址: https://gitcode.com/GitHub_Trending/wr/WrenAI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考