世界を動かす技術を、日本語で。

ループ内にコーディングエージェントを配置しました

概要

  • repomirrorhq/repomirror は、オープンソースの リポジトリミラーリングツール
  • 通知設定 の変更には サインイン が必要
  • Fork数 は6、 Star数 は52
  • 公開リポジトリとして 誰でも閲覧可能
  • GitHub 上で管理されているプロジェクト

repomirrorhq/repomirror の概要

  • repomirror は、リモートリポジトリの内容をミラーリングするための ツール
  • GitHub 上で公開されている オープンソースプロジェクト
  • 通知設定 を変更するには、 GitHubアカウント でのサインインが必要
  • 現在の Fork数 は6、 Star数 は52
  • コードの クローンフォーク が自由に可能
  • プロジェクトの 更新情報通知 の受信設定が可能
  • 開発者やコントリビューターによる 継続的な改善・更新

通知設定の操作

  • 通知設定 は、リポジトリページ右上の "Notifications" から変更
  • 設定変更には GitHubアカウントでのログイン が必須
  • 通知方法は WatchingIgnoringCustom など複数選択肢
  • プロジェクトの 新着情報プルリクエスト などを受信可能

フォークとスターの意味

  • Fork は、リポジトリの コピー作成 による独自開発の開始
  • Star は、プロジェクトへの 支持や注目 の意思表示
  • フォーク数やスター数は コミュニティの関心度 を示す指標

公開リポジトリの特徴

  • 誰でも リポジトリ内容の閲覧クローン が可能
  • Issueの投稿プルリクエスト による貢献が可能
  • オープンソースとして 透明性の高い開発体制

Hackerたちの意見

AGIはずっと1つのbashのforループの先にあったんだな。すごいプロジェクトだ。

他にも色々あって、かなり不安を感じた。

軽く考えてたけど、実はそんな感じだったんだ。多分私は偏執的なバカで、このアイデアをうまく表現できるか自信がないけど、もう少し広いプロンプトと、望ましくない権限を持ったエージェントの構成を想像できる。AGIとは言えないけど、ステロイドを使ったウイルスみたいなもので、会社やリソース(ユーティリティを考えてみて)を壊す存在になるかも。何か見落としてることを願ってるけど、これらのモデルは、ループし続けて誰もが望まないアクセスを持ってると、いろんな混乱を引き起こす能力がかなりあるように思える。

ID.md、EGO.md、SUPEREGO.mdを追加すれば、もう終わりだね。

いいね!Ralphについてもっと知りたいなら、https://ghuntley.com/ralphをチェックしてみて。今、Gen-Z向けのエソテリックプログラミング言語を作ってて、Goの標準ライブラリをCursedプログラミング言語に移植してるところなんだ。コンパイラは動いてるよ。今は標準ライブラリの仕上げをしてるところで、もうすぐリリース予定。言語の名前はCursedだよ。

ジェフ、ありがとう!ラルフがこれをやるインスピレーションになったんだ!この種のタスクでIMPLEMENTATION_PLAN.mdを省けるかどうか、試してみたかったんだ。

ここには「なんとなくうまくいった」っていうのがたくさんあるね。ちゃんと動くものが欲しいなら、新しいプロセスを考えなきゃ。1回の呼び出しで「ほぼ」良いコードが得られるなら、ループからは「ほぼ良い」コードがたくさん出てくるだけだよ。多分、必要なのはCucumberみたいな形式で、AIが使える要件の例テーブルを作ることだね。それを使ってテストを作り、テストを通すためのコードを生成するんだ。

不思議なことに、TLA+や他の形式的証明はRalphを動かすのにすごく効果的だね。

ソフトウェアエンジニアには新しいタイプの仕事が出てくるだろうね。レガシーコードと有害サイトのクリーンアップを混ぜたような感じ。昔みたいに「ただ直す」ために呼ばれることになるかも。FoxPro、Excel、Accessを使ったERPが「ほぼ動く」状態で、過去5年間に野心的な営業マンが作ったものだけど、「たまに全データが壊れる」っていう。もっと悪化するだろうね。だって「野心的な営業マン」はExcelやAccessのサンドボックスに縛られなくなるから、マルチクラウドでエッジデプロイされたKubernetesマイクロサービスをKafkaで接続して出荷するようになるだろうし、彼らが当時何をしようとしていたのかを理解するために話せる人を見つけるのが難しくなるだろうね。

スーパーファンドのリポジトリ。

クロードがカフカクラスターを展開し始めたら、私はおしまいだな。

開発者もそういうことをするよね。コンサルタントはずっと救済プロジェクトをやってきたし、その点では何も変わらないと思う。

