README を約950行から約270行に圧縮し、詳細は個別ドキュメントに分離した。 コンセプトを実態に合わせて再定義(4軸: すぐ始められる・実用的・再現可能・マルチエージェント)し、 基本ユースケースを takt → takt run のフローに修正した。 英語版・日本語版の両方を対応し、日本語版はネイティブ日本語で記述。
401 lines
18 KiB
Markdown
401 lines
18 KiB
Markdown
# 設定
|
||
|
||
[English](./configuration.md)
|
||
|
||
このドキュメントは TAKT の全設定オプションのリファレンスです。クイックスタートについては [README](../README.md) を参照してください。
|
||
|
||
## グローバル設定
|
||
|
||
`~/.takt/config.yaml` で TAKT のデフォルト設定を行います。このファイルは初回実行時に自動作成されます。すべてのフィールドは省略可能です。
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml
|
||
language: en # UI 言語: 'en' または 'ja'
|
||
default_piece: default # 新規プロジェクトのデフォルト piece
|
||
log_level: info # ログレベル: debug, info, warn, error
|
||
provider: claude # デフォルト provider: claude, codex, または opencode
|
||
model: sonnet # デフォルトモデル(省略可、provider にそのまま渡される)
|
||
branch_name_strategy: romaji # ブランチ名生成方式: 'romaji'(高速)または 'ai'(低速)
|
||
prevent_sleep: false # 実行中に macOS のアイドルスリープを防止(caffeinate)
|
||
notification_sound: true # 通知音の有効/無効
|
||
notification_sound_events: # イベントごとの通知音切り替え(省略可)
|
||
iteration_limit: false
|
||
piece_complete: true
|
||
piece_abort: true
|
||
run_complete: true # デフォルト有効。false で無効化
|
||
run_abort: true # デフォルト有効。false で無効化
|
||
concurrency: 1 # takt run の並列タスク数(1-10、デフォルト: 1 = 逐次実行)
|
||
task_poll_interval_ms: 500 # takt run での新規タスクポーリング間隔(100-5000、デフォルト: 500)
|
||
interactive_preview_movements: 3 # インタラクティブモードでの movement プレビュー数(0-10、デフォルト: 3)
|
||
|
||
# ランタイム環境デフォルト(piece_config.runtime で上書きしない限りすべての piece に適用)
|
||
# runtime:
|
||
# prepare:
|
||
# - gradle # .runtime/ に Gradle キャッシュ/設定を準備
|
||
# - node # .runtime/ に npm キャッシュを準備
|
||
|
||
# persona ごとの provider 上書き(省略可)
|
||
# piece を複製せずに特定の persona を別の provider にルーティング
|
||
# persona_providers:
|
||
# coder: codex # coder を Codex で実行
|
||
# ai-antipattern-reviewer: claude # レビュアーは Claude のまま
|
||
|
||
# provider 固有のパーミッションプロファイル(省略可)
|
||
# 優先順位: プロジェクト上書き > グローバル上書き > プロジェクトデフォルト > グローバルデフォルト > required_permission_mode(下限)
|
||
# provider_profiles:
|
||
# codex:
|
||
# default_permission_mode: full
|
||
# movement_permission_overrides:
|
||
# ai_review: readonly
|
||
# claude:
|
||
# default_permission_mode: edit
|
||
|
||
# API キー設定(省略可)
|
||
# 環境変数 TAKT_ANTHROPIC_API_KEY / TAKT_OPENAI_API_KEY / TAKT_OPENCODE_API_KEY で上書き可能
|
||
# anthropic_api_key: sk-ant-... # Claude(Anthropic)用
|
||
# openai_api_key: sk-... # Codex(OpenAI)用
|
||
# opencode_api_key: ... # OpenCode 用
|
||
|
||
# Codex CLI パス上書き(省略可)
|
||
# Codex SDK が使用する Codex CLI バイナリを上書き(実行可能ファイルの絶対パスが必要)
|
||
# 環境変数 TAKT_CODEX_CLI_PATH で上書き可能
|
||
# codex_cli_path: /usr/local/bin/codex
|
||
|
||
# ビルトイン piece フィルタリング(省略可)
|
||
# builtin_pieces_enabled: true # false ですべてのビルトインを無効化
|
||
# disabled_builtins: [magi, passthrough] # 特定のビルトイン piece を無効化
|
||
|
||
# pipeline 実行設定(省略可)
|
||
# ブランチ名、コミットメッセージ、PR 本文をカスタマイズ
|
||
# pipeline:
|
||
# default_branch_prefix: "takt/"
|
||
# commit_message_template: "feat: {title} (#{issue})"
|
||
# pr_body_template: |
|
||
# ## Summary
|
||
# {issue_body}
|
||
# Closes #{issue}
|
||
```
|
||
|
||
### グローバル設定フィールドリファレンス
|
||
|
||
| フィールド | 型 | デフォルト | 説明 |
|
||
|-----------|------|---------|------|
|
||
| `language` | `"en"` \| `"ja"` | `"en"` | UI 言語 |
|
||
| `default_piece` | string | `"default"` | 新規プロジェクトのデフォルト piece |
|
||
| `log_level` | `"debug"` \| `"info"` \| `"warn"` \| `"error"` | `"info"` | ログレベル |
|
||
| `provider` | `"claude"` \| `"codex"` \| `"opencode"` | `"claude"` | デフォルト AI provider |
|
||
| `model` | string | - | デフォルトモデル名(provider にそのまま渡される) |
|
||
| `branch_name_strategy` | `"romaji"` \| `"ai"` | `"romaji"` | ブランチ名生成方式 |
|
||
| `prevent_sleep` | boolean | `false` | macOS アイドルスリープ防止(caffeinate) |
|
||
| `notification_sound` | boolean | `true` | 通知音の有効化 |
|
||
| `notification_sound_events` | object | - | イベントごとの通知音切り替え |
|
||
| `concurrency` | number (1-10) | `1` | `takt run` の並列タスク数 |
|
||
| `task_poll_interval_ms` | number (100-5000) | `500` | 新規タスクのポーリング間隔 |
|
||
| `interactive_preview_movements` | number (0-10) | `3` | インタラクティブモードでの movement プレビュー数 |
|
||
| `worktree_dir` | string | - | 共有クローンのディレクトリ(デフォルトは `../{clone-name}`) |
|
||
| `auto_pr` | boolean | - | worktree 実行後に PR を自動作成 |
|
||
| `verbose` | boolean | - | 詳細出力モード |
|
||
| `minimal_output` | boolean | `false` | AI 出力を抑制(CI 向け) |
|
||
| `runtime` | object | - | ランタイム環境デフォルト(例: `prepare: [gradle, node]`) |
|
||
| `persona_providers` | object | - | persona ごとの provider 上書き(例: `coder: codex`) |
|
||
| `provider_options` | object | - | グローバルな provider 固有オプション |
|
||
| `provider_profiles` | object | - | provider 固有のパーミッションプロファイル |
|
||
| `anthropic_api_key` | string | - | Claude 用 Anthropic API キー |
|
||
| `openai_api_key` | string | - | Codex 用 OpenAI API キー |
|
||
| `opencode_api_key` | string | - | OpenCode API キー |
|
||
| `codex_cli_path` | string | - | Codex CLI バイナリパス上書き(絶対パス) |
|
||
| `enable_builtin_pieces` | boolean | `true` | ビルトイン piece の有効化 |
|
||
| `disabled_builtins` | string[] | `[]` | 無効化する特定のビルトイン piece |
|
||
| `pipeline` | object | - | pipeline テンプレート設定 |
|
||
| `bookmarks_file` | string | - | ブックマークファイルのパス |
|
||
| `piece_categories_file` | string | - | piece カテゴリファイルのパス |
|
||
|
||
## プロジェクト設定
|
||
|
||
`.takt/config.yaml` でプロジェクト固有の設定を行います。このファイルはプロジェクトディレクトリで初めて TAKT を使用した際に作成されます。
|
||
|
||
```yaml
|
||
# .takt/config.yaml
|
||
piece: default # このプロジェクトの現在の piece
|
||
provider: claude # このプロジェクトの provider 上書き
|
||
auto_pr: true # worktree 実行後に PR を自動作成
|
||
verbose: false # 詳細出力モード
|
||
|
||
# provider 固有オプション(グローバルを上書き、piece/movement で上書き可能)
|
||
# provider_options:
|
||
# codex:
|
||
# network_access: true
|
||
|
||
# provider 固有パーミッションプロファイル(プロジェクトレベルの上書き)
|
||
# provider_profiles:
|
||
# codex:
|
||
# default_permission_mode: full
|
||
# movement_permission_overrides:
|
||
# ai_review: readonly
|
||
```
|
||
|
||
### プロジェクト設定フィールドリファレンス
|
||
|
||
| フィールド | 型 | デフォルト | 説明 |
|
||
|-----------|------|---------|------|
|
||
| `piece` | string | `"default"` | このプロジェクトの現在の piece 名 |
|
||
| `provider` | `"claude"` \| `"codex"` \| `"opencode"` \| `"mock"` | - | provider 上書き |
|
||
| `auto_pr` | boolean | - | worktree 実行後に PR を自動作成 |
|
||
| `verbose` | boolean | - | 詳細出力モード |
|
||
| `provider_options` | object | - | provider 固有オプション |
|
||
| `provider_profiles` | object | - | provider 固有のパーミッションプロファイル |
|
||
|
||
プロジェクト設定の値は、両方が設定されている場合にグローバル設定を上書きします。
|
||
|
||
## API キー設定
|
||
|
||
TAKT は3つの provider をサポートしており、それぞれに API キーが必要です。API キーは環境変数または `~/.takt/config.yaml` で設定できます。
|
||
|
||
### 環境変数(推奨)
|
||
|
||
```bash
|
||
# Claude(Anthropic)用
|
||
export TAKT_ANTHROPIC_API_KEY=sk-ant-...
|
||
|
||
# Codex(OpenAI)用
|
||
export TAKT_OPENAI_API_KEY=sk-...
|
||
|
||
# OpenCode 用
|
||
export TAKT_OPENCODE_API_KEY=...
|
||
```
|
||
|
||
### 設定ファイル
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml
|
||
anthropic_api_key: sk-ant-... # Claude 用
|
||
openai_api_key: sk-... # Codex 用
|
||
opencode_api_key: ... # OpenCode 用
|
||
```
|
||
|
||
### 優先順位
|
||
|
||
環境変数は `config.yaml` の設定よりも優先されます。
|
||
|
||
| Provider | 環境変数 | 設定キー |
|
||
|----------|---------|---------|
|
||
| Claude (Anthropic) | `TAKT_ANTHROPIC_API_KEY` | `anthropic_api_key` |
|
||
| Codex (OpenAI) | `TAKT_OPENAI_API_KEY` | `openai_api_key` |
|
||
| OpenCode | `TAKT_OPENCODE_API_KEY` | `opencode_api_key` |
|
||
|
||
### セキュリティ
|
||
|
||
- `config.yaml` に API キーを記載する場合、このファイルを Git にコミットしないよう注意してください。
|
||
- 環境変数の使用を検討してください。
|
||
- 必要に応じて `~/.takt/config.yaml` をグローバル `.gitignore` に追加してください。
|
||
- API キーを設定すれば、対応する CLI ツール(Claude Code、Codex、OpenCode)のインストールは不要です。TAKT が対応する API を直接呼び出します。
|
||
|
||
### Codex CLI パス上書き
|
||
|
||
Codex CLI バイナリパスは環境変数または設定ファイルで上書きできます。
|
||
|
||
```bash
|
||
export TAKT_CODEX_CLI_PATH=/usr/local/bin/codex
|
||
```
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml
|
||
codex_cli_path: /usr/local/bin/codex
|
||
```
|
||
|
||
パスは実行可能ファイルの絶対パスである必要があります。`TAKT_CODEX_CLI_PATH` は設定ファイルの値よりも優先されます。
|
||
|
||
## モデル解決
|
||
|
||
各 movement で使用されるモデルは、次の優先順位(高い順)で解決されます。
|
||
|
||
1. **Piece movement の `model`** - piece YAML の movement 定義で指定
|
||
2. **カスタムエージェントの `model`** - `.takt/agents.yaml` のエージェントレベルのモデル
|
||
3. **グローバル設定の `model`** - `~/.takt/config.yaml` のデフォルトモデル
|
||
4. **Provider デフォルト** - provider のビルトインデフォルトにフォールバック(Claude: `sonnet`、Codex: `codex`、OpenCode: provider デフォルト)
|
||
|
||
### Provider 固有のモデルに関する注意
|
||
|
||
**Claude Code** はエイリアス(`opus`、`sonnet`、`haiku`、`opusplan`、`default`)と完全なモデル名(例: `claude-sonnet-4-5-20250929`)をサポートしています。`model` フィールドは provider CLI にそのまま渡されます。利用可能なモデルについては [Claude Code ドキュメント](https://docs.anthropic.com/en/docs/claude-code) を参照してください。
|
||
|
||
**Codex** は Codex SDK を通じてモデル文字列をそのまま使用します。未指定の場合、デフォルトは `codex` です。利用可能なモデルについては Codex のドキュメントを参照してください。
|
||
|
||
**OpenCode** は `provider/model` 形式のモデル(例: `opencode/big-pickle`)が必要です。OpenCode provider でモデルを省略すると設定エラーになります。
|
||
|
||
### 設定例
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml
|
||
provider: claude
|
||
model: opus # すべての movement のデフォルトモデル(上書きされない限り)
|
||
```
|
||
|
||
```yaml
|
||
# piece.yaml - movement レベルの上書きが最高優先
|
||
movements:
|
||
- name: plan
|
||
model: opus # この movement はグローバル設定に関係なく opus を使用
|
||
...
|
||
- name: implement
|
||
# model 未指定 - グローバル設定(opus)にフォールバック
|
||
...
|
||
```
|
||
|
||
## Provider プロファイル
|
||
|
||
Provider プロファイルを使用すると、各 provider にデフォルトのパーミッションモードと movement ごとのパーミッション上書きを設定できます。異なる provider を異なるセキュリティポリシーで運用する場合に便利です。
|
||
|
||
### パーミッションモード
|
||
|
||
TAKT は provider 非依存の3つのパーミッションモードを使用します。
|
||
|
||
| モード | 説明 | Claude | Codex | OpenCode |
|
||
|--------|------|--------|-------|----------|
|
||
| `readonly` | 読み取り専用、ファイル変更不可 | `default` | `read-only` | `read-only` |
|
||
| `edit` | 確認付きでファイル編集を許可 | `acceptEdits` | `workspace-write` | `workspace-write` |
|
||
| `full` | すべてのパーミッションチェックをバイパス | `bypassPermissions` | `danger-full-access` | `danger-full-access` |
|
||
|
||
### 設定方法
|
||
|
||
Provider プロファイルはグローバルレベルとプロジェクトレベルの両方で設定できます。
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml(グローバル)または .takt/config.yaml(プロジェクト)
|
||
provider_profiles:
|
||
codex:
|
||
default_permission_mode: full
|
||
movement_permission_overrides:
|
||
ai_review: readonly
|
||
claude:
|
||
default_permission_mode: edit
|
||
movement_permission_overrides:
|
||
implement: full
|
||
```
|
||
|
||
### パーミッション解決の優先順位
|
||
|
||
パーミッションモードは次の順序で解決されます(最初にマッチしたものが適用)。
|
||
|
||
1. **プロジェクト** `provider_profiles.<provider>.movement_permission_overrides.<movement>`
|
||
2. **グローバル** `provider_profiles.<provider>.movement_permission_overrides.<movement>`
|
||
3. **プロジェクト** `provider_profiles.<provider>.default_permission_mode`
|
||
4. **グローバル** `provider_profiles.<provider>.default_permission_mode`
|
||
5. **Movement** `required_permission_mode`(最低限の下限として機能)
|
||
|
||
movement の `required_permission_mode` は最低限の下限を設定します。provider プロファイルから解決されたモードが要求モードよりも低い場合、要求モードが使用されます。たとえば、movement が `edit` を要求しているがプロファイルが `readonly` に解決される場合、実効モードは `edit` になります。
|
||
|
||
### Persona Provider
|
||
|
||
piece を複製せずに、特定の persona を別の provider にルーティングできます。
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml
|
||
persona_providers:
|
||
coder: codex # coder persona を Codex で実行
|
||
ai-antipattern-reviewer: claude # レビュアーは Claude のまま
|
||
```
|
||
|
||
これにより、単一の piece 内で provider を混在させることができます。persona 名は movement 定義の `persona` キーに対してマッチされます。
|
||
|
||
## Piece カテゴリ
|
||
|
||
`takt switch` や piece 選択プロンプトでの UI 表示を改善するために、piece をカテゴリに整理できます。
|
||
|
||
### 設定方法
|
||
|
||
カテゴリは次の場所で設定できます。
|
||
- `builtins/{lang}/piece-categories.yaml` - デフォルトのビルトインカテゴリ
|
||
- `~/.takt/config.yaml` または `piece_categories_file` で指定した別のカテゴリファイル
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml または専用カテゴリファイル
|
||
piece_categories:
|
||
Development:
|
||
pieces: [default, simple]
|
||
children:
|
||
Backend:
|
||
pieces: [expert-cqrs]
|
||
Frontend:
|
||
pieces: [expert]
|
||
Research:
|
||
pieces: [research, magi]
|
||
|
||
show_others_category: true # 未分類の piece を表示(デフォルト: true)
|
||
others_category_name: "Other Pieces" # 未分類カテゴリの名前
|
||
```
|
||
|
||
### カテゴリ機能
|
||
|
||
- **ネストされたカテゴリ** - 階層的な整理のための無制限の深さ
|
||
- **カテゴリごとの piece リスト** - 特定のカテゴリに piece を割り当て
|
||
- **その他カテゴリ** - 未分類の piece を自動収集(`show_others_category: false` で無効化可能)
|
||
- **ビルトイン piece フィルタリング** - `enable_builtin_pieces: false` ですべてのビルトインを無効化、または `disabled_builtins: [name1, name2]` で選択的に無効化
|
||
|
||
### カテゴリのリセット
|
||
|
||
piece カテゴリをビルトインのデフォルトにリセットできます。
|
||
|
||
```bash
|
||
takt reset categories
|
||
```
|
||
|
||
## Pipeline テンプレート
|
||
|
||
Pipeline モード(`--pipeline`)では、ブランチ名、コミットメッセージ、PR 本文をカスタマイズするテンプレートをサポートしています。
|
||
|
||
### 設定方法
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml
|
||
pipeline:
|
||
default_branch_prefix: "takt/"
|
||
commit_message_template: "feat: {title} (#{issue})"
|
||
pr_body_template: |
|
||
## Summary
|
||
{issue_body}
|
||
Closes #{issue}
|
||
```
|
||
|
||
### テンプレート変数
|
||
|
||
| 変数 | 使用可能な場所 | 説明 |
|
||
|------|--------------|------|
|
||
| `{title}` | コミットメッセージ | Issue タイトル |
|
||
| `{issue}` | コミットメッセージ、PR 本文 | Issue 番号 |
|
||
| `{issue_body}` | PR 本文 | Issue 本文 |
|
||
| `{report}` | PR 本文 | Piece 実行レポート |
|
||
|
||
### Pipeline CLI オプション
|
||
|
||
| オプション | 説明 |
|
||
|-----------|------|
|
||
| `--pipeline` | pipeline(非インタラクティブ)モードを有効化 |
|
||
| `--auto-pr` | 実行後に PR を作成 |
|
||
| `--skip-git` | ブランチ作成、コミット、プッシュをスキップ(piece のみ実行) |
|
||
| `--repo <owner/repo>` | PR 作成用のリポジトリを指定 |
|
||
| `-q, --quiet` | 最小出力モード(AI 出力を抑制) |
|
||
|
||
## デバッグ
|
||
|
||
### デバッグログ
|
||
|
||
`~/.takt/config.yaml` で `debug_enabled: true` を設定するか、`.takt/debug.yaml` ファイルを作成してデバッグログを有効化できます。
|
||
|
||
```yaml
|
||
# .takt/debug.yaml
|
||
enabled: true
|
||
```
|
||
|
||
デバッグログは `.takt/logs/debug.log` に NDJSON 形式で出力されます。
|
||
|
||
### 詳細モード
|
||
|
||
空の `.takt/verbose` ファイルを作成すると、詳細なコンソール出力が有効になります。これにより、デバッグログも自動的に有効化されます。
|
||
|
||
または、設定ファイルで `verbose: true` を設定することもできます。
|
||
|
||
```yaml
|
||
# ~/.takt/config.yaml または .takt/config.yaml
|
||
verbose: true
|
||
```
|