内容
# kaiten
[](https://github.com/dsociative/kaiten-cli/actions/workflows/ci.yml)
[](https://github.com/dsociative/kaiten-cli/actions/workflows/security.yml)
[](https://github.com/dsociative/kaiten-cli/actions/workflows/codeql.yml)
[](https://github.com/dsociative/kaiten-cli/releases)
[](https://crates.io/crates/kaiten-cli)
[](https://crates.io/crates/kaiten-cli)
[](https://github.com/dsociative/kaiten-cli#license)
Kaiten 命令行客户端和 MCP 服务器,灵感来自 `gh` / `glab`。
- 在终端中浏览空间、板块和卡片
- 创建、编辑、移动和归档卡片;管理成员、标签、评论和检查清单
- 每个命令的 `--json` 输出用于脚本编写
- 内置 MCP 服务器(`kaiten mcp serve`),让编码代理可以与跟踪器配合使用
- 原始 API 出口:`kaiten api GET /users/current`
## 安装
从 crates.io:
```sh
cargo install kaiten-cli
```
Linux(x86_64/aarch64)、macOS(x86_64/aarch64)和 Windows 的预编译二进制文件
附在 [GitHub Releases](https://github.com/dsociative/kaiten-cli/releases) 上。
从源代码:
```sh
git clone https://github.com/dsociative/kaiten-cli
cd kaiten-cli
cargo install --path crates/kaiten
```
## 认证
在您的 Kaiten 配置文件(`https://mycompany.kaiten.ru` →
用户配置文件 → API令牌)中创建 API 令牌,然后:
```sh
kaiten auth login # 请求域名("mycompany")和令牌,验证它们
kaiten auth status # 显示域名、当前用户和令牌来源
```
环境变量覆盖配置文件:
| 变量 | 含义 |
|---|---|
| `KAITEN_TOKEN` | API 令牌 |
| `KAITEN_DOMAIN` | 公司域名:`mycompany` → `https://mycompany.kaiten.ru/api/latest` |
| `KAITEN_BASE_URL` | 完整的 API 基址 URL(覆盖域名) |
| `KAITEN_CONFIG_DIR` | 配置目录(默认:`~/.config/kaiten`) |
## 配置
`~/.config/kaiten/config.toml` — 由 `kaiten auth login` 以 600 模式创建:
```toml
domain = "mycompany"
token = "your-api-token"
[defaults] # 可选:当省略 --space/--board 标志时使用
space = 123
board = 456
```
`kaiten card list` (和 `list_cards` MCP 工具)仅返回非归档卡片
除非您传递 `--archived`,它会将过滤器切换到仅归档卡片。
## 用法
```sh
kaiten space list
kaiten board list --space 123
kaiten board view 456 # 列和泳道(用于 `card move` 的 ID)
kaiten card list --mine
kaiten card list --board 456 --query "deploy" --limit 20
kaiten card view 67089469 --comments # 完整的卡片 URL 也有效
kaiten card create --board 456 --title "Fix the flaky test" --description "..."
kaiten card edit 67089469 --title "New title" --asap true
kaiten card move 67089469 --column 6308511
kaiten card archive 67089469
kaiten card member add 67089469 user@example.com # 用户 ID 或电子邮件
kaiten card comment add 67089469 --body "Done, please review"
kaiten card checklist add 67089469 --name "Release steps"
kaiten card checklist item add 67089469 91011 --text "Bump version"
kaiten card checklist item check 67089469 91011 121314
kaiten card tag add 67089469 backend
kaiten tag list
kaiten card-type list
kaiten api GET "/cards?query=deploy&limit=5" # 原始 API 访问
kaiten api POST /cards --data '{"board_id":456,"title":"Raw"}'
```
在任何命令中添加 `--json` 以打印 API 响应的原始 JSON。
## Shell 补全
```sh
# zsh — 添加到 ~/.zshrc(需要启用 compinit,如大多数设置)
eval "$(kaiten completion zsh)"
# bash — 添加到 ~/.bashrc
eval "$(kaiten completion bash)"
# fish — 运行一次
kaiten completion fish > ~/.config/fish/completions/kaiten.fish
```
## MCP 服务器
同一个二进制文件是一个 MCP 服务器(stdio 传输,16 个工具镜像 CLI)。
Claude 代码:
```sh
claude mcp add kaiten -- kaiten mcp serve
```
任何其他 MCP 客户端:
```json
{
"mcpServers": {
"kaiten": {
"command": "kaiten",
"args": ["mcp", "serve"]
}
}
}
```
身份验证与 CLI 共享:运行一次 `kaiten auth login`,或在客户端配置中导出
`KAITEN_DOMAIN` / `KAITEN_TOKEN`。日志仅输出到 stderr
stdout 携带 MCP 协议。
## 调试
- `-v` — 调试日志输出到 stderr:每个 HTTP 请求的方法、路径、状态、持续时间
- `-vv` — 跟踪日志,包括请求/响应正文(令牌始终被删除)
- `RUST_LOG=kaiten_client=trace kaiten ...` — 在没有标志的情况下进行细粒度过滤
- 解码错误报告确切的 JSON 路径解析失败
- `kaiten api <METHOD> <path> [--data <json>]` — 当类型命令不够用时进行原始访问
- API 错误正文与 HTTP 状态一起原样打印
## 开发
```sh
cargo test
cargo clippy --all-targets -- -D warnings
cargo fmt --all -- --check
```
## 许可证
根据 [MIT](LICENSE-MIT) 或 [Apache-2.0](LICENSE-APACHE) 许可证之一授权,
由您选择。