teapot-coding-agent 0.26.14 → 0.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -3
- package/dist/agent/agent.js +85 -14
- package/dist/agent/tools.js +11 -1
- package/dist/log/events.js +41 -7
- package/dist/master.js +31 -0
- package/dist/server/api.js +45 -25
- package/package.json +1 -1
- package/public/assets/index-B7AL8hNs.css +1 -0
- package/public/assets/{index-C1UUe1T-.js → index-CaKIcOkZ.js} +19 -19
- package/public/assets/index-CaKIcOkZ.js.map +1 -0
- package/public/assets/{shiki-BxZS8Zdw.js → shiki-B6zAhgc_.js} +2 -2
- package/public/assets/{shiki-BxZS8Zdw.js.map → shiki-B6zAhgc_.js.map} +1 -1
- package/public/index.html +2 -2
- package/README.ja.md +0 -243
- package/public/assets/index-C1UUe1T-.js.map +0 -1
- package/public/assets/index-DBx_UTjS.css +0 -1
package/public/index.html
CHANGED
|
@@ -20,8 +20,8 @@
|
|
|
20
20
|
} catch (e) { /* private mode etc — keep defaults */ }
|
|
21
21
|
})();
|
|
22
22
|
</script>
|
|
23
|
-
<script type="module" crossorigin src="/assets/index-
|
|
24
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
23
|
+
<script type="module" crossorigin src="/assets/index-CaKIcOkZ.js"></script>
|
|
24
|
+
<link rel="stylesheet" crossorigin href="/assets/index-B7AL8hNs.css">
|
|
25
25
|
</head>
|
|
26
26
|
<body>
|
|
27
27
|
<div id="root"></div>
|
package/README.ja.md
DELETED
|
@@ -1,243 +0,0 @@
|
|
|
1
|
-
# teapot 🫖
|
|
2
|
-
|
|
3
|
-
**OpenAI互換APIを使って、複数の自律コーディングAIをブラウザから常駐・並列運用する軽量ハーネス**
|
|
4
|
-
|
|
5
|
-
> 5分で試す → [クイックスタート](#-クイックスタート) · 詳細は[リファレンス](#-リファレンス)
|
|
6
|
-
|
|
7
|
-
[English README](README.md)
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 🚀 クイックスタート
|
|
12
|
-
|
|
13
|
-
### 1. インストール
|
|
14
|
-
|
|
15
|
-
Node.js **24以上** が必要です。
|
|
16
|
-
|
|
17
|
-
```sh
|
|
18
|
-
npm install -g teapot-coding-agent
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
### 2. 起動
|
|
22
|
-
|
|
23
|
-
```sh
|
|
24
|
-
teapot
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
→ **http://localhost:7788** を開くと**セットアップウィザード**が走るので、
|
|
28
|
-
プロバイダ → APIキー → モデル → 最初のエージェントの順に入力するだけ。
|
|
29
|
-
configファイルは自動で書かれます(手編集不要)。
|
|
30
|
-
|
|
31
|
-
<details>
|
|
32
|
-
<summary>自分でconfigを書きたい場合</summary>
|
|
33
|
-
|
|
34
|
-
```json
|
|
35
|
-
{
|
|
36
|
-
"providers": {
|
|
37
|
-
"openrouter": {
|
|
38
|
-
"baseUrl": "https://openrouter.ai/api/v1",
|
|
39
|
-
"apiKey": "sk-or-あなたのキー",
|
|
40
|
-
"model": "anthropic/claude-sonnet-4"
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
"defaultProvider": "openrouter",
|
|
44
|
-
"agents": [
|
|
45
|
-
{ "id": "main", "workspace": "/home/you/my-project" }
|
|
46
|
-
]
|
|
47
|
-
}
|
|
48
|
-
```
|
|
49
|
-
|
|
50
|
-
保存先: `~/.config/teapot-coding-agent/config.json`(CLI引数や `$TEAPOT_CONFIG` でも可)。
|
|
51
|
-
雛形: [`teapot.config.example.json`](teapot.config.example.json)
|
|
52
|
-
configが存在するとウィザードはスキップされ、エージェントが即座に始動します。
|
|
53
|
-
|
|
54
|
-
</details>
|
|
55
|
-
|
|
56
|
-
### 3. 使う
|
|
57
|
-
|
|
58
|
-
- ウィザードが作った `#main` を左パネルからクリック
|
|
59
|
-
- 入力欄に日本語で指示(例: 「このバグを直してテストも通して」)
|
|
60
|
-
- エージェントがファイル読み書き・bash実行・テストを自走します
|
|
61
|
-
|
|
62
|
-
便利なキー: `t` ターミナル · `d` 右パネル · `/` コマンド · `Esc` 中断
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 🤔 これは何?
|
|
67
|
-
|
|
68
|
-
**「このリポジトリのバグ全部調べて、テスト通るまで直して」のような長時間自走タスクを、プロジェクトごとに並列で走らせるための箱**です。
|
|
69
|
-
|
|
70
|
-
```text
|
|
71
|
-
├─ agent: android ── ~/projects/android-app
|
|
72
|
-
├─ agent: kernel ── ~/projects/kernel
|
|
73
|
-
└─ agent: web ── ~/projects/film-sims-web
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
各エージェントは独立したワークスペースを持ち、Discord風UIのチャンネルとして動きます。Claude CodeやCodex CLIのラッパーではなく、**teapot自身がエージェントルーループ(read_file / edit_file / apply_patch / bash / read_url / memory / skills)を実装**しています。
|
|
77
|
-
|
|
78
|
-
### 特徴
|
|
79
|
-
|
|
80
|
-
| | teapot | Claude Code等のCLI |
|
|
81
|
-
|---|---|---|
|
|
82
|
-
| 形態 | 常駐サーバー + Web UI | 対話型CLI |
|
|
83
|
-
| 複数エージェント | ✅ 同時並列 | 基本1セッション |
|
|
84
|
-
| モデル混在 | ✅ エージェント毎に指定 | 固定 |
|
|
85
|
-
| 長時間継続 | ✅ JSONLログから自動復元 | 手動でのセッション管理が必要 |
|
|
86
|
-
| 定期タスク(cron) | ✅ 15秒tick | ❌ |
|
|
87
|
-
|
|
88
|
-
エージェントには以下が使えます:
|
|
89
|
-
|
|
90
|
-
- ファイル読み書き / 複数ファイルへのパッチ適用(apply_patch)
|
|
91
|
-
- bash実行(git / build / test)
|
|
92
|
-
- Webページ読み取り(read_url)
|
|
93
|
-
- Goal(長期目標+自動継続+完了監査) · Memory · Todo · Skills
|
|
94
|
-
- サブエージェント spawn(`@persona タスク`)
|
|
95
|
-
- 定期タスク(例: 「毎30分 git statusとテストを確認して報告」)
|
|
96
|
-
|
|
97
|
-
---
|
|
98
|
-
|
|
99
|
-
## ⚠️ セキュリティ(読んでください)
|
|
100
|
-
|
|
101
|
-
エージェントは `bash` とファイル書き換え権限を持つため、`rm` や `npm install` も実行できます。
|
|
102
|
-
|
|
103
|
-
- **専用Linuxユーザーでの運用を想定**しています
|
|
104
|
-
- 大事なリポジトリは渡す前に `git commit` しておくのが安全
|
|
105
|
-
- workspace外のファイル操作は制限されます(safeJoin)
|
|
106
|
-
- 既定ではlocalhost限定listen。LAN公開する場合は **必ず** `--host 0.0.0.0` と同時に `TEAPOT_API_TOKEN`(またはconfigの `password`)を設定:
|
|
107
|
-
|
|
108
|
-
```sh
|
|
109
|
-
TEAPOT_API_TOKEN=mysecret teapot --host 0.0.0.0 --port 7788
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
---
|
|
113
|
-
|
|
114
|
-
<a id="-リファレンス"></a>
|
|
115
|
-
## 📖 リファレンス
|
|
116
|
-
|
|
117
|
-
<details>
|
|
118
|
-
<summary><b>設定リファレンス</b></summary>
|
|
119
|
-
|
|
120
|
-
| キー | 既定 | 説明 |
|
|
121
|
-
|---|---|---|
|
|
122
|
-
| `port` | 7788 | listenポート(env `TEAPOT_PORT`, CLI `--port/-p`) |
|
|
123
|
-
| `host` | 127.0.0.1 | bindアドレス(env `TEAPOT_HOST`, CLI `--host`; `0.0.0.0`=LAN公開) |
|
|
124
|
-
| `dataDir` | `~/.local/share/teapot-coding-agent` | セッションログ等(env `TEAPOT_DATA_DIR`) |
|
|
125
|
-
| `providers.<name>` | — | `{ baseUrl, apiKey, model? }` のOpenAI互換エンドポイント |
|
|
126
|
-
| `defaultProvider` | — | agent未指定時のプロバイダ |
|
|
127
|
-
| `agents[].id` | 必須 | URLキー兼表示名 |
|
|
128
|
-
| `agents[].workspace` | 必須 | 作業ディレクトリ |
|
|
129
|
-
| `agents[].provider` / `model` | 既定値 | エージェント個別の上書き |
|
|
130
|
-
| `agents[].contextWindowTokens` | 自動推定 | コンテキスト窓(UIゲージ・compact派生に使用) |
|
|
131
|
-
| `agents[].readOnly` | false | trueで書き込み系ツールを封印 |
|
|
132
|
-
| `agents[].autoContinue` | true | ラウンド後にゴールへ継続 |
|
|
133
|
-
| `contextTokenBudget` | 派生 | compact開始閾値(トークン数)。null/未設定=75%派生を推奨 |
|
|
134
|
-
| `maxSpawnDepth` | 3 | サブエージェントのネスト上限 |
|
|
135
|
-
| `password` | — | API認証(env `TEAPOT_API_TOKEN` が優先) |
|
|
136
|
-
| `tasks[]` | — | cronタスク `{ id, agent, schedule, prompt }` |
|
|
137
|
-
|
|
138
|
-
設定の探索順: CLI引数 → `$TEAPOT_CONFIG` → `~/.config/teapot-coding-agent/config.json` → `./teapot.config.json`
|
|
139
|
-
|
|
140
|
-
env上書き: `TEAPOT_PORT` `TEAPOT_API_KEY` `TEAPOT_BASE_URL` `TEAPOT_MODEL` `TEAPOT_CONFIG_DIR` `TEAPOT_DATA_DIR`
|
|
141
|
-
|
|
142
|
-
</details>
|
|
143
|
-
|
|
144
|
-
<details>
|
|
145
|
-
<summary><b>複数モデルの混在(teapotらしい使い方)</b></summary>
|
|
146
|
-
|
|
147
|
-
```jsonc
|
|
148
|
-
{
|
|
149
|
-
"providers": {
|
|
150
|
-
"openrouter": { "baseUrl": "https://openrouter.ai/api/v1", "apiKey": "sk-or-..." },
|
|
151
|
-
"local": { "baseUrl": "http://localhost:8080/v1", "apiKey": "llama.cpp" }
|
|
152
|
-
},
|
|
153
|
-
"defaultProvider": "openrouter",
|
|
154
|
-
"agents": [
|
|
155
|
-
{ "id": "coder", "workspace": "~/proj", "model": "anthropic/claude-sonnet-4" },
|
|
156
|
-
{ "id": "reviewer", "workspace": "~/proj", "provider": "local" }
|
|
157
|
-
]
|
|
158
|
-
}
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
OpenAI互換なら何でもOK: OpenRouter / OpenAI / Ollama / vLLM / llama.cpp。
|
|
162
|
-
openrouter.ai 宛にはアプリ帰属ヘッダを自動付与。
|
|
163
|
-
|
|
164
|
-
モデルのコンテキスト窓は起動時に `/v1/models` から自動推定され、runtimeパネルの使用率ゲージとcompact派生に反映されます。
|
|
165
|
-
|
|
166
|
-
</details>
|
|
167
|
-
|
|
168
|
-
<details>
|
|
169
|
-
<summary><b>コンテキスト管理(長時間作業の仕組み)</b></summary>
|
|
170
|
-
|
|
171
|
-
トークン予算(既定: ウィンドウの75%、不明時96k)を超えると、古いターンをLLM要約で圧縮します。Goal/Memory/Todoは別ファイル保持なので:
|
|
172
|
-
|
|
173
|
-
```text
|
|
174
|
-
1日目: 調査 → 修正 → テスト失敗 → 別アプローチ → サーバー再起動
|
|
175
|
-
2日目: 続きから再開
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
という運用ができます。いわば「常駐する開発担当AI」です。
|
|
179
|
-
|
|
180
|
-
</details>
|
|
181
|
-
|
|
182
|
-
<details>
|
|
183
|
-
<summary><b>HTTP API</b></summary>
|
|
184
|
-
|
|
185
|
-
```
|
|
186
|
-
GET /api/agents 一覧
|
|
187
|
-
POST /api/agents 作成 { workspace, id?, provider?, model?, start? }
|
|
188
|
-
GET /api/agents/:id/events?limit=300 イベント( ?before=<id> で上方ページング )
|
|
189
|
-
GET /api/agents/:id/branches ブランチ一覧
|
|
190
|
-
GET /api/agents/:id/file?path= テキスト取得
|
|
191
|
-
PUT /api/agents/:id/file?path= 保存 { content, baseContent? } (競合409)
|
|
192
|
-
GET /api/agents/:id/raw?path= メディア生データ
|
|
193
|
-
GET /api/agents/:id/tree ファイルツリー
|
|
194
|
-
POST /api/agents/:id/prompt 送信 { text, start? } → { promptId }
|
|
195
|
-
POST /api/agents/:id/prompt/cancel 取り消し { promptId } (送達済みは409)
|
|
196
|
-
POST /api/agents/:id/goal { text?, status?, verify? }
|
|
197
|
-
POST /api/agents/:id/start|stop|fork|load
|
|
198
|
-
DELETE /api/agents/:id 削除(ログ保持)
|
|
199
|
-
GET /api/metrics RSS / heap / loadavg
|
|
200
|
-
WS /api/ws ライブイベント配信
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
全APIは任意のBearer認証に対応。
|
|
204
|
-
|
|
205
|
-
</details>
|
|
206
|
-
|
|
207
|
-
<details>
|
|
208
|
-
<summary><b>セッションログ(JSONL)</b></summary>
|
|
209
|
-
|
|
210
|
-
`cat`/`jq` で読める追記-only JSONL:
|
|
211
|
-
|
|
212
|
-
```jsonl
|
|
213
|
-
{"v":1,"id":"e1","type":"prompt","data":{"source":"user","text":"..."}}
|
|
214
|
-
{"v":1,"id":"e2","type":"tool_call","data":{"callId":"…","name":"bash","argsRaw":"…"}}
|
|
215
|
-
{"v":1,"id":"e3","type":"tool_result","data":{"callId":"…","ok":true,"durationMs":117}}
|
|
216
|
-
{"v":1,"id":"e4","type":"message","data":{"role":"assistant","content":"…"}}
|
|
217
|
-
```
|
|
218
|
-
|
|
219
|
-
各イベントは `parent` で連結、フォークは分岐点を共有。`goal.md` `memory.md` `todo.md` も同ディレクトリに保存されます。
|
|
220
|
-
|
|
221
|
-
</details>
|
|
222
|
-
|
|
223
|
-
<details>
|
|
224
|
-
<summary><b>開発(リポジトリから)</b></summary>
|
|
225
|
-
|
|
226
|
-
```sh
|
|
227
|
-
pnpm install
|
|
228
|
-
pnpm dev # TSをネイティブ実行
|
|
229
|
-
pnpm dev-web # Vite HMR(別terminal)
|
|
230
|
-
pnpm test # node --test
|
|
231
|
-
pnpm build # tsc + vite build → dist/ + public/
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
構成: `src/master.ts`(起動/cron/config) · `src/agent/`(ループ/ツール) ·
|
|
235
|
-
`src/server/api.ts`(Hono REST+WS) · `frontend/`(SolidJS) · `test/`(node:test)
|
|
236
|
-
|
|
237
|
-
</details>
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## License
|
|
242
|
-
|
|
243
|
-
AGPL-3.0-or-later — [LICENSE](LICENSE)
|