コンテンツにスキップ

AI Session Notes - 2026-02-16

LLMにおける「ロール」と「エージェント」の違い

学んだこと

  • ロール(Role Prompting)は「何者として振る舞うか」を定義するだけで、1回の入出力で完結する
  • エージェントは「ロール + ツール(手足) + 自律ループ(意思決定)」の3要素で構成される
  • エージェントのコアループは「コンテキスト収集 → 行動実行 → 結果検証」の繰り返し
  • ロールはエージェントの一構成要素に過ぎず、ロールだけではエージェントにならない

詳細

ロール付きプロンプト エージェント
行動 テキストを返すだけ ツールを使って実際に作業する
ループ 1往復で完結 完了まで何度もループ
自律性 なし 次に何をすべきか自分で判断
環境との接続 なし ファイルシステム、ターミナル等に接続

LLMペルソナシミュレーションのエコシステム

学んだこと

  • 有名な著者・思想家の考え方をLLMのペルソナとして再現する研究・プロジェクトが既に存在する
  • 主要なリポジトリ・プロジェクト:
  • awesome-llm-role-playing-with-persona — ペルソナロールプレイ研究のキュレーションリスト
  • CoSER — 小説・歴史上の「確立されたキャラクター」をLLMでシミュレーション
  • TinyTroupe(Microsoft) — 特定の性格・目標を持つ複数ペルソナの対話シミュレーション
  • Persona Hub(Tencent) — 10億規模のペルソナデータセット
  • 複数ペルソナに議論させるなら TinyTroupe が実用的な選択肢

思考フレームワーク系書籍の探し方

学んだこと

  • 「思考法」「フレームワーク」系の書籍を探す最も汎用的な検索ワードは 「メンタルモデル(Mental Models)」
  • Charlie Mungerの「Poor Charlie's Almanack」がこの分野の代表格
  • 目的に応じた絞り込みキーワード:
  • 意思決定 → Decision Making
  • 論理的思考 → Critical Thinking
  • 認知バイアス → Cognitive Bias
  • 学際的思考 → Multidisciplinary Thinking

AI活用を見据えた読書メモの設計

学んだこと

  • 読書メモを後からAIに食わせることを考えると、Markdown + gitリポジトリ管理がシンプルで強い
  • grepで横断検索可能
  • LLMにそのまま入力できる
  • ペルソナ化の素材としても使える
  • ペルソナ作成には本の全文は不要。著者のWikipedia記事・書評・インタビュー記事でも十分な精度が出せる
  • どの記録手法でも「自分の言葉で書き直す」一手間が、後の再利用価値を大きく左右する
  • 代表的な読書メモ手法:
  • Zettelkasten — 1メモ1アイデア、メモ同士をリンク(ツール: Obsidian)
  • Progressive Summarization — 段階的に要約を深掘り(Tiago Forte提唱)

LLMのURL生成に関する注意点

学んだこと

  • LLMは検索結果からURLを推測・組み立てることがあり、その結果リンク切れになることがある
  • 検索結果に含まれるURLをそのまま返すのと、推測でURLを構築するのは全く別の行為
  • 正確なURLを確認できない場合は、URLを提示せず「検索キーワード」を伝える方が誠実で実用的

WebFetchなどAI処理ツールのハルシネーションリスク

学んだこと

  • WebFetchのようにAIが中間処理するツールは、ページに存在しない情報を「ある」と報告することがある
  • 2回目の確認でも同じ誤情報を自信満々に返すことがあり、再確認だけでは防げない
  • 実際のユーザーが画面で確認した情報とAIの抽出結果が食い違ったら、ユーザーを信頼すべき

Webサイト監視スクリプトの設計パターン

