AI・機械学習
コードスキャン
要約
Devinは、広範なエンジニアリング目標をコードベース全体の具体的な改善に変換する新機能「Code Scans」を発表しました。ユーザーは達成したい目標をDevinに伝えるだけで、Devinが変更すべき箇所を調査し、発見事項を評価し、それらをプルリクエストに変換します。この機能は、Agentic MapReduceアーキテクチャに基づき、大規模な調査を並列エージェントに分散させ、結果を統合してプルリクエストとして提示することで、開発効率を大幅に向上させます。
全文翻訳
本日、私たちはCode Scansを発表します。これは、広範なエンジニアリング目標をコードベース全体の具体的な改善に変換する新しい方法です。Devinに達成したいことを伝えると、Devinが変更すべき箇所を調査し、発見事項を評価し、それらをプルリクエストに変換するのを支援します。
多くのエンジニアリングタスクは、特定の変更から始まります。他のタスクは、結果から始まります。
SEOを改善する
メンテナンスオーバーヘッドを削減する
アプリケーションのコンパイルを高速化する
これらの目標は、最初のステップだけでもかなりのプロジェクトであるため、バックログに残ることがよくあります。コードベースを調査して、どこから始めるべきかを把握することです。さらに、機会を特定することは仕事の半分にすぎません。誰かが変更を実装する必要があり、その多くはそうです。
Code Scansは両方を支援します。
Devin Security Swarmのために構築したアーキテクチャであるAgentic MapReduceを搭載したCode Scansは、大規模な調査を集中したバッチに分割し、それらを並列エージェントに分散させ、それらの発見を1つのレポートに統合します。その後、Devinはその発見をレビュー準備完了のPRに変換します。
ローンチ前にCode Scansをテストしているチームは、すでに成果を上げています。
Code Scansは、ソフトウェア品質、バグ修正、安定性、パフォーマンス、およびセキュリティとプライバシーを含むコンプライアンスなど、私たちが最も気にかけていることに大きな影響を与えました。いくつかのリポジトリ全体で96%のPRマージ率と推定されるため、短いテスト期間で700時間以上のエンジニアリング時間を節約したと推定しています。
PRマージ率
96%
エンジニアリング時間節約
700+
開始するには、Devinwebappで/scanと入力するか、ドキュメントをお読みください。
目標から始める
スキャンを開始する前に、どのファイルを確認する必要があるかを知る必要はありません。代わりに、探しているものを定義すると、Devinがその目標を具体的なコードベースの調査に変換するのを支援します。
例:
Webアプリの未使用コードを見つける。
生成されたファイルとテストフィクスチャを除外し、削除を推奨する前に間接参照を確認する。
独自の基準を持ち込むこともできます。チームのコーディング標準、アクセシビリティチェックリスト、または今後の移行の要件です。
Devinは、何を検査するか、何をスキップするか、そして何が発見と見なされるかを確立するのに役立ちます。スコープと設定を確認すると、Devinは調査を実行し、優先順位付けされた発見リストを返します。そこから、証拠を検査し、Devinと結果について話し合い、対処したい問題に対してPRを開くように依頼できます。
Rustのコンパイル時間を改善する
Dioxusリポジトリのコンパイル時間を短縮するためにCode Scansに依頼しました。Devinは、依存関係とビルド構成を合理化する機会を特定しました。これには、重量級のCLI機能がデフォルトでコンパイルされるのではなく、オプトインにするというものも含まれます。ローカルで変更を適用した後、クリーンなデバッグビルド時間は58.6秒から21.0秒に短縮されました。これは、テストされた22のワークスペースクレート全体で64%の削減です。
デフォルトでマウントされた機能により、web-sys/js-sys/wasm-bindgenが強制され、(serializeはserdeを強制します)すべての非Webレンダラーに適用されます。
デフォルトの機能セットはマウントを有効にし、重量級のオプションのweb-sys依存関係(および推移的にjs-sys + wasm-bindgen)をアクティブ化します。しかし、それらのバインディングは...
巨大な基盤クレート:安定した生成された要素/属性テーブルが揮発性ロジックとバンドルされているため、完全な再展開と下流の再コンパイルが発生します。
dioxus-htmlは、すべてのレンダラーが依存する基盤クレートであり、巨大でほぼ静的な生成された要素/属性API(elements.rs、global_attributes.rs)をバンドルしています。
builder_constructors!要素テーブルはhtmlクレートの主要なコンパイルコストです(約112個の要素、要素あたり約112個のプロックマクロ呼び出し、ホットリロードトラバーサルが重複しています)。
単一のbuilder_constructors!呼び出しは、htmlクレートの主要なコンパイル時間コストです。112個のHTML/SVG要素を各ユニット構造体、TAG_NAME/NAME_SPACEに展開します。
cargo-generateは、dioxus-cliで無条件にコンパイルされますが、dx createでのみ使用されます。
cargo-generateは、dx create/dx initスキャフォールディングパスでのみ使用される非オプションの依存関係ですが、git2/libgit2-sys(ネイティブCライブラリビルド)、liquidテンプレートをドラッグします。
dioxus-ssrはtokio "full"(デフォルトオン)をプルしますが、fs + io-utilのみを使用します。
dioxus-ssrはtokio = { version = "1.28", features = ["full"], optional = true } を宣言しますが、クレートはtokioを正確に1つのモジュール(incremental.rs)で使用し、tokio::fsと...
SEO最適化
devin.aiとcognition.com全体でSEOの問題のスキャンを実行しました。2つのリポジトリにわたる44件の発見事項が表面化し、数日後に修正をリリースしました。
スキャン前後のAhrefsクロールを比較すると:
devin.aiのAhrefsヘルススコアが87から92に増加しました。
devin.aiの低速ページが73%減少しました。
cognition.comで欠落していた画像altテキストが解消されました。
顧客事例ページが相対的なog:image / twitter:image / JSON-LDを発行します。
すべての顧客事例ページ(/customers/<slug>)は、Open Graph画像、Twitter画像、およびArticle JSON-LD画像を、ドメインがなくスラッシュもないルート相対パスである生のフロントマターogimagePath値に設定します。Open Graph / Twitter Card仕様とschema.orgは絶対URLを必要とするため、プレビューとArticleリッチリザルト画像が破損します。
devin-website
Redirect chain /resources/university → /university → externalがホップをドロップします。
vercel.jsonは、/resources/university -> /universityと、別に/university -> https://learn.devinenterprise.comを定義します。最初のリダイレクトが別のリダイレクトソースをターゲットにしているため、/resources/universityへのリクエストは、最終宛先に直接移動するのではなく、2ホップの301チェーンを通過します。Ahrefsは/resources/universityに157のライブバックリンク(22の参照ドメイン)があることを確認しています。
devin-website
Homepage og:urlが非正規の/indexに解決されます(正規のhttps:...と一致しません)。
ルートレイアウトは、すべてのページでopenGraph.url: './'を設定します。これはサブルートでは有効ですが、ホームページではfalseです。Nextはルートルートに対して./をパス名/indexに対して解決するため、提供されるホームページはog:url = https://cognition.com/indexを発行しますが、その正規リンクタグはhttps://cognition.comです。
cognition-marketing-website
Terminal layoutは、すべてのベース/デスクトップページが発行するJSON-LD構造化データを省略します。
_terminalLayoutのheadは、title/description/canonical/OG/hreflangを組み立てますが、_baseLayoutと_desktopLayoutの両方がデフォルトのSoftwareApplicationブロックを送信するのとは異なり、JSON-LDは送信しません。そのコンシューマーである/cli(Devin CLI製品ページ)と/auto-triageは、どちらもインデックス可能な中心的な製品サーフェスです。
devin-website
Endedイベントが、ライブウェビナーを宣伝するメタディスクリプションとともにインデックス可能のままです。
whats-new-in-devin-06-24-26イベントページは、イベントが終了したことをオンページでアナウンスしています(「このイベントは終了しました」、「イベント終了」、「登録締め切り」)。しかし、そのメタデータにはrobots: {index:false}が含まれておらず、メタ/OGの説明はウェビナーをライブで今後のものとして宣伝し続けています。したがって、期限切れのページはインデックス可能のままですが、その検索スニペットは登録がまだ開いているかのように過去のイベントを宣伝しています。
cognition-marketing-website
Agentic MapReduce
Code Scansは、コードベース全体の調査を実用的なものにするために、Devin Security Swarmのために構築したアーキテクチャであるAgentic MapReduceの上に構築されています。これは4つのフェーズで機能します。
計画。Devinはリポジトリを調査し、目標に関連するコードを特定するためのルールを定義します。
分割。それらのルールはコードベース全体で実行され、一致するコードは集中したバッチに分割されます。
マッピング。並列Devinエージェントが各バッチを調査し、必要に応じて周囲のコードを読み取り、発見事項を報告します。
削減。最終エージェントが発見事項を結合し、重複を削除し、結果を1つのレポートに優先順位付けします。
1. Plan
Agentic
Devinはリポジトリを調査し、目標に関連するコード(ここでは、もはや使用されていない可能性のあるシンボル、モジュール、依存関係)を特定するためのルールを定義します。
repo
agents
selectors
exports with no importers
unreferenced modules
unused dependencies
stale feature flags
これにより、各エージェントのコンテキストが集中し、繰り返し検索するのではなく、関連コードに推論予算が向けられます。このアーキテクチャは完全性も保証します。選択された各バッチは処理されなければなりません。
Code Scansは、セキュリティを超えて同じアプローチをもたらします。