Norton 360 をやめて Microsoft Defender に戻したときに作った個人用ツールを、製品として作り直しました。
Agent Fettle(エージェント フェトル。in fine fettle = 調子が整っている)。Windows 用、C# / .NET 10、WinForms + WebView2 です。
いまクローズドβでテスターを募集しています(Windows 10 22H2 / 11、64bit)。
何をするか(そして、何ではないか)
先に「ではないもの」から。
- ウイルス対策ソフトそのものではありません。 マルウェアの検出・駆除は Defender がやります。エンジンは持ち込みません
- AI エージェントではありません。 ローカル LLM は任意機能で、AI の答えで設定が変わることはありません
- 「〇〇件の問題を検出しました」とユーザーに不安を煽りません。 スコアも危険度も出しません
- 外部に何も送りません。 検出結果も設定も PC 内。ネットワークドライバも入れず、ローカルポートも開きません
するのは次の 5 つです。
| 機能 | 内容 |
|---|---|
| 🛡 防御状態の確認 | Defender(リアルタイム保護 / 改ざん防止 / PUA / フォルダーアクセスの制御 / ネットワーク保護 / ASR / 除外)、ファイアウォール、セキュアブート、メモリ整合性、Smart App Control、UAC、SmartScreen、BitLocker、Chrome セーフブラウジング、パスワード管理の 19 項目を 1 時間ごとに記録。推奨から外れた変化だけ通知(同じ件は 1 日 1 回) |
| 🔧 修復 | Defender の既定オフ 4 機能の有効化、存在しない PATH エントリ、実体の無い起動項目・サービス、幽霊ネットワークプロファイル、無効化されたアダプタのバインドなど 33 種を検出し、「修復案を見る → 適用する」の 2 クリックで直す。変更前の値をバックアップしてから変える |
| 💾 バックアップ | 差分 ZIP + 月次フルの世代管理。保存先はローカル / NAS / パソコン版 Google Drive・OneDrive のフォルダ。開発者向けプリセット(AI ツールの会話履歴、エディタ設定、シェルプロファイル) |
| 🧹 クリーナー / 🚫 ブロックリスト | ゴミ箱・一時ファイル・キャッシュ・WU の残骸を種類ごとに選んで削除(Documents / Downloads / Desktop は数えない)。悪性広告ドメインを Chrome / Edge のポリシーで遮断(拡張機能不要) |
| 🤖 ローカル LLM(任意) | Qwen2.5 1.5B / 7B が検出結果の解説・修復結果の検証・症状の切り分けを手伝う。存在しない項目名は機械検証層が弾く |
なぜ作ったか
開発機に入れていた Norton 360 が「59,104 件の問題」「248 GB の不要ファイル」を起動のたびに出すので実測したら、
不要ファイルの約 90% は自分の Downloads フォルダでした。解約して Defender に戻す過程で分かったのが、
- Defender のエンジンは AV-TEST で Top Product(Norton 360 と同じ評価)なのに、
- PUA・フォルダーアクセスの制御・ネットワーク保護・ASR は既定で効いておらず、
- Windows Home には
gpedit.mscが無いので PowerShell でしか有効化できず、 - しかも有効化しても、いつの間にか戻っていても気づく手段が無い
という事実でした。「Windows 標準の防御を使い切る」ための道具が無かったので作った、と言うのが開発に至るまでの経緯です。
Defender の 4 機能の実態と PowerShell での手順は、Zenn に技術記事として別に書いています → Windows Home の Defender、実は「守っていない」設定が 4 つある(gpedit 無しで有効化する)
設計で決めたこと
- 既定はドライラン。 すべての修復は「何を・どう変えるか」を先に表示し、人のクリックで初めて変える。管理者確認(UAC)は 1 回にまとめる
- 削除より無効化・リネーム。 消すしかないもの(クリーナー)は、消す一覧を先にファイルに書いてから消す
- 「未確認」は異常ではない。 読めなかったものを赤くすると誤警告になり、本物の警告への注意が逸らされてしまうので、4 状態(推奨どおり / 推奨と異なる / 未確認 / 該当なし)だけで、色は 1 状態 1 色
- 結果ファイルが無ければ「不明」。 「やっていないことを『やった』と言わない」をコードの契約にした(昇格ヘルパは JSON を書いて終了し、ファイルが無ければ成功扱いしない)
- 判定は PowerShell の参照実装と一致テストで固定。 移植で「ついでに改善」して誤検知が復活するのを防ぐ
技術メモ
- C# / .NET 10、自己完結。UI は WebView2 に HTML/CSS/JS を
https://fettle.local/の仮想ホストで載せ、IPC はpostMessage。ローカルポートは開かない - Defender の状態は WMI
root\Microsoft\Windows\DefenderのMSFT_MpPreference/MSFT_MpComputerStatus、Security Center はroot\SecurityCenter2。非昇格で読める - 変更は
MSFT_MpPreference.Set/ レジストリ直書き。昇格が要るものは別 exe(requireAdministrator)に 1 回の UAC でまとめる - ライセンスは Ed25519 署名の 1 行(サーバが署名、クライアントは埋め込み公開鍵でオフライン検証)
- ローカル LLM は別プロセス(LLamaSharp、CPU / Vulkan)。10 分使わなければ落とす。出力は GBNF 文法で JSON に拘束
- インストーラは Inno Setup、95 MB。コード署名はしていないので SmartScreen の警告が出ます(SHA-256 を公開)。Smart App Control が「オン」の PC では起動できません
クローズドβ
- 期間 4 週間、5〜10 名。Windows 10 22H2 / 11(Home / Pro)。「他社ウイルス対策あり」「GPU なし」「NAS あり」の方を特に求めています
- お願い: 導入して常駐を続け、週 1 回
Fettle.Cli.exe selfcheck --maskの出力を送る(ホスト名・ユーザー名は伏せられます)。納得できない判定・修復の結果・文言の分かりにくさを報告 - 対価: 年間ライセンス(¥2,800 相当)を無償発行。登録確定と同時にメールで届き、正式版でもそのまま使えます
- 申し込み: https://nobukz-official-website-ves6.vercel.app/beta-tester/agent-fettle
- 製品の説明(図解あり): https://nobukz-official-website-ves6.vercel.app/products/agent-fettle
正式版の価格は 月 300 円 / 年 2,800 円 / 永久 6,000 円(いずれも一回払い、自動延長なし)の予定です。


