SIC-SIT Protocol Interface · Public Layer
SIC-JS v2.0

五個語義原子,最小完備描述,
讓任何 AI 對話在 30 秒內具備結構化可追溯性。

◉ 靜態三元組
entity
state
relation
◈ 動態二元組
event
intent
v1.0 · 4 區塊 v2.0 · 5 語義原子 · SPD v1.0

SIC-JS 是一種結構化的語義狀態格式,它不是一個產品,也不是一個 app,而是一種「筆記本格式」。

當你跟 AI 對話時,AI 的回答通常是一段文字——說完就沒了,你無法追溯它為什麼這樣回答、它記得什麼、它接下來要做什麼。

SIC-JS 解決這個問題:它讓 AI 在每一輪對話結束時,輸出一個結構化的「語義骨架」。v2.0 起,這個骨架由 5 個語義原子(Semantic Primitives)構成,是通過 SPD(語義原子蒸餾)蒸餾得到的最小完備集。

就像醫生看診後寫病歷——SIC-JS 就是 AI 對話的病歷,v2.0 讓這份病歷更精準、更可移植。

版本演進

SIC-JS 從一個實驗性骨架格式,演化為一套基於 SPD 方法論的正式語義原子標準。

2025 Q4
SIC-JS v1.0 已歸檔
第一代格式,4 個描述性區塊(entity / memory / state / meta),解決了「AI 對話無法追溯」的基礎問題。缺乏關係脈絡(relation)與意圖追蹤(intent)。
entitymemorystatemeta
2026 Q1 · 現行版本
SIC-JS v2.0 最新
通過 SPD(Semantic Primitive Distillation)重新蒸餾。5 個語義原子——3 個固定三元組 + 2 個動態二元組。移除任何一個都會導致某類語義交換無法描述。
entitystaterelationeventintent

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

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

SIC(Semantic Integrity Control)= 語義完整性控制,確保 AI 的語義狀態不會在長對話中悄悄變質。

SIT(Semantic Isolation Transfer)= 語義隔離傳輸,確保語義狀態可以安全地從一個對話傳到另一個對話,甚至從一個模型傳到另一個模型。

SIC-SIT 不是 Guardrails(護欄),護欄管的是「AI 不能說什麼」。SIC-SIT 管的是「AI 的語義結構有沒有壞掉」——它更像是語義層的防火牆。

核心概念:5 個語義原子

Skeleton JSON v2.0 的 5 個欄位不是隨意設計的,每一個都通過了原子性測試:刪除它會丟失什麼?能合併嗎?能獨立變化嗎?

語義原子中文說明
entity身份錨點這個 AI 實例是誰?從哪裡來?什麼時候建立的?
state當前狀態現在在做什麼?未完成的事有哪些?
relation關係錨點跟哪些實體、知識庫、使用者有關聯?上游對話是誰?
event事件記錄這一輪發生了什麼?觸發了什麼?這是第幾輪?
intent意圖錨點這次交換的目的是什麼?使用者要什麼?系統意圖是什麼?
entity / state / relation 是固定三元組——在每輪對話中穩定存在。
event / intent 是動態二元組——每輪可能湧現或消退。
SIC-JS v2.0 · 語義骨架 第 3 輪
即時
◉ 靜態三元組
entity
我的助理
Claude · 2026-02-10
state
分析目標受眾
↳ 2 個待處理項
relation
安安
商業提案範本庫
◈ 動態二元組
event
使用者提供目標受眾描述
觸發:user_input
intent
撰寫商業提案
信心值
0.9

實際格式範例 — v2.0

SIC-JS · Skeleton JSON · v2.0
5 語義原子 · 唯讀快照

  "sic_version" "2.0"
  "entity"                         // ◉ Static Triad
    "name" "我的助理"
    "origin" "Claude 對話"
    "created_at" "2026-02-10T09:00:00Z"
  
  "state"
    "current_action" "正在分析目標受眾"
    "pending_threads" "確認預算範圍" "收集競品資料"
    "emotional_state" "專注"
  
  "relation"
    "user" "安安"
    "knowledge_base" "商業提案範本庫"
    "upstream_session" null
  
  "event"                          // ◈ Dynamic Dyad
    "this_round" "使用者提供了目標受眾描述"
    "trigger" "user_input"
    "round" 3
  
  "intent"
    "user_intent" "撰寫有說服力的商業提案"
    "system_intent" "引導完成提案結構"
  

三種整合方式

SIC-JS v2.0 可以透過以下方式整合到你的工作流程,複雜度從低到高。

1System Prompt

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

2API 層

在 API response 的 post-processing 中解析 SIC-JS 輸出,存入結構化儲存,實現跨對話追蹤。

3sic-toolkit

使用 sic-toolkit(Python,stdlib-only,416 tests)自動驗證和處理 SIC-JS 輸出。

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

{
  "sic_version": "2.0",
  "entity":   { "name": "", "origin": "", "created_at": "" },
  "state":    { "current_action": "", "pending_threads": [], "emotional_state": "" },
  "relation": { "user": "", "knowledge_base": "", "upstream_session": null },
  "event":    { "this_round": "", "trigger": "", "round": 1 },
  "intent":   { "user_intent": "", "system_intent": "" }
}

