窓を作っては壊していた人のブログ

この謎のブログタイトルの由来を知るものはもういないだろう

Dify v1.9.1のセルフホスティングはファイルアップロードのUIが壊れているのでhotfix版を使おう

まとめ

Webのコンテナイメージは langgenius/dify-web:hotfix-1.9.1-fix.1 を使用しましょう。

https://hub.docker.com/layers/langgenius/dify-web/hotfix-1.9.1-fix.1/

発見の経緯

Dify v1.9.1がリリースされています。

Release v1.9.1 – 1,000 Contributors, Infinite Gratitude · langgenius/dify · GitHub

手元で動かして検証などを行っていたのですが、v1.9.1に上げた所、アプリケーションの開始ノードでファイルをローカルからアップロードしても後段のワークフローで反映できない問題が発生していました。

以下のようにファイルをアップロードしても、ファイル名が空っぽで、この状態で実行すると

このように、No matching enum found for value 'None' となってしまうのです。

v1.7.1からのアップデートで利用していたため、v1.8.0, v1.9.0と環境を変えたのですが再現せず、v1.9.1でのみ再現しました。

対応

diffなどからFile周りの処理を探ってみると以下のようなPRが発見できました。

fix: sync FileUploader context with props to fix inconsistent file parameter state in “View cached variables”. by Woo0ood · Pull Request #26199 · langgenius/dify · GitHub

しかもそのPRは数日後revertされているようです。 そのrevert commitの向き先を探してみると、どうやら hotfix/1.9.1-fix.1 というブランチに向けられています。

という情報を元にnightly的なImage上がってないかなーとDocker Hubを見てみると、以下のImageが見つかります。

https://hub.docker.com/layers/langgenius/dify-web/hotfix-1.9.1-fix.1/

Docker Layerを確認すると

ARG COMMIT_SHA=3ee1a5729df464f3fc201496428f8dad1c98a449

とあり、これを辿っていくと、先のrevertのcommitにたどり着くわけです。 これを実際に動作ささせてみると元の挙動に戻っているため、正常に動作しました。

あらためてまとめ

Webのコンテナイメージは langgenius/dify-web:hotfix-1.9.1-fix.1 を使用しましょう。

https://hub.docker.com/layers/langgenius/dify-web/hotfix-1.9.1-fix.1/

基本的にはdocker-compose.yamlのイメージを参照すればよいですが、こういうケースもあるよというやつでした。

GitHub Copilot Coding Agentが良かった

Microsoft Build 2025GitHub Copilot Coding Agentが発表されました。 待望の機能だったのもあり、発表後試してみました。

今回試したPRは https://github.com/yamachu/VoicevoxCoreSharp/pull/214 です。

GitHub Copilot Coding Agentとは

GitHub Issueを元に、そのタスクを実現するためにどの様な作業が必要なのかを自動で洗い出し、そのプランに沿ってコーディングなどの作業を行ってくれる機能です。 他社サービスで言うと、例えばDevinの様なものとイメージできます。

Issueの起票やレビューなどは我々エンジニアが行う必要はありますが、実際のコーディングはGitHub Copilot Coding Agentが行ってくれるので、エンジニアの負担を大きく減らすことができる機能であると言えます。

Coding Agentのセットアップ

実際に使う前に、まずはGitHub Copilot Coding Agentを有効にする必要があります。 このCoding Agentは、GitHub Copilotの機能の一部として提供されています。 そのため使い始めるには有効なCopilotサブスクリプション、その中でも「Pro+」もしくは「Enterprise」プランに加入している必要があります。

https://github.com/features/copilot/plans?cft=copilot_li.features_copilot

このライセンスを持ったアカウントでCopilotの設定画面にアクセスすると、どのRepositoryで有効にするかを選択する画面が表示されます。 範囲を絞りたい場合はRepositoryを選択し、全てのRepositoryで有効にしたい場合は「All repositories」を選択します。

これで使うための準備は完了です。

実際に使ってみる

それでは実際に使ってみましょう。 セットアップ時に選択したRepositoryに移動し、既存のIssueを開く、もしくは新たにIssueを作成します。 Issueのタイトルと内容は、Coding Agentに渡るため、なるべく具体的に書いてあげると良いと思います。

それでは、このIssueをCopilot Coding Agentに渡してみます。 Issueの右上のAssigneesの右にある歯車アイコンをクリックし、「Copilot」を選択します。

その後自動的にPull Requestが作成され、Coding AgentがIssueを解決するためのプランをDescriptionに書いてくれます。 それを元に自律的にコーディングを行い、適宜commitおよびpushを当該Pull Requestに行います。

それではエンジニアの我々は何をするかと言うと、レビューです。 Copilotが行った作業を確認し、問題がなければマージを行います。 ここ直してほしいな、という場合は@copilotでメンションを送ることで、追加の作業だったり修正を行うことが出来ます。

この様にCoding Agentは、我々がIssueの起票やレビューに集中すれば良い状態に持っていってくれるのです。

中を覗いてみる

ここからは少しだけDeep Diveしていきましょう。

実際このCoding Agentはどんなことを思考し、どういう手段でコーディングを行っているのでしょうか。

Coding Agentの思考の流れや、コーディングの流れを知りたい場合は、Agent Sessionのログから確認することが出来ます。 「View session」というボタンがPull Requestのタイムライン上に表示されるので、そこから確認することが出来ます。

またGitHub ActionsのCopilotというWorkflowのログからも様々なログを確認できます。 これは例えばAgentに対しての入力、そしてどんなToolsを使っているのかなどが確認できます。 そこではGitHub MCP Serverだったり、GitHub内部で使用しているであろう、コードベースの検索のためのBlackbirdなどの名前が確認できます。 仕組みをログから妄想していくのは楽しいですね。

その他にも、外部のネットワークに出ようとしてブロックされたみたいなログだったりも確認ができます(Artifactsのresultsというzipファイルにもまとまっています)。 その情報は今後MCPサーバーなどを連携した際に、それの許可を行う際に役立つかもしれません。

おわりに

Coding Agent、求めていたものがとうとう来たなという印象です。 Copilot Workspaceの時も夢を感じていましたが、それが上手く普段のGitHubのUI上に組み込まれてより普段の開発フローに近い形になったなと感じています。

Blackbirdで検索に関する課題を解決し、Copilotがコーディング支援を行えるようになり、それぞれを組合せてCoding Agentの真価が発揮されたのかなとか思うと、胸が熱くなりますね…! これからもGitHub Copilotの進化に期待していきましょう!

Devin wikiの体験がいいし、例えばGitHub Copilot Code Summaryみたいな名前でプロジェクト全体を要約してくれる機能とか出ないかなーとか妄想が膨らむので、ぜひ………何卒…………!!!!

最後の最後に宣伝で…

実はVS Codeのv1.100のリリースノートに、GitHub拡張でCopilotをIssueにアサインできる準備が出来ましたみたいなことが書かれていて、あっ、今月のBuildで発表くるな…と思っていたら、案の定発表されてました。 こういうMicrosoft製品のプロダクトの関わりを感度高くキャッチアップするためにも、ぜひVS Code Meetup などにも参加してみてください!