下载

构建项目

创建内建项目或导入 GitHub 仓库,配置自己的上下文,通过 Git 发布并更新到 Cappy。

Cappy 中的每个项目都有一个上下文仓库。你在本地维护数据库配置、规则和文档,通过 Git 发布;Cappy 从项目仓库取得文件,供 Agent 分析时使用。

先按安装部署安装 Cappy,然后打开 Web 注册或登录。本文以 Doris 为例,介绍如何接入自己的数据;my-project 代表 Web 项目名称和本地项目文件夹。

创建项目

在左上角项目选择器中点击添加项目。页面上方是示例项目入口;使用自己的数据时,在下方选择创建内建项目或从 GitHub 导入:

方式适用情况后续更新提交到哪里
创建内建项目从零开始,或将已有本地上下文交给 Cappy 托管Cappy 提供的项目仓库地址
从 GitHub 导入已有完整的 Cappy 上下文仓库原 GitHub 仓库

组织成员可以创建项目,创建者会获得该项目的管理员权限。同一组织内的项目名称不能重复。

Cappy 添加项目页面,上方是示例项目入口,下方提供创建内建项目和从 GitHub 导入
使用自己的数据时,选择下方的“创建内建项目”或“从 GitHub 导入”。

已有 GitHub 上下文仓库时,可以直接按从 GitHub 导入操作。

创建内建项目

在 Web 中创建项目

在创建内建项目卡片中输入项目名创建项目,成功后页面会显示克隆命令,仓库地址和后续步骤。

新仓库自带 config.yaml,初始内容为:

config.yaml
databases: []

获取密钥并克隆仓库

在个人设置中获取 API 密钥,用于访问 Cappy 项目仓库。

将下面的 <PROJECT_REPOSITORY_URL> 替换为项目页面提供的地址:

git clone '<PROJECT_REPOSITORY_URL>' my-project
cd my-project

git clone 询问用户名和密码时,用户名可以填写自己的邮箱,密码填写 Cappy API 密钥。

密钥按持有者的项目权限访问仓库:读取需要分析师或更高权限,推送需要上下文管理员或项目管理员权限。

初始化本地上下文

cappy init 用于配置数据库连接,并生成项目的上下文文件。在克隆的项目目录中运行:

cappy init

填写数据库连接

Set up database connections?
> y

Select database type:
> Doris

以 Doris 为例,按提示填写连接信息。

提示填写说明
Connection name填自定义连接名称,例如 warehouse。Cappy 用它区分数据源。
Host填 Doris FE 地址,例如 doris.example.com。
Port填 FE 的 MySQL 协议端口,默认 9030。
Username填 Doris 用户名,例如 analytics_reader。
Password填 Doris 密码。输入时会隐藏。
Catalog(可选)填 Catalog 名称,例如内置的 internal。
Default database(可选)填默认连接的库名,例如 analytics。
Schema to sync(可选)填要同步的库名,例如 analytics。

其他数据库的连接字段见接入数据库。

暂时不连接数据库时,选择 n。项目没有数据库连接时,cappy init 会添加 DuckDB 示例数据。只需准备项目文件时,可以运行 cappy init --minimal,再选择 n 跳过连接。

确认生成结果

初始化把连接写入 config.yaml,并生成下面的文件和目录。数据库依赖就绪时,初始化还会检查连接。

my-project/
├── config.yaml
├── RULES.md
├── .cappyignore
├── docs/
├── databases/
├── semantics/
├── agent/
│   ├── mcps/
│   ├── skills/
│   ├── tools/
│   └── prompts/
└── tests/
    ├── config.yaml
    └── example.yml
文件或目录用途
config.yaml保存数据库连接和语义层配置。
RULES.md编写团队的分析规则。
.cappyignore指定 Agent 文件工具与搜索忽略的文件。
docs/存放业务文档。
databases/、semantics/存放数据库和语义层的同步产物。
agent/存放 MCP、技能、工具和提示词文件。
tests/存放评估配置与用例。

已有本地上下文时,也可以把配置、规则、文档等复制到这个克隆目录。保留克隆目录自己的 .git,沿用新项目的仓库历史。

需要添加其他数据库连接时,再次运行 cappy init,在 Add more database connections? 处选择 y。修改已有连接时,直接编辑 config.yaml。已有非空的规则和其他上下文文件会保留。

cappy init 会重新保存 config.yaml,密码和已有环境变量引用可能被写为明文。提交前,按下文配置并同步上下文设置密码的环境变量引用,并检查 Git 差异。

从 GitHub 导入

准备仓库和访问令牌

在 GitHub 仓库根目录放入 config.yaml、RULES.md 和其他上下文文件。准备一个能读取该仓库的 GitHub 访问令牌。

填写并导入

打开添加项目 → 从 GitHub 导入,填写以下信息。

