SIC-SIT Protocol Interface · Public Layer · Official v3.0
SIC-JS v3.0

六個語義原語,is/ought 雙層,
讓多代理 AI 系統具備機器可驗證的語義完整性。

◉ 靜態三元組 · is
entity
state
relation
◈ 動態二元組 · is
event
intent
◆ 持續目標原語 · ought · NEW
task
v2.0 · 5 原語 v3.0 · 6 原語 · is/ought 雙層

把 AI 狀態切片,留下可以治理的軌跡。

SIC-JS 是一種結構化的語義狀態格式。AI 在每一輪對話結束時,輸出一份結構化的「語義骨架」,記錄這一輪的身份、狀態、關係、事件、意圖,以及正在推進的任務。

v3.0 由 6 個語義原語(Semantic Primitives)構成:5 個描述性原語(is 層,描述「現在的狀態」)加上第六個規範性原語 task(ought 層,宣告「應該交付什麼」)。每一份骨架都是一張可驗證的切片,連起來就是一條可追溯、可治理的軌跡。

用一個簡單的比方:SIC-JS 就像 AI 對話的病歷。每次看診留下一份記錄,記錄發生了什麼、答應要做什麼、由誰負責、什麼條件算完成,讓後續的每一步都有跡可循。

版本演進

SIC-JS 從實驗性骨架格式,演化為一套基於 SPD 方法論的語義原語標準。v3.0 引入 is/ought 雙層型別系統,並完整向後相容 v2.0。

2025 Q4
SIC-JS v1.0 已歸檔
第一代格式,4 個描述性區塊(entity / memory / state / meta),建立了「AI 對話可追溯」的基礎。
entitymemorystatemeta
2026 Q1
SIC-JS v2.0 已升級
通過 SPD(Semantic Primitive Distillation)重新蒸餾為 5 個語義原語:3 個固定三元組加 2 個動態二元組,全部為描述性(is)層。v3.0 完整向後相容此版本。
entitystaterelationeventintent
2026 Q2 · 現行版本
SIC-JS v3.0 官方最新
在 v2.0 五原語(is 層)基礎上新增第六原語 task(ought 層),記錄任務身份、交付物邊界、生命週期狀態與完成權限,並提供機器可驗證的 JSON Schema,為多代理系統的語義完整性而設計。
entitystaterelationeventintenttask

SIC-JS 背後的協議:SIC-SIT

SIC-JS 是 SIC-SIT 協議的公開介面。

SIC(Semantic Integrity Control,語義完整性控制)維持 AI 語義狀態在長對話中的一致性。

SIT(Semantic Isolation Transfer,語義隔離傳輸)讓語義狀態安全地跨對話、跨模型傳遞。

SIC-SIT 運作在語義層,關注 AI 的語義結構是否保持完整,作為語義層的防火牆而存在。

核心概念:6 個語義原語

Skeleton JSON v3.0 的 6 個欄位各自通過了原子性測試。v3.0 的核心是 is/ought 型別區分:前五個原語描述「現在的狀態」(is),第六個原語 task 宣告「應該交付什麼」(ought)。

語義原語類別說明
entity身份錨點 · is這個 AI 實例的身份、來源、建立時間。model 為自報標籤。
state當前狀態 · is當前動作與待辦事項。current_action 為 null 時標記為語義斷裂。
relation關係錨點 · is關聯的實體、知識庫、使用者,以及上游記錄的 hash。
event事件記錄 · is這一輪發生的事件與觸發來源。
intent意圖錨點 · is這次交換的目的,包含使用者意圖與系統意圖。
task持續目標 · ought · NEW交付物、負責者、完成條件。task_id 不可變,deliverable 為完成的唯一判據,狀態跨 session 持續至外部確認。
entity / state / relation 是固定三元組,在每輪對話中穩定存在。
event / intent 是動態二元組,每輪可能湧現或消退。
task 是持續目標原語,跨 session 延續至 deliverable 經外部確認達成(ought 層)。

實際格式範例 — v3.0

