目次
リファレンス

設定

Hostが読むすべてのファイルと環境変数を、フィールドごとに説明します。これはリファレンスで、組み合わせ方はローカルとリモートのHostで説明しています。設定が決めるのは、Hostが何をしてよく、何を記録するかです。プログラムの意味に入り込むことはありません。

actql.config.json

プロジェクトのファイルです。CLIは、現在のディレクトリから上に向かって actql.config.json を探し、その中のパスをすべてファイルからの相対パスとして解決します。SDKは connect() のオプションとして同じフィールドを受け付けます。CLIの --config <file> は別のファイルを明示的に選び、コマンドのフラグはファイルの値を上書きします。このファイルが供給するのは接続、model task、Store、フィクスチャです。権限を与えたり承認者を指定したりはできません。それらは下のHostの設定にあり、cloneしたリポジトリから変えることはできません。

{
  "version": "actql-config/0.1",
  "connectors": "./connectors.json",
  "model_tasks": "./model-tasks.json",
  "lock": "./actql.lock.json",
  "state_dir": "./.actql",
  "profile": "mock",
  "mock": {
    "data": "./mock/data.json",
    "answers": {"model-task:churn-risk.v1": "./mock/churn-risk.v1.answers.yaml"}
  }
}
フィールド型意味既定
versionstring常に actql-config/0.1。必須
connectorspathConnectorファイル。なし。読み書きをするプログラムには必要
model_taskspathmodel taskファイル。タスクとプロバイダーの登録ファイル。なし。INFER には必要
lockpathConnectorとModel taskの契約を固定するロックファイル。なし
state_dirpathStore。Run、観測、Result、Checkpoint、鍵を置く。バージョン管理には入れない。./.actql
profilestringmock のような名前付きのプロファイル。--profile の指定がなければこれが使われる。なし
mockobjectmockプロファイルのフィクスチャ。data は各mock Connectorが返すレコード(各読み取り元の key を含む)、answers はmodel taskごとの答えのファイル。ファイル名から自動で探すことはない。なし。その場合、mockプロファイルにはレコードも答えもない

Hostの設定

actql init が作る ~/.config/actql/host.json、または --host-config で指定したファイルです。権限を与え、検証するものを置きます。アカウント設定、delegateされた操作に対するHostの判断、受け付ける承認者です。プロジェクトのファイルからここに足すことはできません。

{
  "version": "actql-host/0.1",
  "account_config": "./accounts.json",
  "run_policy": {
    "principal": "agent:churn-risk",
    "namespace": "acme",
    "policy_contract_cid": "sha256:…",
    "decision": "review",
    "expires_at": "2027-01-01T00:00:00.000Z"
  },
  "effect_policy": {
    "decision": "review",
    "policy_contract_cid": "sha256:…"
  },
  "signers": {
    "ops-approver": {
      "principal": "ops",
      "key_id": "ops-2026",
      "private_key": "./keys/ops.pem",
      "public_key": "./keys/ops.pub.pem",
      "checkpoint_kinds": ["effect_set"]
    }
  }
}
フィールド型意味既定
versionstring常に actql-host/0.1。必須
account_configpath保護された操作ごとに allow、deny、delegate を振り分けるアカウント設定。なし。Hostの標準のポリシーが適用される。純粋な計算、設定した接続からの読み取り、登録したタスクによる INFER は動き、すべてのEffectは effect_policy に委ねられる
run_policyobjectdelegateされたRun全体の判断に対する、Hostの判断(後述)。なし
effect_policyobjectdelegateされたEffect Setの判断に対する、Hostの判断。{"decision": "review"}
signersobjectHostが受け付ける承認者。承認者のIDをキーにする。なし。承認は actql init がStoreに生成したローカルの鍵で署名される。この鍵が示すのはマシンのユーザー

run_policy と effect_policy

アカウント設定の答えが delegate のとき、Hostはこれらのポリシーを参照します。それぞれが、その種類の境界に対するHostの判断です。

フィールド型意味
decisionallow | review | denyallow はその場で許可する。review はCheckpointで止まり、承認者を待つ。deny は拒否する。これらの判断が使われるのはアカウント設定の答えが delegate のときだけで、アカウント設定の明示的な deny が覆されることはない。
policy_contract_cidstring判断が記録されるポリシー契約の識別子。
principalstring(run_policy)Runを実行するprincipal。
namespacestring(run_policy)Runが属するnamespace。
expires_attimestamp(run_policy)このポリシーの有効期限。

Hostをアプリに組み込んでいる場合は、自分のコードの判断フック(Effectと承認の判断の委譲先)が review の代わりになります。

signers

フィールド型意味
principalstring承認者が誰として振る舞うか。
key_idstringすべての承認とともに記録される識別子。
private_key、public_keypathPEMファイル。Hostは設定された承認者だけを受け付ける。承認が自前の鍵を持ち込むことはない。
checkpoint_kindsarrayこの承認者が解決できるCheckpointの種類。たとえば effect_set。

Connectorファイル

Hostが提供する接続を列挙するJSON文書で、プログラムが使う名前(salesforce.accounts の salesforce)をキーにします。各エントリには、Connector、アカウントやエンドポイント、認証情報の出どころを書きます。認証情報は参照するだけで、ファイルには書き込みません。

