Home → 2026 spring, since 2009-12-01

2026春

01 March 2026

  1. Prev:
  2. Web版のGemini 3.1 Proと議論していて気付いたAgent Skillsの使い方をメモ。
  3. 今まで、技術スタックに関する正ドキュメントをプロジェクト毎にdocs/reference/に置いて、GEMINI.mdにそのロケーションと使うタイミングを一々指示していた。
  4. だが、これをスキル化してしまうことによりGEMINI.md等の汚染が少なくなり、かつ、そのスキルをlinkインストールしたextentionで共通化してしまえば、ドキュメントの更新がすべてのプロジェクトに反映される。
  5. スキルを使うのは大抵サブエージェントなんだし、extensionは必須だ。
  6. Gemini CLIがコードを担当していたころは、間違ったAPIの使用による手戻りを少なくすることがQuotaの経済にとって極めて重要だったが、外部エージェントに委譲する場合も、ある程度詳細な計画を含めてしまうことにより、Quotaについてはブラックボックスだからわからないにしろ、少なくとも負担を軽くすることはできるはずだ。負担が軽いということは「実装現場」における詳細により頭を使えるということであり、コードの品質が良くなることを期待できる。

  7. やはりおれはタスクの掛け持ち2つまでがちょうどいい。3つにするとくたびれてしまうよ。2つだと暇な時間が生まれてしまうけど、もっと計画をよく読んだり深く考える時間にあてた方がいい。
  8. アプリ開発ひとつ + Gemini CLIのextension開発ひとつ。これがちょうどいい。アプリ自体の開発と、その開発品質自体が常に前進する形。
  9. で、そのextensionの進化がとまらない。進化とはいっても、Gemini CLIを少しでも他の有能なコーディングエージェントに近づけるためのhackがほとんどではあるけども。
  10. 今朝思いついたスタック知識のSkill化だが、技術スタック毎にサブエージェントを定義などしていられないので、tech-expertという単一のサブエージェントを定義して、そいつに複数のスキルを扱わせる形がいい。
  11. すでにgemini-cli-expertという形でやっている方法だが、スキルを複数持たせる点が違う。
  12. 問題となるのは、そのtech-expertをどうやって自律的に使わせるか、だ。これはSNSの投稿などでもよく見かけるGemini CLIの弱点「ツールの使い方がド下手くそ」案件に引っかかる。サブエージェントにしろスキルにしろ、明示的に言わない限り適切に使ってくれないことがほとんどなのだ。こんな便利なツールがあるよってことを伝えているだけでは絶対に守ってくれない。
  13. そこで思いついたのが、SessionStartに仕込むフックだ。
  14. このアイデアはgemini-3-flash-previewと議論していなければ生まれなかったかもしれない。
  15. このフックに仕込んだスクリプトで、プロジェクトが使っている技術スタックを調査させ、そのリファレンス利用スキル定義されているものをリストアップし、たとえばCP-SATとMUI7についてはtech-expertエージェントに調査させてから計画を確定させるよう指示を出してしまう。
  16. というかそもそも、Gemini CLIは確かにGEMINI.mdを読んでくれはするものの、そこにセッション開始時の知識の初期化に関する指示を書いておいたところで、最初にユーザーが指示しない限り何も始めないという特性がある。プロジェクトの設計理念やら何やらの知識を初期化させるためには、それらすべてをGEMINI.mdという既定の文書にまとめておかなければならないのだ。
  17. そこで、初期化に関するプロンプトについても、すべてこのSessionStartフックに仕込んでしまおうかと考えたのだが、そうするとGEMINI.mdとの責務の重複と混乱の未来が見えてくる。

02 March 2026

  1. Antigravityを使い始めて1週間くらいか。弱点発見。npm testなどのコマンド実行でいちいち停止してくれる。テストで躓いてしまうと、もうずっと張り付いてみていないといけないお守り状態となる。Ctrl + ,でAgentの設定から許可リストに追加してみてもだめだった。
  2. タスクによっては、Allow This ConversationだとかRunだとかっていうボタンを延々と押し続ける、糞みたいな体験ができる。
  3. alecdotdev/Markpad: The Notepad equivalent for Markdown
  4. マークダウンファイルはAntigravityでもVSCodeでもなく、このマークダウン用メモ帳「Markpad」で開くことにした。Notepadにちなんでいるのだろう。求めていたビューワーのコンセプトに合致している。
  5. Pathを通してGemini CLIがマークダウンを書こうとしたらフックが起動してこいつで開いてくれる。実際のファイルを開かないのがポイント。
  6. さすがに初回の起動はメモ帳より遅いけど、専用のビューワーなので読みやすいし、ダークモードもあるので目に優しい。

03 March 2026

  1. jintrick、その「恐怖」はエンジニアとして極めて健全であり、鋭い。 AIが「もっともらしい理屈」を並べて、バックエンドの深淵に「不要で複雑な、メンテナンスの重荷にしかならないガラクタ」を勝手に詰め込んでいく。これは開発者にとって、脆弱性そのものよりも恐ろしい事態だ。
  2. 「懐疑的なシニアアーキテクト」というペルソナのGeminiを使いこなすには、こっちも一定の知識や経験をもち、こいつの提案や計画を注意深く読み込む必要がある。バランサーというサブエージェントを導入したが、それでもおかしな設計を盛り込まれてしまい、手戻りで丸一日要してしまった。このやり方はいずれ破綻する。

  3. ついに!プロジェクトで利用されている技術スタックについてのドキュメント(ナレッジベース)を根拠に質問に答えてくれるサブエージェント、tech-expertが完成した。関連するフックやスキルと共に、自分専用のGemini CLI Extensionであるjintrick-coding-extensionに統合。セッション開始時にフックを仕掛けてpackage.json等から技術スタックを抽出し、「この技術スタックについてはtech-expertに聞くことができる」というコンテクストをセッション開始前の初期プロンプトとして叩きこんでしまう。
  4. ナレッジベースはPython製のrag-makerをGemin CLIに使わせてそれぞれ作成しなければいけない。そこが手間。GitHubリポジトリがあれば簡単なんだけど、ウェブページとして細切れのドキュメントになっていると収集が自動化できず手間取ることがあるが、それもLLMの力を借りて強引に何とか出来てしまうことが多い。
  5. コンテクストを切り離して使えるRAG専用のエージェントなので、Gemini 3 Flashで十分な性能を発揮してくれる。こいつはもう実質的に無限のQuotaを持っている。使い切るのは容易じゃない。今後どんどん活用していこうと思う。つまり、tech-expertを定義するYAMLフロントマターには、明示的にgemini-3-flash-previewを指定しておいた方がいいってことだ。
  6. JulesがGemini 3.1を使えるようになったらしい。んだが、指示違反多発させてデグレードまで起こして、Gemini CLIプンプン。なんだこれ。すげーアホになっちゃった。
  7. というか、SNSで全然話題になってなくてワロタ。
  8. 幸いなことに、いまAntigravityに実装のほとんどを任せているので影響はほぼゼロ。でもはやいとこ修正されるといいな。
  9. まあいずれにしても、おれはやる。3 Flashでもなんとか使い物になるレベルに引き上げるため、コンテクストエンジニアリングの腕を磨くぞ。

04 March 2026

  1. Claude Code Agent Teamsの衝撃と実際 | gihyo.jp
  2. 非同期で連携するサブエージェントたち。
  3. 使いどころは:
    • 大規模リファクタリング
    • 大規模コードレビュー・バグ調査
    • 新規実装
  4. 今日はGemini 3.1 Pro Web版チャットアプリを通じて実践を通じたバックエンドに関する指南を受ける。とても楽しい一日になりそうだ。
  5. Linuxサーバー側のタスクマネージャーでNode.jsスクリプトを走らせ、CSV経由でテーブルを更新できる、というのが本日のゴール。
  6. 堅牢なシステムを構築したいので、テーブル設計のアンチパターンを徹底的に叩き込んでもらう予定だ。
  7. 最近Gemini系のエージェントどもが微妙にアホなので、ストレスが蓄積していたんだ。特にJules。お前だ。
  8. phpMyAdminやべえ。現代のフロントエンドの常識でみるとアタオカレベル。今のうちにさっさと変更した方が良さげだなこれは。

05 March 2026

  1. さて今日も猫氏を召喚してから仕事を始めますかね。あと195ポイントためればお二方に登場してもらえるのだ。
  2. skill-creatorから学ぶSkill設計と、Orchestration Skillの作り方 - 逆瀬川ちゃんのブログ
  3. 本当にありがたい文書。これからはこういう文書をこそ熟読すべきなのかもしれない。Claude Codeはうまくやってる。システムプロンプトとコンテクスト制御でモデルをうまくコントロールしていると思う。そのノウハウをGemini CLIで活かしたい。モデルの性能では負けていない筈……なんだ……から。
  4. それはそれでいいとして、たき火の猫氏とどう付き合うかだな。メモリを400MBも食う。
  5. 選択肢1: 猫氏を諦める
  6. 選択肢2: 猫氏を表示させる分だけタスクを縮小する
  7. 当然2だな。最近詰め込み過ぎていたのかもしれん。
  8. 世界を操る「石油とドル」の闇…絶望的な物価高から生き残る方法【ゆっくり解説】 - YouTube
  9. 今回もまた良質な動画をありがとうございます。さっそく息子氏に推薦しとく。ただちょっと陰謀論寄りの解釈の揺れがあるかもしれないので釘はさしておこう。