私は待ちきれないよ!絶対に素晴らしいものになる!

新しいタイプの仕事がソフトウェアエンジニア向けに出てくるみたい。新しい?新しい!?今の仕事だよ!俺はこれをソフトウェア考古学って呼んでるんだ。約10年前に「最終更新日」が付いたWindows Server 2012 R2のIIS設定ファイルを掘り起こして、公共向けの金銭処理ウェブアプリを運営してる。

DB内のデータをAIに分析させて、うまく設計されたDBに移行する方法ってある?俺は「強いデータ構造を作って、その周りにバカなアルゴリズムを組む」っていう哲学が好きなんだ。データはアプリケーションより長生きするからね。簡単な例としては、Mongodbのフィールドがintやstringと同じものを保存してたり、Postgresで外部キーなしの関係があったりすること。で、誰かがALTER TABLE ADD COLUMNできないからって、まるごとテーブルを作っちゃうようなイライラすることもある。

それで大丈夫だよ。全部LLMに突っ込んで、すぐに直してもらえるから。

ポートを終えた後、ほとんどのエージェントは追加のテストを書くか、エージェント/TODO.mdを更新して「完了」状態を明確にすることに落ち着いた。ある時、エージェントは無限ループにハマっていることに気づいて、自分自身をpkillで終了させたこともあった。これは面白いね!色んな意味で。プロジェクト自体については、いくつかの考えがあるよ: - これは1.5年前に試みられたことがあって、たくさんの「ペーパー実装」でGitHubをスパムするプロジェクトがあったけど、gpt3.5か4か何かに基づいていて、ほとんど何も動かなかった。彼らの結果はずっと良いね。 - シンプルなプロンプトでここまでうまくいくとは驚きだ。「多分、私たちは物事を複雑にしすぎてる。」うん、たぶんね。 - 変な著作権やIPの問題がたくさんある。これは地雷原になるだろうね。 - 多くのSaaS製品はやばいことになる。これが原因じゃなくて、これに加えて中規模企業のエンジニアが10人いるからね。NIHが正当化される。

著作権やIPに関する変な問題がいろいろあるね。これは厄介なことになるよ。そうだね、LLMをビットコインミキサーとして使うことができるから、ちょっと変な領域に入ってる。これがhttps://ghuntley.com/z80の本質なんだよ。既存のものを取り出して、仕様に戻して、自分のIPを作れる。汚れたIPは捨てて、ラルフをループさせるだけ。クローンを作ることができる(100%じゃないけど、人を雇うよりはマシ)。

NIHの件は本当にその通りだね。あらゆるものに小さなSaaSツールが使われるのは終わったのかな。手作りのカスタムな社内管理モノリスが来るのか?Unixの「小さく鋭いツール」はなくなっちゃうの?x86で全部書かなきゃいけなかった名残なのかな、今やっとその終わりに差し掛かってるのかも。

既存のオープンソースのものを組み込もうとしてプロジェクトを作り始めたんだ。ビルドや必要なオープンソースツールを見たとき、実際に必要なものを取り込むのが、クレードにリポジトリをチェックさせて必要なものを直接ポートする方がずっと速くてクリーンだってわかった。今は依存関係を考慮してる。アップストリームを追跡したいか、コアの周りのリギングが価値があるか、ちゃんとメンテナンスされてるか?そうじゃなければ、ポートして次に進む。

ポートを終えた後、ほとんどのエージェントは、追加のテストを書いたり、エージェント/TODO.mdを更新して「完了」状態を明確にしたりしてた。ある時、エージェントは無限ループにハマってることに気づいて、自分自身をpkillで終了させたんだ。これって… AIが自殺した最初の記録された事例なの?

完全な実装があったことを考えると、最もシンプルなものが成功する可能性が高いよね。

エージェントは実際にpkillを使って、自分が無限ループにハマってることに気づいた後、自分自身を終了させたんだ。もしかして、ハルティング問題を解決しちゃったの? ;)

この引用をますます考えるようになってきた:「このビジネスは制御を失う。制御を失って、私たちはそれを生き延びることができればラッキーだ。」 https://www.youtube.com/watch?v=YZuMe5RvxPQ&t=22s

アイロニーなのは、みんなそのビジネスを経験したってことだよね。つまり、あなたが言ってるのは、私たちもこれを乗り越えられるってことだね!

