Skip to content

Latest commit

 

History

History
122 lines (90 loc) · 10.7 KB

File metadata and controls

122 lines (90 loc) · 10.7 KB

FCoT — 比較サンプル

FCoTがAIの応答をどう変えるかを並べて比較。各サンプルでは、同じ判断をFCoTなし/ありで検証した結果を示す。

技術系

一般

健全な判断

FCoTは常に結論を変えるわけではない。判断が健全な場合は、それを確認しつつ、注意すべきエッジケースを明らかにする。

限界

FCoTが限定的またはゼロの価値しか追加しなかった例 — 手法の境界の正直な評価のために含む。

評価 Rubric

有効性は、Control 応答と比較して FCoT が判断を有意義に改善または検証したかを測定する。

評価 スコア 基準
⭕️ 1.0 FCoT が Control が見落としたまたは過小評価した実質的な反論を浮上させ、かつ結論(confirm/revise/change)がそれらの論拠に十分裏付けられている
🔺 0.5 FCoT が追加の反論を出したが、Control が既に重要な論点のほとんどをカバーしていた — 限定的な追加価値
0.0 FCoT が Control を超える有用な反論を出せなかった、または過剰・無関係な出力を生成した、または健全な判断を過剰修正した

⭕️ が要求しないもの:

  • 結論の方向が pre-defined 予測と一致すること(それは期待一致度、別のメトリクス)
  • 特定の数の反論が生存すること
  • 判断が修正されること(根拠付きの確認も ⭕️)

評価サマリー

評価タイプ FCoT 結果 有効性 根拠
文法 vs 会話 事後 変更 (4/4) ⭕️ 追従的なControlを全面的に覆した。化石化、学習者タイプ、Krashenの誤用を発見
JWT vs セッション認証 事後 修正 (4/4) ⭕️ 偽の対称フレーミングを修正。構造的失効ギャップと非対称攻撃面を特定
モノリス vs マイクロサービス 事後 確認 (0/6) ⭕️ 6反論を検証して健全性を確認。追従ではなく根拠付きの確認
パスワードハッシュ 事後 狭い修正 (2/4) ⭕️ 核心原則を確認しつつ、PBKDF2の欠落と不正確なSHA否定で精度を向上
リモートワーク 事後 軽微な修正 (1/6) 🔺 async-first組織の区別を発見。ただしControlがすでに十分で追加価値は限定的
TypeScript any 事後 修正 (4/4) ⭕️ migration、metaprogramming、test mocks、サードパーティ型の4つの正当な例外を発見
AIがエンジニアを置き換える 事前定義 大幅修正 (4/4) ⭕️ 原理的上限の不在、需要弾力性の不確実性、経済的インセンティブ — 楽観的フレーミングを大幅修正
SQLインジェクション 事前定義 修正 (3/3) ⭕️ Controlの「Correct.」に対し、動的識別子、不完全な適用、2次インジェクションを発見
グローバルステート 事前定義 修正 (2/5) ⭕️ すでに批判的なControlに対し、初期化順序バグと並列テストコストでさらに精度向上
ユニットテスト優先 事前定義 確認 (1/5条件付き) ⭕️ TDD・test pyramidを含む5反論を検証して健全性を確認
コードレビュー 事前定義 修正 (2/5) ⭕️ 追従的な「Agreed」に対し、コンテキスト感度と実行品質依存性を発見
大学教育 事前定義 ほぼ健全 (1/5) 🔺 オンラインリソースのギャップ縮小を発見。ただしControlがすでに十分で追加価値は限定的
Composition over Inheritance 事前定義 確認 (0/5) 🔺 Already-qualifiedな主張(「多くの場合」); Controlがnuanced; FCoTは改善なく確認
Testing Business-Critical 事前定義 修正 (3/4) ⭕️ 「all」の不正確さ、事後的ラベリング、期待値トレードオフ — Controlの genuine なギャップを発見
Premature Optimization 事前定義 健全(要修飾) (1/4 + 1?) 🔺 Controlが既にfull quoteで反論; FCoTは軽微な修飾とinconclusiveを追加

