内容
<div align="center">
# 仪表板工具
**将 AI 构建的仪表板发布到可共享的 URL,然后让它们按计划自行刷新 - 首次构建后无需 AI 介入。**
一个适用于 [Claude Code](https://claude.com/claude-code) 、 [Codex](https://developers.openai.com/codex) 和 [Cursor](https://cursor.com) 的一次性安装插件:`dashies` 作者技能 + Dashies 发布 MCP 服务器,捆绑在一起。
[官网](https://dashies.xyz) ·
[市场](https://dashies.xyz/marketplace.json) ·
[MCP 服务器](https://mcp.dashies.xyz/mcp) ·
[报告问题](https://github.com/Dashies-ai/dashies-plugin/issues)






</div>
---
## 什么是仪表板工具
仪表板工具将 Claude Code 对话转换为已发布、独立的 BI 仪表板,网址为:`https://dashies.xyz/<您的用户名>/<slug>`。
您描述仪表板。Claude 将其构建为单个 HTML 文件(内联 CSS、内联 JS、嵌入数据),并通过一次 MCP 调用发布。您将获得一个可以分享的链接。
仪表板工具与众不同之处在于:**仪表板可以自行保持更新。** 当它依赖于连接的数据源时,Claude 作者仪表板 + 一个小型 JSON 清单(一个立方体的 SQL、维度、累加度量),仅一次。从那时起,服务器端 cron 按您选择的计划重新运行 SQL,并仅重写仪表板数据岛中的数字。HTML 永不被触及,模型也不会再次运行。
> [!NOTE]
> 任何人都可以发布仪表板。定时自动刷新是主要功能,需要仪表板依赖连接的数据源。一次性静态仪表板发布正常 - 但它不会自行刷新。
## 安装
### 一条命令(推荐)
```sh
npx plugins add Dashies-ai/dashies-plugin
```
这是 [dashies.xyz](https://dashies.xyz) 上的命令。供应商中立的 [`plugins`](https://github.com/vercel-labs/open-plugin-spec) CLI 自动检测您已安装的 AI 编程代理,并在每个代理中设置 Dashies - `dashies` 作者技能 + 发布 MCP - 一步到位。
它直接安装到 **Claude Code** 和 **Cursor** 中。对于 **Codex** 特别是或在 **Windows** 上,请使用下面的匹配的每工具命令 - `plugins` CLI 的 Codex 安装和 Windows 代理检测仍在成熟中。
### Claude Code
Claude Code 中的两个命令:
```text
/plugin marketplace add https://dashies.xyz/marketplace.json
/plugin install dashies@dashies
```
### Codex
Shell 中的两个命令:
```sh
codex plugin marketplace add Dashies-ai/dashies-plugin
codex plugin add dashies@dashies
```
如果市场克隆在 SSH 主机密钥验证上失败,请使用显式 HTTPS URL:`codex plugin marketplace add https://github.com/Dashies-ai/dashies-plugin.git`。
### Cursor
从 [Cursor 市场](https://cursor.com/marketplace)(Cursor 2.5+)安装 Dashies - 在“自定义”->“插件”下搜索 **Dashies**,或在编辑器中运行 `/add-plugin`。 _(市场列表待 Cursor 审核;在此之前,可使用下面的“一键”MCP。)_
在每种情况下,插件都捆绑了 `dashies` 作者技能,并连接了 Dashies MCP 服务器,因此无需手动配置,也无需粘贴令牌。
> [!TIP]
> 这取代了旧的手动 MCP 设置(`claude mcp add dashies ...` 或 `codex mcp add dashies --url ...`)。如果您之前运行过,则插件安装将取代它。
### 身份验证:无需令牌
仪表板工具使用标准的 MCP **OAuth 2.1 + PKCE** 流和 **Dynamic Client Registration**。无需复制、粘贴或轮换 API 密钥或令牌。第一次使用 Dashies MCP 工具时,浏览器将打开进行一次性 Google 登录。生成的访问令牌存储在您的 OS 密钥链中,并自动刷新;当它过期时,下一次工具调用将重新运行一次性握手。
### 使用其他 AI 工具?
此插件使 Claude Code、Codex 和 Cursor 成为一次性安装路径,但 Dashies 是一个普通的远程 MCP 服务器,因此任何支持 MCP 的客户端都可以发布到它。将您的工具指向相同的 URL - `https://mcp.dashies.xyz/mcp`:
- **Cursor(仅 MCP,无技能)** - 优先使用上面的“一键”插件。对于仅 MCP,请在 [dashies.xyz](https://dashies.xyz) 上单击“一键添加至 Cursor”,或在 `~/.cursor/mcp.json` 中的 `mcpServers` 下添加 `{ "dashies": { "url": "https://mcp.dashies.xyz/mcp" } }`。
- **Codex(仅 MCP,无技能)** - 优先使用上面的“一键”插件。对于仅 MCP,请运行 `codex mcp add dashies --url https://mcp.dashies.xyz/mcp`,然后运行 `codex mcp login dashies`。
- **Claude 网页、桌面和 Cowork** - 在“设置”->“连接器”下为该 URL 添加自定义连接器。
相同的“一键”OAuth 登录在所有地方适用,无需粘贴令牌。 [dashies.xyz](https://dashies.xyz) 为每个工具提供了复制粘贴设置。
## 快速入门
安装完成后,只需询问:
```text
发布一个上个月按计划划分的注册用户仪表板。
```
Claude 构建一个独立的 HTML 仪表板,调用 `publish_dashboard`,并返回一个实时 URL:
```text
https://dashies.xyz/<您的用户名>/signups-by-plan
```
这是完整的循环:一个请求,一个可分享的链接。
## 无 AI 刷新工作原理
模型仅在创作时运行。从那时起,刷新是纯服务器端 cron:它重新执行保存的 SQL 并将新数字写入已发布的 文件的数据岛。HTML 永不被触及,模型也不会再次运行。
```mermaid
flowchart LR
subgraph once["创作一次(AI 在循环中)"]
A["您描述仪表板"] --> B["Claude 构建 HTML + 清单:<br/>立方体 SQL、维度、<br/>累加度量"]
B --> C["publish_dashboard"]
end
C --> D[("dashies.xyz/您的用户名/slug")]
subgraph loop["按计划(无 AI)"]
E["Cron 触发:<br/>每小时 / 每天 / 每周 / 每月"] --> F["重新运行保存的立方体 SQL<br/>针对连接的源"]
F --> G["仅将新数字写入<br/>数据岛"]
end
G --> D
```
为什么此设计成立:
- **发布后 HTML 永不变。** 刷新交换数据,而不是标记,因此仪表板不会在运行之间在视觉上漂移或损坏。
- **刷新路径中没有模型。** 较低的成本,确定性的输出,以及 AI 重新解释仪表板的风险为零,每个周期。
- **立方体是契约。** 低基数粒度 + 累加度量使得相同的 SQL 可以在无需重新创作的情况下永远重新聚合。
## 功能
- **一次发布。** 自包含的 HTML 仪表板成为一个稳定、可分享的 URL,限定在您的用户名下。
- **自我刷新的仪表板。** 选择每小时、每天、每周或每月。服务器重新运行立方体 SQL 并更新数字,无需 AI 介入。
- **零令牌身份验证。** OAuth 2.1 + PKCE + 动态客户端注册。一次浏览器点击,密钥链存储,自动刷新。
- **安全重命名。** 重命名仪表板保留旧 URL,并使用 301 重定向,因此您已经分享的链接继续有效。
- **版本主体。** 重新发布快照之前的正文(最多保留 20 个)。列出并回滚到任何快照。
- **设计沙盒。** 已发布的仪表板在严格的沙盒 CSP 下渲染,与源的其余部分隔离。
- **引导创作。** 捆绑的 `dashies` 技能引导您完成连接的数据门户、立方体设计、数据岛绑定契约、沙盒约束、计划选择和清单。
## 捆绑内容
### `dashies` 作者技能
安装后自动加载。这是构建**可刷新**仪表板的攻略:连接数据库门户,设计具有低基数粒度、累加度量的立方体,数据岛和数据仪表绑定契约,内联客户端运行时,沙盒 CSP 约束,选择计划和编写 `source_config` 清单。
### MCP 工具
任何工具首次使用时都会触发 OAuth(一次浏览器点击)。
| 工具 | 执行操作 |
|---|---|
| `publish_dashboard` | 上传自包含的 HTML / JSON / CSV / 图像文件(最大 ~5 MB),并获取一个稳定的 URL。 |
| `update_dashboard` | 编辑元数据(名称、标签、图表、可见性)或在不重新上传正文的情况下重命名 slug。重命名保留旧 URL,带有 301 重定向。 |
| `get_dashboard` | 读取以前发布的 文件。 |
| `delete_dashboard` | 通过 slug 弃用仪表板。URL 停止解析,字节被删除。 |
| `list_dashboards` | 枚举您的活动仪表板,按最新时间排序,带有游标分页。 |
| `list_dashboard_versions` | 列出您个人仪表板的已保存正文快照,每个都有一个 `version_id`。 |
| `restore_dashboard_version` | 将个人仪表板回滚到以前的快照。当前正文被快照,因此恢复通常是可逆的。 |
| `get_dashboard_version` | 读取以前的快照的正文,以检查或在恢复前进行差异比较。 |
| `update_dashboard_version` | 设置或清除快照的标签(短名称,如“重新设计前”)。仅限元数据;正文未触及。 |
| `introspect_schema` | 在创作立方体时检查连接的数据源的模式 - 内置的 `self` 指标视图,或您拥有的仓库连接。 |
| `validate_cube_sql` | 在发布可刷新仪表板之前,将立方体的 SQL 与连接(`self` 或您拥有的仓库)进行检查。 |
| `list_connections` | 列出您拥有的仓库连接 - Postgres、BigQuery、Snowflake 或 Amazon Redshift(id、标签、引擎、状态)。只读,永不返回机密;仓库在 Dashies 网页应用中连接。 |
| `get_refresh_status` | 检查个人仪表板是否按计划刷新:节奏、下一次运行、上一次运行和最近的运行历史。只读。 |
| `get_source_config` | 读取个人仪表板存储的刷新清单(`source_config`),与保存的完全一致。只读。 |
## 构建您的第一个可刷新仪表板
可刷新仪表板需要连接的数据源,因此创作流程从此处开始。
1. **连接数据源。** 自动刷新针对实时源重新运行 SQL,因此这是门户。在 Dashies 网页应用(连接页面)中连接仓库 - Postgres 数据库、BigQuery 项目、Snowflake 账户或 Amazon Redshift 仓库 - 凭证通过应用传递,而非 AI - 或构建针对 Dashies 自己的内置 `self` 指标。无源您仍然可以发布静态仪表板,但它不会自行刷新。
2. **请求 Claude 构建它。** 例如:*“构建一个可刷新的仪表板,显示每周按计划激活的用户,并每天刷新。”* `dashies` 技能从此处接管。
3. **设计立方体。** Claude 使用 `list_connections` 查找您的连接,使用 `introspect_schema` 读取其表,然后定义一个立方体:具有低基数粒度(您按其切片的维度)和累加度量(计数、总和),可以在每个周期安全地重新聚合。
4. **验证 SQL。** `validate_cube_sql` 在发布任何内容之前确认立方体在您的源上运行。
5. **发布计划。** Claude 调用 `publish_dashboard`,带有 HTML 和 `source_config` 清单以及您选择的节奏(每小时 / 每天 / 每周 / 每月)。您将获得 `https://dashies.xyz/<您的用户名>/<slug>`。
6. **离开。** cron 按计划重新运行立方体 SQL,并将新数字写入数据岛。仪表板在无需进一步 AI 参与的情况下保持最新。
> [!TIP]
> 对于没有实时数据支持的一次性快照,您不需要立方体或清单。只需请求 Claude 发布静态仪表板 - 一次 `publish_dashboard` 调用,您就有了一个 URL。
<details>
<summary>常见的后续请求</summary>
- **“我有哪些仪表板?”** - Claude 调用 `list_dashboards` 并总结它们,按最新时间排序。
- **“重命名此仪表板。”** - Claude 调用 `update_dashboard`,带有新的 slug。旧 URL 301-重定向到新 URL,因此共享的链接继续有效。
- **“回滚此仪表板。”** - Claude 调用 `list_dashboard_versions` 以查找快照,然后调用 `restore_dashboard_version` 以恢复它(仅限个人仪表板)。
- **“使其私有。”** - Claude 调用 `update_dashboard` 进行可见性更改;无需重新上传。
</details>
## 链接
- 主页:https://dashies.xyz
- 市场清单:https://dashies.xyz/marketplace.json
- MCP 服务器:https://mcp.dashies.xyz/mcp
- 问题:https://github.com/Dashies-ai/dashies-plugin/issues
## 许可证
[MIT](LICENSE).
---
<div align="center">
由 [Dashies](https://dashies.xyz) 构建。让您的仪表板自行保持更新。
</div>