技術

Thomas の仕組み

A practical look at how Thomas turns requests into plans, approvals, commands, plugins, and results.

コマンドがどう流れるか

実行モデル

すべてのリクエストは、実行前に計画、ポリシーゲート、監査証跡を通ります。

カバレッジ

契約状態: 32 implemented / 21 declared 総コマンドファミリー数: 53

最終検証: 2026/3/1

追跡しているもの

  • 明示的な深さを持つコマンドファミリー
  • ファミリーごとのカバレッジと証跡状態
  • 実行成果物のルート/パス追跡性
実行パイプライン
pipeline
user request -> approval check -> plan generation -> tool run -> result check -> activity log -> response

コマンドファミリーマトリクス

コマンドファミリーの出典: リリースリポジトリ

32 実装済み / 21 宣言のみ

総コマンド数: 400

最終検証スナップショット: 3/1/2026

53 件中 53 件を表示中。

コマンドマトリクス操作検索、絞り込み、表示モード

/acp

実装済み
深さ 2コマンド数 2

/agent

宣言のみ
深さ 0コマンド数 0

/agents

実装済み
深さ 4コマンド数 4

/approvals

実装済み
深さ 10コマンド数 10

/browser

実装済み
深さ 45コマンド数 45

/channels

実装済み
深さ 31コマンド数 31

/chat

宣言のみ
深さ 0コマンド数 0

/clawbot

実装済み
深さ 2コマンド数 2

/codex

実装済み
深さ 4コマンド数 4

/companion

実装済み
深さ 8コマンド数 8

/completion

宣言のみ
深さ 0コマンド数 0

/config

実装済み
深さ 4コマンド数 4

/configure

宣言のみ
深さ 0コマンド数 0

/cron

実装済み
深さ 16コマンド数 16

/daemon

実装済み
深さ 7コマンド数 7

/dashboard

宣言のみ
深さ 0コマンド数 0

/devices

実装済み
深さ 11コマンド数 11

/directory

実装済み
深さ 9コマンド数 9

/dns

実装済み
深さ 2コマンド数 2

/docs

宣言のみ
深さ 0コマンド数 0

/doctor

宣言のみ
深さ 0コマンド数 0

/doppelganger

実装済み
深さ 6コマンド数 6

/gateway

実装済み
深さ 36コマンド数 36

/health

宣言のみ
深さ 0コマンド数 0

/hooks

実装済み
深さ 7コマンド数 7

/library

実装済み
深さ 6コマンド数 6

/live-browser-smoke

宣言のみ
深さ 0コマンド数 0

/logs

宣言のみ
深さ 0コマンド数 0

/memory

実装済み
深さ 10コマンド数 10

/message

実装済み
深さ 29コマンド数 29

/models

実装済み
深さ 12コマンド数 12

/node

実装済み
深さ 17コマンド数 17

/nodes

実装済み
深さ 24コマンド数 24

/onboard

宣言のみ
深さ 0コマンド数 0

/pairing

実装済み
深さ 9コマンド数 9

/plugins

実装済み
深さ 39コマンド数 39

/qr

宣言のみ
深さ 0コマンド数 0

/repl

宣言のみ
深さ 0コマンド数 0

/reset

宣言のみ
深さ 0コマンド数 0

/sandbox

実装済み
深さ 3コマンド数 3

/security

実装済み
深さ 8コマンド数 8

/serve

宣言のみ
深さ 0コマンド数 0

/sessions

宣言のみ
深さ 0コマンド数 0

/setup

宣言のみ
深さ 0コマンド数 0

/skills

実装済み
深さ 9コマンド数 9

/status

宣言のみ
深さ 0コマンド数 0

/system

実装済み
深さ 10コマンド数 10

/telegram

実装済み
深さ 1コマンド数 1

/tools

宣言のみ
深さ 0コマンド数 0

/tui

宣言のみ
深さ 0コマンド数 0

/uninstall

宣言のみ
深さ 0コマンド数 0

/update

実装済み
深さ 8コマンド数 8

/webhooks

実装済み
深さ 11コマンド数 11

整合性の証拠