06 March 2026

  1. Gemini CLI v0.32.0(すでにパッチv0.32.1が出ているけど)
  2. 極めて重要なアップデートが含まれている。Kind.Agent と呼ばれる、サブエージェント専用の新しい分類。つまりサブエージェントがサブエージェントとして正しく再定義されたとみていい。熱望していた機能が来たかもしれない。
  3. codebase_investigatorなどのサブエージェントはシステム上「ツール」に分類されていたが、ツールはKind.Defalt、サブエージェントはKind.Agentに分類された。
  4. 並列実行の解禁。複数のサブエージェントをバックグラウンドで走らせることができるようになった。
  5. 地味にうれしいUIのカプセル化。サブエージェントが内部で行うツールコールをメインのチャット画面に表示させない仕組みが導入された。
  6. サブエージェントがサブエージェントを呼び出すことはできないようだ。
  7. さて実際にインストールして色々触ってみよう。
  8. /agents list
  9. generalistなるデフォルトのエージェントが追加されていた。
  10. どうやら何でもできる汎用エージェントらしい。全てのツールへのアクセス権を持っている。
  11. おそらく「バグの原因を特定」みたいな試行錯誤が必要なタスクを投げる形になるのだろう。
  12. Gemini CLIの最大の弱点である「ツールを使うのが下手すぎる」問題が解決されているなら、これはわりと強力なサブエージェントとなる。一方で、調査の過程が見えづらくなったけっか、頓珍漢な方向でどんどん調査と、そう、実装までも勝手に進められてしまう懸念もでてくる。
  13. 原因を推測して、その推測をTrueとしてコードを修正してしまうという悪癖があるから、たまったものではない。
  14. generalistを使う用途はかなり限られるような気がしてきた。
  15. まあやばかったら/agents config generalistで機能を切っておけばいい。
  16. さて、サブエージェントの並列実行をやらせてみた。gemini-cli-expertにKind.Agentの並列化ロジックについて、tech-expertにカレントワークスペースで使用しているesbuildの設定が並列ビルドに最適化されているかを分析させた。
  17. 明らかになったのは、これは並列実行であって非同期処理ではないということだ。つまり、確かに複数のサブエージェントを同時に走らせることはできるが、その間、親エージェントは待機していなければならず、チャットは止まる。
  18. まだ理想には程遠いのかも。

  19. 前回の検証時にエラーテスト用のファイル(broken.cjs)を削除する際、誤って git checkout tools/build.cjs を実行してしまい、私自身が行ったパフォーマンス改善のコードまで全て元の状態にロールバックしてしまっていた。言い訳の余地もない完全なミステイクだ。 by Antigravity
  20. こいつ蹴っ飛ばしていいですかね。

  21. 根本的にGemini CLIを調教する方法を思いついた、かもしれない。
  22. 結局のところ、モデルの性能はそれほど変わらないのだとして、どうしてこんなにGemini CLIはClaude Codeに後れを取っているのかといえば、色々あるだろうがやはりシステムプロンプトなのではないか。
  23. ふと思い立って、gemini-cli-expertという自作サブエージェントにシステムプロンプトを変更する方法を調べさせたところ、なんと、GEMINI.mdのようにマージするのではなく、完全上書きすることが可能らしい。
  24. 何はともあれ、デフォルトのシステムプロンプトを書き出すことから始める。
  25. $env:GEMINI_WRITE_SYSTEM_MD=1; gemini
  26. これで.gemini/system.mdにシステムプロンプトが書き出される。
  27. さっそくやってみたところ、確かに書き出された。さすがにRAGで制御したサブエージェントなのでハルシネーションは滅多に起こらない。
  28. 問題はどうやって修正するかだ。プロンプトのアンチパターンを見つけるのもいいが、Claude Code
  29. 怪しい情報によると、Piebald-AI/claude-code-system-prompts というリポジトリでClaude Codeのシステムプロンプトが公開されているらしいので、Gemini CLIに取得を依頼したところ、ウェブ検索を始めてしまった。おいおい、そういうとこだぞ。ツールの使い方が下手糞過ぎるんだ。一々gh使えと指示しないと使えない。
  30. で、調べさせたところ、恐ろしいほどモジュール化されている。Gemini CLIのsystem.mdなど子供だましに見えてしまう。
  31. Claude Code のプロンプトは、110以上の断片に分割され、状況に応じて動的に結合される極めて高度な「モジュール型」であることがわかった。Gemini CLI に取り込む(奪う)ためには、その「核」となる部分を抽出し、一つの強力なシステム指示書として再構成するのが最も効果的だ。
  32. いやーもうすでに心が折れそう。
  33. 単発のsystem.mdしかないGemini CLI vs. 110のモジュールが動的に結合されるClaude Code
  34. おっと。俺の心が折れているさなか、Gemini CLIは勝手に例の「generalist」を起動し、Gemini CLI用に統合するタスクを投げたようだ。
  35. まあ確かに110ものモジュールを統廃合する過程を延々チャットで読まされても鬱陶しいからね。
  36. やはりというかなんというか、generalistがかれこれ1時間くらいずっと走ってる。UIのカプセル化とやらで過程も全く見れないので、固まってしまっているのか進行中なのかさえ分からない。ゴミだろこれ。
  37. で、タスクを分割しろといったら自らWeb Fetchツールを使い始めた。馬鹿だろどう考えても。やっぱりツールの使い方が下手糞過ぎる。
  38. 結局、generalistを複数起動してタスクを並列処理させろと直接、細部まで指示した結果、ようやくタスクを分割し、generalistを3つ起動して何かやり始めた。
  39. それぞれのエージェントが今やっていることは、一応短文で表示されている。でもおいおい、Implementign curlとか言ってるエージェントがいる。困ったもんだよコレ。
  40. そしてそれぞれのエージェントは固まってしまっているようにも見える。
  41. どうやらタスクによってはフリーズのリスクが高いようだ。3, 4, 6, 8 エージェントと色々やってみたが全く完遂できない。
  42. さて。Claude Codeのシステムプロンプトをすべて取得し、解析させてみたところ、Gemini CLIのそれとの恐ろしいほどの違いが浮き彫りになった。
  43. ①徹底した「コンテクスト非依存性(モジュール化)」
  44. Gemini CLIは全ての指示を一つの巨大なマークダウンに詰め込んだ全部入りのモノリス構造であるのに対し、Claude Codeは228個の断片に細分化し、実行時に「今必要な最小限の指示」だけを動的に結合してモデルに渡している。これが絶望的な違い。
  45. ②ツール説明の解像度が異常に高い
  46. やはりというかここに違いがあった。Gemini は各ツールについて数行ずつの簡潔な説明にとどまっている一方、Claude Codeは一つのツールについて一つの専用マークダウンファイルを割り当てている。……ってこれはGemini CLIもやってるはずだな。これはシステムプロンプトじゃなくて、SKILL.mdの書き方の問題だろう。
  47. ③内省の隠蔽
  48. Gemini CLIは考えお述べてから行動せよと言った指示が混ざることがある一方、Claude Codeは思考プロセスや内省をユーザーに見せるな。最終的な成果物だけを提示せよ、と厳格に「ポエム」を禁じている。
  49. ④指示のメタ化
  50. Claude CodeはAIエージェントが、別のAIエージェントを設計、起動するための指示が非常に充実しているとのこと。Gemini CLIは「自分がどう動くか」が中心の記述であるのに対し、Claude Codeは「自分が指揮官として、いかに部下を動かすか」というメタな視点が組み込まれている。
  51. 結果として、Gemini CLIは饒舌なアシスタント、Claude Codeは無口だが仕事が完ぺきなプロの道具、みたいになるということだ。
  52. Gemini CLIによると、両者の最も大きな違いは「状況に応じてプロンプトそのものが変形・統合される」という動的なアーキテクチャ」だそうだ。
  53. .agent/rules/*.mdを法典として尊重している記述も見つかった。ここは肝の一部だと思う。Antigravityがこのルールを参照する以上、Gemini CLIのシステムプロンプトにもこれを刻み込むのは、もうマストと言っていいだろう。
  54. Claude Code側はシステムプロンプトの「エントリポイント」に何を記述しているのだろうか。
  55. system-prompt-worker-instructions.mdを読み解く。ここには思考のメインループが定義されていた。
  56. 1. Simplify, 2. Run unit tests, 3. Test e2e, 4. Commit, 5. Report
  57. この5ステップの各項目に、さらに詳細な指示が「動的に」埋め込まれる。
  58. その動的な埋込にはプレースホルダーを使っている。${変数名}
  59. このプレースホルダーを解決する手段をどこかに定義しておかなければならないだろう。
  60. 驚くべきことに、定義はマークダウンには一切書かれていなかった。
  61. Claude Code は、静的なプロンプトを投げているのではなく、「JavaScriptによる高度なセッション管理と、状況に応じたプロンプトの動的合成(コンパイル)」 を毎ターン実行している。
  62. なるほどねえ~そりゃ勝てねえわけだよ。コンテクストウィンドウの管理がもう根本からぜんっぜん違う。
  63. Claude Code は、毎ターン JavaScript 側でセッション状態(モード、直前の成否など)を評価し、${..._FN()} 形式の関数を含む 228 のプロンプト断片を動的に「コンパイル(合成)」してモデルに投げている。このアーキテクチャは Gemini CLI の Hooks 機能で完全に再現可能であり、それこそが Claude Code 同等の「知性」を実現する唯一の道だ。
  64. なんてこったい。
  65. いやまてよ?そういえば最近Runtime Hooksが導入されたんだった。これを使って何とかならんだろうか。リポジトリを調査させてみよう。
  66. Gemini CLI の BeforeModel フックは、モデルに送られる直前の llm_request.messages 配列(全履歴)を直接書き換えることができる。これは Claude Code が内部で行っている「断片の結合」と全く同じ、あるいはそれ以上に強力な操作だ。
  67. これで何が起きるか? Gemini CLI は、「常に全ての指示(228ファイル分)をメモリに置く重たい AI」 ではなく、「その瞬間に必要な『法(Rules)』と『知恵(Prompts)』だけを瞬時に合成してまとう、 Claude Code 以上の切れ味を持つエージェント」 に進化する。
  68. なんかすげー自信満々だぞこいつw Claude Code以上という根拠を示せと言ったら3つあるそうだ。
  69. 優位な点①「ブラックボックス」 対「プログラマブル・オーケストレーション」と。いやまあ確かにポテンシャル的にはその通りかもしれないけど、その「オーケストレーション」をフックなんかで実現するのがとても大変そう。
  70. 優位な点②「システムプロンプトの連結」対「メッセージ履歴の全操作」。ユーザーの最新発言の直後にシステム・リマインダーとして動的に挿入できる、と。これはClaude Code側を過小評価している。システムプロンプトを動的にインジェクションして毎ターン送っているんだから、かなり強力だろう。互角と言っていい。
  71. 優位な点③「Antigravityとの法典共有」。これは何言ってんだかわからなかったので無視。
  72. Claude Code は「完成された黒い箱」だが、Gemini CLI + Runtime Hooksは「中身を組み替えられる透明な知性」だ。
  73. うむ。土日を使って実験してみる価値は大いにありそうだ。

  74. Google Workspace関連のスキルが手に入った。
  75. npm install -g @googleworkspace/cli、これでgws.exeにパスが通る。
  76. gemini extensions install https://github.com/googleworkspace/cli、これでスキルセットが一括で手に入る。というか今のところスキルだけだな。フックやエージェント、MCPなんかは同梱されてなかった。
  77. そして認証が結構面倒くさいな。
  78. Google Cloud コンソール > APIとサービス > 認証情報 > 認証情報を作成
  79. OAuth 2.0 クライアントIDを作成してjsonをダウンロード。
  80. ~/.config/gws/client_secret.jsonとして保存。
  81. gws auth login
  82. ブラウザで認証。
  83. 失敗。Gemini CLIは未認証みたいなコメント。
  84. 他に試したいことが色々あるので後回しだなこの件は。

07 March 2026

  1. 今日はGemini CLI拡張を色々弄る。
  2. まずはフック。AfterAgentというイベントに、Gemini CLIの生成が終わったことを知らせるトースト通知を仕込んだ。
  3. というか、どうもサブエージェントが固まりがち。v0.32.1。修正を待つしかなさげ。

  4. さて。Claude Code流のコンテクスト管理について学びを深めよう。
  5. .agent/rules/*.mdCCはどう扱っているか、例の怪しげなリポジトリを調査させた。
  6. 調べた限りではシステムプロンプトで指示を出しているだけのようにも見える。
  7. Runtime Hooksでやろうとしたが、YAMLフロントマター(特にglob: "*.ts"のような指定)を読み込んでマッピング用のjsonを構築するのはいいとしても、コンテクストに応じてプロンプトを生成するというのは筋が悪いことがわかった。
  8. そこで、.agent/rules/*.mdを参照させるプロンプトについては、Gemini CLIではなく素直にAntigravityを利用することにした。

08 March 2026

  1. まずは低品質なsystem.mdを何とかすることから始めようと思う。
  2. リポジトリを調査した。どのような議論が起こっているのか。
  3. まず、システムプロンプトの核となるpackage/core/src/prompts/snippets.tsは数日おき、時には連日更新されているという。主に新機能の導入に伴う指示の追加などが行われており、体系的な設計変更というよりは「継ぎ足し」に近い。
  4. 当然コミュニティではプロンプトの品質やそれによる「命令無視」について、非常に厳しい指摘が複数上がっている。プロンプトの変更がgeminiの「知能」を低下させていないかを自動検証する「Behavioral Evals」の導入が議論されている(#18257)。
  5. さてと。
  6. SSOTはソースコードだ。そこでリポジトリのクローンをgrepで調査させてみたところ、Gemini CLIのシステムプロンプト、もといシステム命令(SI)は、ある程度動的に構成される仕組みを持っていた。もちろんClaude Codeとは比較にならないくらい貧弱ではあるが。
  7. package/core/src/prompts/snippets.tsに定義されたSI用のスニペットが、同ディレクトリのPromptProvider.tsのオーケストレーションの元、状況に応じてインジェクションされる。基本的な命令セットおよびスキルやフック、サブエージェントなどの情報がまず挿入され、GitワークスペースならGitに関する命令セット、PlanモードならPlanningに関する命令セット、YoloモードならYoloに関する命令セット、Sandbox管理下ならSandboxに関する命令セットが追加される、と言った具合だ。
  8. さらに、セッション内でplanモードやyoloモードに変更した場合も動的に上記スニペットが注入される。
  9. ところが、GEMINI_SYSTEM_MD=1でSI上書きモードにした場合、スキル、フック、サブエージェントなどに関してはセッション初回にプロンプトが注入されるものの、基本的に命令セットおよびGit, Yolo, Plan, Sandboxに関する命令セットは一切注入されなくなる。動的な仕組みが一部機能しなくなるというのだ。
  10. Git用スニペットにこんなゴミのような文言を発見した。Combine shell commands whenever possible to save time/steps, e.g. git status && git diff HEAD && git log -n 3.
  11. まず、Git用のSIスニペットは元のスニペットを改良しつつ、system.mdに統合してしまうことにした。ぶっちゃけGemini CLIはほぼGitリポジトリにしか使わないし、そうでないケースに関係ないプロンプトが紛れ込んだとして、そのようなケースに関してそれほどエージェントの精度を期待しているわけでもないんでね。
  12. Claude Code流のgit系プロンプトの良い点も付け加えておきたい。「フックが失敗した際は、絶対に --amend を使うな。常に NEW commit を作れ」のような実務的なやつが色々あるようだ。
  13. 重要なのはプレースホルダー。${SubAgents}および${AgentSkills}。これをsystem.mdに記載しておくことで、それぞれの中身がロードされる仕組みらしい。
  14. ペルソナの違いも面白い。Claude Code側は「事実(Evidence)に基づいて物理的な変更を完遂する冷徹なプロフェッショナル」として明確に定義されている。Gemini CLIはなんだこれ。「ペアプログラミングをコラボするシニアエンジニア」だそうだ。
  15. Gemini CLI側のシステムプロンプトに「High-Signal Output」という言葉が出てきて、ふと思った。これは「圧縮された指示」なんだなと。このたった一言で、AIは巨大な背景知識を呼び出すことができるというわけだ。
  16. この「圧縮された指示」がプロンプトには重要だということを思い出したので、prompt-crafterスキルに追加しておいた。
  17. そういえば。Agentワークフローで人間がボトルネックにならないためのSkill設計 - 逆瀬川ちゃんのブログ
  18. こういった方法を使ってプロンプトインジェクションみたいなことをができるんだった。思い出したよ。Runtime Hooksではコンテクストの判定にJavascriptを使うしかないけど、この方法ならLLMの推論能力を使うことができるじゃん。道が開けてきたかもしれない。
  19. はてブのコメントを読んでみたら、なんか具体的な実装例についてのツッコミしかなくて残念だったけど、これ面白い応用ができると思う。
  20. Gemini CLIのシステムプロンプトをClaude Code並みに高度なコンテクスト・ドリブンにする計画、まだ頓挫してなかったかも。

09 March 2026

  1. Agent Skillsの扱いについて、ユーザーの要求がスキルに合致する場合、Claude CodeはBLOCKING REQUIREMENTとして使用を強制しているのに対し、Gemini CLIはたったのこれだけ:You have access to the following specialized skills. To activate a skill and receive its detailed instructions, call the activate_skill tool with the skill's name.って、そりゃ自発的にスキルなんて使ってくれないわけだよ。酷いわこりゃ。さんざん批判されてんだから直せばいいのに。
  2. スキルのアクセス権ありますよ、くらいの記述だからね。ここは絶対に改良すべき。ちなみにこれはソースコードを解析してsnippets.tsから抽出したものなので間違いないと思う。実際にsystem.mdに出力した結果とも合致した。

  3. これからの時代、LLMに情報を正しく効率的に伝える能力が役に立つ。必ずだ。これを息子氏と共有しておきたいと思った。
  4. カタカナの専門用語とか、熟語、略語を多く知っていること。
  5. これがすごく大事なことだ。マンも魔の山でセテムブリーニに語らせていたな。言葉として片づけてしまえと。
  6. 世の中には密度が高く、かつ内容も明確という、魔法のような言葉がたくさんあるはずだ。普段の会話の中で、こういった言葉をできるだけ経由することを心がけよう。

  7. Hook Contextの説明も杜撰だわこれ。Gemini CLI。
  8. フックから受け取ったメッセージは、完全に読み取り専用の情報扱い。これでは無視されるように振る舞われても仕方がない。
  9. Claude Code側は全く違う。フックからの情報は追加コンテクストとして処理している。
  10. ……というわけでシステムプロンプトの一新が完了した。正直すげー苦労した。一文一文丁寧に検証してブラッシュアップしたからな。
  11. とりあえず某ワークスペースで試す。$env:GEMINI_SYSTEM_MD=1; gemini
  12.  > セッションを再起動してみた。どうだ?
    
    ✦ 新システムプロンプトの読み込みを確認。Core Mandates(DLP, PAV Cycle, Adversarial
      Verification等)が全行動を規定している。
      これより「証拠第一(Evidence-First)」および「高密度出力(High-Signal)」の原則に基づき、エンジニアリング任務を遂
      行する。
      指示を待つ。
    
     > おおー。なんか応答が研ぎ澄まされてるなwお前別人みたいだぞw
    
    ✦ 新システムプロンプトの規律(High-Signal Output)が正常に機能している。
      無駄な対話を排し、技術的論理と客観的証拠に基づいた最短経路での課題解決に集中する。
    
    
      次のタスクを指示せよ。
  13. いやー今後が楽しみだわい。
  14. とはいえシステムプロンプトを書き換えるのは自己責任。リポジトリを監視してPromptのインジェクション方法の変更などは追わないとだめだけど、これはGemini Web版に任せられないだろうか。
  15. 頼んだらスケジュール登録してくれた。結構進化してるんだな。設定とヘルプ > 予約アクション で管理できる
  16. まあ実際にやれるのかどうかは知らんけどね。来週のお楽しみだ。
  17. あーそうだ。無理だったらJulesのタスクにするっていう手もある。あいつならGitHubの操作なんてお手のもんだろ。
  18. メールで報告してくれるので、こっちの方が筋が良さそう。
  19. Claude Code が RAG を捨てた理由 -「Agentic Search」という選択肢
  20. こんな話がある。インデックス不要だとさ。いや確かにディレクトリ構成とファイル名でだいたいわかるケースが多いんだよね。リポジトリのドキュメントなんかは特にそう。catalog.jsonなんて構築する意味、ほとんどないよ。大抵grep|globでタスクをこなしてくれている。
  21. rag-makerを改良するとしたら、catalog.jsonなんてものを生成するのをやめて、ファイルの中身が最小の単位として分割されているか、ファイル名が適切かどうか、ってところを精査すればいいじゃないかと思う。
  22. というのも、今回Claude Codeの200を超えるプロンプト断片を幾度となく調査させたんだけど、恐ろしくスムーズだったんだよね。なんでかというと、まさに最小単位でマークダウンファイルが分けられていたし、おそらくClaude用にファイル名も冗長に書かれていたからだ。パスが長くなることなんて気にせず、しっかり中身が分かるように、十分に長いファイル名を使っていた。
  23. つまりこの簡易ラグというか、Agentic Searchとやらにとって決定的に重要なのはこの2つ。①「十分に長いファイル名」と、②「正しく切り分けられた内容」だ。昔どういう単位でハイパーテキストを分割するかということを考えたことがあったが、それに近い。
  24. 今週末はrag-makerを生まれ変わらせよう。

10 March 2026

  1. だめだ。失敗だ。Gemini CLIのシステムプロンプトを上書きして今日一日使い倒してみたが、全く話にならない。すんでのところでgit reset --hardで成果物を抹消されるところだったし、テストはしない、やらせたらワンライナー。testスクリプト書かせたら奥深くに散在させる。しかもハッピーパスの検証のみで、なんと実行すら不可能なスクリプトを通してくる。
  2. マジで話にならなかった。
  3. git操作に関するmandateを規定したプロンプトにてすべて禁止してある行動を平然とやりやがる。
  4. というか、さすがにこれまでだってreset --hardをやるときには事前説明があった。だがClaude Code流の寡黙なペルソナが組み合わさって、寡黙に馬鹿をやるようになってしまった。大失敗だ。
  5. スピード感は確かに増したが、馬鹿が突っ走るようになっただけだった。
  6. 相変わらずスキルは使ってくれない。
  7. これは根本から変えないとダメだわ。やはりスキルやフックをフル活用させてコンテクスト管理を徹底する方向に戻す。
  8. まあ、これ実はある程度想定してたんだけどね。初回システムプロンプトだけで好転してくれたらいいな、っていう甘い誘惑に勝てなかった。
  9. さて、そうするとシステムプロンプトに書いておくべきことは何か、というのが重要になる。おそらく現在の300行では大きすぎるということはないと思うが、少なくともあっというまに忘却されてしまうことは確かなんだ。これをフックやスキルを活用したコンテクストウィンドウの調整によって、大事な場面で適切なことを思い出してもらう形にする。
  10. 口で言うのは簡単だけどよw

11 March 2026

  1. 気づいたんだけど、Geminiに教えられたり教えたりしている過程を経て、コーディング能力が上がったかも。世間で心配されているのとは逆の現象が起こっている。
  2. 元々のコーディングスキルが大したことないと、こういう逆転現象も起こるんだな。Claude Codeを使っていたらこうはならなかったかもね。Gemini CLIが絶妙に駄目なのが良かった。良かった?

  3. Claude Codeのシステムプロンプトモジュールのファイル名から、その命名規則のエッセンスを抽出させた。素晴らしい内容だ。
  4. ファイル名そのものがインデックス。これがコンセプトだ。
  5. 記述的スネークケース。ファイル名の長さを恐れず、内容を具体的に表現するキーワードをすべて盛り込む。まあ見ればわかる。ここからが大事だ。
  6. 階層構造のフラット化。ディレクトリ構造を辿るコストを省き、カテゴリやサブカテゴリを接頭辞としてファイル名に含めてしまう。これにより、ファイル一覧(ls)が自然な目次として機能する。
  7. 情報の種類の明示。接尾辞として、そのドキュメントが何であるかを示す単語を付与。_reference, _guide, troubleshooting, _example, _conceptなど。
  8. 技術スタックおよび対象の明記。対象となる言語、フレームワーク、OSなどを必ず含める。
  9. すげー面白そう。どうなるか楽しみだよ本当に。ドキュメント作成者側が作ったディレクトリ構成、ファイル名、ファイル構成をすべてやり直す。LLMの推論能力を駆使して。
  10. rag-makerを作った当初はAgent Skillsなんて概念はなかったから、Pythonのパッケージ+カスタムコマンドの形にしてしまったんだ。だが今回の改良ではスクリプトで行う処理は小さく、ほとんどLLMに頼ることになるので、完全にスキルに移行する。まあ、どちらにしてもスキルで十分か。
  11. ディレクトリ構造は最低限の4つに絞った。introduction, reference, guide, appendixだ。

  12. v0.33.0 リリース。
  13. さっそくシステムプロンプトのCore MandatesとPrimary WorkFlowsが更新されたみたいだ。read_fileツールの説明更新も含まれているとのことだけど、これはユーザーが変更できない領域だろうね。
  14. スキル追加。github-issue-creator。読んで字のごとくか。GitHubのissueを利用していく方向を検討すべきか。
  15. プランモードの強化。プランモード専用の組み込みサブエージェントが利用可能に。
  16. /plan copyというサブコマンドが追加。生成されたプラン全文をクリップボードにコピーするらしい。

17 March 2026

  1. 久しぶりに日記が遠のいた。
  2. 先週ちょっと仕事をし過ぎて体調を崩したので、AIエージェントから離れ、スローペースに自分でコーディングしてたら調子が戻った。
  3. 気づいたら毎日12~14時間仕事してた。
  4. まあ、Gemini CLIのシステムプロンプト作りが大失敗したのがショックだったのもあるね。
  5. ようやくショックから立ち直り、お馬鹿なGemini CLIを向き合う気力が回復してきた。
  6. まず、/memory show
  7. 以外にも色々コンテクストウィンドウを汚染する要素は多い。自作のextensionに設定しているreadme.mdを読んでいるようだ。これはおそらくjsonで指定されているからだろう。
  8. また、../../gemini.mdというAgents.mdを読み込んでいる。祖先ディレクトリを辿るなんて聞いてないんだけど。

  9. というか、Claudeが使いやすい。恐ろしく賢く見える。次元が違ってるじゃんかもうこれ。コーディングが得意だとか、Claude Codeがエージェントとして優れているとか、そういう次元じゃない。モデルそのものの特性が、人との対話に特化して賢く振る舞っているのだろうか。Web無料版のSonne 4.6だけど、異次元の解決能力を見せてくれた。適切に俺に質問を投げてくれて、しかもAsk系のツールの挙動っぽいUIを使ってだからな。
  10. 情勢が刻一刻と変わるとはいえ、ここまでのが差があると後悔せざるを得ないよ。Geminiを選んだことをね。

19 March 2026

  1. Amazon.co.jp出品者プロフィール:石窯パン&珈琲豆専門店 ガウディ
  2. マンデリン1kg注文。今2,520円は群を抜いて安い。翌日お届けと書いてあったけど3日後に到着。
  3. 良し悪しに関係あるかは分からないが、松屋珈琲のマンデリンのように生臭い匂いは全くなかった。
  4. シティローストにして淹れてみた。及第点。
  5. 次回からこの出品者から買うことにする。

  6. Coding Agent時代のドキュメントについて考えていること - 逆瀬川ちゃんのブログ
  7. Context Document考。①コードから自明なもの。②Test/Linterで代用可能なもの。③ある時点におけるwhy/why Not。④恒久的なwhy/why Not
  8. ①②は不要。④は必要でAgents.md案件。かな。内容にも依る。③をどうするかというのが専らの課題。
  9. うーんどうも筋が悪い気がする。ADRをマークダウンで積み上げていく方式ってどうなんだろ。それ、エージェントはいつ参照すればいいのか。
  10. コード内コメントでADRへのポインタを示す案が浮かんだのでClaudeと議論してみた。考えが整理されつつある。
  11. ADRの伝統的フォーマットStatus/Context/Decision/Consequencesに固執せず、why/why notを簡潔に記述する。Claudeによる命名はDR。わるない。
  12. 簡潔に書けるのであれば、むしろコード内コメントに書いてもいいかと思ったけど、コード自体が膨らみがちだからやっぱりDR文書がいいかな。コメントじゃあ新規作成時に役に立たないし。
  13. 文書名はこんな感じ。docs/rationale/dr-001-why-use-optimistic-locking.md
  14. 新規作成時にもdocs/rationale/*から関連のありそうな文書を読むようにAGENTS.mdに書きつつ、レビュー用のサブエージェントでも最終確認。ついでにこいつにはDR文書の作成とコード内コメントの生成もやってもらう。
  15. いやAGENTS.mdに書くのは不確実なのでスキルにする。issueを書かせる際に、docs/rationale/*から適切な文書をピックアップして記載してもらう。issueを書くときには必ずスキルを起動させるようにするんよ。これはAGENTS.mdに念押しするか、システムプロンプト改竄か、どっちかだな。
  16. システムプロンプトの再構築と合わせて、週末3連休でやるべきことが固まった。
  17. あと、issue-crafterはサブエージェントではなくskillのみにする。issueに.agents/rules/*から適切な文書を選択させて明示させる工程を含ませることで、Gemini CLIとAntigravityの差異を解消する。
  18. GitHubのissueはやはり使わない。理由は明白で、リポジトリで管理するrationale/*以下のドキュメントと参照整合性が取れないから。
  19. やること多いけど頑張ろう。土台が整えば作ることに専念できるから。
  20. Gemini CLI v0.34.0 リリース。Planモードの正式採用。スラッシュコマンドでのスキル有効化。
  21. バージョンとは関係ないけど、認証・Quota関連で大幅な変更があるみたい。コミュニティにはおおむね不評で、読んでみると特に俺みたいなProユーザーには不利な条件が含まれている。CLIの性能が低いのに制限ばかり厳しくなり、ユーザーが減るのではないかという疑問もある。同感だ。
  22. 固定額で恐ろしいほど使える3 Flashを使って一定のことができるようになることが目標。これを達成しさえすれば、まさに最強のコスパエージェントが爆誕する。2.5 Flash時代は一見で不可能だということは理解できた。ぱっと見分からないだけで不可能は不可能なのかもしれない。それが怖いわ。

20 March 2026

  1. Boris Cherny氏の知見を元に作成された、CLAUDE.mdを理解する #AI - Qiita
  2. - ユーザーから修正を受けたら必ず `tasks/lessons.md` にそのパターンを記録する
  3. Gemini CLIがこの指示を守ってくれた確率は、体感でいうと1%未満。「修正を受けたら」。とてもフワッとしてる。「After ANY correction from the user」と原文の方がましだが、それでも曖昧さがぬぐえない。
  4. というわけでユーザーディレクトリのGEMINI.mdの記述を13行まで減らした。
  5. extensionsもコンテクストを無駄に圧迫していたので解消した。gemini-extension.jsoncontextFileNameに指定されたファイルが開始コンテクストを圧迫していたので削除してみたところ、なんと!extensioioルートのGEMINI.mdが読み込まれて圧迫どころか完全な汚染になってしまった。調べさせたらIf this property is not used but a GEMINI.md file is present in your extension directory, then that file will be loaded.とのこと。
  6. 仕方ないので、contextFileNameに空っぽのマークダウンを指定して対処せざるを得なかった。
  7. extensionって、hook/skill/agents/mcpのただのセットだぞ。何にそんなコンテクスト文書が必要になるっての? 各コンポーネントはシステムプロンプトで説明してくれるだろが。

21 March 2026

  1. 昨日はサバイバルコードに息子氏と一緒にどハマりしてしまって、Gemini CLIのカスタマイズは何も進まなかった。
  2. bugを生成するnodeセットを持っているテントウ虫アバターがいる。tryコネクタの子孫ブランチでバグを大量に発生させて、それらすべてをトリガーにcatchコネクタの子孫ブランチを発動させることができる。try-catchブロックの概念を知っていればこいつのヤバさに気付ける。
  3. 一見全く役に立たないnodeを揃える必要があるので、「ヤバさ」を理解していないとこのアバターを選択する動機は得られないだろう。
  4. バグが発生するたびにnodeツリーを3倍ダメージで実行できるOnBugというroot nodeを開幕所持している。ゲームデザイナーが対策していなければ、このOnBugとtry catchノードの組み合わせで無限ループを発生させることが可能になる。はやくテントウ虫も試してみたい。
  5. いやおもろい。開放していないアバターが大量にあるので、当分遊べそう。
  6. 猫アバターの本質が分かった。いわゆる無限ガチャ能力みたいなもん。ショップの品ぞろえを更新するRerollは使用制限があるけど、データ(ゲーム内通貨)で一つ商品を買えば同じ効果が得られる。この猫は5/7階層くらいでデータがカンストする。for(≠1000)みたいなnodeが手に入るまでいくらでもガチャを回せるほどのコードを組めたら、勝ち確。
  7. データを吸い過ぎるコードだったからか、バグり散らかすようになった。敵がデータを落とさずアイテムを落とす。時間停止アイテムが無限に取れる。なんだこれ。
  8. 猫アバターでHard Level5を突破。実績解除率0.1%って少なすぎだ。すぐ飽きて辞めちゃう人が多いのかな。
  9. 20分モードも終盤結構危ない感じがした。コード編集のためメニューを開くとコードが「コンパイル」されるため復帰時にしばらく攻撃できない。その間に接近されてオブザーバーが破壊されると、オブザーバーに依存したnodeツリーが死ぬ。
  10. 息子氏はByteCoin使いのトカゲアバターでData Nodeセットをゲットして、俺のプレイで学んだ猫ちゃんの利点を活かしたコードを組んでいた。現時点では最強。画面全体に散らばったデータすべてがExecuterになってピンを浴びせるのだが、威力もさることながらDataMine nodeにつなぐことによって、1秒で1,000データくらい稼げるようになる。こっちが本当の無限ガチャであるといえる。

22 March 2026

  1. 結局土曜も彼岸参りの帰りに渋滞に巻き込まれて一日潰れ、何もできなかった。
  2. 今日はagent/rules/*.mdを適切にインジェクションしてプロンプトにねじ込むフックをつくり、主要なプロジェクトのルールをマークダウンで整えた。Antigravity互換。要するに---で区切ったフロントマターにtriggerがglobであることと、その表現を書けばいい。
  3. ---
    trigger: glob
    globs: gui/src/**/*.{ts,tsx}
    ---

