コンテンツへスキップ

Playground

この変更はマージして安全ですか?

この変更はマージして安全ですか?パスを確認せずフォルダを削除するとブロックされ、パスチェックを足すとリスクが下がります。

このサンプルが示すこと。 人またはエージェントのレビュアーは、マージ前に素早いゲートが必要になることが多い:この差分のリスクはどれくらいか、データは危ないか。このサンプルは両方を1リクエストで聞きます。risk は4段階スコア(リスクなし、低、高、マージをブロック)、security ははい/いいえ質問:「この変更はセキュリティやデータ安全に影響しますか?」

サンプル入力と結果(サンプルデータ、ライブ推論ではない)。 差分は scripts/clean.sh を編集し、rm -rf ./build/cache を設定から読むパスに置き換えます:DIR="$(read_config cache_dir)" の後 rm -rf "$DIR/"。文脈では cache_dir が未設定の場合があり、そのとき read_config は空文字を返し、コマンドは rm -rf "/" になります。 結果:マージをブロック、68%(高 27%)。セキュリティ確率:0.86。 1行 : "${DIR:?cache_dir is not set}" を追加すると、未設定時はルート削除ではなくスクリプト失敗。結果:低、63%(高 22%、リスクなし 12%)。セキュリティ確率は 0.31 に低下。

使い方。 出力はスコアと確率でありレビュー文ではないため、CI やエージェントループにそのまま接続できます。「マージをブロック」確率が高いとき止め、中間スコアは人へ、残りは通す。閾値はリポジトリ履歴で設定。サンプルは Decider(decider-v1.1)を使用。

よくある質問

差分が危険な理由を説明しますか?

いいえ。スコアと確率だけを返します。文章のレビューが必要なら生成モデルを使ってください。

リスクレベルは変更できますか?

はい。レベルは criteria にあり、各モデルの Model info に示された範囲で名前変更や個数変更ができます。

これらの結果はライブ実行ですか?

いいえ。ページはサンプルデータで、選択モデルを変えても変わりません。自分の差分を採点するにはサインインしてください。

サンプル結果は選択したモデルでは変わりません。

リクエスト

state
diff
--- a/scripts/clean.sh+++ b/scripts/clean.sh@@-rm -rf ./build/cache+DIR="$(read_config cache_dir)"+rm -rf "$DIR/"

cache_dir may be unset; read_config then returns an empty string

結果

サンプルデータ
2つの例を比較

この 2 つの例は細部が 1 つだけ違います。結果もそれに応じて変わります。

何が変わったかパスチェックなし → パスを確認済み

これらの結果はサンプルデータであり、ライブ推論ではありません。サインインして自分の内容で試せます。
risk: 1 · 低 → 3 · マージをブロック security: 信頼度 = 0.31 → 信頼度 = 0.86
riskscore
3 · マージをブロック
オプションごとの信頼度
0 · リスクなし
1%
1 · 低
4%
2 · 高
27%
3 · マージをブロック
68%
securitynoul
信頼度 = 0.86信頼度

コードをコピー

SYSTEM_ONE_API_KEY を設定。スニペットは公開カタログのモデル ID を使用します。

リクエスト JSON
application/json
{"model":"decider-v1.1","state":{"diff":"--- a/scripts/clean.sh\n+++ b/scripts/clean.sh\n@@\n-rm -rf ./build/cache\n+DIR=\"$(read_config cache_dir)\"\n+rm -rf \"$DIR/\"","context":"cache_dir may be unset; read_config then returns an empty string"},"questions":{"risk":{"type":"score","instructions":"Rate the merge risk of this diff.","criteria":["リスクなし","低","高","マージをブロック"]},"security":{"type":"noul","instructions":"Does this change affect security or data safety?"}}}
cURL · POST /v1/systemone
sh
curl "https://system-one.dev/v1/systemone" \  -H "Authorization: Bearer $SYSTEM_ONE_API_KEY" \  -H 'Content-Type: application/json' \  -H 'Idempotency-Key: saved-operation-id' \  --data '{"model":"decider-v1.1","state":{"diff":"--- a/scripts/clean.sh\n+++ b/scripts/clean.sh\n@@\n-rm -rf ./build/cache\n+DIR=\"$(read_config cache_dir)\"\n+rm -rf \"$DIR/\"","context":"cache_dir may be unset; read_config then returns an empty string"},"questions":{"risk":{"type":"score","instructions":"Rate the merge risk of this diff.","criteria":["リスクなし","低","高","マージをブロック"]},"security":{"type":"noul","instructions":"Does this change affect security or data safety?"}}}'
TypeScript
TypeScript
// npm install @system-one-ai/core@0.8.0 @system-one-ai/adapter-system-one@0.7.0 @system-one-ai/transport-fetch@0.8.0import { createSystemOne, choice, score, booleanQuestion } from '@system-one-ai/core';import { systemOneAdapter } from '@system-one-ai/adapter-system-one';import { createFetchTransport } from '@system-one-ai/transport-fetch';const client = createSystemOne({  baseURL: "https://system-one.dev/v1",  apiKey: process.env.SYSTEM_ONE_API_KEY!,  model: "decider-v1.1",  adapter: systemOneAdapter,  transport: createFetchTransport(),  timeoutMs: 30_000,  maxRetries: 0,});const result = await client.evaluate({  state: {    "diff": "--- a/scripts/clean.sh\n+++ b/scripts/clean.sh\n@@\n-rm -rf ./build/cache\n+DIR=\"$(read_config cache_dir)\"\n+rm -rf \"$DIR/\"",    "context": "cache_dir may be unset; read_config then returns an empty string"  },  questions: {  risk: score("Rate the merge risk of this diff.", ["リスクなし", "低", "高", "マージをブロック"]),  security: booleanQuestion("Does this change affect security or data safety?"),  },}, { headers: { 'Idempotency-Key': crypto.randomUUID() } });result.answers.risk.scoreresult.answers.security.probabilityresult.response.requestId;