Canton应用开发CLI工具

Cantool是一个用于Canton应用开发的命令行工具,提供项目脚手架、DAML编译、测试、本地沙盒管理和MCP服务器功能,支持AI辅助开发。

  • by DisplaceTech
  • Go
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 DisplaceTech/Cantool

使用说明

Cantol

Canton应用程序开发CLI——项目脚手架、DAML编译、测试、本地沙箱管理和用于AI辅助开发的MCP服务器。

为什么选择Cantol

  • 核心命令的单一二进制、零运行时依赖关系。 下载一个文件, chmod +x,跑。核心CLI(脚手架、MCP服务器、环境、插件)不需要JVM、Node.js或容器运行时。
  • 交叉汇编。 GOOS=linux GOARCH=amd64 go build 从macOS生成Linux二进制文件。CI构建适用于所有平台。
  • 静态链接。 没有共享库冲突,没有版本不匹配,没有容器映像膨胀。将二进制文件复制到气隙环境中,它就可以工作了。
  • 插件系统。 可通过JSON-RPC插件进行扩展。核心命令在任何外部插件发布之前证明插件契约。

安装

# Homebrew (macOS)
brew install displacetech/tap/cantool

# Binary download (preferred for institutions)
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m); [ "$ARCH" = "x86_64" ] && ARCH="amd64"
curl -sSL "https://github.com/DisplaceTech/Cantool/releases/latest/download/cantool_${OS}_${ARCH}.tar.gz" \
  | tar xz cantool
sudo mv cantool /usr/local/bin/

# Go install (for Go developers)
go install github.com/displacetech/cantool@latest

快速开始

# Create a new project
cantool init my-app --template basic
cd my-app

# Check environment status
cantool status

# Manage environments
cantool env add local --host localhost --ledger-port 5011
cantool env use local

# See installed plugins
cantool plugin list

也得到 build, test, dev, clean,以及 doctor 命令,启用便利插件(请参阅 插件).

命令

核心命令

命令 描述
cantool init [name] 从模板创建新的Canton项目(basic 或 token)
cantool env {add,use,list,remove} 管理命名环境配置文件
cantool status 显示Canton节点运行状况、版本和连接方
cantool mcp serve 启动MCP服务器进行AI助手集成(stdio)
cantool plugin list 列出已安装的插件

可选便利命令(插件)

这些命令由内置的 convenience 插件,必须在中启用 cantool.yaml (参见 插件).他们将任务委托给dpm/daml,并将归因行打印到stderr(例如。, -> delegating to dpm build).

命令 描述
cantool build [--watch] 编译DAML源代码。 --watch 根据文件更改进行重建
cantool test [--verbose] 使用结构化输出运行DAML脚本测试
cantool dev [--port P] 通过热重新加载和参与方配置启动本地沙盒
cantool clean [--all] 删除构建工件
cantool doctor 检查先决条件(Java、SDK、Docker、端口、Go)

全球旗帜

标志 描述
--format 输出格式: human (默认), json, quiet
--version 打印版本

配置

Cantol支持两个级别的配置:

  1. 全局配置 --按顺序检查: $XDG_CONFIG_HOME/cantool/config.yaml (默认值 ~/.config/cantool/), ~/Library/Application Support/cantool/config.yaml (仅限macOS), ~/.cantool/config.yaml (回退)。适用于所有项目。可用于在所有项目中一次性启用插件。
  2. 项目配置 — cantool.yaml 在项目根中。项目设置会覆盖全局设置。

全局配置

创建全局配置以设置所有项目的默认值:

# Linux
mkdir -p ~/.config/cantool
cat > ~/.config/cantool/config.yaml << 'EOF'
version: "1"
plugins:
  convenience:
    enabled: true
EOF

# macOS
mkdir -p ~/Library/Application\ Support/cantool
cat > ~/Library/Application\ Support/cantool/config.yaml << 'EOF'
version: "1"
plugins:
  convenience:
    enabled: true
EOF

这使得在任何地方都可以使用方便的命令,而无需编辑每个项目的 cantool.yaml。项目仍然可以通过显式设置来覆盖全局设置 plugins.convenience.enabled: false 就其本身而言 cantool.yaml.

项目配置

Cantol项目使用 cantool.yaml 文件:

version: "1"

project:
  name: my-app
  sdk-version: "3.4.11"

parties:
  - name: Alice
    display: "Alice Corp"
  - name: Bob
    display: "Bob Trading"

environments:
  local:
    host: localhost
    ledger-port: 5011
    json-api-port: 7575

dev:
  watch-paths:
    - "daml/"
  hot-reload: true
  sandbox-port: 5011

plugins:
  convenience:
    enabled: true

MCP集成

将Cantol配置为Claude Code、Cursor或其他MCP感知工具的MCP服务器:

{
  "mcpServers": {
    "cantool": {
      "command": "cantool",
      "args": ["mcp", "serve"]
    }
  }
}

可用工具: query_contracts, list_parties, ledger_status, allocate_party, upload_dar, list_packages

可用资源: canton://contracts, canton://parties, canton://packages

插件

Cantol支持内置和外部插件。插件配置在 plugins 部分 cantool.yaml 或全局配置文件(请参阅 配置).

内置:便利插件

这 convenience 该插件随Cantol一起提供,并为常见的dpm/daml操作提供包装器命令。它是 默认禁用.

要在全球范围内启用它(所有项目):

# Linux
mkdir -p ~/.config/cantool
cat > ~/.config/cantool/config.yaml << 'EOF'
version: "1"
plugins:
  convenience:
    enabled: true
EOF

# macOS
mkdir -p ~/Library/Application\ Support/cantool
cat > ~/Library/Application\ Support/cantool/config.yaml << 'EOF'
version: "1"
plugins:
  convenience:
    enabled: true
EOF

或者在中为每个项目启用它 cantool.yaml:

plugins:
  convenience:
    enabled: true

要在特定项目中禁用它(覆盖全局启用):

plugins:
  convenience:
    enabled: false

启用后,以下命令可用:

命令 代表
cantool build dpm build / daml build
cantool test dpm test / daml test
cantool dev dpm sandbox / daml sandbox
cantool clean 删除 .daml/ 构建工件
cantool doctor 检查Java、SDK、Docker、端口、Go

当便利命令委托给外部工具时。, -> delegating to dpm build).

使用 cantool plugin list 查看已安装的插件。

外部插件

外部插件是独立的二进制文件,通过stdin/stdout上的JSON-RPC 2.0进行通信。插件可以在以下位置找到 ~/.cantool/plugins/ 并且必须做出回应 --metadata 使用JSON有效载荷:

{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "My custom plugin",
  "author": "Your Name",
  "min_host_version": "0.1.0"
}

看 internal/plugin/interface.go 获取完整的插件接口定义。

错误代码

Cantol按子系统使用结构化错误代码:

范围 子系统
CT1xxx 配置
CT2xxx 软件开发工具包/工具
CT3xxx 沙盒/运行时
CT4xxx 构建
CT5xxx 测试
CT6xxx 分类帐API
CT7xxx MCP服务器
CT8xxx 插件系统
CT9xxx 环境管理

每个错误都包含一个人类可读的建议,说明如何修复它。

许可证

Apache 2.0