25 lines
1003 B
Markdown
25 lines
1003 B
Markdown
# ツールの動的追加/削除
|
||
|
||
## 背景
|
||
|
||
現状の `ToolServer` はツールの登録のみで、実行中の unregister / replace ができない。
|
||
エージェントが状況に応じてツールセットを切り替えるユースケース(例: フェーズ遷移、権限変更)に対応できない。
|
||
|
||
## 方針
|
||
|
||
`ToolServer` / `ToolServerHandle` に動的操作を追加する。
|
||
|
||
```rust
|
||
// 削除
|
||
tool_server.unregister("tool_name")?;
|
||
|
||
// 置換(同名ツールを新しい実装で上書き)
|
||
tool_server.replace(new_tool_definition)?;
|
||
```
|
||
|
||
## 設計ポイント
|
||
|
||
- 実行中のツール呼び出しとの競合を考慮(呼び出し中のツールは削除をブロックするか、完了を待つか)
|
||
- LLM に渡すツール定義リストは次の `PreLlmRequest` 時点で反映される(遅延反映で十分)
|
||
- Builder API(worker-builder-api.md)との整合: `reconfigure()` で静的に差し替える方法と、動的に差し替える方法の使い分け
|