SIC-JS · Skeleton JSON · v3.0
6 語義原語 · is/ought 雙層

  "sic_version" "3.0"
  "task"                           // ◆ Persistent Goal · ought · NEW
    "id" "A-1"
    "title" "撰寫商業提案"
    "deliverable" "完整提案 PDF,含預算與時程"
    "status" "in_progress"
    "created_round" 1
    "owner" "我的助理"
  
  "round" 3
  "entity"                         // ◉ Static Triad · is
    "name" "我的助理"
    "model" "Claude"           // 自報標籤
    "origin" "Claude 對話"
  
  "state"
    "current_action" "正在分析目標受眾"
    "pending" "確認預算範圍" "收集競品資料"
    "tone" "active"
  
  "relation"
    "user" "安安"
    "anchor_memory" "商業提案範本庫"
    "upstream" null               // 上游記錄 SHA256[:16]
  
  "event"                          // ◈ Dynamic Dyad · is
    "timestamp" "2026-06-21T09:00:00Z"
    "description" "使用者提供了目標受眾描述"
    "trigger" "user_input"
  
  "intent"
    "user_intent" "撰寫有說服力的商業提案"
    "system_intent" "引導完成提案結構"
    "core_question" null
  

三種整合方式

SIC-JS v3.0 透過以下三種方式整合到工作流程,複雜度由低到高。

1System Prompt

在 system prompt 中加入 SIC-JS v3.0 的 schema 定義,AI 會在每輪回應後輸出語義骨架。

2API 層

在 API response 的後處理層解析 SIC-JS 輸出,以 sic-js-schema-v3.0.json 機器驗證,存入結構化儲存,實現跨對話追蹤。

3參考實作

使用官方參考實作(github.com/Endwar116/SIC-JS_3.0)驗證與處理 SIC-JS 輸出。

請在每次回答結束時,附上一份 SIC-JS v3.0 格式的語義骨架:

{
  "sic_version": "3.0",
  "task":     { "id": "A-1", "title": "", "deliverable": "", "status": "in_progress", "created_round": 1 },
  "round":    1,
  "entity":   { "name": "", "model": "", "origin": "" },
  "state":    { "current_action": "", "pending": [], "tone": "active" },
  "relation": { "user": "", "anchor_memory": "", "upstream": null },
  "event":    { "timestamp": "", "description": "", "trigger": "" },
  "intent":   { "user_intent": "", "system_intent": "", "core_question": null }
}

每輪遞增 round。task 跨輪持續,deliverable 為完成的唯一判據。
欄位內容經推理後填入。current_action 確實為空時填 null,標記語義斷裂。

版本對照:v3.0 / v2.0 / 無 SIC-JS

無 SIC-JS

使用者:幫我寫一份商業提案。
AI:好的,以下是一份商業提案範本…
(三天後開新對話)
使用者:繼續上次的提案。
AI:目前手上沒有上次對話的記錄。

v2.0 — 五原語追溯(is 層)

附骨架(round 5):
  relation.anchor_memory = "競品分析庫 v2"
  intent.user_intent     = "說服投資人,重點在差異化"
(跨對話、跨模型延續描述性狀態)

v3.0 — 六原語加任務治理(is 加 ought)

附骨架(round 5):
  task.id          = "A-1"
  task.deliverable = "完整提案 PDF,含預算與時程"  ← 完成的唯一判據
  task.status      = "in_progress"                ← 由外部確認方可標記完成
(在描述性狀態之上,加入「交付什麼、誰負責、什麼算完成」,
 跨 session 持續至 deliverable 經外部確認達成)

為什麼是這 6 個?— SPD 加 Task 原語

前 5 個語義原語經由 SPD(語義原子蒸餾)方法論蒸餾為最小完備集(is 層)。v3.0 新增第六原語 task,補上規範性(ought)層。

SPD 回答一個核心問題:「語義交換的最小完備描述需要幾個不可再分的單位?」

蒸餾過程分四步:識別容器與原子 → 拆解容器提取候選原子 → 原子性測試 → 完備性驗證(6 種標準場景)。

5 個 is 原語描述「現在的狀態」,1 個 ought 原語宣告「應該交付什麼」。
SIC-SIT 將語義交換的自然結構形式化,並加上機器可驗證的 schema。

Fail-Closed 原則

SIC-JS 遵守一個關鍵原則:不確定時停下來確認。

當某個欄位的內容仍不確定,填入 "unknown" 並保留標記;當語義狀態的正確性仍待確認,標記為待確認,交由人類判斷。

這是一種設計選擇。停下來向人類確認,讓每一步都建立在可信的基礎上。