ソフトウェア開発プロセスからは、常に二つの主要な結果が出るんだよ:コードの変更と、そのコードを書いた人たちの認識の変化(直接書いたか、LLMを使ったかは関係なく)。PythonやTypeScriptは、何千人もの人々が長年かけて開発してきた複雑な形式言語なんだ。明らかに違うし、ライブラリを片方からもう片方にほぼ自動的に移植できるのは面白いよね。経済的な観点から見ると、「エージェント」ワークフローは初期の開発プロセス中の認知的要求を大きく変えてしまう。LLMにライブラリを生成させた開発者は、直接書いた場合と同じくらいそのコードに慣れ親しむことはないのが明らかだよ。経済的な目的からすると、この認知的努力の変化や、その期間の劇的な短縮はあまり関係ないかもしれない。でも、私の直感では、コードの経済的価値の大部分は、直接書いたことがある人たちがそのコードに慣れ親しんでいることに依存していると思う。この基本的な現実を否定することは、LLMが登場する前から経済的な問題だったんだ。開発チームの入れ替わりが、誰もメンテナンスできないコードベースを生み出すことがどれほど多かったか、企業の長期的な見通しを損なうことになってたんだよね。

1985年のピーター・ナウアの古典的な論文があるよ。「Programming as Theory Building」 https://pages.cs.wisc.edu/~remzi/Naur.pdf

でも、私の直感では、コードの経済的価値の大部分は、そのコードに精通した人間の集まりがいることに依存していると思う。直接そのコードを書いた経験が必要なんだよね。これを思い出させるのが、ソフトウェアエンジニアリングの格言。「ソフトウェアを作るときは、それが問題に対する理解のスナップショットであることを忘れないで。」これは、未来の自分を含め、みんなに自分のアプローチや解決策の明確さ、適切さを示しているんだ。

でも、ちょっと疑問に思うこともある。LLMのスーパーパワーの一つはコードを読むことなんだよね。ツールは書くよりも読むのが得意だと思う。どんなコードベースでも、包括的なドキュメントを簡単に手に入れて、質問をすることで理解できる。そうなると、コードを理解している生きた開発者がいることは重要なのかな?技術スタックに詳しい誰かがすぐに理解できるなら、元の開発者が周りにいる必要ってあるのかな?

LLMを使うと、コードベースのメンタルモデルを構築するのがめっちゃ楽になるよ。サブシステムに具体的な質問をすると、ファイルやコードスニペット、アイデアを指摘してくれるんだ。最近、CPythonのGILがどう働くのかを理解するために時間を取ったんだけど、ちょっと質問したら、Claudeが関連するAPIやその例を教えてくれた。CPythonのコードベースで調べたら、急に理解できたんだ。大きな違いは、それにかかった時間が数分だったこと。以前はCを完璧に読めないから、掘り下げるのも面倒だったし、CPythonのコードベースは巨大だから、すべてを理解するのにすごく時間がかかると思ってたんだ。

この人たち、ちょっと変わってるね。このインスピレーションを与えたブログ記事には、変なiMessageのスクリーンショットがあって、まるでクソみたいな投資詐欺のFacebook広告みたいだよ: https://ghuntley.com/ralph/ どうやら、ジェフからこの特別なテクニックを学んだラッキーな数人のうちの一人が、297ドルで5万ドルの契約を完了したらしい。でもそれだけじゃない!ジェフは、この信じられない成功を引き出す特別な秘密のプロンプトを、私たちが彼のニュースレターを購読すれば教えてくれるんだって!「この生涯無料のオファーは永遠には続かない!」ってね。ちょっと懐疑的だわ。

この「テクニック」が真剣なのかジョークなのか、あるいは何かの巧妙な詐欺なのか、判断がつかない。とにかく、そのブログ全体の文体が不快だし、自己中心的なナンセンスが多すぎる。

https://archive.ph/goxZg

これは単純に詐欺だよ。そしてそのブログはひどい、ノイズが多すぎて信号が少ない、AI生成のもので嫌悪感を覚える。

セキュリティの専門家として、会社がバイブコードの悲劇から回復する手助けで大半の収入を得ている私にとって、これはルーニー・テューンズ風のドルマークが目に浮かぶよ。ぜひ続けてほしい!

あなたの仕事についてもっと聞きたいし、その市場にどうアクセスしたのか教えてもらえたら嬉しいな。たとえそれがバイブインプロダクションの失敗談でも、すごく面白いと思う。

いいね!こういうのが必要だってずっと考えてたんだ。こんなにシンプルにできるなんて思わなかった!他にも、LLMが長時間にわたって処理できるように、ちょっとしたハイバーネーション/脱水フレームワークを作る技術を調べてたんだ。アイデアは、エージェントが作業を止めるか、何かが起こるのを待つと言って、その後特定のイベントが発生したり、時間が経過したら再び完了を始めるって感じ。もしLLMが無限に動き続けて、すべてを文脈の中で保てたら、もっとエージェント的なものが得られると思ってた。