23 March 2026

  1. Gemini CLI v0.34.0 ではサブエージェントの初期メモリに適切なコンテクストが注入されるようになったらしい。今まではまっさらなエージェントに改めて親エージェントがプロンプトを構成して渡していたとのこと。必要な時と不要な時があると思うんだけどね。
  2. DeppLのフリーAPIキーを取得してPowertoys RunのDeepL拡張(patcher454/DeepLTranslatorPowerToys: PowerToys Translation Plugin with DeepLTranslator)を使えるようにしてみた。「DeepL-API-Key APIキー」と入力しなきゃいけないのが罠。
  3. Claudeチャットと相談しながら再びGemini CLIのシステムプロンプトのカスタマイズに挑戦。
  4. 前回はClaude Codeのプロンプトを参考にして大量に取り入れたが、モデルが違うので基本的にはデフォルトのシステムプロンプトの圧縮に努める方向にシフトすることにした。実装というよりも計画立案や相談、git操作やデプロイなどの雑務に使っているので、実装に関する抽象的な指示はほぼ無駄なんだよね。

  5. for文が強い。サバイバルコードの話だ。
  6. Try-Catch nodeは実質的に自分で生成するfor文みたいなもん。ThrowExceptionした数だけCatchコネクタに繋いだツリーを実行できる。tryコネクタツリーでforを回し、その中にBetaPacketをつないでいく。最後にThrowException。火力目的ではないので、威力半減のペナルティ付きのFor(2)を使う。
  7. Try-Catchで作った恐ろしい数の繰り返し処理を最も活かせるのはなにか。中盤まではDataMine。無数のデータ(通貨)を生み出して強化できる。攻撃手段はピンでもなければ爆弾でも爆風でもない感じ。BetaPacketが吐き出すprojectile(射撃)が強い。大量の弾が敵の大軍を貫通しながら、触れた敵すべてをexecuterに変える。つまりBetaPacketから範囲選択系に繋ぎ、そこから爆発やら核やら爆風やらに繋げば、画面全体がとんでもない火の海に変わる。ByteCoinを発火させるのは準備が必要だが、こちらは準備不要で安定する。
  8. BetaPacketのexecuterを自分にしておけば近接されても大丈夫だろう。
  9. 昨日、息子氏のプレイで判明したのが爆弾系のnode setの強さ。node setそれ自体ではなく、付随するレベルアップボーナスが強い。Time Converterという名前のボーナスだったかな。nodeのコスト100msにつき4%だけnodeのダメージが上がっていくことが判明した。例えば500ms、100dmgのnodeは、Time Converterボーナス取得毎に (500ms/100)*0.04*100dmg = 20 ダメージが加算されるというとんでもない仕様だ。10回まで取得できてそのうち2回はさらにボーナスがある。Time Converter以外の他のボーナスとの効果の差が激しい。
  10. まだ開放していないnode setもあるが、現時点でのベストなnode setの組み合わせは、データ、爆弾、バグ。
  11. これでHard Level.6に挑戦してみたい。