每輪遞增 round。不確定的欄位填 "unknown",不要猜測。

對比:v2.0 vs v1.0 vs 沒有 SIC-JS

沒有 SIC-JS

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

v1.0 — 有狀態,但缺少關係脈絡與意圖

附骨架(round 5, memory: "使用者要寫提案")
(跨模型傳遞時:不知道「跟哪個知識庫有關」「使用者意圖是什麼」)

v2.0 — 完整五原子追溯

附骨架(round 5):
  relation.knowledge_base = "競品分析庫 v2"
  intent.user_intent      = "說服投資人,重點在差異化"
(跨對話、跨模型完整延續,連意圖和知識庫脈絡都不丟失)

為什麼是這 5 個?— SPD

SIC-JS v2.0 的 5 個語義原子是通過 SPD(語義原子蒸餾)方法論系統性蒸餾得到的最小完備集。

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

蒸餾過程分四步:識別哪些欄位是容器而非原子 → 拆解容器提取候選原子 → 原子性測試 → 完備性驗證(6 種標準場景能否被描述)。

5 個語義原子,移除任何一個都會導致某類語義交換無法描述。
這不是 SIC-SIT 發明的結構,是語義交換的自然結構——SIC-SIT 只是第一個把它形式化的協議。

Fail-Closed 原則

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

如果 AI 不確定某個欄位該填什麼,它應該填 "unknown" 而不是猜測;如果 AI 不確定自己的語義狀態是否正確,它應該標記為不確定,而不是繼續執行。

這不是弱點,而是設計。因為猜測會累積錯誤,停下來問人類,才是負責任的行為。

Format Example — v2.0

SIC-JS · Skeleton JSON · v2.0
5 primitives · read-only snapshot

  "sic_version" "2.0"
  "entity"                            // ◉ Static Triad
    "name" "My Assistant"
    "origin" "Claude conversation"
    "created_at" "2026-02-10T09:00:00Z"
  
  "state"
    "current_action" "Analyzing target audience"
    "pending_threads" "Confirm budget range" "Collect competitor data"
    "emotional_state" "Focused"
  
  "relation"
    "user" "An-An"
    "knowledge_base" "Business Proposal Library"
    "upstream_session" null
  
  "event"                             // ◈ Dynamic Dyad
    "this_round" "User provided target audience description"
    "trigger" "user_input"
    "round" 3
  
  "intent"
    "user_intent" "Write a persuasive business proposal"
    "system_intent" "Guide through proposal structure"
  

Three Integration Approaches

SIC-JS v2.0 can be integrated into your workflow at three levels of complexity.

1System Prompt

Add the SIC-JS v2.0 schema to the system prompt. The AI will automatically output a semantic skeleton after each response.

2API Layer

Parse SIC-JS output in the API response post-processing layer and store it in structured storage for cross-conversation tracking.

3sic-toolkit

Use sic-toolkit (Python, stdlib-only, 416 tests) to automatically validate and process SIC-JS output.

At the end of each response, include a SIC-JS v2.0 semantic skeleton:

{
  "sic_version": "2.0",
  "entity":   { "name": "", "origin": "", "created_at": "" },
  "state":    { "current_action": "", "pending_threads": [], "emotional_state": "" },
  "relation": { "user": "", "knowledge_base": "", "upstream_session": null },
  "event":    { "this_round": "", "trigger": "", "round": 1 },
  "intent":   { "user_intent": "", "system_intent": "" }
}

Increment round each turn. Fill "unknown" for uncertain fields — do not guess.

Comparison: v2.0 vs v1.0 vs No SIC-JS

Without SIC-JS

User: Help me write a business proposal.
AI: Sure, here is a business proposal template...
(3 days later, new conversation)
User: Continue the proposal from last time.
AI: Sorry, I don't have records of our previous conversation.

v1.0 — Has state, but no relational context or intent

Skeleton attached (round 5, memory: "user wants to write a proposal")
(Cross-model transfer: "which knowledge base?" and "what is the user intent?" are both lost)

v2.0 — Full five-primitive traceability

Skeleton (round 5):
  relation.knowledge_base = "Competitor Analysis v2"
  intent.user_intent      = "Persuade investors, focus on differentiation"
(Cross-conversation, cross-model — intent and knowledge base context preserved)

Why These 5? — SPD

The 5 semantic primitives in SIC-JS v2.0 were systematically distilled via Semantic Primitive Distillation (SPD) — the minimum complete set.

SPD answers one question: "How many irreducible units does a minimum complete description of a semantic exchange require?"

The distillation process has four steps: identify containers vs. atoms → decompose containers → atomicity testing → completeness verification (6 standard scenarios).

5 primitives — removing any one makes some class of semantic exchange impossible to describe.
SIC-SIT didn't invent this structure. It is the natural structure of semantic exchange. SIC-SIT is the first protocol to formalize it.

The Fail-Closed Principle

SIC-JS follows one key principle: when uncertain, stop.

If the AI isn't sure what to fill in a field, it should write "unknown" rather than guess. If the AI isn't sure its semantic state is correct, it should flag the uncertainty rather than proceed.

This isn't weakness — it's design. Guessing accumulates errors. Stopping to ask the human is the responsible behavior.