Skip to content

スキル(ツール)

スキル は LLM が発動できる 1 つの自己完結した能力です。スキル フレームワークは LLM ツール登録、HTTP API、UI フォーム、パーミッション ゲート、監査ログを 1 つのメタデータ構造体から自動派生します —— 新規 スキルの追加は 1 ファイル書いて init()Register を呼ぶだけです。

スキルは edge エージェント上で動けば L2(デバイス直達)、manager 上で 動けば L3(知能)です。どちらもファーストクラスです。

構造

各スキルは以下を出荷します:

go
// internal/skill/types.go:99
type Metadata struct {
    Key          string   // lower_snake — id in dedupe keys, audit logs, LLM tool names
    Name         string   // human label
    Description  string   // shown to humans AND to the LLM
    Class        Class    // safe | mutating | dangerous
    Scope        Scope    // host (default) | manager
    Category     string   // free-form group label
    Params       ParamSchema
    ResultPreview string
}

加えて Executor

go
type Executor interface {
    Metadata() Metadata
    Execute(ctx context.Context, params json.RawMessage) (json.RawMessage, error)
}

フレームワークは Scope に基づいて dispatch します:

  • ScopeHost —— manager が呼び出しをトンネル RPC (Caller.Call(ctx, edgeID, "execute_skill", body))でラップし、edge エージェントの単一 execute_skill ハンドラーがキーで dispatch します。 LLM ツールラッパーはスキーマに必須の edge_id 整数プロパティを注入 します。
  • ScopeManager —— プロセス内で動きます。edge_id なし。パブリック インターネット呼び出し(web_search)、外部 API、サブプロセススキル パックに便利。

パーミッションクラス

メタデータに組み込まれているので、毎回の発動でゲートが動きます —— 後付けではありません:

クラス誰が発動できるか
safeprobe_*、read_file、tail_file、query_promqlLLM、任意のロール
mutatingrestart_service、kill_processhuman-in-the-loop の承認が必要(保留中だがゲートは存在)
dangerousrm、reboot、drop_tableRSA 署名済み SOP + デュアル承認が必要(保留中)

デフォルトクラスは safe —— ですがフレームワークは登録時に作者が フィールドを設定し忘れると警告をログするので、これは静かに通り抜け られません。 types.go:205 参照。

aiops ツールレジストリの skill_bridge.go は現状 ClassSafe スキルのみを LLM に公開します —— skill_bridge.go 参照。mutating と dangerous クラスは PR-G4 の承認ワークフローを待ち ます。

3 つのスキル集団

Go builtin(edge)

internal/skill/builtin/ で手書き:

Key
probe_httpprobe_dnsprobe_tcp読み取り専用ネットワーク到達性
tail_fileread_journalログ表面
host_netns_inspectネットワーク namespace インベントリ
web_searchmanager 側、SearXNG デフォルト、設定可能
restart_servicemutating、ゲート対象

各々は init()skill.Register を呼ぶ Go ファイル。edge バイナリは すべての builtin を焼き込み済み —— プラグインインストールなし、リモート コード実行表面なし。

サブプロセススキルパック

edge エージェントを再ビルドせずに投下したい能力には、skill.json マニフェストと実行可能ファイルを持つディレクトリを出荷します。 internal/skill/subprocess.go のローダーがマニフェストを読み、スキルを登録し、stdin パラメータで バイナリに Execute を dispatch します。

用途:ネットワーク調査ツール(ovs-vsctlnftbpftoolethtoolip netns)、Kubernetes 検査ヘルパー —— バイナリが既に存在し、シェル アウトが Go で書き直すよりよい場合。

manager 側 BaseTool

最大の集団。 internal/manager/biz/aiops/tools/ 下に *_basetool.go ファイルとして居ます。各々は宣言的な ParamSchema が表現できない形(配列、ネストオブジェクト、oneOf)のため自前の手書き JSON Schema を持ちます。

抜粋した BaseTool:

ツール何をするか
bash対象 edge 上のシェル(ゲートあり、記録あり)
query_promqlquery_logqlquery_traceql3 つの可観測性バックエンド
query_incidentsget_incident_detailquery_alert_rulesアラート表面
query_edgesquery_change_eventsインベントリ + 監査
correlate_incidentprom + log + trace への合成ファンアウト
expand_topologyfind_topology_nodeget_topologyグラフ
query_knowledgeRAG
find_outlier_edgesrank_edgesマルチホスト比較
host_loadhost_processeshost_filesホスト状態バッチツール
get_edge_summaryワンショットの edge ヘルススナップショット
restart_serviceedge restart スキルの manager 側ラッパー
send_messagecoordinator → specialist エージェント通信
task_stopagent_toolworker ライフサイクル

合計でおよそ 30+。完全なリストは cmd/ongrid/main.goBuildBaseTools で登録されているものです。

インベントリブリッジ

ブリッジ以前は 2 つの並行レジストリが存在しました:

  • スキルレジストリ —— ScopeHost Go builtin + サブプロセスパック。 SPA の /skills ページに監査 + クラスゲート付きで表面化。
  • BaseTool bag —— 手書き manager 側ツール。LLM には表面化するが /skills にはしない。

operator はソースを読まずにエージェントが実際にどんなクラウド側能力を 持っているかを見ることができませんでした。 inventory_bridge.go は BaseTool bag を walk し、すべてのツールを Scope=ScopeManager で スキルとして登録します。opt-in の RawSchemaProvider インターフェイスで 各 BaseTool の手書き JSON Schema を逐語保持します。

2026-05-08 のメモによれば、18 の BaseTool がこのパス経由でブリッジされ ます —— /skills ページは現在、edge vs manager を示すスコープ チップ付きですべてのクラウド側能力を列挙します。

逆方向のブリッジも配線されています: skill_bridge.go は安全な各スキルを LLM 向け Tool として登録します。LLM は ScopeHost スキルには edge_id パラメータが自動付与された関数呼び出しツールとして スキルを見ます。

監査

すべてのツール発動は chat_tool_calls に行を書きます:

  • session_id —— 呼び出した chatruntime セッション。
  • tool_nameargs_jsonresult_jsonerror
  • device_id —— ツールが特定のホストを対象としたとき(ExecuteResultEdgeID フィールド)。
  • started_atfinished_atduration_ms
  • caller_user_id + caller_role —— LLM 起源の呼び出しでは、フレーム ワークは UserID=0 / Role="system" を使う。

HLD-010 の監査ログは同じテーブルに乗っかります。admin の /admin/audit ページがタイムライン + ツールごとフィルター付きで描画します。

関連

  • WebShell —— bash スキルをワンショットツール呼び出し ではなく対話的ターミナルとして表現。
  • ナレッジ —— query_knowledge の深掘り。
  • トポロジー —— expand_topology / find_topology_node
  • スキルマニフェスト —— サブプロセス スキルパック用のワイヤーフォーマット。