Approval log example23 events processed - 214ms total
integrity-audit
{
  "requestId": "rq-2026-03-02-001",
  "timestamp": "2026-03-02T01:09:04Z",
  "route": "/v1/chat/completions",
  "policy": "approved",
  "commandFamily": "/status",
  "result": "ok",
  "elapsedMs": 214,
  "hooks": [
    "before-model",
    "before-tool",
    "after-tool",
    "after-response"
  ],
  "trace": [
    "/api-gateway",
    "/planner",
    "/hooks",
    "/tool",
    "/validation",
    "/activity-log"
  ],
  "logFile": "/var/log/thomas/activity.jsonl"
}
Execution JSON example6 steps with validation checks
integrity-execution-json
{
  "userPrompt": "List repository status",
  "plan": {
    "family": "status",
    "command": "status",
    "policyGate": "ok",
    "approvalState": "required"
  },
  "execution": {
    "output": {
      "totalSteps": 6,
      "exitCode": 0
    },
    "checks": {
      "schemaValidation": true,
      "policyGate": true,
      "commandRules": true
    }
  },
  "record": {
    "activityId": "rq-2026-03-02-001",
    "logPath": "/var/log/thomas/activity.jsonl"
  }
}
Request flowPlanning, execution, and result path
integrity-flow
user request -> approval check -> plan generation -> tool run -> result check -> activity log -> response
CLI examplesHTTP and CLI use the same guarded path
integrity-gateway-parity
thomas prompt "status"
thomas ask "List repository status"
thomas --help --json

Gateway 契約と CLI 整合

非ストリーム要求例
curl request
curl -X POST https://127.0.0.1:8787/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <local-token>" \
  -d '{\n  "model": "local-gpt",\n  "messages": [{"role": "user", "content": "List repository status"}],\n  "stream": false\n}'
ストリーミングイベントモデル
sse events
event: response.started
data: {"id":"evt-01","type":"response.started","request_id":"rq-2026-03-02-001"}

event: tool.delta
data: {"id":"evt-01","type":"tool.delta","tool":"status","payload":{"phase":"running"}}

event: response.final
data: {"id":"evt-01","type":"response.final","status":"ok","request_id":"rq-2026-03-02-001"}
非ストリーム応答形式
response.json
{
  "id": "cmp-102",
  "status": "ok",
  "model": "local-gpt",
  "request_id": "rq-2026-03-02-001",
  "usage": {
    "prompt_tokens": 14,
    "completion_tokens": 32
  }
}
CLI 整合チェック
CLI commands
thomas prompt "status"
thomas ask "List repository status"
thomas --help --json

プラグイン実行境界

フック実行アーキテクチャ
plugin architecture
client
  |-- parser + policy gate
  |-- command planner
  |-- execution runtime
  \-- activity log
      |-- before-model hooks
      |-- before-tool hooks
      |-- tool.exec hooks
      |-- after-tool hooks
      \-- after-response hooks
ライフサイクル

パッケージを導入

Manifest とチェックサムを検証

レジストリで有効化

保護された経路で実行

無効化して実行状態を削除

パッケージを削除

Manifest 例
plugin-manifest.json
{
  "name": "thomas-plugin-guard",
  "version": "0.1.0",
  "entry": "dist/index.js",
  "permissions": ["filesystem", "network:thomas-control"],
  "hooks": [
    "before-model",
    "before-tool",
    "after-tool",
    "after-response"
  ]
}
Install -> validate -> activate -> execute
plugin lifecycle commands
thomas plugin install ./dist/thomas-plugin-guard.zip
thomas plugin validate thomas-plugin-guard
thomas plugin activate thomas-plugin-guard
thomas plugin run thomas-plugin-guard --diagnostic
thomas plugin deactivate thomas-plugin-guard
thomas plugin uninstall thomas-plugin-guard

次に進めること

  • 予定していないこと: 無制限な自律実行。
  • 予定していないこと: ルート証拠なしに API 全面対応を主張すること。
  • 予定していないこと: ポリシーゲートなしの暗黙的信頼。

コマンド証跡スナップショット

実装済み

ファミリー単位のカバレッジ情報がソース成果物に結び付いています。

Gateway 契約カバレッジ

実装済み

HTTP 契約と CLI 呼び出しは同じガード/検証面を共有しています。

プラグインライフサイクル再現

宣言のみ

次は、完全な導入とポリシーフック再現をトレース付きで検証することです。