HN 日本語サマリー

← 一覧へ戻る
プログラミング

Agents.mdはUnixを理解し、あなたもそうすべきです

Agents.md speaks Unix, and you should too (fmind.dev)

12 pointsby fmind-dev3 コメント

要約

筆者は、コマンドラインとUnixツールの習得がプログラマーとしての生産性向上に不可欠であると語ります。長年のドットファイル管理の経験から、エージェントが開発環境の改善に貢献できる可能性に気づき、Unixのファイルベースのインターフェースがエージェントと人間双方の協調作業を容易にすることを説明しています。AGENTS.mdという新しいフォーマットは、プロジェクトの文脈と指示をコードと共に管理し、エージェントとの連携を強化します。

全文翻訳

2009年、大学のコース中に、Apache 2 Webサーバーの設定に苦労していました。プジョーの経験豊富なシステム管理者である私たちの先生が私の机に来て、LinuxツールとVimを使って数分で問題を解決しました。「どうやってやったんですか?」と尋ねました。彼は私にコマンドラインを使い始めるべきだと言いました。 プログラマーとして生産的になることは非常に重要です。私は家に帰り、Linuxディストリビューションをインストールし、いくつかのセッションのLinuxチュートリアルとvimtutorをこなしました。それは私のキャリアにおける最高の投資の一つでした。少し呪いでもありました。試すべき別のツールが常にあり、別の設定を微調整する必要がありました。 そこから、私はSpacemacs、REPLs、数多くのCLIツールを探求し続けました。私はGitHubのトレンドを狂ったように追いかけ、私をより生産的にしてくれる次のものを探しました。 これらのツールを使いこなし、組み合わせることを学ぶにつれて、私はそれらの周りに作業環境を構築しました。次のステップは、そのセットアップを再現可能に保つことでした。これにより、私はそれをマシンからマシンへと持ち運ぶことができました。それが私の(レガシーな)Ansibleベースのドットファイルになりました。 ドットファイルとは、シェル、エディタ、その他のツールの背後にある設定ファイルであり、多くの場合、隠しファイルやディレクトリ(例: Fishの~/.config/fish/config.fish)に保存されます。セットアップスクリプトと共にリポジトリに集められると、それらは作業環境を再構築するためのレシピになります。 私はそれらのドットファイルを洗練させるのに何時間も費やしましたが、数分で新しいシステムをセットアップし、その設定を目の前のマシンに適応させることができました。私が洗練させたツールと設定は、どこで働いてもすぐに使える状態でした。 これは今日のコーディングエージェントの数年前のことです。私は人間が中心となる環境を自分で構築していました。 私のドットファイルは新しいユーザーと新しい貢献者を得ました 何年もの間、その環境のユーザーは私と私が書いたスクリプトでした。すべての改善は、ツールを見つけ、それを学び、設定するのに費やせる時間量に依存していました。 コーディングエージェントはこの関係を変えました。それらは、自分たち自身のため、そして私のために、より良い、より速いツールを推奨することができます。それらは私が聞いたこともないツールを私に紹介してくれました。それらは設定を検査し、変更を提案し、チェックを実行し、失敗を乗り越えることもできます。 あなたがまだ理解していない部分について助けを求められるようになると、有用なドットファイルを作成することが容易になります。 利益は両方にあります。再現可能なセットアップは私の作業を節約します。それはまた、エージェントが操作するための予測可能な場所を提供します。有用な検証コマンドは、私が変更をチェックすることを可能にします。それはまた、エージェントが変更を返す前に間違いを捕らえることを可能にします。一度書かれた指示は、次のエージェントにワークフローを説明することができます。 エージェントはドットファイルの改善を助け、より良いドットファイルは私たち両方がより生産的に働くのを助けます。 コマンドラインでの私の長年の経験は、出発点を与えてくれました。 Unixは共通の言語を与えてくれます エージェントにNeovimの設定を変更するように頼むことを想像してみてください。設定はファイル内のテキストです。エージェントはそれを見つけ、読み、編集し、通常のツールを使って差分を私に見せることができます。Gitはその変更を記録し、別のプログラムがそれをチェックできます。 私が使用することを学んだのと同じインターフェースがエージェントにも利用可能です。それが「すべてはファイルである」という有用な部分です。Unix環境の多くは、ファイル、ストリーム、プロセスを通じてアクセス可能です。 その権限内で、エージェントは設定を検査し、テストを開始し、その診断と終了ステータスを読み取り、サーバーを停止することができます。それらは具体的な結果を扱います。 それらのツールも構成可能です。一つはファイルを見つけ、もう一つはそれらをフィルタリングし、もう一つは結果を検証します。 例えば、Gitリポジトリから: git ls-files | rg '(^|/)AGENTS\.md$' これはツールの構成です。Gitは追跡されたパスを提供し、Ripgrepはエージェント指示ファイルを照合します。2つの既存のプログラムがカスタム統合なしで協力します。 より複雑なワークフローは、常に長くなるシェルワンライナーの代わりに、明示的な入力とリカバリロジックを持つ小さなPythonプログラムになる可能性があります。 だからこそ、コマンドの品質は私たち両方にとって重要です。有用なエラー、意味のある終了コード、適切な場合は構造化された出力、そして予測可能な非対話的な動作は、ツールを使いやすく、組み合わせやすくします。 目に見えないプロンプトでハングするコマンドは、スクリプトをスタックさせるのと同じくらい確実にエージェントをスタックさせます。私のCLI開発ガイダンスはそれらの期待を記録します。 エージェントプラットフォームは、スケジューリング、分離、リモート調整を追加できます。 しかし、ローカルコードベースでの作業については、Unixはすでに並外れた柔軟性を提供しています。 1つのコマンドを改善することは、それを使用するすべてのワークフローに利益をもたらす可能性があります。 しかし、ファイルへのアクセスだけでは、エージェントはそのファイルが変更すべき適切なファイルであるかどうかを知ることはできません。 AGENTS.mdは、この環境がどのように機能するかを説明しています 私の現在のドットファイルはfmind/dotにあり、そこではchezmoiを使用して設定ファイルとテンプレートを管理し、miseを使用してツール、環境、タスクを管理しています。それらは今日の私のセットアップ管理方法により適していますが、エージェントが理解する必要のある区別を導入しています。インストールされた設定とその管理されたソースは異なるファイルです。 そのNeovim設定に戻りましょう。インストールされたコピーを編集すると、すぐに機能するかもしれませんが、chezmoiがソースを適用したときに次回は消えてしまうかもしれません。 私のプロジェクト指示は、エージェントに永続的な編集がどこに属するか、それをどのように検証するか、そしてどの既存の作業を保持するかを伝えます。 Unixは両方のファイルへのアクセスを提供します。AGENTS.mdは、どちらを変更すべきかを説明しています。 そのタスクのために、短い指示ブロックは次のようになります。 ## Neovim設定の変更 - `~/.config/nvim/`ではなく、`dot_config/nvim/`の下にあるchezmoiソースを編集してください。 - まずGitの差分を検査し、無関係な編集とステージングされた選択を保持してください。 - 関連する設定チェックを実行し、chezmoiの差分をプレビューしてください。 - デプロイが要求されたタスクの一部である場合にのみ、設定を適用してください。 コマンドだけでは、私がどのコピーを維持しているのか、またはデプロイを依頼したのかをエージェントに伝えることはできません。それらは指示が明確にする決定です。 AGENTS.mdは、Agentic AI Foundationによって管理されている、プロジェクトのコンテキストと指示のためのオープンなMarkdownフォーマットです。それは自然にここに収まります。コードの隣にある通常のテキストで、通常のツールを指し、同じ差分でレビュー可能です。Unixを必要とせず、各エージェントホストは独自のロード動作を持っています。「Unixを話す」はその適合性を説明しています。 リポジトリは、環境、そのツール、およびその作業知識を一緒に保持します。アプリケーション設定はdot_config/に、共有された個人指示はdot_agents/AGENTS.mdに、再利用可能な手順はskills/に、そしてコンパニオンPython CLIはdot/にあります。リポジトリのレイアウトが残りをカバーします。 すべての手順をAGENTS.mdに含めると、それはマシン全体の取扱説明書になります。エージェントスキルは、別個の補完的なフォーマットを提供します。SKILL.mdのエントリポイントとサポート参照またはスクリプトを持つディレクトリです。私のスキルカタログは、ツールの使用方法、プロジェクトの開始と維持方法、および私の好みのスタックとの作業方法を説明しています。 Neovimの変更については、プロジェクト指示はどこで作業し、何を保持するかを確立します。関連するスキルは手順を提供します。 エージェントがCLIを構築している場合、代わりにストリームと終了コードに関するガイダンスをロードできます。専門知識は、すべてのマニュアルをすべての会話に含めることなく利用可能になります。ホストが実際にそれを見つけて従うかどうかは、実際のタスクを通じて確認する必要があります。 これらのスクリーンショットは、ソースファイルのコピーに対して実際のアプリケーションを実行している一時的なZellijセッションでキャプチャされました。ここでは、私の共有指示がAntigravityのCLIの隣のNeovimで開かれています。 これで、改善には設定とその使用方法の説明の両方が含まれるようになります。どちらもGitに残され、私がレビューでき、将来のエージェントが見つけることができます。それは次のタスクに良い出発点を与えます。 より良いツールには有用なチェックが必要です 作業をチェックする指示には、その背後に有用なコマンドが必要です。Zizmorは私のGitHub Actionsワークフローを監査し、Lefthookはコミットとプッシュの周りで設定されたチェックを実行します。それらの診断は、エージェントが修正するものと、私がレビューするものをエージェントに与えます。Git-cliffはリリースノートを処理します。 チェックは実際に実行される必要があります。Cosignはインスト