>_ DevTrendsja

言語

ホーム

言語

セクション

フロントエンド バックエンド モバイル DevOps AI / ML ゲーム開発 ブロックチェーン 組み込み セキュリティ
Go

ニューラルネットワークに悪いGoコードを書かせない方法

Cursor、Claude Code、CopilotでGoコードを生成しようとしたことがある人なら、それぞれ固有の問題に遭遇したことがあるでしょう。ニューラルネットワークはしつこくJavaのパターンをGoに持ち込み、%wでエラーをラップすることを忘れ、ゴルーティンでのレース条件を無視し、シンプルな関数で十分なところで巨大な構造を生成します。

毎回手動でモデルにプロンプトを出すのは骨の折れる作業です。アシスタントに一度適切なルールセットを与えて、コードレビューでの絶え間ない修正から解放されたいですよね。だからこそ、フランスの開発者Samuel Berthe(人気の samber/lo ライブラリの作者)が cc-skills-golang プロジェクトを作成しました。

image

Agent Skillsとは何か、なぜ必要なのか

Agent Skillsのコンセプトは、シンプルな問題から生まれました:ニューラルネットワークのシステムプロンプトは無限ではないということです。詳細なスタイルガイド、セキュリティルール、データベース操作の詳細、フレームワークの機能をコンテキストに読み込むと、モデルには実際のコードの余地が просто не останется。レスポンスは遅くなり、生成品質は低下します。

Skillsはレイジーローディングでこの問題を解決します。このプロジェクトは小さなMarkdownファイルのコレクションです。セッション開始時には、各モジュールの概要(約100トークン/スキル)のみがLLMのメモリにロードされます。「この関数のベンチマークを書いて」や「gRPCハンドラーにエラー処理を追加して」とアシスタントに尋ねるとすぐに、モデルは一致するトリガーを認識し、そのタスク専用の詳細なドキュメントを読み込みます。

AIスラップなし

リポジトリのREADMEにある主な注意点は、作者の正直な警告です:「ここにAIスラップはありません。」

今日、GitHubは自動生成されたナレッジベースで溢れかえり、むしろ害をもたらしています。Samuelは違うやり方をしました。実際のGoプロジェクトのコミットからClaudeを使って最初にルールの蒸留は行いましたが、その後、すべての指示を手動で書き直し、編集し、テストしました。

著者はテストスイートで精度測定を行いました:

  • プラグイン可能なスキルなしでは、言語モデルはテストタスクを56%の確率で正しく完了しました。
  • ルールセットを有効にすると、スコアは98%に上昇しました。

特に精度が向上したのは、特定のトピックでした:新しいGo機能(range-over-int、反復子)への古いコードの近代化、ベンチマークの記述、エラー処理。

リポジトリの中身

すべての指示は2つの主要カテゴリに分類されています:一般的な言語ルールと特定のライブラリでの作業。

一般的な言語とアーキテクチャのルール

モジュールはGo開発サイクルほぼ全体をカバーしています:

  • コード品質とスタイル:命名規則、nilとスライスの安全な操作、メモリリークの防止、適切なドキュメント、golangci-lint設定。
  • アーキテクチャとパターン:コンテキスト処理、ゴルーティンリークなしの並行処理、構造体とインタフェースの設計、goplsを通じたリファクタリングパターン。
  • テストとデバッグ:テーブル駆動テスト、レース検出、pprofを通じたプロファイリング、OpenTelemetry設定、メトリクス収集。
  • プロジェクトセットアップ:慣用的なディレクトリ構造(cmd/internal/pkg)、CI/CDパイプライン、モジュール管理。

人気のライブラリサポート

言語標準そのものに加えて、リポジトリは一般的なツールでの作業のためのルールを組み込んでいます:

  • CLIと設定:spf13/cobraspf13/viper
  • 依存性注入:google/wireuber/diguber/fx、そして独自のコンテナ samber/do
  • ネットワークプロトコル:gRPC、GraphQL(gqlgen)、OpenAPI/Swagger。
  • samberエコシステム:関数ヘルパー samber/lo、モナド samber/mo、ロギング samber/slog、エラーチェイニング samber/oops

興味深いポイント:スキルは互いに重複しないように設計されています。エラー処理ルールがロギングに影響する場合、golang-error-handlingモジュールで説明され、golang-observabilityモジュールはそれを参照するだけです。これによりトークンを節約できます。

インストール方法

このプロジェクトは、Agent Skills標準に対応するほぼすべての一般的なツールをサポートしています。

最も汎用的な方法は skills ユーティリティです:

npx skills add https://github.com/samber/cc-skills-golang --all

Cursorで作業する場合は、リポジトリをskillsフォルダにクローンするだけです:

git clone https://github.com/samber/cc-skills-golang.git ~/.cursor/skills/cc-skills-golang

Claude Codeの場合、プラグインの標準コマンドでインストールできます:

/plugin marketplace add samber/cc
/plugin install cc-skills-golang@samber

Copilot、Gemini CLI、OpenCode、OpenAIのCodexも同じ方法でサポートされています。

CIでの自動レビューの使用

著者が説明する興味深いユースケースは、GitHub ActionsでレビュアーとしてAIエージェントを実行することです。

通常のリンターはフォーマットや未使用変数の検出に優れています。しかし、ニューラルネットワークがリファクタリング中に静かにアーキテクチャの凝集性を壊したり、関数から抜けるときにコンテキストをキャンセルし忘れた場合、リンターは無力です。このスキルセットに接続されたエージェントは、コード specifically Goのイディオム遵守をチェックし、PRが同僚に届く前にアーキテクチャの問題を指摘します。

試す価値はあるか

Go開発でニューラルネットワークを активно 使用しており、それらに対する些細なミスの修正に厌倦しているなら、このセットをインストールする価値は十分あります。AIをシニアアーキテクトに変えることはできませんが、馬鹿げたタイポや非慣用的なコードの数を大幅に減らすでしょう。

特に素晴らしいのは、プロジェクトがコンテキストを過負荷にしようとしず、公司のルールで任意のスキルをオーバーライドする能力を残っていることです。社内の内部モジュールを作成し、标准モジュールより優先度を 指定するだけです。

関連プロジェクト