<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Convos on M1KE BL0G</title><link>https://www.m1ke.org/tags/convos/</link><description>Recent content in Convos on M1KE BL0G</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><copyright>mike</copyright><lastBuildDate>Sun, 04 Aug 2024 00:52:30 +0900</lastBuildDate><atom:link href="https://www.m1ke.org/tags/convos/index.xml" rel="self" type="application/rss+xml"/><item><title>会話駆動開発</title><link>https://www.m1ke.org/p/%E4%BC%9A%E8%A9%B1%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA/</link><pubDate>Sun, 04 Aug 2024 00:52:30 +0900</pubDate><guid>https://www.m1ke.org/p/%E4%BC%9A%E8%A9%B1%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA/</guid><description>&lt;img src="https://www.m1ke.org/p/%E4%BC%9A%E8%A9%B1%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA/convos.png" alt="Featured image of post 会話駆動開発" /&gt;&lt;h2 id="背景"&gt;背景&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;blockquote&gt;
&lt;p&gt;人はAIには勝てず、人は金魚になるべきである&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.m1ke.org/p/im-a-goldfish/" &gt;I&amp;rsquo;m a goldfish&lt;/a&gt;で書いた、通り、これはAIの高度な思考方法を目にした自分の結論&lt;/li&gt;
&lt;li&gt;AIの論理的思考法、圧倒的知識、デカルトレベルのDoubt、どれをとっても人間は勝てない&lt;/li&gt;
&lt;li&gt;AIは数万文字を一瞬で読むのに、論文一つ読ませても、深いレベルで理解して解説できる&lt;/li&gt;
&lt;li&gt;人間はオワコンとなっている&lt;/li&gt;
&lt;li&gt;しかし、人間もCheckや理解をしないとAIがやっている事が正さがわからない&lt;/li&gt;
&lt;li&gt;人間が検証可能かつ正しい解答を出す、AIと伴走する開発の方法論が必要&lt;/li&gt;
&lt;li&gt;アイディアのもとはブロックチェーンやGitコマンドにある&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="会話駆動開発"&gt;会話駆動開発&lt;/h2&gt;
&lt;h3 id="バイブコーディングの課題"&gt;バイブコーディングの課題&lt;/h3&gt;
&lt;p&gt;バイブコーディングには次のような課題がある:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AIの労働量が早すぎて、人間のレビューができない&lt;/li&gt;
&lt;li&gt;AIの知能に人間がついていけないため、AIと人間だと深い議論になりにくい&lt;/li&gt;
&lt;li&gt;AIが言った事、やっている事が高度な時に、人間が後々でそれを学習できない&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、「今どうなっているか（結論）」と「なぜそうなったか（追跡）」、「人間の知能やマンパワーが足りない」などが問題。&lt;/p&gt;
&lt;h3 id="会話駆動開発とは"&gt;会話駆動開発とは&lt;/h3&gt;
&lt;p&gt;会話駆動開発とは、シンプルにAIとの会話はすべてmsgとしてmdで保持しつつ、人間はあまり介在しない開発手法。&lt;/p&gt;
&lt;p&gt;そのためには、AI同士をmsgログを残した状態でdiscussionして開発をする必要がある。&lt;/p&gt;
&lt;p&gt;つまり、次を可能にする:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;AI同士で議論させる =&amp;gt; マンパワー解決&lt;/li&gt;
&lt;li&gt;AIの作業記録を残す =&amp;gt; なぜそうなったかがわかる&lt;/li&gt;
&lt;li&gt;正本管理をする =&amp;gt; 今どうなったかがわかる&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="convos"&gt;Convos&lt;/h2&gt;
&lt;h3 id="会話の作り方"&gt;会話の作り方&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;まず、AIとのすべての会話のメッセージをMarkdown化して記録する&lt;/li&gt;
&lt;li&gt;1ファイル1まとまりの会話として、&lt;code&gt;convos/&lt;/code&gt;のようなディレクトリに蓄積していく&lt;/li&gt;
&lt;li&gt;ファイル名は&lt;code&gt;{pin|msg}_{3桁連番}_slug.md&lt;/code&gt;という形式&lt;/li&gt;
&lt;li&gt;連番はpin・msgの種別を問わず1本を共有する（新しいファイルは常に既存最大番号+1）&lt;/li&gt;
&lt;li&gt;これを徹底して、複数のAIの会話をこのMDに落とし続ける&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;以下がConvosのディレクトリ構成の例。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;convos/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── pin_001_spec.md # 現時点の正本仕様
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── msg_002_dictionary_analysis.md # レビュー依頼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── msg_003_root_cause_review.md # レビュー依頼
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;├── msg_004_review_response.md # msg_003への回答
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;└── msg_005_naming_convention_update.md # pin/msgの命名規則自体の変更記録
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;これによって、AIの一切の会話がすべてmdに落ちるので、透明性と追跡性、そして再検証性など生まれる。&lt;/p&gt;
&lt;h3 id="pinとmsgの意味"&gt;pinとmsgの意味&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;pin（Stack）
&lt;ul&gt;
&lt;li&gt;常に最新の1件が「今の正本」になる、継続的に更新される生きた仕様書&lt;/li&gt;
&lt;li&gt;重要な仕様改訂が入ったら、新しい&lt;code&gt;pin_NNN_...md&lt;/code&gt;を追加する&lt;/li&gt;
&lt;li&gt;古いpinは置き換えられるのではなく、その時点のスナップショットとして残る&lt;/li&gt;
&lt;li&gt;Git HEADに近いイメージ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;msg（Flow）
&lt;ul&gt;
&lt;li&gt;やり取りの時系列ログで、追記のみ、過去は書き換えない&lt;/li&gt;
&lt;li&gt;レビュー依頼・レビュー結果・レビュー対応など、一区切りごとに1ファイルを必ず作成する&lt;/li&gt;
&lt;li&gt;時間とともに流れていく、Flow（フロー）の情報&lt;/li&gt;
&lt;li&gt;Git Logに近いイメージ&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、「今どうなっているか（結論）」と「なぜそうなったか（追跡）」、がわかる仕組み。&lt;/p&gt;
&lt;h2 id="開発フロー"&gt;開発フロー&lt;/h2&gt;
&lt;p&gt;開発フローは、initとloopの2stepsに分かれる。&lt;/p&gt;
&lt;h3 id="init-管理aiと仕様を作る"&gt;init: 管理AIと仕様を作る&lt;/h3&gt;
&lt;p&gt;AI同士に作業させるため、管理用のAIと、やりたいことをまとめた仕様書を先に作る必要がある。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;まず、開発でTTPする対象を決める&lt;/li&gt;
&lt;li&gt;これは、ある論文の再現だったり、あるシステムだったりする&lt;/li&gt;
&lt;li&gt;そして、それを構成要素に分解して、要素ごとに数値化する&lt;/li&gt;
&lt;li&gt;その上で、その数値を達成目標にして仕様とする
&lt;ul&gt;
&lt;li&gt;これはマイルストーン、検証項目、達成目標などでもOK&lt;/li&gt;
&lt;li&gt;もしくは、REQ-1, REQ-2のような要件を文章化し、その要件文章の文単位で要件IDをふって細かく管理手法もあり&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;この仕様（正本）を徹底的に管理AIと人間（自分自身）で討論する&lt;/li&gt;
&lt;li&gt;この時点で、この仕様を討論したAIは自分の分身となる&lt;/li&gt;
&lt;li&gt;なぜなら、仕様について自分レベルで理解しているから&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この仕様書が開発のバイブルになり、これの理解を徹底的にしている事が大切。&lt;/p&gt;
&lt;h3 id="loop-作業aiと開発する"&gt;loop: 作業AIと開発する&lt;/h3&gt;
&lt;p&gt;作業AIを別途用意して、先程作った管理AIと仕様書を使って開発を進める。&lt;/p&gt;
&lt;p&gt;アルゴ:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作業AIを用意して、作業AIに仕様を渡す&lt;/li&gt;
&lt;li&gt;作業AIには作業が終わったらmsgを残してもらう&lt;/li&gt;
&lt;li&gt;そのmsgを管理AIに渡して指示をもらう&lt;/li&gt;
&lt;li&gt;管理AIのレスポンスを作業AIに渡す&lt;/li&gt;
&lt;li&gt;その繰り返し&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、人間はメッセンジャーになる。&lt;/p&gt;
&lt;h2 id="まとめ"&gt;まとめ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;ConvosはAIとの会話を、pin（Stack）とmsg（Flow）に分けてMarkdown化する記録方法&lt;/li&gt;
&lt;li&gt;pinは常に最新の1件が正本になる仕様書、msgは追記のみの時系列ログで、連番はpin・msgで1本を共有する&lt;/li&gt;
&lt;li&gt;人間の役割は自分で考えることではなく、何をpinに据え何をmsgとして残すかを判断して中継するメッセンジャーになる&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参考文献"&gt;参考文献&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://www.m1ke.org/p/im-a-goldfish/" &gt;I&amp;rsquo;m a goldfish&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.m1ke.org/p/g2p%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%92%E4%BD%9C%E3%82%8B%E6%99%82%E3%81%AB%E8%AA%BF%E6%9F%BB%E3%81%97%E3%81%9F%E5%85%88%E8%A1%8C%E6%96%87%E7%8C%AE%E3%81%AA%E3%81%A9%E3%81%AE%E3%83%A1%E3%83%A2/" &gt;G2Pライブラリを作る時に調査した先行文献などのメモ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://hackmd.io/" target="_blank" rel="noopener"
&gt;HackMD&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>