字段填写说明
项目名称输入有效仓库地址后会自动带入仓库名。可以改为自己的项目名,例如 my-project。
GitHub 访问令牌填写能读取该仓库的 GitHub 访问令牌。
仓库地址填写包含 .git 后缀的 HTTPS 地址,例如 https://github.com/owner/my-project.git。

点击导入仓库。成功页面会显示仓库地址和实例上的检出路径。点击进入项目,在上下文中查看文件。

用本机的 GitHub 凭据克隆原仓库,后续修改也推送到该仓库。

git clone https://github.com/owner/my-project.git my-project
cd my-project

配置并同步上下文

以下命令均在本地 my-project 目录中执行。已有完整上下文的项目可以核对配置后直接同步。

配置数据与文档

  1. 在 config.yaml 中,将 Doris 连接的 password 改为环境变量引用。下面沿用前面创建的 warehouse 连接。

    config.yaml
    databases:
      - name: warehouse
        type: doris
        host: doris.example.com
        port: 9030
        user: analytics_reader
        password: {{ env('DB_PASSWORD_YAML') }}
        catalog: internal
        database: analytics
        schema_name: analytics
        templates:
          - columns
          - preview
  2. 在运行 cappy debug 和 cappy sync 的终端设置 DB_PASSWORD_YAML。换成实际密码时,保留 JSON 字符串的双引号,特殊字符按 JSON 转义。编码方法见接入数据库。

    export DB_PASSWORD_YAML='"your-database-password"'
  3. 将业务说明放入 docs/,在 RULES.md 中引用相关文件。需要补充指标定义时,见语义层。规则写法见规则与自定义上下文。

使用本地 .env 或凭据文件时,将它们加入 .gitignore。

验证连接并生成上下文

运行以下命令检查数据库连接。

cappy debug

确认 warehouse 显示 Connected 后,再运行同步。

cappy sync

同步完成后,在 databases/ 中查看生成的 columns.md 和 preview.md。配置了语义层时,在 semantics/ 中查看同步产物。

发布和更新上下文

首次发布和后续更新都通过同一个 Git 流程完成。

提交并推送修改

修改数据源或数据库结构后,先验证连接并同步。在本地工作副本中检查改动,暂存后查看差异。

git status --short
git diff
git add .
git diff --staged

确认暂存内容只包含要发布的文件,检查是否混入密码、令牌或本地凭据文件。

在项目设置 → 仓库访问中确认跟踪分支。下面以内建项目的 main 为例。GitHub 项目将命令中的 main 换成导入时跟踪的分支。通过其他分支审阅的修改,合并到跟踪分支后再同步。

git commit -m "Update project context" && git push origin main

让 Cappy 取得最新文件

打开项目设置 → 仓库访问,点击立即同步,查看页面提示。

  • 已拉取最新上下文:运行中的项目已更新到仓库版本。
  • 已是最新:实例当前提交与仓库中的跟踪分支一致。
Cappy 仓库访问区域,显示仓库地址、跟踪分支、拉取方式和立即同步按钮
确认仓库和分支,点击“立即同步”并检查结果。

内建仓库收到推送后会立即请求同步。

默认使用手动拉取。需要定期更新时,将拉取方式改为自动拉取并选择间隔。默认每 5 分钟拉取一次。

Cappy 仓库访问设置为自动拉取,拉取间隔为每5分钟
按项目需要开启自动拉取,并选择拉取间隔。

上下文管理员和项目管理员可以手动同步。修改拉取方式和间隔需要项目管理员权限。

同步失败时,检查仓库是否可访问、跟踪分支是否正确。GitHub 项目还需检查导入令牌能否读取仓库。

配置实例凭据

本地终端中的环境变量不会随 Git 推送传到实例。发布含有变量引用的配置后,由项目管理员打开项目设置 → 环境变量,填写并保存相应的值。

例如,本篇配置会列出 DB_PASSWORD_YAML;在实例中也填写 JSON 字符串形式的密码,例如 "your-database-password",包含双引号。Cappy 实例需要能访问配置中的数据库地址,并取得相应凭据。

Cappy 项目环境变量页面列出配置文件引用的 DB_PASSWORD_YAML
为运行中的项目设置配置文件引用的变量。

在 Web 中分析数据

打开上下文,确认刚发布的 RULES.md、业务文档和表说明已经出现。新建对话,使用组织已配置的模型;没有可用模型时,请组织管理员按组织设置添加。

先问一个你能核对结果的问题,例如:

analytics 库中有哪些表?请选择一张表查询 5 行数据,并解释各字段的含义。

发送后,展开回复中的 SQL 卡片,核对所用的连接、数据表和返回数据。确认 Agent 能查询自己的数据后,再结合团队的业务定义进行分析。