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