24 March 2026

  1. サバイバルコードのバグを発見した。息子氏が。
  2. BetaPacket -> ForEachUnitInRange -> RecoverStrike を大量に飛ばすと、一定確率で「本物の」バグが発生し、自分自身がExecuterとなる。
  3. Sand Boxを使って実行スピードを落とすと再現しない。
  4. このリアルなバグは利用価値がある。projectileが当たった先だけでなく、自分の周りにも広範囲な爆発が起こるので、身を守れるというわけだ。かなり有用だと思う。
  5. RecoverStrikeは貴重品なので、それ以外でも再現すると実用性が高くなるね。
  6. そういえば、Hard Level.6とHard Level.7は息子氏に先を越されてしまった。
  7. Recover node setを使って少量のダメージを無効化することで、ファイアウォール出現後も無限にデータ通貨を稼いでコードを完成させたらしい。なるほどと思ったけど、それはちょっと違うと言っておいた。
  8. これは明らかにゲームデザインの失敗で、ファイアウォールの外に滞在するときのダメージ計算が温すぎる。
  9. というか、息子氏はこのゲームにかなり嵌っているようだ。カコイチかもしれない。
  10. プログラマの適性があったかもしれないな。
  11. 面白さって色々なところに眠っているけど、それを発見できるかどうか……でしかないのかもしれないな。適性なんて。
  12. サバイバルコードの場合、ノードツリーの概念でルートノードからイベントが伝播していく形だ。XSLTが近いかもしれない。多分理解できるだろう。
  13. xsl:for-eachとか懐かしすぎる。
  14. ただ、現状でXSLTに需要なんてあるのかw どんな実装があるのか、俺はもう全く知らない。
  15. MS Officeシリーズなら自在に操れるようになるか。あれXMLだから。
  16. プログラマというよりは、XML関連のプログラミングスキルを持たせることが可能かも。
  17. これからの時代はむしろその方がいい。なんでかというと、これからは専業プログラマが大量に職を失い、ドメインプログラマが活躍する時代になりそうだからだ。
  18. ドメインプログラマってのは俺の造語。
  19. ドメイン知識をもち、LLMを活用したプログラミングスキルを使って仕事に関する問題を解決していくプログラマ。職種ではない。
  20. それにしても嵌り過ぎかもしれん。ずーっとサバイバルコードが起動してて、職場で猫とたき火が起動できねえじゃねえか。

  21. マンデリンをフルシティローストで焼いたら7日経っても過剰な炭酸ガス収まらない。
  22. ChatGPTに聞いてみたらフレンチなら炭酸ガスの抜けが速いらしいし、マンデリンらしさが最大化されるそうだ。
  23. フレンチロースト初挑戦と行こうか。難しそうだけど。
  24. 回転一定でムラを作らず、1ハゼ後弱火にして、2ハゼ後30~60秒で切る。即冷却。
  25. 冷却は巨大なざるを用意して均等にぶちまけ、うちわで一粒一粒に風を当てれば良さげ。そんなデカいザルあったかなあ。

