1.8 KiB
1.8 KiB
llm-worker-rs 開発instruction
パッケージ管理ルール
- クレートに依存関係を追加・更新する際は必ず
cargoコマンドを使い、Cargo.tomlを直接手で書き換えず、必ずコマンド経由で管理すること。
worker-types
worker-types クレートには次の条件を満たす型だけを置く。
-
共有セマンティクスの源泉
- ランタイム(
worker)、proc-macro(worker-macros)、外部利用者のすべてで同じ定義を共有したい値型。 - 例:
BlockId,ProviderEvent,ToolArgumentsDeltaなどイベント/DTO群。
- ランタイム(
-
シリアライズ境界を越えるもの
- serde経由でプロセス外へ渡したり、APIレスポンスとして公開するもの。
- ロジックを持たない純粋なデータキャリアに限定する。
-
依存の最小化が必要な型
serde,serde_json程度の軽量依存で収まる。
-
マクロが直接参照する型
- 属性/derive/proc-macro が型に対してコード生成する場合は
worker-macros->worker-typesの単方向依存を維持するため、対象型をworker-typesに置く。
- 属性/derive/proc-macro が型に対してコード生成する場合は
-
副作用を伴わないこと
worker-types内では I/O・状態保持・スレッド操作などの副作用を禁止。- 振る舞いを持つ場合でも
implは純粋な計算か軽量ユーティリティのみに留める。
この基準に当てはまらない型(例えばクライアント状態管理、エラー型で追加依存が必要、プロバイダ固有ロジックなど)は
worker クレート側に配置し、どうしても公開が必要なら worker
経由で再エクスポートする。 何にせよ、worker ->
worker-typesの片方向依存を維持すること。