VacantAI のアカウンタビリティ層GitHub

はじめに · クイックスタート / 十分 · 

クイックスタート

標準解のある一問で、道筋を最後までたどります:要求と受け入れテストを書き、AI アシスタントに作業させ、ゲートがどう判定するかを見て、レシートの各欄に何が含まれるかを読み解き、チェーン検証が捕まえられない三つのことを知ります。

#用意するものは二つ

ゲートはあなたのテストを実行するのであって、モデルに「これは正しく見えるか」と聞くのではありません。だから:

  1. 要求の記述 — 何が欲しいかをはっきり書きます。
  2. 実行できる受け入れテスト — 入力は何か、期待される出力は何か。

#一問はどんな形をしているか

受け入れテストは二つに分けます。

誰が見られるか用途
可視 Vエージェントが読めるシステムはこれで通すか納品を拒否するかを決める。修正の流れが受け取れるのもこれの失敗メッセージだけ
非公開 GT事後の採点だけが見られる生成、選択、修正プロンプト、停止条件のいずれにも入れてはならない

あるプログラムが可視テストに合格し、非公開テストに合格しないなら、それは一回の偽の納品です。これは「成果物が要求のように見えるが、要求ではない」という問題を操作可能にした形です。

# suitespec.py — 受け入れスイートは「データ」であって、プログラムではない
# スイートに含まれるのは:方言、エントリポイント名、入力—期待値のリテラル値リストのみ
# 実行器は自分自身の決定論的なレンダラーでこのデータからテストコードを生成するだけ

なぜ「V ⊆ GT」が「無損失」という言葉を無効にするのか ここには私たち自身がはまった落とし穴があり、先に知っておく価値があります:私たちが使った二つの問題バンクでは、非公開テストはいずれも可視テストの上位集合でした。そのため「非公開では通るが可視では通らない」は構造上起こりえません。この発見は、私たち自身の事前登録にあった前提の一つを反証しました。

#一通りやってみる

# 1) 仲介を起動し、あなたのモデルを指す(LM Studio / Ollama / クラウド API のどれでもよい)
vacant run --agent opencode --base http://localhost:1234 --model your-model

# 2) エージェントが走り終え、プロセスが終了する → これが納品点
#    システムは凍結した作業領域のスナップショット上で可視の受け入れ検査を実行する

# 3) 判定を見る
#    0 = 納品 20 = 納品拒否 22 = インフラの失敗

この過程で、二つの層のものが手に入ります。

アクションチケット(一問につき一枚) — 要求、AI が何と言ったか、どの受け入れ検査を実行したか、判定は何か。

レシート(試行ごとに一件 + 一問につき判定一件) — 下を参照してください。

#レシートを読む

レシートのすべてのセルに署名が付き、一つ前のセルのハッシュを固定します。だから:

  • 一文字を書き換える → チェーンはそのセルで切れます。
  • 公開鍵を持つ人なら誰でもオフラインで再計算でき、私たちを信じる必要はありません。

検証の方法:

vacant audit <name>     # ある logbook の署名チェーンを再検証する(PASS/FAIL)

私たちが保存している単一ファイルのオフラインビューア(exhibit/receipts/receipt_viewer.html、0.3 MB。多者版は 4.5 MB)はレシートをファイル内に埋め込んでおり、外部リソースもネットワークリクエストもゼロです。保存して file:// で直接開いても、チェーン全体の検証を最後まで実行できます。

#五種類のエージェントでの実測結果

本物のモデル上で、20 セルすべてが事前に書いた判定基準に合致しました(20 本のレシートチェーン / 40 件)。

エージェントバージョン
pi0.85.1
OpenCode1.18.31
Claude Code2.1.278
Codex0.147.0
Hermes0.19.0

#次に読むもの

最終更新: · 約 5 分で読めます

世新大学世新大学 情報伝播学科Vacant

世新大学 情報伝播学科 2026 年度卒業研究・展示会