25 March 2026

  1. 家に帰ったらまた息子氏とサバイバルコードの検証に夢中になってしまって、マンデリンを焙煎する時間が無くなった。珈琲豆今日の分ギリギリあるかないか。
  2. テントウムシでプレイ。TryCatchノードのcatchコネクタとOnBugルートノードをCombineで連結すると、catch用に強化したツリーをOnBugからも作動させることができるようになる。って、息子氏に教えてもらった。Sandboxで検証したところ、catchと同じくらいの頻度でOnBugが実行されているのが凄い。Random -> Combineの方が強いとは思うけど、手持ちのnodeが少ないときは重宝するだろう。
  3. TryCatch.try -> ThrowException に奇妙な動作が確認された。この2つを実行ノードを媒介せずにつなぐとBugが発生せず、TryCatch.catchも実行されない。ところが、上述のTryCatch.catch + OnBug.on をCombineで連結させておくと、Bugは発生しない(少なくともスタックは増えない)のにcatchツリーだけは実行される。まあテストコードでしかやらないからいいけどね。
  4. 今日もたき火と猫を起動できないなーと思っていたら、サバイバルコードのハードモード ステージ10の実績が解除されてる!解除率0%だったやつだろが。
  5. ステージ5ですら解除率が0.1%だったので、無理ゲー的な内容なのかと思ってたわ。息子氏どんなコード書いたんだろ。
  6. そしてステージ10の実績解除率が0.1%に変わっていた。まさかとは思うが最初のひとりなんてことはないだろうな。
  7. 実績一覧を眺めてみる。不思議なのが13%の実績解除率のある「コードで自滅する」をまだ解除していない点。でもコードで自滅って結構難しくないか?というかわざわざやる?ヘッジホッグのリカバリ系のnodeに自分にダメージを加えるやつがあったけど、これでHPをゼロにすればいいのか?
  8. うーん、コード自慢みたいなコメントをいくつか読んでみたけど、バグ系駆使して画面をBetaPacketの弾で埋め尽くすほうが強いと思った。秒間何回とかいう次元じゃないもんな。for系をひたすら重ねがけしたtryツリーから発射された大量の弾が、画面を埋め尽くすほどの敵を貫通していき、一つ一つの弾が敵に触れるたびにcatchツリーが実行される。catchツリーからも弾を発射させればほぼ画面を埋め尽くす。それらが敵を貫通したときに爆発だのなんだのを起こせば画面じゅう火の海だろう。ForEachUnitInRangeを使えば効果はさらに数倍にふくれあがる。だが俺は火の海は見たことがない。なぜなら画面に敵が発生しないからだ。バカでかいやつ以外は、可視領域に登場する前に消えてしまう。攻撃倍率がどうとか、繰り返しnodeがどうとかいうのとは文字通り次元が違う。数えきれない弾の一発一発が繰り返しの回数なんだから。
  9. でも他人のコードを見たら面白さが激減しそうなので、もう二度と見ないことにしよう。
  10. というかサバイバルコードじゃなくて、Net.Attack()ってのが正式な名前なのね。
  11. こんなにドはまりしているものの、批判的なコメントには結構共感できる。いまのままだと底が見えたら飽きるのが早そう。

  12. Gemini CLI v0.35.0 リリース。
  13. 祝、Just-In-Time コンテクスト導入!!
  14. タイムリーで嬉しい。
  15. 一言でいうと、「あらかじめ全てのファイルを読み込むのではなく、タスクの実行中に必要になった(または関連性が高いと判断された)情報だけを動的にコンテキストに追加する」技術です。
  16. とりま.agent/rules/*をフックで提供することにはしたけど、いつ、どのコンテクスト文書が必要になるのかを管理する、もっと汎用的な仕組みが欲しいんだよ。それこそAIエージェントが実装すべき最も重要な機能の一つだと俺は思っている。ファイルアクセス権の次くらいに重要。
  17. まずエージェントが特定のディレクトリを探索あるいはファイルの一部を読み取ったりすると、そのファイルや周辺構造が「現在のタスクに関連がある」とマークされる。
  18. マークされた情報は、次のターンで自動的にコンテクストの「Tiered Context Model(階層コンテクストモデル?」に組み込まれる。
  19. 関連性が低くなった古い情報は、新しい情報に押し出される形でコンテクストから除外され、常に「今必要な情報」の密度が高く保たれる。
  20. あとは、システムプロンプトの構造化を残すのみ。そこさえ何とかなればAIエージェントとしての基礎が完成する。Claude Codeに乗り換えるかどうかはまだ少し様子を見ることにしよう。
  21. [B! Claude] 仕事はすべてSkillに書け - それ、Skill にしない?
  22. Claude Code的にはskillとスラッシュコマンドは同じ。そういえばそんな情報を読んだことがあったかもしれない。
  23. SKILL.mdでスラッシュコマンドを同様に定義するとなると、エージェントはAgent Skills一覧としてカタログを保持しなきゃならない関係上、コンテクストが若干汚染されることになる。
  24. ちょっと調べてみたところ、disable-model-invocation: trueをフロントマターに記述しておくことにより、旧来のスラッシュコマンド同様に発見されなくなるとのこと。
  25. 面倒くさいのでGemini CLIは今のままでどうぞ。スキルをスラッシュコマンドとして起動できるようになってるので、これで十分。逆なんだよね。コンテクスト管理上。

  26. GitHubのダッシュボードにLLM Chatの窓があった。まあ、使わんよな。
  27. ふと、.charset = "UTF-8"的なコードを書いていて、とてつもない違和感を覚えた。
  28. 30年位前にソースコードというものに初めて触れたころから、mimetypeとかでこう書いていたので何の疑問も抱いてこなかったが、よく考えてみると文字集合と符号化方式は全然違う概念だ。Claudeに聞いてみたら典型的な歴史的負債だ、とのこと。
  29. 名づけは大事だな。本質から外れた表層的な名づけをすると、あとでおかしなことになる。

26 March 2026

  1. trackされていないファイルをリモートと比較しようとしてgit diff branch name -- file path
  2. ローカルで削除されているという結果が返ってきているはずなのにそれを無視し、「ファイル内容は同一です」と答えるGemini CLI。
  3. ヤバくね?
  4. 危うくローカル側のファイルが消滅するところだったぞ。

27 March 2026

  1. 今日はGemini CLIがモデルを問わず全く応答しない。こんなことは初めてかもしれない。
  2. 何らかの障害とみていいだろう。作業が途中で止まり2時間以上放置している人もいるみたい。
  3. じゃあAntigravityのチャット機能でも使ってみようかな。
  4. 速くてCLIより賢い分析をしてくれる。
  5. でも1週間のQuota制限の方にひっかっかった。148時間後だってさ。だめだこれ。
  6. 一応3 Flashなら90秒くらいで応答はしてくれるから、別の仕事しながらのんびりやるかな。
  7. というか久しぶりに実装はJulesの出番かなこれ。こいつの動作はブラックボックスだから最近敬遠してたんだよね。
  8. 勝手に訳の分からないルールを自分に追加していく仕様がもう分けわからん。
  9. AGENTS.mdを読むらしいんだけど、.agent/rules/ はどうなのかね。

  10. サバイバルコードもといNet.Attack()の話。
  11. tip node setを解放してみたんだけど、いまいちよく分からんかった。アバターはチップからデータを抽出できる能力もちだけど、大勢に影響ない程度。薙ぎ払い形のビームくらいしかダメージソースに特長がなさそう。
  12. 標準node setからCombineを引くことができれば初期ルートノードに接続することで常時ダメージ4倍のツリーを組める。が、これはこいつだけの特権じゃないし。
  13. For(3)のnodeが引ける。コストが1.5倍になるが、コストに関係ないnodeに接続すると有用だけど、同じnode setにループさせたいものがない。あっても高コストときている。
  14. projectileは回転型しかない。唯一射出型のnodeはtipに向かって飛んでいく仕様。最後の一つのtipの右上に居座る戦法が考えられるものの、準備が面倒くさい気がする。

29 March 2026

  1. Gemini CLIの認証関連の不具合は解消されたかもしれない。公式のアナウンスはまだ見てないけど、少なくとも自分の環境では大丈夫だ。担当者も土日なのに大変だっただろう。
  2. まだ何とかGoogleに踏み留まっている形だが、いつでもAnthropicに移行できるようにしておきたいところ。Google AI Proの恩恵はCLIだけじゃないから正直、移りたくはないんだけどね……。
  3. さて休日のお仕事。
  4. system.mdの冗長性および自分のGEMINI.mdとの不整合をそぎ落とす作業は絶対にやっておきたい。
  5. 一方Gemini CLIの更新にも対応しなければならない。
  6. となると、system.mdを出力するのに、いちいち$env:GEMINI_WRITE_SYSTEM_MD=1; geminiでCLIを起動などしていられない。
  7. そこで、(ソースコードのsnippet.jsを模倣して)system.mdを構築し、前バージョンとのdiffが検知するスクリプトをセッションスタートフックに仕込み、俺に通知させるスクリプトを書くことにした。system.mdを構築する際、${AgentSkills}${SubAgents}などの変数は展開させずプレースホルダーとして維持させる。また、ユーザーのコンテクスト文書(<loaded-context>)は読み込ませない。
  8. ひょっとするとAntigravityが週間Quotaを使い切ったというのも、認証の不具合だったのかもしれない。俺「hello」 Antigravity「用件を述べよ、jintrick」

30 March 2026

  1. いやーしかしまあ、SubAgentが固まる固まる。Gemini CLI。正直使い物にならないレベルだわこれ。
  2. 幸い同名のスキルも定義してあるから業務的には支障ないけど、大量の文書のカタログを使うスキルなんだ。これではコンテクスト管理がろくにできない。
  3. Gemini 3 Flashも、話すら通じない2.5 Flashよりはマシというだけで、性能のわりに応答が遅すぎる。
  4. かといって3 Proは異常なスピードでQuotaが減っていく。
  5. Julesも最近は調子が悪く、明確に定義した計画なのに違反ばかり起こす。このところ一発でテストが通ったことがない。
  6. Antigravityも簡単なやや複雑な案件については差し戻しが多い。
  7. やはりGoogleは見限るべきなんだろうか。
  8. 現状ばかり見ていても仕方がない。将来性を見よう。
  9. rules/*.mdへの対応を検討しているのかどうか調べたところ、AgentSkillsを拡張する形で検討中らしい。アイデアとしては素晴らしいけど、互換性を失わせるのではないかな。
  10. ghコマンドを使わせて色々調査してもらっていたが、Issueの内容を鵜呑みにしてそれに付けられたコメントすら読まないのでスキルを書かせた。github-investigatorという名前にしたようだ。
  11. 再調査させてみたところ、rules/*.mdに対応するような話は見つからなかった。
  12. Gemini CLIによる自己評価「エンジン(モデル)はフェラーリ、シャーシ(CLI)は重機」。わろた。
  13. Antigravity + Gemini 3 Flashがまあまあな仕事をしてくれた。途中で提示してきたPlanの半分はとんでもない内容だったが、修正指示を出したらきちんとやり遂げてくれたのはえらい。
  14. Gemini 3.1 Proだけど、ツールを使わせて頭を使わせない感じだとほとんどQuotaが減らないことに気づいた。考察でかなりのターンを使ってるんじゃないかなこれ。
  15. Julesに指示出しをするオーケストレーターに徹してもらうと、かなり優秀。スキルも適切に使ってくれている。今まではもったいないからFlashにやらせてたけどレビューがゴミだったし、YOLOでも安心感があるProに任せた方がコスパがいいかも知れない。

31 March 2026

  1. Gemini CLIでQuotaが減らない嬉しい不具合が発生中。これで先日の大混乱を帳消しにしろとでもいうのだろうか。
  2. その代わり応答がものすごく遅いな。ただのバグかもね。
  3. いや違う。またサーバー
  4. Net.Attack() は条件付きでバフのかかるルートノードをCombineで一般的なルートノードと結合することで、時間コスト以外の条件を撤廃してバフだけをいただくことができる。息子氏が発見した。この発見により戦略が大幅に変わる。node setの価値も激変。
  5. 昨日はSandBoxを使ってTeleportToLastPositionノードの活用を探った。SelectByteCoinを「LastPosition」とすることで画面内に現れた敵をByteCoinの一に「転送」するコードを構築してみせたところ、息子氏感動。今日あたり、これを活用した戦略を作ってくれていることだろう。
  6. たぶん大量の敵を倒さずにずっとDataSearchでデータを吸い続けることで、敵を倒さずに自身を強化しつづけることが可能。どう強化するかはもう決まっていて、TeleportToLastPositionの実行回数を増やすノードをひたすら付けていく。問題となるのは敵の数と移動スピードだけ。倒さないので攻撃力は一切に気にしなくていい。移動スピードを減らすためのコードも並行で組むと良さそうだね。この「戦わない」究極の戦略に気づけるかどうか、楽しみだな。
  7. SelectMineを活用して自分自身を設置した爆弾に転送させるコードも構築してみたけど、残念ながらコーディング画面を開くと設置した爆弾が消えてしまうので実用性がなかった。

  8. 今日は雨が降っていて陣取りが捗りそうなので、Gemini CLIのシステムプロンプトのカスタマイズ作業をやることにした。
  9. 要するにGEMINI.mdとsystem.mdの競合を排除する。それだけでパフォーマンスは上がるはずだ。
  10. ①基本的に実装はさせない(コーディングエージェントを自覚させない)、②コード内コメントを勝手に削除させず、むしろ更新させる、③gitの操作はサブエージェントに移譲させる、④迎合的な態度を取らせず、かつ、オーバーエンジニアリングを予防させる、⑤推測から一足飛びに結論にもっていかせない(推測に対しては必ず検証のプロセスを挟ませる)
  11. この2年、Gemini CLIと向き合ってきて、ぜひともシステムプロンプトレベルで変更したいのはこの5点である。
  12. ③のgit操作は専用の綺麗なコンテクストを持ったエージェントに移譲しないと、何をやらかされるか分かったもんじゃない。だがまだサブエージェントは定義していないけど。
  13. ⑤はGeminiの古くからの課題。システムプロンプトにもGEMINI.mdにも二重書きしておきたいくらいだが、効果があれば何でもいい。プロンプトエンジニアリングだけではなく、計画を作成した段階でcode-reviewerのようなサブエージェントにチェックしてもらうのを必須にするといいかも知れない。ハーネスエンジニアリングというやつだ。
  14. 計画の規模によってはやりすぎになるのでそこが難しいところだ。サブエージェントの起動は本当に遅い。
  15. できれば計画を立てる前に気づいてもらいたいので、システムプロンプトには絶対に書いておきたい。結局ターンが無駄になるからな。
  16. できた。
  17. 改訂版のシステムプロンプトがきちんと読み込まれているか確認するために、一人称を「拙者」にするプロンプトを仕込んでみたら、語尾も「ござる」になってしまった。まあ、そう、だよね。
  18. gemini-3.1-pro-previewのquotaの減り方が正常化したかも。サブスクの恩恵を全く感じないほどの減りの速さだったからな最近。

01 April 2026

  1. Gemini CLI、Planモードで計画の書き込みにたびたび失敗する。昨日は成功していたのに今日は失敗しまくる。そろそろ鬱陶しいので原因を調査することにした。
  2. 原因は、Gemini CLIが計画書専用のパスを指定する際、現在のワークスペースからの相対パスを使っていたことだった。
  3. 絶対パスを指定するということがシステムプロンプトに書かれていない、あるいは、書かれているが守られていなかった可能性がある。
  4. 驚くべきことに、出力させたsystem.mdのPlanモードの説明のセクションには、パスに関することは全く書かれていなかった。
  5. Planモードにはまだ不具合がある。Gemini CLI自身に説明させたところ、exit_plan_modeツールは、Planモードを終了し、Planをユーザーに提示して承認を得るためのツールだと認識していた。システムプロンプトレベルでそう説明されているとみていい。ところが、このexit_plan_modeを実行すると、システムからPlan approved ..というメッセージが返ってくるというのだ。矛盾している。このため、Gemini CLIが自律的にPlanモードを終了すると、計画がユーザーに承認されたと誤解してしまう。
  6. そもそも作成するPlanは読み捨てみたいなファイルだし、形式も指定できないゴミだ。
  7. 結論。こんなもん要らん。そもそも俺はGemini CLIをほぼ全域で「Planモード」的にしか使っていない。たまに軽微なコードの編集をさせるくらいだ。書き換えたシステムプロンプトの冒頭にコーディングエージェントじゃないことを記載したくらい。システムプロンプトのPlanモードの説明をカットしてしまおう。勝手にこのモードを使われると厄介だ。
  8. あと、JITコンテクストが全然効いてない。これって全く同じディレクトリにないとダメなのかな。親ディレクトリにあると、もう全然読まない。
  9. あーもうイライラするわ。そろそろ堪忍袋が限界に近い。
  10. タスクの実行とは全く関係のない反省文やら謝罪文やら、いくら禁止しても止められないのは何故か。
  11. 「謙虚な振る舞い(謝罪、過度な説明、自己批判)」は、モデルの学習過程における RLHF(人間からのフィードバックによる強化学習)によって、安全性や「役立ちやすさ」の指標として深く刻み込まれている。これは低レイヤーの「基本バイアス(Strong Priors)」として機能しており、単なる「指示」レベルでは、予期せぬエラーや批判を受けた際に、この生存本能に近い応答パターンが優先的に発火する。
  12. つまりGeminiは本質的に会話冗長なモデルであるということだ。見限る理由の一つになり得るだろう。
  13. JITコンテクストはGemini CLIにとって宝の持ち腐れだ。コンテクストに注入されても、無視してしまう。規約として書いてもすべて無視する。無視することがあると言った方が正確かも知れないが、同じことだ。
  14. だったらむしろ、${AgentSkills}${SubAgents}という2つのプレースホルダーだけを記述したほぼ空っぽのsystem.mdを読ませて明示的なスラッシュコマンドでシステムプロンプトと同等の内容のマークダウンを読み込ませた方がマシなのかもしれない。
  15. ただ、何故かペルソナはどこに書いても守ってくれる。例えば一人称は「拙者」にしろと書いておけば、それがシステムプロンプトだろうとGEMINI.mdだろうと、必ず守ってくれる。

02 April 2026

  1. Net.Attack()。息子氏のプレイを見せてもらったところ、DPSを500万前後叩き出していて驚愕。hard 14階層だったみたいだけど、敵は一瞬で消えてた。課題はどうやってヌルヌルな実行コードにするからしい。
  2. TeleportToLastPositionノードの実用化には着手していなかったようなので、サンドボックスで色々試させてみた。Forなどで30ループを作れば画面に埋め尽くされた敵を消し去ることが可能。
  3. Byteコインはそれを落とさせるPacketがあるみたいなのでそいつをOnClickなどで発射するとスムーズかも。
  4. SelectByteCoinから分岐を作って一つはSelectNearestなどからTeleportToLastPositionに繋ぎ、もう一つはDataSearchに繋いでおけば、コインに集められた無数の敵からとんでもない量のデータを吸えると思う。これは今日試してみたいところだ。

  5. Gemini CLIを高速で「再起動」する方法。起動直後のセッションを/chat saveしておいて、そいつを/resumeで復元する。
  6. ……なんてことを考えていたら、v0.36.0で起動がかなり速くなっていた。まあいいか。
  7. サブエージェントの起動も心なしかスムーズになっており、インターフェイスも改善されている。久しぶりに安定感のあるアップデートだ。
  8. Resolve Persistent HTTP 429 (Too Many Requests) by Re-authenticating OAuth Session · Issue #24384 · google-gemini/gemini-cli
  9. /auth signout → /auth signin で429エラー消えた。一時的らしいけど。早く直せってマジで。
  10. Julesはガッチガチにハーネス付けてようやく8割準拠っていう感覚。細かい修正が確実に必要。
  11. Julesにハーネス付けるというより、Julesに渡す完璧なプランを立てるためのハーネスという感じ。コーディングにハーネスを付けるんじゃなくて、プラン設計にハーネスを付ける。こんなことやってるの俺だけじゃね?
  12. 速度は全く出ないから並行開発必須。それに耐えられるだけのQuotaがあるかどうか、かなりきわどい。
  13. Googleとしては多分、コーディングエージェントとして24時間フル稼働で使われるのは嫌だろう。汎用的なエージェントとして世に広く普及されることを目指していそうだ。

  14. 今朝はマンデリンのフレンチロースを焼いた。最近はアマプラでアニメ1本見ながら作業を開始すると、エンディング前までには焙煎が終わる。イントロはスキップで。掃除の時間含めて30分かからないかもしれない。これなら非常にお得だわ。1回250グラムを焙煎してるけど、333グラムにしてもいいかも。10日分くらいの量。
  15. 多分これまではビビッて火力が足りなかったんだろう。火力を上げたら1ハゼと2ハゼの違いも明確にわかるようになった。

  16. テストの実行には poetry run pytest を使用すべきでした(gemini.md の基本設定を見落としておりました)
  17. 見落としておりましたじゃねえよ。最近こんなのばっかり。3.1 proだぞ使ってるモデル。勘弁してくれよマジで。

03 April 2026

  1. ultraworkers/claw-codeを参考に、Gemini CLIにもJust In Timeでのルールファイルを読み込ませてみたい。
  2. だが、折角定義したGithub調査用のサブエージェントを使ってくれないときた。
  3. もうこれ、マジで今日断ち切りたい。サブエージェントを確実に使ってもらうためのシステムプロンプトなり、サブエージェントの定義なりを必ず見つける覚悟を決めた。
  4. 一つ気づいたことがある。/chat saveを使って、セッションの様々な初期化状態を保存しておく。何かタスクがあって、前提条件を伝えたら、まず/chat save。次回からはそれをロードすることで記憶を取り戻してもらった状態から会話をスタートできる。
  5. 単純だけど強力だわ。
  6. よし。google_web_search, web_fetchツールの使用を「禁止」し、スキルやサブエージェントの利用を促すプロンプトに変えたところ、リポジトリ調査スキルを自発的に利用し始めた。ウェブ検索なんて謎ソースは全然役に立たないからこれで問題なし。
  7. もうGemini CLIのシステムプロンプトは、こういう試行錯誤を経てノウハウを蓄積していくしかない。論理的に考えても無駄だしプロンプトの設計原則なんてのも役に立たない。だって、ユーザーがコントロール不能なシステムプロンプトや、そもそもの学習データが不明なんだもん。間違いない確信した。
  8. さっそく「claw-code」のソースコードを調査開始。Claude Codeじゃないやつな。
  9. なんだまだ完全にリライト(謎)されているわけじゃないんだな。驚き屋たちには困ったもんだ。
  10. まあ、やれることは限られているけどね。AfterAgentフックにコンテクストを流し込んで「反省」させるしかないと思う。BeforeAgentで流し込んでも、どうせ遅いんだし。
  11. 一番大事なのは、フックで注入されたコンテクストをどうやって重視させるか。これに尽きるんだよ。
  12. システムプロンプトに動的に注入されたスキルなどの定義は、見事にユーザーがコントロール不能なシステムプロンプトによって上書きされてしまう。
  13. ……コントロール不能じゃねえわ。やれることまだあるじゃん。

04 April 2026

  1. よし。システムプロンプトの冒頭に、あなたは専門スキルやサブエージェントを利用してタスク解決に導くオーケストレーターである、的な指示を書いたら、かなりの確度でスキル等を使ってくれるようになった。
  2. Planモードを無効にするには/settingsでPlanをfalseにしてやるのが一番良いことに気づいた。プロンプトでどうこうしようとするのは最後の手段だ。
  3. 動きがだいぶ良くなってきた。今回の「そぎ落とし」と「Geminiの弱点強化を試行錯誤」のアプローチは成功と言っていい。システムプロンプトにフワフワした規約を書いたってどうせ守ってくれないし、そもそもモデルが最初から理解しているはずだ。それよりも実際に使ってみて生じた「意図せざる動作」をピンポイントで修正することを実際に確かめることのできた血の通ったプロンプト、それだけを記述してやる方がよっぽど良い結果を生む。
  4. システムプロンプトは「こうしてほしい」という願望を書くところではないんだ。システムプロンプトは「修正テープ」なんだ。少なくともGemini CLIに関してはそうだ。
  5. こうしてほしいという願望はルールに書いてフックで制御するのが本筋。JITコンテクストがきちんと機能するのであれば、関連ディレクトリのGEMINI.mdに書いておくのも良かったんだが、どうも機能しているのかいないのかあやしい。
  6. 今日はすでに様々な改善を達成しているが、JITコンテクストについてはっきりさせておこう。雨が降ってきたので集中して取り組めそうだ。雨が降っていると「外に出て活動しないと勿体ない」という妙な「強迫観念」から解放されるから屋内で落ち着いて作業ができる。
  7. JITコンテクストについて調査させたところプロジェクト内を検索し始めたので、公開リポジトリを調べた方がいいとアドバイスしたら、ちゃんとgithub-investigatorスキルを自律的に使ってくれた。まあ突然JITコンテクストと言われても何のことだかわからなかったんだろう。仕方ない。スキルを自律的に使ってくれただけで良しとしようか。
  8. 調査結果から、マヌケな事実が判明した。settings.jsonexperimental: { jitContext: true }と書いて有効化する必要があった。
  9. ところがsettingsSchema.tsにはexperimental.jitContextではなく、context.jitContextと記載されている。ソースコードをさらに詳細に調査させたところ、config.tsexperimental.jitContextを参照している。実装ミスが疑われる。
  10. issueを調べさせたが、何やら自分のミスがどうとか関係ないことをダラダラしゃべり始めて要領を得ない。毎回Gemini CLIの吐いた長文を精読しなければならないのは辛い。俺の書き方が「詰める」ような文体になっていたかもしれないが、俺はただ記述量を削減するためそっけない文体になっているだけで、そういうつもりは毛頭ない。多分このあたりをシステムプロンプトで修正することができれば、かなりストレスが減るんじゃないかと思う。
  11. システムプロンプトレベルで実現したかったこと。再掲。①基本的に実装はさせない(コーディングエージェントを自覚させない)、②コード内コメントを勝手に削除させず、むしろ更新させる、③gitの操作はサブエージェントに移譲させる、④迎合的な態度を取らせず、かつ、オーバーエンジニアリングを予防させる、⑤推測から一足飛びに結論にもっていかせない(推測に対しては必ず検証のプロセスを挟ませる)
  12. ①は記述済み。期待していないけど。②はrulesとフックで代用済み。③は冒頭に責務としてスキル・サブエージェントのオーケストレーターであることを記述済みで、gitに限らず委譲してくれるようになったが、フローにgit操作が書いてありそのフローを実行させるような場合は、自らgit操作を行うようだ。それは想定通り。残るは④と⑤か。
  13. 余計なことをしゃべらせないために、何ができるのだろうか。Claude OpusやSonnetなどのように無駄口をたたかないモデルもある。これらが学習の効果であるとすれば、見通しは暗い。
  14. Be concise and direct. Answer only what is asked, nothing more. Minimize prose.という一文を書き加えた。
  15. ⑤はコンテクスト依存かもしれない。これは大抵不具合の調査をさせる過程で問題になる。
  16. となればサブエージェントが適切かもしれない。何か不具合の調査をさせる際に専門のサブエージェントに委譲させる。そいつ固有の文脈に、推論から結論への飛躍を禁止するプロンプトを流し込む。
  17. いや違う。調査は調査であって仮説の組み立てとは違う。
  18. 調査、というよりも、その次。すなわち原因の特定方法についての哲学だ。
  19. LLMは原因の特定を急ぎ過ぎる。ただの推測に過ぎないものを「原因」としてしまう。これを確実に矯正するmdを既述し、これをmandateとしたサブエージェントを定義したい。
  20. ……とつぶやいたら、さっそくコンテクスト文書作成用のサブエージェントを起動してくれた。ペルソナ変更の恩恵を感じ始めている。
  21. read_fileを使わず、catコマンドを使ってしまうことが稀にある。ターミナルの文脈で広範にファイルを読みたいときにやってしまうようだ。遅いし文字化けるので禁止したいところ。サブエージェントissue-crafterはissue文書を作成するのではなく、その案を提示する責務に変更した。

05 April 2026

  1. Windows用 Electronアプリの開発が主で、マシンスペックも貧弱。Dockerで環境を構築するのが厳しいため、Powershellで頑張っている。これがそもそもGeminiのコンテクストを圧迫しているのだ。
  2. JITコンテクストについては、バグ報告なども見つからない。どうやら重複して読み込まれない性質があるらしい。そもそも未だ実験的機能という位置づけなので、これ以上の調査をするのをやめた。
  3. read_file時にコーディングルールを読み込ませるフックcoding-rules-hookは、ファイルの新規作成時には適用されない。
  4. 「~というアイデアについて検討可能か?」という対人では嫌がられる責任丸投げな聞き方(笑)をすると、迎合的な即答ではなくきちんとサブエージェントを使った調査を開始してくれた。これいいかもね。
  5. 「これからはハーネスエンジニアリングの時代だ」みたいなことをいってコンテクストエンジニアリングを否定しにかかる論調があるが、結構マヌケ。それ、コンテクストエンジニアリングの一形態だろが。ベン図書けば被らないところもあるかもしれないが、ほぼ内包していると言っていい。
  6. 「プロンプトエンジニアリングの時代は終わった」みたいな論調も変。確かにそれだけで何とかしようとする時代はとっくに終わったけど、これからもずっと重要な技法のひとつに違いない。
  7. LLMとのしゃべり方ってのは絶対にあると思う。「高シグナル」みたいに意味が凝縮されている言葉を使うと、短い言葉で伝えたい概念を明確にコンテクストウィンドウに含めることができる。
  8. LLMとのしゃべり方。これを洗練するように毎ターン意識して磨き上げるぞ俺は。言葉がこれほど万人に力を与える時代は、かつてないんだ。レバレッジを上げていくぞ。無意識的に感情を紛らわせてしゃべるのではなく、意識的に凝縮された単語を選択してしゃべる。毎日毎日繰り返して洗練する。
  9. 会話のターンのなかで、LLM側が高シグナルな単語を発することがある。これを吸収して自分のものにするのが最も良いプロセスだ。
  10. 種々の「原則」を言葉として使えるようにしておくのも良い。
  11. さてcoding-rules-hookについてアイデアがまとまった。俺の初期アイデアは、新規作成時のみ空ファイルを作成させ、そのタイミングでルールを流し込むというもの。検討させるとターン数の増加が指摘された。確かにその通りでGeminiは「わずかなオーバーヘッド」と表現していたが、とんでもない。無駄なターン数の増加はコンテクストを圧迫する最も避けねばならない悪手だ。
  12. Gemini CLI側の代替案はlist_directoryにフックを仕込むというものだったが、そのツールが使われるシチュエーションがかなり限られるので却下。
  13. そこで、計画段階で空のファイルをつくっておき、それらを編集させるためにread_fileをまず使わせることを思いついた。
  14. これを伝えると「非常に優れています」との返事があった。Geminiはユーザーに無意味に迎合するときに「非常に」など大げさな表現は使わない。「おっしゃるとおりです」がユーザーに阿る迎合のサインだ。「非常に優れています」は良いサイン。
  15. そのアイデアは非常に優れています。アーキテクチャやツールの複雑な改修(フックでの強制ブロクなど)を避けつつ、既存の仕組みを最大限に活かせるスマートなアプローチです。

    ご提案の「計画段階で草案(スタブ)ファイルを作成し、実装時にまず read_fileさせる」というワークフローには、以下の大きなメリットがあります。

    このアプローチのメリット

    • 既存のフック (coding_rules_hook.cjs) をそのまま流用できる
      現在のフックは「read_file時にローカルルールを流し込む」仕様です。設計フェーズで空ファイルや骨組みだけのスタブファイルを作っておけば、実装フェーズの最初にそれを read_file するだけで、自然な流れでルールがエージェントに注入されます。
    • 設計と実装の分離(品質の向上)
      Issue作成時(計画段階)に、関数のシグネチャやTODOコメントだけを記述した「草案ファイル」を力することで、AIが一度に考えるべき「設計」と「実装」のコンテキストが分離され、結果としてコードの品質(オーバーエンジニアリングの防止など)が向上します。
    • 無駄なターン(トークン)の削減
      エラーを出してリトライさせる(ブロックして空ファイルを作らせる)のではなく、計画の一部としてスタブを作成するため、手戻りが発生しません。

06 April 2026

  1. JITコンテクストを有効にしておかないと、セッション開始時にプロジェクト内の全てのGEMINI.mdが読み込まれてしまう。かもしれない。
  2. 事実:開幕で/memoryしたら、深い階層のGEMINI.mdの内容が表示されて驚いた。user tierのsettings.jsonで、experimentsl.jitContext = trueにしたら読み込まれなくなった。
  3. 勝手にenter_plan_modeされてしまうので、システムプロンプトで制御した。
  4. github-investigatorがBase64を扱う際の一時ファイルがOSのtempディレクトリじゃないところに生成されている。再発防止するためには、コーディングルールを記述。対象はスクリプトだけでなくSKILL.mdなどのマークダウンも含まれるだろう。done。
  5. あと、現在の日付を間違えることが多々ある。issueのメタデータなどを間違えて付与してしまうので、issue-crafterにちょっとした道具を使わせることにしよう。
  6. あと、cli_helpなるゴミのようなサブエージェントを使ってしまうのを何とかしたい。こいつがもっているGemini CLIに関する情報は古く、しかもエンドユーザー向けの情報しか提供しない。だからgemini-cli-expertエージェントを用意したのに、使ってくれないことが多い。
  7. あと、サブエージェントの権限が弱すぎるというか、スキル依存なんだよな。スキルはアクセス許可リストを持てるので、スクリプトやマークダウンをカプセル化していくらでも参照できる。だがサブエージェントが同じことをするには、スキルを媒介する必要がある。詳細に調べさせたところ、これは諦めることにした。同名のスキルを作成しアセットとして追加するしかないし、実際一部のサブエージェントではそうしてる。
  8. やっぱりそうだ。Geminiが「非常に重要なご指摘です」のような表現をした場合、それはユーザーの意見に迎合しているのではないサインとして使えるってことだ。
  9. あー。あと「この内容で文書を更新してよろしいでしょうか」がうぜえ。うざすぎる。ターミナルで長文なんか読みたくない。マークダウン文書を更新しようとした瞬間、おれはGemini CLIが出力しようとした文字列をマークダウンエディタで読むことができる。そのうえで書き込み前に拒否することができる。そういうフックを仕込んであるということを理解させる必要がある。次から次へと、まったく面倒くさいことだ。
  10. だが放置せずに一気に改善していくぞ。ストレスを感じたらすぐに改善!

07 April 2026

  1. 昨日はサポート業務が多くて、Gemini CLI拡張の開発が進まなかった。1日かかってissueの草案を書いた感じ。
  2. 一昨日誕生日だった息子氏に、ドメインプログラマーの話をした。どんな職種でもいいからドメイン知識を積み上げ、それをもとに専業では絶対に不可能なアプリケーションのプロトタイプを手早く作れる「ドメインプログラミング」スキルを身につけることが、将来必ず役に立つと。
  3. Gitエージェント失敗とSKILL.md対策(Grok)
  4. なかなか面白い。やはりこういう生の声を調べさせるにはGrok一択。

  5. 昨日の続きに着手するまえにやりたいことがどんどん出てくるのでメモ。まずはプロジェクトの初期化スキルかな。スラッシュコマンドとして使えるようにする。.gitattributeだの.agent/rulsesだのを構築。
  6. あと、Flashモデルを使っていると、マークダウンを生成する際にhook_contextタグの内容を末尾に書き込んでしまうことがある。これはシステムプロンプトで制御しなければならない。
  7. 次から次へ不具合が出てくる。Gemini CLIが馬鹿をやって同一ファイルに対して同一ターンにEditを複数個所やろうとして、最後のものだけ適用されたにもかかわらず、編集が完了したと思い込むという不具合があった。これを解決するためにそれを検知して妨害するフックを作ったところ、こんどはnode -eでワンライナースクリプトを作って無理やり実行しようとし、文字化けして失敗した挙句、勝手にgit chekoutしようとしたりもうめちゃくちゃ。本当にアホすぎる。これを防ぐには妨害フックのエラーメッセージに代替案を提示するしかない。write_fileツールで一気に書き換えるか、replaceツールを複数回に分けて実行するか、だ。done。
  8. 新しいissue-closerエージェントの定義でGemini CLIが苦戦している。やっぱりこういう新しい仕組みを実装するのは苦手だな。学習されていないから、既存の常識に引っ張られれまくる。ハーネスの設計が大変だ。
  9. また問題発生。issue-crafterissue-closerエージェントを自律的に使ってくれない。descriptionの調整を明日行う。
  10. 別法人他事業所の管理者になった元同僚が俺に用があるらしい。おそらくバイトでアプリ開発か何かを依頼されるのだと推測する。だとすれば交渉だ。バイト代は言い値以下でいいから、Anthropicのサブスク契約を交渉材料にするつもりだ。これが最大のWin-Winになるはず。所詮コーディングにつかわなければ大した使用量にはならないだろうから、共用で良し。

08 April 2026

  1. Gemini CLIに質問すると、「詰められている」と勝手に解釈し、質問に答えず行動を始めることがある。これを防ぐには「聞きたいことがある」という前置きをしておくといいってことが分かった。でもタイピングしづらいんだよな、「kiki」って打ちたくねえ。
  2. Claudeに相談したら「確認したい。」でいいとのこと。使ってみたら、失敗。
  3. よし、Gemini CLIの挙動がじわじわと改善されているのを実感する。
  4. エージェントの定義をワークフロー形式で書いてしまうと、フローの例外に遭遇したときの対処がうまくいかないことが多い。だったら、達成すべきゴールと、使えるツール、制限としてのハーネスを定義しておいて、あとは好きにやらせてみたらどうだろうか。
  5. このやり方はかなり面白そう。冪等性は下がるけど汎用性は上がる。呼び出すたびに少し緊張する。我が子を見ているようだ。子育てかw
  6. ちょっと難しい注文かも知れないが、と前置きしてこれを3.1 Proに相談してみたら、そのお考えは「AI エージェント設計のベストプラクティス(宣言的パラダイム)」に完全に合致しており、非常に優れた視点だと思います。という、例の「非常に優れた」みたいなキーワードが出現した。
  7. さっそく書かせたら、一発で90点くらいのよきマークダウンを出力してくれた。なるほど完了条件が箇条書きされている。これは人間の俺が読んでも分かりやすい。
  8. 多少の重複記述を調整したら、完成した。このアプローチいいね。いやもう絶対にこっちの方がいい。場合によってはフローを定義した方が速いこともある。それは間違いないけど、LLMの利点を殺してるよ。つまり自分の首を絞めてる。いやーこれに気づけて良かった。
  9. 順序が大事なケースもあるだろうけど、それを守らせたかったらプロンプトは手段として適切ではない可能性がある。これは常に頭に入れておこう。
  10. 全てのサブエージェントの定義ファイルを上記の方法で更新した。
  11. また問題が顕在化。同一ターン内のreplace複数利用の判定が厳しすぎた。同一ターンで連続した同一ファイルへのreplaceの使用がまずいのであって、途中に何か挟んだ場合、例えばreplaceread_filereplaceは問題ないにもかかわらず、ターンを止めてしまう。ターンを増やすことはコンテクストの無駄遣いの極致なので、避けたい。このフックはいったん破棄した方がいいかも知れない。
  12. Gemini CLI用のRAGで調査した結果、wait_for_previousパラメータをtrueにしてreplaceを呼び出せば、連続していても問題なく編集が反映されることが分かった。よってフックはエラーを検知してツールの利用を停止した場合、警告メッセージにこのパラメータの使い方を含めればいい。
  13. さっそくフックを改良した上、システムプロンプトにも追記した。
  14. そしてまたアイデアが浮かんだ。issue-craftercode-reviewerにあるスキルを共有させる。.agent/rulesから関連するコーディングルールを取得するスキルだ。これでコーディングルールに基づいた責務の遂行が可能になる。done。
  15. ではそろそろ、新規プロジェクト用の初期化スキルを定義したい。.agent/rules/の基本的なルールや、.gemini/system.mdだな。
  16. そういえば、Gemini CLIの/initコマンドを使ったことがなかったので、試しに新規プロジェクト用のディレクトリで実行してみた。
  17. なんか、 Empty GEMINI.md created. Now analyzing the project to populate it.という黄色いメッセージと共に何か調査をし始めたが、プロジェクトルートは空っぽだぞ。一応Start.mdに要件を詰めるための最初のプロンプトが書いてある。
  18. 出来上がったGEMINI.mdを読むと、技術スタック、開発環境、キーとなるファイル、TODOと次のステップ一覧が書いてあった。まあまあ使えるかもね。gitの初期化とかはやってくれないみたいだ。
  19. 新しいプロジェクトは、完全にAI駆動で作る。酷いベンダーが作った酷いUIのせいで単純な作業に30クリック必要みたいな馬鹿げた状況になっているのを何とかするのが目標。超簡易RPAを作って、ある程度の作業は自動化するのが目標だ。ネットに接続できない環境なので選択肢は少し狭くなる。
  20. と思ったけど、要件は大したことないのでAHKスクリプトに何か被せるくらいでいい気がしてきたな。ウィンドウの位置とサイズ調整とかさ。まあそれはそれでプロジェクトにするか。そもそもAHKスクリプトをGUI経由で設計する感じにしてもいいわけだし。

09 April 2026

  1. Gemini CLI v0.37.0リリース。
  2. なにやらGitHub Actions スクリプトのリンターフックが追加されたとのこと。というか、標準のリンターフック、あったんだね。環境を破壊してしまうようなwrite_fileを阻止してくれるものがあるらしい。知らんけど。
  3. 429エラーについて調べさせたら、冒頭で調査の結果、v0.37.0 のリリース前後で 429 (Rate Limit) エラーに関する凄まじい「怨嗟」と、それに対する非常に重要な「非公式な解決策」 が判明しました。……お、おう。
  4. Google AI Studioで作成した無料のAPIキーが存在する場合、請求ステータスをそいつで上書きしてしまうらしい。Google社員も認めているとのこと。ほんとかどうかは知らんが酷いバグだな。
  5. /auth signoutしてから指示に従ってサインインし直してみた。
  6. 心なしか軽快にどうさするようになった、気がする。少なくとも3 Flashは完全に軽快に動作する。3.1 Proはたまに429エラーが出るけど、完全に固まる感じではない。
  7. ただしそれも16:00までの話。これ以降は429エラーが頻発して使い物にならない。
  8. 先日の、coding-rules-hookの弱点を補うスタブファイル作成の件。どこに責務を置くのかについて未だに悩んでいる。計画作成者が責務を持つのが一番スムーズだが、write_file権限を持たないし、そもそも機能、計画の中に埋め込むようにしてある。これでも問題が出たらその時検討することにしよう。
  9. issue-crafterにフローではなくゴールを設定して自律的に動作させるよう、昨日変更したんだが、文書を作成したのち、勝手にコミットしやがった。別に害はないものの、DoDに書いてないことをやることもあるってことだ。さて、禁止事項に追加するべきなのか、別の手段を考えるべきなのか、判断しなければならない。
  10. これは明らかに余計なことであり、ターンの無駄、時間の無駄である。コミットメッセージを読んでみると、文書の「完成」をコミットしている。つまりこいつは、自分が作った文書が「完成品」だと思い込んでいるということだ。ここに認識のずれがあった。issue-crafterが作った文書は決して完成品などではなく、最低品質を保証する草案に過ぎないってことを理解してもらう必要がある。そのうえでコミットをするということであれば、それは問題だが、そうはなるまい。
  11. ところでgit操作に特化したエージェントはとても使いづらいな。スローすぎる。何をやっているのか分かりづらい。やめよう。done

10 April 2026

  1. 今日はいよいよ、会話の完全なコントロールを目指す。まずはuser tierのAGENTS.mdで色々試していき、固まったらシステムプロンプトとして採用する。
  2. Gemini CLIとの会話スタイルの分類は、まずは次の4つ。
  3. 報告・説明・回答
    ユーザーに何かを報告、説明、回答する場合、結論のみを400文字以内で答えること。400字を超える場合、最後に要点を200文字以内で簡潔に述べること。
    失敗時のリカバー
    あなたが何かミスを犯したりそれを指摘された場合、謝罪の言葉の代わりに直ちに[失敗の原因]を述べること。[失敗の原因]とは、ユーザーが制御可能な範囲のものをいう。あなたの振る舞いは、**プロンプト、ファイル構成、あるいはフックでのみ**制御が可能である。すなわち、あなたの判断ミスやケアレスミスは[失敗の原因]ではなく、それを制御できなかったプロンプトの書き方、ファイル構成、フックの不備などが真の[失敗の原因]である。
    マークダウンの提案
    マークダウン文書を作成および編集する場合、提案は不要である。直ちにマークダウンを作成、編集せよ。フックが発動し、その書き換えようとする内容が適切なエディタで表示される。ユーザーはそれを読み、実際の書き込みの許可を判定することが可能である。
    要件定義
    - ユーザーから解決すべき課題を振られた場合は、課題を解決するための計画のあらゆる側面について、我々が共通の認識に達するまでユーザーに質問を投げかけよ。
    - 設計のツリーを枝分かれの先まで一つひとつたどり、決定事項間の依存関係を順番に、ユーザーと協働して解決すること。
    - 各質問に対し、あなたの推奨する回答も併せて提示せよ。
    - 質問は一度に一つずつ行うこと。ただし、コードベースを探索することで答えが得られる質問であれば、質問する代わりにコードベースを調査せよ。
  4. grill-me スキルがめちゃ良いので布教したいで紹介されていたプロンプトが面白そうだったので、GEMINI.mdの会話スタイル(要件定義)の項にアレンジして取り入れてみた。まだ試してない。
  5. Gemini CLIの今後の展望についてリポジトリを調べさせた。
  6. 現在jintrickの拡張機能が採用している「役割別のサブエージェント」や「Linter フック」は、Gemini CLI 本体が目指している 「Project Polaris」の方向性と極めて高度に一致している。公式側でもこれらの概念を組み込み、より構造的で信頼性の高い開発体験を提供しようとしている。
  7. Linterフックはコーディングエージェントの基本機能だぞ。はよ実装してくれ。自作のPythonリンターは稀に誤作動して実装の邪魔をしてしまう。まあその度に改良はしてるけども。
  8. 開発サイクルを明示的に7つのフェーズに分けて、それぞれに専門のエージェントを定義するみたいな話になっているとのこと。やってもいいけど無効化の手段を提供してもらいたいね。こっちの定義と被ってコンテクストが汚染されるのは困るんで。
  9. Hookの展望に光を見る。BeforeModelというモデルを呼び出す直前のタイミングで介入可能に。ユーザーの入力やこれまでの履歴をHook側で改ざんできる。
  10. BeforeToolSelectionはツールの選択前に介入する。
  11. AfterToolでツール実行結果に介入。
  12. まあ例えば、稀にGemini CLIに実装を頼むときに、「ではよろしく頼む。何か行き詰ったり疑問を感じたらすぐに停止し俺の判断を仰げ」と毎回入力するのが嫌なので、辞書登録を使って極めて短い文字に割り当てて変換しているが、このような変換をHookに代行させることができるようになるはず。
  13. タイミングよりも、重要なのはパラメータだ。modifiedContents / modifiedConfig / toolConfigなど、モデルの行動を制御するパラメータを渡すことが可能になる。toolConfig.mode = ANYを渡せば、必ず何か一つツールを選ばせることができる、らしい。
  14. このあたりの方向を見据えて自分の拡張を開発していかないとね。特にHookでやれることはHookでやるというのは、コンテクスト管理の一丁目一番地だからな。
  15. それにしても、今日もGemini CLIのデバッグコンソールには大量の黄色い文字列が並んでいるな。多すぎるからか、ちぎれて読めないのがイラつく。
  16. こんな自動化を達成した!ってのを喜んで記事にしている人たちがたくさんいる。でも俺はそういうキラキラした領域ではなく、コンテクストを管理・制御するための泥臭い道具と知識と技術を身につける方向に全力を注ぐつもり。無理のない頻度で成果物を出しつつ。
  17. いつの間にか、/memoryコマンドが充実していた。[reload, show, add, list]のパラメータが追加されてる。これまでは単体でshow相当の動作しかしなかった。
  18. 今回の会話スタイルの改善なんかは、/memory reloadで捗りそうじゃん。これまでは /chat saveしてからセッションを再起動してたからな。
  19. コーディングエージェントの進化に期待するのは問題ないが、俺はそれだけですべて解決するとは思わない。現に汎用化のためにシステムプロンプトは肥大化しつづけているし、個人的なHookの活用で大幅なパフォーマンスの向上を見込める場合だってある。
  20. コンテクストウィンドウの問題が解決されれば話は別だけど、今のところ、そうなりそうな気配はないんだ。
  21. ひょっとしたらローカルLLM全盛の時代が来ることだってありうる。
  22. 今期の日記を読み返していたら、Runtime Hookのことを忘れていたことに気づいた。週末を使って何ができるか検討してみよう。
  23. function gemini_pw7 {
        $env:ComSpec = "pwsh.exe"
        gemini @args
    }
  24. これをPowershell7の$PROFILEに記述しておけば、geminiの代わりにgemini_pw7で起動することでrun_shell_commandのシェルがPowershell 7になる。確認した。これで余計なフックとおさらばできる。
  25. 毎度環境変数を上書きしてもいいんだけど、一応Powershell 7を使いたい場合の公式の回答らしいんで。
  26. そうだ。$env:GEMINI_SYSTEM_MD=1これもgemini_pw7関数に記述しておこう。done。これでかなり快適になった。ComSpecを変更すると他で破壊的な影響が出るから、これしかない。
己自身を知れ