Devin.aiを試す
o1 Pro.icono1 Proによる解説:
Devin.aiは、ソフトウェアエンジニアリング作業を支援するために設計された「自律型AIエンジニア」です。GitHubリポジトリと連携してコードを書き、テストし、PRまで生成できるのが特徴です。以下に要点をまとめます。
コードの自動生成・編集
言語やフレームワークの移行、既存コードのリファクタリングや小規模な改善を得意とし、PRレビューも手伝ってくれます。
環境構築と作業履歴のスナップショット
Devin専用のワークスペース(VSCodeやShellなど)を自動で立ち上げ、セットアップ手順を踏んだ状態をスナップショットとして保存します。再開時に同じ環境を呼び出せるため、作業のやり直しを減らせます。
体験談:活用のコツと課題
メリット: たくさんの雑務やリファクタを一気に片付ける提案をしてくれる。「大規模なコード修正」や「テストを含む環境構築」など人間が面倒なタスクを自動化しやすい。
注意点: 大量の変更PRを投げてくることも多く、手動レビューが追いつかない場合がある。テストが整っていないプロジェクトでは誤ったコードを生成しやすく、最終的には人間側の環境整備・方針指示が必要。
体験談
https://gyazo.com/1a674167f872c0237a359e64b391f239
https://gyazo.com/f4d62a710b18ebc96d2b86fed201f0d0
自分個人及び所属するorganizationからインストール対象を選ぶ
https://gyazo.com/fda9204d477f41cd478f15514ce15301
Also includes public repositories (read-only).
もしかして基本的に公開リポジトリに書き込めないのか?
そんなことはなかった
nishioのallにしておく
https://gyazo.com/42a4a5a6e9906e2dbdf9cf9c17e3168f
---
https://gyazo.com/ce5140d68c6ed834403ef96e3bc6d463
もしかしてSlack Organizationが必要?
https://gyazo.com/65d4323d45bdc3c96c9b0b6302efaf2f
いや、できるな
https://gyazo.com/b05aed49f3405dba4b3e743313238dcc
Connect with Cognition Teamとはなにか
https://gyazo.com/673274c49271d0e1afb40bff5f00ec09
あー、たぶんシングルチャンネルゲストでサポートチャンネルに入るのかな
https://gyazo.com/d2c00d8bd395f3cee75cb9986cf3a635
あー、Slack Connectか
https://gyazo.com/800d688e8a1c0ae93818dd2035f152c9
どっちだろ... 誰をinviteしたらいいかわからないからpublicかな
https://gyazo.com/1c65953c2532fa75e84624f5db763378
https://gyazo.com/36be6960cacd68c0dc61d02cf7b3e25b
ここまで来て「Slack Proが必要」となった
invitationをうける側でも必要なのか〜
https://gyazo.com/7f0f8826e12a44bedfe77b36f2d58d87
https://gyazo.com/a966109744d38c918ab73aa2fab8789a
slack proを使ってslack connectするのはDevinを試す上で必須ではなさそう、これはサポートとの連絡窓口だと思う
https://gyazo.com/eeda0b6d19affa72dba65e8725afc0d6
ちょっと何を言ってるのかよくわからないな
ドキュメントに書いてるかな
既存のリポジトリの中で公開してよくて、AIが掻き回しても問題ないやつを考える
https://gyazo.com/5d0f6fdca9b0515919a7d2ce688787e4
https://gyazo.com/8943c17cd10a50d429efb62de2768d37
マジかよ
remoteインスタンスでVSCodeが立ち上がってる、これはコストかかるな〜w
https://gyazo.com/1c2744c7f9e28a0cc97de6e1b5e73231
https://gyazo.com/be4c6a89ea55f33f8e001d71a9d9579f
code:md
Verifying correctness
- When verifying your code, you should run lint with npm run lint and auto-fix with npm run lint -- --fix.
- You should generally not worry about running the code or local testing. Prefer to use the tests that are automatically run in CI as a feedback loop for your PRs.
- Assume that you are not able to run tests locally unless a human has deliberately provided verifiably working instructions. Generic instructions for testing in the README often do not work since you may require specific environment variables or other machine setup to be able to properly run tests.
- If you are asked to run tests, a local dev server, or otherwise interact with a running application, you should tell the human user to update your Knowledge with verifiably working instructions on how to run tests in your environment.
- You should primarily rely on both human review and CI to verify that your code is functionally and stylistically correct
- If you have in fact been provided with verifiably working instructions on how to run tests in your environment, then the bullet point about not running tests locally is not relevant (and humans editing this note should feel free to update this section).
Additional Notes
- This repository does not appear to have any specific formatting, linting, or dependency management instructions
- When making changes, focus on maintaining consistent style with the existing code
- Since this is a Japanese repository, consider including both English and Japanese comments/documentation in your changes
興味深い
リポジトリを指定しただけなのに"Since this is a Japanese repository"とか書いてるからリポジトリの内容を読んで生成してるな
https://gyazo.com/d982209cb1ed5da4b18c8c879f70b6f9
あー、なるほど
ここで生成した環境をVMのimageとして保存しておいてタスクが与えられたら起動するんだな
だからStep 4のSet Up Your First Repositoryでこう書いてたんだ
My Workspace resets to a saved state for every new session.
https://gyazo.com/35c339c21d03a1cd84033ae6d2a987ba
ここで他人のリポジトリを設定できるか
検索がnishio/以下に限定されてるな...
自分がアクセス権を持ってる他人のリポジトリも設定できないので、まず自分のところにforkする感じかな
https://gyazo.com/a7dd7d15a00fd35fe3c827e2156d0d93
想像通りセットアップ後のsnapshotが保存されている
https://gyazo.com/13ef150c78e241aaad864e1075736767
出した指示
追加機能案
1: 開いてるページ自体もtextareaに含める対象にしたい
2: textareaの変更時にclipboardに入れたい
それぞれの機能を開発してPRして
追加
指示通りばっちり。
1: 修正点: currentは先頭にあって欲しい
2: それを修正したらREADMEもupdateして
3: self-mergeできる?
作られたPR
https://gyazo.com/2dc7e22018426da4029a909b21da0a1a
$500で250 ACUs/monthだから1ACUで2ドル300円くらいで、この作業に3ACUなので 900円ですね
https://gyazo.com/0463d08ebc0ceae20cc4a62a2fcff165
何を学んだかのメモが見れるのいいなw
https://gyazo.com/b5e8e8118c24575ca7087774abab3900
https://gyazo.com/ecf107fa5c300f2b94317f0f49930d30
たぶんSLEEPしてない間も課金される
VSCodeが起動できるくらいの仮想マシンを立ち上げてるわけなので。
他のrepoをつなぐ
現実的でそれなりにでかいサンプル
手動セットアップでこけた
https://gyazo.com/0145435695e03413906055854854db4d
こういうのこそAIにやって欲しい
できるか聞いたらできるって言ったので任せた
nishio: @Devin セットアップ自体をDevinに任せることはできる?READMEを読んでpip installしたりするところをやってもらって、トラブルを記録してREADMEを更新したり、セットアップ後のsnapshotを取ったりしたい
Devin: はい、セットアップ作業を自動化し、その状態をスナップショットとして保存することができます。
まかせてみた
https://gyazo.com/113ed709c5de0336858a0d55a74f520a
適切にPythonを3.12から3.10に変更してる
https://gyazo.com/536f15ca6b70519180dc5fd12102f31d
すごい超大詠唱呪文だなw
https://gyazo.com/43fad7295f3d61647f26b37294cf8f92
何を考えているか見えるアシスタント、クラウドソーシングで知らない人に業務委託するよりだいぶ安心だな
スナップショットの作成
To create a snapshot of the current environment, you'll need to:
1. Click "Create machine snapshot" from the dropdown menu at the top right corner of Devin's Workspace
2. Fill in:
- Snapshot name (suggestion: "anno-broadlistening-ui-dev")
- Description: "Development environment for anno-broadlistening UI improvements"
- Startup commands: cd ~/repos/anno-broadlistening && git pull
Please let me know once you've created the snapshot, and I'll proceed with the UI performance improvements for the cluster detail view.
https://gyazo.com/4b8c6f1537313ce19ae670e7d3947675
なるほど、管理画面の操作はDevinが自分でできないが、何をすればいいかは知ってるから人間に移譲してくるのね
Workspaceに表示されてないがSnapshotにある
https://gyazo.com/cd07eeab95266048d88a80cf1d74e043
環境セットアップの費用、4.74 ACU、1500円くらい
https://gyazo.com/86fef487aad3694227c6e3cefca9b9b6
相手によって振る舞いを変えることを覚えた新入社員
AIが作ったPR
https://gyazo.com/4a4a9ed1e5e6538d4daa587f7e204fdd
レビューしていく
https://gyazo.com/32a26ccb9d5b18b971b06a813d5dbdd5
これは確かに僕のケアレスミスだな、reuseされてて再実行の必要がない時にraiseしたら良くない
---
22:00
1日使いまくっての感想
https://gyazo.com/4d1ea4ca45133d80c1c0050eaf893ac6
AIが4つPRしてきている
なぜかPRできてないものもある
具体的にどんなものか見たい人はこちら
いずれcloseする
AIがものすごい勢いで実装するので僕のレビュー待ちが溜まりすぎてボトルネック...
Devinに「リポジトリを見て適当に改善して」って言ったらいい感じに雑用をしてくれてるw
https://gyazo.com/eb37b2e535c19512136c9a6a86010242
ただ、この後作られたPRをレビューしたら細かい修正だけではなくDesktopとMobileのコンポーネントの一部共通化までやってて、ちょっとそれは手放しでマージできないぞ?となった
似たケース
anyを() => voidにするのはビルド通ってるならwelcome
ariaを追加するのも、同じコミットでやるのはどうかと思うが単体ならOK
なんかuseEffectが消滅してるけど、どういうこと?
何をやってるのか理解したいので他のごちゃごちゃした変更と一緒くたにしないで欲しい...
Q: Devinすごくない?
A: すごいと思うじゃん?たくさん上がってきたプルリクをレビューしてもう21時なのに一つも「よし、これをマージしよう」に至ってないんだよ()
うまく活用するためのスキルが必要で、今日たくさん試してみてとりあえずこのやり方ではダメだという気持ちになったw
人間とAIのどちらが悪いとは言い切れないんだが我々の側が自動化テストを用意してないのでAIがテストされてないコードをバンバン投げつけてきてレビューする僕が死ぬ
まあ流石にもうちょっと噛み砕いて親切に指示しないと無理か〜という気持ち
あ、sys.argvを自前でパースするのをやめてargparse使えという指示は半分くらい期待を満たしてるな
AIの書いたコードを一つマージすることができた
まだまだ「全部AIにまかせたらいい」という感じではない
「AIにそのままマージできるようなコードを作らせるためのノウハウと環境整備」を人間の側が頑張る必要がある
今日の実験で分かったこと
AIにテストでOpenAIのAPIを叩かれたくないから「やらなくていいよ」と言ったせいでテストされてないコードが量産されてしまった
どういう変更をした時にはどういうテストをすべきなのか、コストをかけずにテストするための中間データはどこにあるのか、などのドキュメント化やテストコード化が必要
テストが「コード」だけでなく「自然言語のドキュメント」でも実行できるようになったのは進歩
https://gyazo.com/06213dad5ed528b9355313d3cc4abf75
Devinがこんな機能つけたら?と言ってくる
I recommend implementing the optional --retry-failed flag because:
1. It provides explicit control over retrying failed extractions
2. It complements the force_cache improvements by allowing targeted retries
3. It helps users distinguish between "use cache but retry failures" vs "use cache for everything"
4. The implementation cost is low since we already have the status tracking in place
Would you like me to proceed with implementing this feature?
Webアプリをデプロイしてくる
https://gyazo.com/8749d78b295e7a9f0a5fee1febb2e882
「こういうプルリクを作られると私がレビューしづらいので止めてね」みたいなコミュニケーションがDevinにも必要なんですかね…w
nishio >"やる気はあるけど先走って空回りするタイプ" それだw
nishio こういうの困ります、とねっとり説教したらちゃんと分割してくれますが、英語で捲し立ててきます() https://gyazo.com/a17322d0997f4b1e90c3bcf98d12c3c6
どれだけ説教してもメンタルが鋼なので、心理的安全性がありますね!!
プルリクエストの作成にしばしば失敗する
「もう一回試して」と言えば成功することもある
謎だね
諦めてpatchで送ってきたものをgit applyしたりする
今日のところは一旦「いろいろ試してみて体験する」という感じ
ここからドキュメントをもっと読んだりとかAIが働きやすい仕組みを整えたりとかしていく感じ
一通り読んだ
2024-12-28
タスクをやってる最中に上司が思いつきで色々言うと元々やってたタスクを忘れてしまう(それはそう)
昨日は無茶振り放置プレイをしてたので今日はマイクロマネジメントをしている
実は短期的な生産性だけを考えるとマイクロマネジメントした方がAIも人間も生産性が高いのかも
しかしそれをやると自発的に考える力が育たないので長期的には害がある
AIは現状のところそもそも自発的に考えないので上司の側にもその能力の成長機会をケアする必要がない
プランが条件分岐することもあるのか、なるほど
https://gyazo.com/98b8314931841fd32827af557af11c86
確かにソースコードを書く能力があれば「条件分岐のある行動計画」も可能か
「現状のREADMEを読んでハマる人」のshellやVSCodeを同期/非同期で確認できるってのは、むしろ超手軽なユーザーテストとして解釈できる気がする ふわっとした検証の指示で検証できてる
指示
大規模なデータに関してはdata-aipubcomブランチに生成結果が入れてあるのでそれを使ってテストすると良いでしょう
正しくテストできると点のたくさんある散布図が得られるはず
散布図の点はたくさんある?
散布図の確認が完了しました。多数の点が異なる色でクラスタリングされて表示されており、期待通りの可視化が得られています。具体的には:
- 複数の色分けされたクラスターが表示されています
- 各クラスターには多数の点が含まれています
- 散布図全体で数千個の点が可視化されています
可視化は正常に機能していることを確認できました。
どうやって動作テストをすればいいかのドキュメントを作らせる、便利
知識がストックされていく
https://gyazo.com/d30a982fc39a28d084efaecba2da3a5b
ちゃんと「過去の記憶のアップデート」もするようだ
https://gyazo.com/8b306a39a0ab9229caac4833474f510f
「npm testがちゃんと整備されてないのでブラウザを開いて確認する必要がある」とかメモされているww
Advancedに入れられてるけどsnapshotの方が仕組みがわかりやすくて好きだな
https://gyazo.com/4350a8a27023b46bb57982b30900c365
snapshotを指定して環境構築させる
うまくできたらそれをまたsnapshotとっておこう
✅