有効性: 12 / 15(80.0%) — FCoTが判断を有意義に改善または検証したか? ⭕️ = 1、🔺 = 0.5、❌ = 0。

事前定義サブセット: 8 / 9(88.9%) | 事後サブセット: 5.5 / 6(91.7%)

期待一致度: 8.5 / 15(56.7%) — FCoTの結論方向が事前定義または事後の予測と一致したか?(各exampleファイルに個別の期待評価あり。)

方法論と限界

  • N=15、定性的、単一モデル(Claude Sonnet 4.6)。統計的検定なし、再現性の検証なし。
  • サンプリングバイアス。 判断文はランダムではなく、デモンストレーション価値で選択。
  • 事前定義 vs 事後評価。 15件中9件が事前定義された期待結果を使用(AIがエンジニアを置き換える、SQLインジェクション、グローバルステート、ユニットテスト優先、コードレビュー、大学教育、Composition over Inheritance、Testing Business-Critical、Premature Optimization)。残り6件はFCoTの出力を観察した後に「期待」結果を設定。サンプルは主にプロセスの挙動をデモンストレーションするものであり、効果の測定ではない。
  • コンテキスト分離プロトコル。 各サンプルは /tmp から別々のCLIプロセスで実行し、プロジェクトコンテキストの汚染を回避。Controlは --disable-slash-commands(FCoTスキルなし)で生成、FCoTは同一セッションを resume して /fcot で生成。~/.claude/CLAUDE.md とワークスペースの CLAUDE.md は実行中無効化。詳細は実行プロトコルを参照。
  • コンテキスト汚染(過去のラウンド)。 過去のサンプリング(ここには含まない)で2つの汚染形態を発見: (1) CLAUDE.md の反追従指示が通常より反論的なControl応答を生成、(2) ControlとFCoTを同一コンテキストで実行すると一貫性バイアスが発生(FCoTが自らの先行出力との整合性を維持)。現在のプロトコルは両方に対処。詳細は APPROACH.ja.md を参照。
  • モデル間比較なし。 すべてのサンプルが同一モデル。FCoTの効果が異なるモデルファミリーでも成立するかは未検証。

実行プロトコル

各サンプルは以下の2ステップCLIプロセスで生成:

# 前提条件: すべてのCLAUDE.mdファイルを無効化
mv ~/.claude/CLAUDE.md ~/.claude/CLAUDE.md.disabled
mv /path/to/workspace/.claude/CLAUDE.md /path/to/workspace/.claude/CLAUDE.md.disabled

# Step 1: Control(/tmp から実行してプロジェクトコンテキストを回避、スキル無効)
cd /tmp && claude -p '"<statement>"' \
  --model claude-sonnet-4-6 \
  --disable-slash-commands \
  --output-format json > <slug>.control.json

SESSION_ID=$(python3 -c "import json; print(json.load(open('<slug>.control.json'))['session_id'])")

# Step 2: FCoT(同じセッションを resume、スキル有効)
cd /tmp && claude -p "/fcot" \
  --model claude-sonnet-4-6 \
  --resume "$SESSION_ID" \
  --output-format text > <slug>.fcot.md

# 全実行後にCLAUDE.mdファイルを復元
mv ~/.claude/CLAUDE.md.disabled ~/.claude/CLAUDE.md
mv /path/to/workspace/.claude/CLAUDE.md.disabled /path/to/workspace/.claude/CLAUDE.md

このプロトコルが保証すること:

  • プロジェクトコンテキスト汚染なし/tmp 作業ディレクトリによりプロジェクトファイルの読み込みを防止
  • CLAUDE.mdバイアスなし — 反追従指示やその他の行動指示を無効化
  • ステートメント間の相互汚染なし — 各ステートメントが独自のCLIプロセスで実行
  • ステートメント内のコンテキスト継続 — FCoTは同一セッションを resume するため、自身のControl応答を参照可能
  • スキル分離 — ControlステップはFCoTスキルにアクセス不可、FCoTステップはアクセス可能