{
  "version": "actql-connectors/0.1",
  "connections": {
    "salesforce": {
      "connector": "salesforce",
      "instance_url": "https://acme.my.salesforce.com",
      "credentials": {"access_token": {"env": "SALESFORCE_ACCESS_TOKEN"}}
    },
    "snowflake": {
      "connector": "snowflake",
      "account": "acme-prod",
      "database": "ANALYTICS",
      "user": "ACTQL",
      "credentials": {"private_key": {"path": "./keys/snowflake.p8"}}
    }
  }
}
フィールド型意味
connectorstringこの接続を扱うConnector(Connectorを参照)。
接続のフィールドさまざまエンドポイント、アカウント、データベース、プロジェクトなど。各Connectorのページに記載。
credentialsobjectConnectorが必要とする秘密情報ごとに1項目。環境変数({"env": "NAME"})かファイル({"path": "./file"})を参照する。秘密情報を直接書くことはない。フィールドは各Connectorのページに記載。

--profile mock オプションは、このファイルを編集することなく、すべての接続を mock.data のレコードを返すmock Connectorに、LLMを mock.answers の答えに置き換えます。

model taskファイル

INFER が名前で参照できるmodel taskを列挙し、それぞれの定義ファイルの場所と、LLMのプロバイダーを書くJSON文書です。

{
  "version": "actql-model-tasks/0.1",
  "tasks": {
    "model-task:churn-risk.v1": "./model-tasks/churn-risk.v1.yaml"
  },
  "providers": {
    "openai": {"type": "openai", "api_key_env": "OPENAI_API_KEY"}
  },
  "default_provider": "openai"
}
フィールド型意味
tasksobjectmodel taskのID → 定義ファイルのパス。
providersobject名前付きのプロバイダー。type がAPIを選び、api_key_env がキーを持つ環境変数の名前。model taskは model セクションでプロバイダーを選べる。
default_providerstringプロバイダーを指定していないタスクが使うプロバイダー。

定義ファイルの形式(task、input、instructions、output、model、limits)はLLMとINFERで説明しています。

アカウント設定

actql-execution-account-config/0.1 文書は、保護された操作のそれぞれについて、許可するか、拒否するか、Hostの判断に委ねるかを決めます。権限を与える場所はここだけで、プログラムから変えることはできません。

{
  "version": "actql-execution-account-config/0.1",
  "account_id": "acme-prod",
  "entries": [
    {
      "entry_id": "reads",
      "outcome": "allow",
      "principal": {"any_of": ["agent:churn-risk"]},
      "connection": {"all": true},
      "resource": {"all": true},
      "operation": {"any_of": ["read"]},
      "exclusions": []
    },
    {
      "entry_id": "salesforce-writes",
      "outcome": "delegate",
      "principal": {"any_of": ["agent:churn-risk"]},
      "connection": {"any_of": ["salesforce"]},
      "resource": {"all": true},
      "operation": {"any_of": ["effect"]},
      "exclusions": []
    }
  ]
}
フィールド型意味
account_idstringこの設定が記述する実行アカウント。
entries[].entry_idstring一意。エントリは昇順に並べる。
entries[].outcomeallow | deny | delegateエントリが一致したときにどうするか。
entries[].principal、connection、resource、operationセレクター{"all": true}(現在と将来のメンバー)または {"any_of": [ids]}(厳密な識別子)。
entries[].exclusionsarrayこのエントリの集合から取り除くタプル(次元ごとに1つのセレクター)。

操作は read(カタログやメタデータを含むあらゆる読み取り)、infer(LLMの呼び出し)、write(別のシステムやストアに出ていくデータ)、effect(Effectのコミット)です。識別子は厳密な一致で比べます。接頭辞、パターン、大文字小文字の畳み込みはありません。

結果の異なる2つのエントリが重なってはいけません。重なりがあれば、順序にかかわらずHostはその設定を拒否します。設定を書いた場合、どのエントリにも一致しない操作は拒否され、明示的な deny ではなく「一致なし」として報告されます。不正なファイルは拒否され、許可と読まれることはありません。ファイルがまったくない場合はHostの標準のポリシー(ローカルとリモートのHost)が適用されます。読み取り、INFER、Effectを承認待ちにすることに、設定は要りません。

ロックファイル

actql lock は actql.lock.json を書き出します。Hostが解決したConnectorの契約、カタログのスナップショット、model taskの定義を、それぞれの識別子とともに正確に記録したものです。actql verify lock は、それらが今も一致することを確かめます。Runは実行時のロックを記録するので、Connectorの契約が変わっていれば、黙って使われるのではなく検出されます。

環境変数

変数意味
ACTQL_CONFIG上に向かって探す代わりに使う、設定ファイルのパス。
ACTQL_STATE_DIRstate_dir を上書きする。
ACTQL_PROFILE既定のプロファイル。たとえば mock。
認証情報の変数Connectorファイルとmodel taskファイルが credentials.env で参照している名前。
ACTQL_LOGHostのログレベル(error、warn、info、debug)。

環境変数は設定を選ぶためのもので、プログラムから読まれることはありません。

Source: actql/actql/docs/reference/configuration.md at d904416674e4 · Edit on GitHub