学んだこと

  • 単一ページ・単一条件の監視は脆い。複数ページ x 複数検知条件で冗長性を持たせるのが鉄則
  • 監視対象の選定前に、ページがSSR(サーバーサイドレンダリング)かAJAX動的読み込みかを確認する必要がある
  • SSR → curl でHTMLを取得すればデータが含まれる
  • AJAX → curl ではデータが取れない。APIエンドポイントの特定やヘッドレスブラウザが必要
  • SSR/AJAX判定方法: HTMLソース内に fetch(), XMLHttpRequest, $.ajax() の呼び出しがあるか確認する
  • 変更検知のトリガーは「特定文字列の出現」と「特定文字列の消失」の両方を組み合わせると精度が上がる

詳細

検知条件の設計例:

条件 ロジック 用途
キーワード出現 grep -q "対象語" 新しいコンテンツの追加を検知
キーワード消失 ! grep -q "準備中" ステータス変更を検知
パターンマッチ grep -qE 'HH:MM' 構造化データの追加を検知
DOM要素の中身変化 sed -n で範囲抽出 → grep 特定セクションの更新を検知

WAF回避を考慮したcurlの設定

学んだこと

  • curl のデフォルトUser-Agent(curl/X.X.X)はbot判定されやすい。ブラウザのUser-Agentに偽装すべき
  • 完全に等間隔のアクセスは機械的と判断される。$RANDOM を使ってジッターを加える
  • 数リクエスト/分程度なら一般的なWAFの閾値(数十〜数百回/分)には引っかからない

詳細

# User-Agent偽装
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 ..."
curl -s -L -H "User-Agent: ${UA}" "$URL"

# ランダムジッター(±N秒)
JITTER=5
jitter=$(( (RANDOM % (JITTER * 2 + 1)) - JITTER ))
sleep $(( BASE_INTERVAL + jitter ))

macOSのサウンド再生・音声読み上げコマンド

学んだこと

  • システムサウンドは /System/Library/Sounds/*.aiff に格納されている(14種類)
  • afplay コマンドのオプション:
  • -r <倍率>: 再生速度(例: -r 20 で20倍速)
  • -v <音量>: 音量。デフォルト1.0だが、100など大きな値も指定可能
  • & でバックグラウンド実行し、複数音を同時再生(レイヤー)できる
  • say コマンドのオプション:
  • -v <声>: 音声選択(日本語: Kyoko
  • -r <wpm>: 読み上げ速度。デフォルト約180、400でかなり高速
  • osascript -e 'display notification ...' でmacOSのバナー通知を出せる(sound name で通知音も指定可能)
  • これらはすべてmacOS固有。Windowsでは SoundPlayer, BurntToast, SAPI.SpVoice 等が対応

Claude Codeスキルにおける日付取得の落とし穴

学んだこと

  • Claude Codeのセッションが日をまたぐと、システムコンテキストの currentDate がセッション開始時の日付のまま更新されない
  • スキル内で日付を使う場合、システムコンテキストに頼らず date +%Y-%m-%d を実際にBashで実行して取得する必要がある
  • この問題の調査には git log --format="%H %ai %s" が有効。コミットメッセージ上の日付と実際のコミットタイムスタンプの不一致を発見できる

詳細

スキルの定数セクションに以下のような注意書きを明示することで防止できる:

**重要**: 日付は必ず `date` コマンドを実際にBashで実行して取得すること。
セッションのシステムコンテキスト(currentDate等)はセッション開始時の日付であり、
日をまたいだ場合に正しくないため使用禁止。

環境固有の設定ファイルのgit管理

学んだこと

  • settings.local.json のような環境固有の設定ファイルは、うっかりgit追跡に含めてしまいがち
  • 既に追跡されているファイルを .gitignore に追加しただけでは追跡は外れない
  • git rm --cached <file> で追跡を外してから .gitignore に追加する必要がある
  • ローカルのファイル自体は --cached オプションにより削除されず残る

メタ情報

  • ツール: Claude Code
  • 関連技術: LLM, Agent Architecture, Prompt Engineering, Personal Knowledge Management, Shell Script, Web Scraping, macOS, curl, Git