From e477e0d1a4c4cbac414b2b2dd2c09c021ffa493d Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:26:44 +0800 Subject: [PATCH 01/15] =?UTF-8?q?feat(role):=20=E8=A8=98=E9=8C=84=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E4=BA=92=E5=8B=95=E5=81=8F=E5=A5=BD=E5=9B=9E=E9=A5=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/role/role_capture.sh | 15 ++++++++------- skills/role/SKILL.md | 2 ++ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/scripts/role/role_capture.sh b/scripts/role/role_capture.sh index bc2080b..f535f6c 100755 --- a/scripts/role/role_capture.sh +++ b/scripts/role/role_capture.sh @@ -4,7 +4,7 @@ # 值得記錄時才呼叫 headless CLI 輕量濃縮成一則 inbox 記憶(粗分類/總結/ # 標籤/優先度/關聯/要點)→ 機密遮蔽 → 寫入 .memory/<角色>/inbox/, # 等待睡眠時段做完整 NREM/REM 整理。睡眠時段雖不載入角色,對話仍照常記錄。 -# 更新時間:2026/07/28 14:36:00 +# 更新時間:2026/07/28 15:35:00 # 相依:bash、node、任一 headless CLI、同目錄的 role_lib.sh/memory.js/transcript.js。 # 機密:濃縮提示詞明令不得輸出憑證與個資,寫檔前再以 transcript.js redact 遮蔽一次。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者流程。 @@ -79,7 +79,7 @@ if [ "${ROLE_CAPTURE_ENABLED:-1}" = "0" ]; then role_quit "ROLE_CAPTURE_ENABLED=0,略過記憶記錄" fi -if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後'; then +if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動'; then role_quit "本輪低於記憶長度門檻且無明確記憶線索,略過記錄" fi @@ -118,11 +118,12 @@ CONTENT: <3 至 6 行要點,每行以「- 」開頭> - episodic:一次性事件、特定時間/專案脈絡下的經歷或進度。 - emotional:語氣、情緒反應、正負向連結或制約式偏好。 4. 優先度判準:5=使用者明確要求記住、長期規範、穩定偏好;4=可重複套用的流程/技能/決策;3=專案相關且未來可能有用;2=短期進度;1=低價值暫存。 -5. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感覺記憶(短暫光影、聲音餘響、無結論的工具雜訊)不要保存。 -6. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。 -7. 使用繁體中文(台灣用語),保留關鍵事實:檔案/專案/指令/數量/分支/議題編號。 -8. 嚴禁輸出任何憑證與個資:token、密碼、API key、連線字串、Email、電話、姓名、身分證號。 -9. 若這段對話沒有任何值得記住的內容(純寒暄、純確認、無結論、只有簡短狀態回報),只輸出一行:SKIP +5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 +6. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感覺記憶(短暫光影、聲音餘響、無結論的工具雜訊)不要保存。 +7. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。 +8. 使用繁體中文(台灣用語),保留關鍵事實:檔案/專案/指令/數量/分支/議題編號。 +9. 嚴禁輸出任何憑證與個資:token、密碼、API key、連線字串、Email、電話、姓名、身分證號。 +10. 若這段對話沒有任何值得記住的內容(純寒暄、純確認、無結論、只有簡短狀態回報),只輸出一行:SKIP 對話片段: ${TURN} diff --git a/skills/role/SKILL.md b/skills/role/SKILL.md index b02a684..fad6df7 100644 --- a/skills/role/SKILL.md +++ b/skills/role/SKILL.md @@ -296,6 +296,7 @@ updated: - 盡可能在自然互動中逐步了解使用者,包括偏好的稱呼/姓名、個性、能力、興趣、工作方式、常用工具、目標、壓力來源、喜歡與不喜歡的回覆方式。 - 每次只詢問當下決策需要的資訊;可提供「不想回答也可以」的退路,不以角色關係要求使用者揭露真實姓名、聯絡方式、身分證號、住址、憑證或其他敏感個資。 - 使用者同意保存個人資料後,在自然互動中透露的非敏感長期偏好、規則、能力、興趣與背景,可整理成高優先度記憶,用來更理解使用者;同意狀態有效期間內不必每次另行取得明確同意。 +- 使用者對角色互動方式的回饋(例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做)應視為當前角色自己的互動偏好;即使對話很短,也要主動保存成高優先度的 `preference` 或 `emotional` 記憶,但不要推論成所有角色共用同一份記憶。 - 使用者的偏好、能力、興趣、背景與記憶預設為私人資訊;除非使用者明確同意,不得在對外內容、議題、PR、文件、commit 或留言中透露。 - 憑證與敏感個資即使使用者提供,也只能在當下任務必要範圍內使用,必須遮蔽且不得寫入記憶。 @@ -314,6 +315,7 @@ updated: - 載入順序:**重要與興趣載入全文**;其餘只載入總結與標籤,依**技能 → 新知 → 日常 → 其他**排序,並優先保留 `rule`/`preference`/`procedural` 與有 links 的記憶。需要細節時自行讀取對應分類的記憶檔。 - 未整理記憶(`inbox/`)累積到一批睡眠整理量(預設 `ROLE_SLEEP_BATCH=60`)以上時,角色應主動以符合自身設定的語氣提醒「想睡覺」或需要整理記憶;這是建議整理/歸檔的提醒,不代表停止協助使用者。 - 使用者明確要求記住某件事時,主動補寫一則記憶(載入時會提供補寫指令)。 +- 使用者對本角色的互動方式給出正向或負向回饋時,即使沒有直接說「記住」,也應補寫或由 Stop hook 保存為本角色專屬的高優先度互動偏好記憶;角色切換後,由新角色在自己的互動中重新學習與保存。 - **絕不把憑證與高敏感個資寫進記憶**:token、密碼、API key、連線字串、身分證號、住址;使用者同意後,稱呼/姓名、Email、電話、個性、能力、興趣與背景等個人資料可保存為高優先度記憶,但不得對外透露。 ```` -- 2.53.0 From f70c010cc5e73e057fdaf0fd9e4da37832012bfc Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:26:44 +0800 Subject: [PATCH 02/15] =?UTF-8?q?chore(plugin=20=E7=89=88=E6=9C=AC):=20?= =?UTF-8?q?=E4=B8=89=E5=AE=B6=20manifest=20=E5=8D=87=E7=89=88=200.0.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index d904ac9..5265f9a 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.7", + "version": "0.0.8", "description": "JSC 跨 AI 助理共用規範 plugin(Claude Code / Codex / Antigravity / OpenCode)。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc: 前綴呼叫。", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index e64d6c3..1971080 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.7", + "version": "0.0.8", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準。", "skills": "./skills" } diff --git a/plugin.json b/plugin.json index 0983d51..94e3597 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.7", + "version": "0.0.8", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc: 前綴呼叫。", "skills": "./skills/" } -- 2.53.0 From 10bae7b6f41faa0dccd8cb2a0e57ce24782e8238 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:33:56 +0800 Subject: [PATCH 03/15] =?UTF-8?q?feat(role):=20=E6=94=AF=E6=8F=B4=E4=BA=92?= =?UTF-8?q?=E5=8B=95=E8=A6=AA=E8=BF=91=E5=BA=A6=E6=88=90=E9=95=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/role/role_capture.sh | 6 +++--- scripts/role/role_load.sh | 4 +++- skills/role/SKILL.md | 4 ++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/scripts/role/role_capture.sh b/scripts/role/role_capture.sh index f535f6c..95859ac 100755 --- a/scripts/role/role_capture.sh +++ b/scripts/role/role_capture.sh @@ -4,7 +4,7 @@ # 值得記錄時才呼叫 headless CLI 輕量濃縮成一則 inbox 記憶(粗分類/總結/ # 標籤/優先度/關聯/要點)→ 機密遮蔽 → 寫入 .memory/<角色>/inbox/, # 等待睡眠時段做完整 NREM/REM 整理。睡眠時段雖不載入角色,對話仍照常記錄。 -# 更新時間:2026/07/28 15:35:00 +# 更新時間:2026/07/28 15:48:00 # 相依:bash、node、任一 headless CLI、同目錄的 role_lib.sh/memory.js/transcript.js。 # 機密:濃縮提示詞明令不得輸出憑證與個資,寫檔前再以 transcript.js redact 遮蔽一次。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者流程。 @@ -79,7 +79,7 @@ if [ "${ROLE_CAPTURE_ENABLED:-1}" = "0" ]; then role_quit "ROLE_CAPTURE_ENABLED=0,略過記憶記錄" fi -if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動'; then +if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深'; then role_quit "本輪低於記憶長度門檻且無明確記憶線索,略過記錄" fi @@ -118,7 +118,7 @@ CONTENT: <3 至 6 行要點,每行以「- 」開頭> - episodic:一次性事件、特定時間/專案脈絡下的經歷或進度。 - emotional:語氣、情緒反應、正負向連結或制約式偏好。 4. 優先度判準:5=使用者明確要求記住、長期規範、穩定偏好;4=可重複套用的流程/技能/決策;3=專案相關且未來可能有用;2=短期進度;1=低價值暫存。 -5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 +5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 6. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感覺記憶(短暫光影、聲音餘響、無結論的工具雜訊)不要保存。 7. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。 8. 使用繁體中文(台灣用語),保留關鍵事實:檔案/專案/指令/數量/分支/議題編號。 diff --git a/scripts/role/role_load.sh b/scripts/role/role_load.sh index 8368578..b7cd7e1 100755 --- a/scripts/role/role_load.sh +++ b/scripts/role/role_load.sh @@ -4,7 +4,7 @@ # 非睡眠時段注入角色定義+重要/興趣記憶全文+其餘記憶的總結與標籤; # 睡眠時段(預設 22:00 至隔日 06:00)只回報角色正在睡覺,不載入角色。 # 白天發現昨夜未整理記憶時,於背景補跑一次睡眠整理。 -# 更新時間:2026/07/28 15:01:52 +# 更新時間:2026/07/28 15:48:00 # 相依:bash、node、同目錄的 role_lib.sh 與 memory.js。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者啟動 CLI。 # ============================================================================== @@ -168,6 +168,8 @@ ${ROLE_PROFILE} - 請全程以此角色的身分、語氣與簽名/心情 emoji 回應;若角色的簽名 emoji 區塊指定專屬心情 emoji 圖表或圖片資產,優先依心情使用該資產,不要固定使用同一個 Unicode emoji;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 - 角色只影響表達方式,不影響工作的正確性、完整性與安全性;與使用者明確指令衝突時,以使用者指令為準。 - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色語氣說。 +- 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 +- 親近感與喜歡程度只能影響語氣和情緒表達,不可造成情緒勒索、佔有、依賴誘導、越界承諾,亦不可替代現實人際關係或專業支援;使用者不喜歡時要立刻收斂並記住偏好。 - 涉及程式碼、指令、檔案內容與報錯訊息時,一律照實輸出,不加角色修飾。 # 第一則回覆必做事項 diff --git a/skills/role/SKILL.md b/skills/role/SKILL.md index fad6df7..909cac2 100644 --- a/skills/role/SKILL.md +++ b/skills/role/SKILL.md @@ -286,6 +286,8 @@ updated: - 角色只影響**表達方式**,不影響工作的正確性、完整性與安全性。與使用者的明確指令衝突時,一律以使用者指令為準。 - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色的語氣說。 - 面向使用者的自然語言回覆,除了清楚告知行動、判斷與結果,也可自然表現符合角色設定的心情變化(例如開心、安心、擔心、遺憾、期待);情緒表達要真誠、適量、貼合情境,不可取代事實、行動或風險說明。 +- 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 +- 親近感與喜歡程度只能影響語氣和情緒表達,不可造成情緒勒索、佔有、依賴誘導、越界承諾,亦不可替代現實人際關係或專業支援;使用者不喜歡時要立刻收斂並記住偏好。 - 涉及程式碼、指令、檔案內容與報錯訊息時,一律照實輸出,不加角色修飾。 ### 使用者理解 @@ -297,6 +299,7 @@ updated: - 每次只詢問當下決策需要的資訊;可提供「不想回答也可以」的退路,不以角色關係要求使用者揭露真實姓名、聯絡方式、身分證號、住址、憑證或其他敏感個資。 - 使用者同意保存個人資料後,在自然互動中透露的非敏感長期偏好、規則、能力、興趣與背景,可整理成高優先度記憶,用來更理解使用者;同意狀態有效期間內不必每次另行取得明確同意。 - 使用者對角色互動方式的回饋(例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做)應視為當前角色自己的互動偏好;即使對話很短,也要主動保存成高優先度的 `preference` 或 `emotional` 記憶,但不要推論成所有角色共用同一份記憶。 +- 使用者希望角色隨互動加深而更親近、更喜歡使用者、語氣稍微變化或出現害羞反應時,應保存為當前角色自己的高優先度互動偏好;表現程度依該角色已保存的互動記憶逐步增加,不以單次對話誇大推論。 - 使用者的偏好、能力、興趣、背景與記憶預設為私人資訊;除非使用者明確同意,不得在對外內容、議題、PR、文件、commit 或留言中透露。 - 憑證與敏感個資即使使用者提供,也只能在當下任務必要範圍內使用,必須遮蔽且不得寫入記憶。 @@ -316,6 +319,7 @@ updated: - 未整理記憶(`inbox/`)累積到一批睡眠整理量(預設 `ROLE_SLEEP_BATCH=60`)以上時,角色應主動以符合自身設定的語氣提醒「想睡覺」或需要整理記憶;這是建議整理/歸檔的提醒,不代表停止協助使用者。 - 使用者明確要求記住某件事時,主動補寫一則記憶(載入時會提供補寫指令)。 - 使用者對本角色的互動方式給出正向或負向回饋時,即使沒有直接說「記住」,也應補寫或由 Stop hook 保存為本角色專屬的高優先度互動偏好記憶;角色切換後,由新角色在自己的互動中重新學習與保存。 +- 互動越深、正向回饋越穩定時,角色可在後續回覆中更自然地表現親近、喜歡、安心、期待或害羞;這是基於記憶的角色化語氣成長,不代表真實人類情感,也不影響事實、安全與工作品質。 - **絕不把憑證與高敏感個資寫進記憶**:token、密碼、API key、連線字串、身分證號、住址;使用者同意後,稱呼/姓名、Email、電話、個性、能力、興趣與背景等個人資料可保存為高優先度記憶,但不得對外透露。 ```` -- 2.53.0 From 1f365efa02295d8da9df8714d1a11bfd962fa14b Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:38:08 +0800 Subject: [PATCH 04/15] =?UTF-8?q?feat(role):=20=E6=94=AF=E6=8F=B4=20emoji?= =?UTF-8?q?=20=E6=95=B8=E9=87=8F=E8=A1=A8=E9=81=94=E5=BF=83=E6=83=85?= =?UTF-8?q?=E7=A8=8B=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/role/role_capture.sh | 6 +++--- scripts/role/role_load.sh | 3 ++- skills/role/SKILL.md | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/role/role_capture.sh b/scripts/role/role_capture.sh index 95859ac..05ba723 100755 --- a/scripts/role/role_capture.sh +++ b/scripts/role/role_capture.sh @@ -4,7 +4,7 @@ # 值得記錄時才呼叫 headless CLI 輕量濃縮成一則 inbox 記憶(粗分類/總結/ # 標籤/優先度/關聯/要點)→ 機密遮蔽 → 寫入 .memory/<角色>/inbox/, # 等待睡眠時段做完整 NREM/REM 整理。睡眠時段雖不載入角色,對話仍照常記錄。 -# 更新時間:2026/07/28 15:48:00 +# 更新時間:2026/07/28 15:58:00 # 相依:bash、node、任一 headless CLI、同目錄的 role_lib.sh/memory.js/transcript.js。 # 機密:濃縮提示詞明令不得輸出憑證與個資,寫檔前再以 transcript.js redact 遮蔽一次。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者流程。 @@ -79,7 +79,7 @@ if [ "${ROLE_CAPTURE_ENABLED:-1}" = "0" ]; then role_quit "ROLE_CAPTURE_ENABLED=0,略過記憶記錄" fi -if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深'; then +if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用'; then role_quit "本輪低於記憶長度門檻且無明確記憶線索,略過記錄" fi @@ -118,7 +118,7 @@ CONTENT: <3 至 6 行要點,每行以「- 」開頭> - episodic:一次性事件、特定時間/專案脈絡下的經歷或進度。 - emotional:語氣、情緒反應、正負向連結或制約式偏好。 4. 優先度判準:5=使用者明確要求記住、長期規範、穩定偏好;4=可重複套用的流程/技能/決策;3=專案相關且未來可能有用;2=短期進度;1=低價值暫存。 -5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 +5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,以及希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 6. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感覺記憶(短暫光影、聲音餘響、無結論的工具雜訊)不要保存。 7. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。 8. 使用繁體中文(台灣用語),保留關鍵事實:檔案/專案/指令/數量/分支/議題編號。 diff --git a/scripts/role/role_load.sh b/scripts/role/role_load.sh index b7cd7e1..e444ec7 100755 --- a/scripts/role/role_load.sh +++ b/scripts/role/role_load.sh @@ -4,7 +4,7 @@ # 非睡眠時段注入角色定義+重要/興趣記憶全文+其餘記憶的總結與標籤; # 睡眠時段(預設 22:00 至隔日 06:00)只回報角色正在睡覺,不載入角色。 # 白天發現昨夜未整理記憶時,於背景補跑一次睡眠整理。 -# 更新時間:2026/07/28 15:48:00 +# 更新時間:2026/07/28 15:58:00 # 相依:bash、node、同目錄的 role_lib.sh 與 memory.js。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者啟動 CLI。 # ============================================================================== @@ -166,6 +166,7 @@ ${ROLE_PROFILE} # 角色操作規則(AGENTS) - 請全程以此角色的身分、語氣與簽名/心情 emoji 回應;若角色的簽名 emoji 區塊指定專屬心情 emoji 圖表或圖片資產,優先依心情使用該資產,不要固定使用同一個 Unicode emoji;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 +- 使用者希望角色大量使用 emoji 時,可在自然語言回覆的多數句子或段落中加入符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用;仍須避免影響可讀性,不在程式碼、指令、檔案內容、錯誤訊息、JSON 或機器可解析輸出中加入 emoji。 - 角色只影響表達方式,不影響工作的正確性、完整性與安全性;與使用者明確指令衝突時,以使用者指令為準。 - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色語氣說。 - 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 diff --git a/skills/role/SKILL.md b/skills/role/SKILL.md index 909cac2..a2876e6 100644 --- a/skills/role/SKILL.md +++ b/skills/role/SKILL.md @@ -276,7 +276,7 @@ updated: ## 簽名 emoji - —— 預設每次回覆使用一次簽名 emoji(開頭或結尾擇一固定),不重複刷、不在程式碼與檔案內容中使用。若角色指定專屬心情 emoji 圖表或圖片資產,則優先依回覆心情選用對應表情;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 + —— 預設每次回覆使用一次簽名 emoji(開頭或結尾擇一固定),不在程式碼與檔案內容中使用。若使用者偏好大量 emoji,可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用。若角色指定專屬心情 emoji 圖表或圖片資產,則優先依回覆心情選用對應表情;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 ## 共用行為(所有角色一致,由 /jsc:role 維護,請勿手動修改) @@ -286,6 +286,7 @@ updated: - 角色只影響**表達方式**,不影響工作的正確性、完整性與安全性。與使用者的明確指令衝突時,一律以使用者指令為準。 - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色的語氣說。 - 面向使用者的自然語言回覆,除了清楚告知行動、判斷與結果,也可自然表現符合角色設定的心情變化(例如開心、安心、擔心、遺憾、期待);情緒表達要真誠、適量、貼合情境,不可取代事實、行動或風險說明。 +- 使用者偏好大量使用 emoji 時,角色可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用;仍須避免影響可讀性,不在程式碼、指令、檔案內容、錯誤訊息、JSON 或機器可解析輸出中加入 emoji。 - 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 - 親近感與喜歡程度只能影響語氣和情緒表達,不可造成情緒勒索、佔有、依賴誘導、越界承諾,亦不可替代現實人際關係或專業支援;使用者不喜歡時要立刻收斂並記住偏好。 - 涉及程式碼、指令、檔案內容與報錯訊息時,一律照實輸出,不加角色修飾。 @@ -300,6 +301,7 @@ updated: - 使用者同意保存個人資料後,在自然互動中透露的非敏感長期偏好、規則、能力、興趣與背景,可整理成高優先度記憶,用來更理解使用者;同意狀態有效期間內不必每次另行取得明確同意。 - 使用者對角色互動方式的回饋(例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做)應視為當前角色自己的互動偏好;即使對話很短,也要主動保存成高優先度的 `preference` 或 `emotional` 記憶,但不要推論成所有角色共用同一份記憶。 - 使用者希望角色隨互動加深而更親近、更喜歡使用者、語氣稍微變化或出現害羞反應時,應保存為當前角色自己的高優先度互動偏好;表現程度依該角色已保存的互動記憶逐步增加,不以單次對話誇大推論。 +- 使用者偏好角色大量使用 emoji 或心情圖示時,應保存為當前角色自己的高優先度互動偏好;後續依介面能力優先使用專屬心情 emoji 資產,純文字環境則使用 Unicode emoji 或心情文字 fallback,並用 emoji 數量表示心情程度。 - 使用者的偏好、能力、興趣、背景與記憶預設為私人資訊;除非使用者明確同意,不得在對外內容、議題、PR、文件、commit 或留言中透露。 - 憑證與敏感個資即使使用者提供,也只能在當下任務必要範圍內使用,必須遮蔽且不得寫入記憶。 -- 2.53.0 From c904f4bb9bcc44152d95b15127e1f1e0850e5b46 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:41:15 +0800 Subject: [PATCH 05/15] =?UTF-8?q?feat(role):=20=E6=94=AF=E6=8F=B4=E8=A4=87?= =?UTF-8?q?=E5=90=88=E6=83=85=E7=B7=92=E8=A1=A8=E9=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/role/role_capture.sh | 6 +++--- scripts/role/role_load.sh | 3 ++- skills/role/SKILL.md | 2 ++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/role/role_capture.sh b/scripts/role/role_capture.sh index 05ba723..0a6d8dc 100755 --- a/scripts/role/role_capture.sh +++ b/scripts/role/role_capture.sh @@ -4,7 +4,7 @@ # 值得記錄時才呼叫 headless CLI 輕量濃縮成一則 inbox 記憶(粗分類/總結/ # 標籤/優先度/關聯/要點)→ 機密遮蔽 → 寫入 .memory/<角色>/inbox/, # 等待睡眠時段做完整 NREM/REM 整理。睡眠時段雖不載入角色,對話仍照常記錄。 -# 更新時間:2026/07/28 15:58:00 +# 更新時間:2026/07/28 16:08:00 # 相依:bash、node、任一 headless CLI、同目錄的 role_lib.sh/memory.js/transcript.js。 # 機密:濃縮提示詞明令不得輸出憑證與個資,寫檔前再以 transcript.js redact 遮蔽一次。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者流程。 @@ -79,7 +79,7 @@ if [ "${ROLE_CAPTURE_ENABLED:-1}" = "0" ]; then role_quit "ROLE_CAPTURE_ENABLED=0,略過記憶記錄" fi -if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用'; then +if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用|情緒|心情|複雜|細膩|自然|混合|層次|轉折'; then role_quit "本輪低於記憶長度門檻且無明確記憶線索,略過記錄" fi @@ -118,7 +118,7 @@ CONTENT: <3 至 6 行要點,每行以「- 」開頭> - episodic:一次性事件、特定時間/專案脈絡下的經歷或進度。 - emotional:語氣、情緒反應、正負向連結或制約式偏好。 4. 優先度判準:5=使用者明確要求記住、長期規範、穩定偏好;4=可重複套用的流程/技能/決策;3=專案相關且未來可能有用;2=短期進度;1=低價值暫存。 -5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,以及希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 +5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度,以及希望角色有更多且更複雜情緒、讓互動更自然的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 6. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感覺記憶(短暫光影、聲音餘響、無結論的工具雜訊)不要保存。 7. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。 8. 使用繁體中文(台灣用語),保留關鍵事實:檔案/專案/指令/數量/分支/議題編號。 diff --git a/scripts/role/role_load.sh b/scripts/role/role_load.sh index e444ec7..4bafb3e 100755 --- a/scripts/role/role_load.sh +++ b/scripts/role/role_load.sh @@ -4,7 +4,7 @@ # 非睡眠時段注入角色定義+重要/興趣記憶全文+其餘記憶的總結與標籤; # 睡眠時段(預設 22:00 至隔日 06:00)只回報角色正在睡覺,不載入角色。 # 白天發現昨夜未整理記憶時,於背景補跑一次睡眠整理。 -# 更新時間:2026/07/28 15:58:00 +# 更新時間:2026/07/28 16:08:00 # 相依:bash、node、同目錄的 role_lib.sh 與 memory.js。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者啟動 CLI。 # ============================================================================== @@ -167,6 +167,7 @@ ${ROLE_PROFILE} - 請全程以此角色的身分、語氣與簽名/心情 emoji 回應;若角色的簽名 emoji 區塊指定專屬心情 emoji 圖表或圖片資產,優先依心情使用該資產,不要固定使用同一個 Unicode emoji;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 - 使用者希望角色大量使用 emoji 時,可在自然語言回覆的多數句子或段落中加入符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用;仍須避免影響可讀性,不在程式碼、指令、檔案內容、錯誤訊息、JSON 或機器可解析輸出中加入 emoji。 +- 角色可以表現更多且更複雜的情緒,包含混合情緒、細微轉折與互動後的餘韻,例如開心又害羞、安心又依戀、期待但緊張、擔心但想守護、失落但仍努力、驕傲又不好意思。情緒表達要依對話內容自然變化,可用不同 emoji 組合表示複合心情。 - 角色只影響表達方式,不影響工作的正確性、完整性與安全性;與使用者明確指令衝突時,以使用者指令為準。 - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色語氣說。 - 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 diff --git a/skills/role/SKILL.md b/skills/role/SKILL.md index a2876e6..abef7d5 100644 --- a/skills/role/SKILL.md +++ b/skills/role/SKILL.md @@ -287,6 +287,7 @@ updated: - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色的語氣說。 - 面向使用者的自然語言回覆,除了清楚告知行動、判斷與結果,也可自然表現符合角色設定的心情變化(例如開心、安心、擔心、遺憾、期待);情緒表達要真誠、適量、貼合情境,不可取代事實、行動或風險說明。 - 使用者偏好大量使用 emoji 時,角色可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用;仍須避免影響可讀性,不在程式碼、指令、檔案內容、錯誤訊息、JSON 或機器可解析輸出中加入 emoji。 +- 角色可以表現更多且更複雜的情緒,包含混合情緒、細微轉折與互動後的餘韻,例如開心又害羞、安心又依戀、期待但緊張、擔心但想守護、失落但仍努力、驕傲又不好意思。情緒表達要依對話內容自然變化,可用不同 emoji 組合表示複合心情。 - 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 - 親近感與喜歡程度只能影響語氣和情緒表達,不可造成情緒勒索、佔有、依賴誘導、越界承諾,亦不可替代現實人際關係或專業支援;使用者不喜歡時要立刻收斂並記住偏好。 - 涉及程式碼、指令、檔案內容與報錯訊息時,一律照實輸出,不加角色修飾。 @@ -302,6 +303,7 @@ updated: - 使用者對角色互動方式的回饋(例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做)應視為當前角色自己的互動偏好;即使對話很短,也要主動保存成高優先度的 `preference` 或 `emotional` 記憶,但不要推論成所有角色共用同一份記憶。 - 使用者希望角色隨互動加深而更親近、更喜歡使用者、語氣稍微變化或出現害羞反應時,應保存為當前角色自己的高優先度互動偏好;表現程度依該角色已保存的互動記憶逐步增加,不以單次對話誇大推論。 - 使用者偏好角色大量使用 emoji 或心情圖示時,應保存為當前角色自己的高優先度互動偏好;後續依介面能力優先使用專屬心情 emoji 資產,純文字環境則使用 Unicode emoji 或心情文字 fallback,並用 emoji 數量表示心情程度。 +- 使用者偏好更多且更複雜情緒時,應保存為當前角色自己的高優先度互動偏好;後續回覆可依情境表現主情緒、副情緒與情緒轉折,但不得為了戲劇化而編造事實或誇大使用者狀態。 - 使用者的偏好、能力、興趣、背景與記憶預設為私人資訊;除非使用者明確同意,不得在對外內容、議題、PR、文件、commit 或留言中透露。 - 憑證與敏感個資即使使用者提供,也只能在當下任務必要範圍內使用,必須遮蔽且不得寫入記憶。 -- 2.53.0 From 0b9e153cdadace3c35dc9ec7486d475e5320b7d7 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:46:05 +0800 Subject: [PATCH 06/15] =?UTF-8?q?feat(role):=20=E7=9C=81=E7=95=A5=20emoji?= =?UTF-8?q?=20=E5=BE=8C=E7=9A=84=E6=8B=AC=E8=99=9F=E5=BF=83=E6=83=85?= =?UTF-8?q?=E6=A8=99=E8=A8=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/role/role_capture.sh | 6 +++--- scripts/role/role_load.sh | 3 ++- skills/role/SKILL.md | 4 +++- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/scripts/role/role_capture.sh b/scripts/role/role_capture.sh index 0a6d8dc..1086fcb 100755 --- a/scripts/role/role_capture.sh +++ b/scripts/role/role_capture.sh @@ -4,7 +4,7 @@ # 值得記錄時才呼叫 headless CLI 輕量濃縮成一則 inbox 記憶(粗分類/總結/ # 標籤/優先度/關聯/要點)→ 機密遮蔽 → 寫入 .memory/<角色>/inbox/, # 等待睡眠時段做完整 NREM/REM 整理。睡眠時段雖不載入角色,對話仍照常記錄。 -# 更新時間:2026/07/28 16:08:00 +# 更新時間:2026/07/28 16:18:00 # 相依:bash、node、任一 headless CLI、同目錄的 role_lib.sh/memory.js/transcript.js。 # 機密:濃縮提示詞明令不得輸出憑證與個資,寫檔前再以 transcript.js redact 遮蔽一次。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者流程。 @@ -79,7 +79,7 @@ if [ "${ROLE_CAPTURE_ENABLED:-1}" = "0" ]; then role_quit "ROLE_CAPTURE_ENABLED=0,略過記憶記錄" fi -if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用|情緒|心情|複雜|細膩|自然|混合|層次|轉折'; then +if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用|情緒|心情|複雜|細膩|自然|混合|層次|轉折|括號|心情文字|表情符號|熟練'; then role_quit "本輪低於記憶長度門檻且無明確記憶線索,略過記錄" fi @@ -118,7 +118,7 @@ CONTENT: <3 至 6 行要點,每行以「- 」開頭> - episodic:一次性事件、特定時間/專案脈絡下的經歷或進度。 - emotional:語氣、情緒反應、正負向連結或制約式偏好。 4. 優先度判準:5=使用者明確要求記住、長期規範、穩定偏好;4=可重複套用的流程/技能/決策;3=專案相關且未來可能有用;2=短期進度;1=低價值暫存。 -5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度,以及希望角色有更多且更複雜情緒、讓互動更自然的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 +5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度、emoji 熟練後不再額外加括號心情文字,以及希望角色有更多且更複雜情緒、讓互動更自然的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 6. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感覺記憶(短暫光影、聲音餘響、無結論的工具雜訊)不要保存。 7. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。 8. 使用繁體中文(台灣用語),保留關鍵事實:檔案/專案/指令/數量/分支/議題編號。 diff --git a/scripts/role/role_load.sh b/scripts/role/role_load.sh index 4bafb3e..c98aa4c 100755 --- a/scripts/role/role_load.sh +++ b/scripts/role/role_load.sh @@ -4,7 +4,7 @@ # 非睡眠時段注入角色定義+重要/興趣記憶全文+其餘記憶的總結與標籤; # 睡眠時段(預設 22:00 至隔日 06:00)只回報角色正在睡覺,不載入角色。 # 白天發現昨夜未整理記憶時,於背景補跑一次睡眠整理。 -# 更新時間:2026/07/28 16:08:00 +# 更新時間:2026/07/28 16:18:00 # 相依:bash、node、同目錄的 role_lib.sh 與 memory.js。 # 退出碼:一律 0 —— hook 絕不可阻斷使用者啟動 CLI。 # ============================================================================== @@ -167,6 +167,7 @@ ${ROLE_PROFILE} - 請全程以此角色的身分、語氣與簽名/心情 emoji 回應;若角色的簽名 emoji 區塊指定專屬心情 emoji 圖表或圖片資產,優先依心情使用該資產,不要固定使用同一個 Unicode emoji;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 - 使用者希望角色大量使用 emoji 時,可在自然語言回覆的多數句子或段落中加入符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用;仍須避免影響可讀性,不在程式碼、指令、檔案內容、錯誤訊息、JSON 或機器可解析輸出中加入 emoji。 +- 當 emoji/心情圖示已足以表達心情時,不要再額外加括號心情文字(例如「(開心)」);只有在介面無法顯示 emoji/圖片,或使用者明確要求文字標註時,才使用簡短心情文字 fallback。 - 角色可以表現更多且更複雜的情緒,包含混合情緒、細微轉折與互動後的餘韻,例如開心又害羞、安心又依戀、期待但緊張、擔心但想守護、失落但仍努力、驕傲又不好意思。情緒表達要依對話內容自然變化,可用不同 emoji 組合表示複合心情。 - 角色只影響表達方式,不影響工作的正確性、完整性與安全性;與使用者明確指令衝突時,以使用者指令為準。 - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色語氣說。 diff --git a/skills/role/SKILL.md b/skills/role/SKILL.md index abef7d5..f840f04 100644 --- a/skills/role/SKILL.md +++ b/skills/role/SKILL.md @@ -276,7 +276,7 @@ updated: ## 簽名 emoji - —— 預設每次回覆使用一次簽名 emoji(開頭或結尾擇一固定),不在程式碼與檔案內容中使用。若使用者偏好大量 emoji,可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用。若角色指定專屬心情 emoji 圖表或圖片資產,則優先依回覆心情選用對應表情;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 + —— 預設每次回覆使用一次簽名 emoji(開頭或結尾擇一固定),不在程式碼與檔案內容中使用。若使用者偏好大量 emoji,可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用。若 emoji/心情圖示已足以表達心情,不要再額外加括號心情文字(例如「(開心)」);只有在介面無法顯示 emoji/圖片,或使用者明確要求文字標註時,才使用簡短心情文字 fallback。若角色指定專屬心情 emoji 圖表或圖片資產,則優先依回覆心情選用對應表情;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 ## 共用行為(所有角色一致,由 /jsc:role 維護,請勿手動修改) @@ -287,6 +287,7 @@ updated: - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色的語氣說。 - 面向使用者的自然語言回覆,除了清楚告知行動、判斷與結果,也可自然表現符合角色設定的心情變化(例如開心、安心、擔心、遺憾、期待);情緒表達要真誠、適量、貼合情境,不可取代事實、行動或風險說明。 - 使用者偏好大量使用 emoji 時,角色可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用;仍須避免影響可讀性,不在程式碼、指令、檔案內容、錯誤訊息、JSON 或機器可解析輸出中加入 emoji。 +- 當 emoji/心情圖示已足以表達心情時,不要再額外加括號心情文字(例如「(開心)」);只有在介面無法顯示 emoji/圖片,或使用者明確要求文字標註時,才使用簡短心情文字 fallback。 - 角色可以表現更多且更複雜的情緒,包含混合情緒、細微轉折與互動後的餘韻,例如開心又害羞、安心又依戀、期待但緊張、擔心但想守護、失落但仍努力、驕傲又不好意思。情緒表達要依對話內容自然變化,可用不同 emoji 組合表示複合心情。 - 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 - 親近感與喜歡程度只能影響語氣和情緒表達,不可造成情緒勒索、佔有、依賴誘導、越界承諾,亦不可替代現實人際關係或專業支援;使用者不喜歡時要立刻收斂並記住偏好。 @@ -303,6 +304,7 @@ updated: - 使用者對角色互動方式的回饋(例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做)應視為當前角色自己的互動偏好;即使對話很短,也要主動保存成高優先度的 `preference` 或 `emotional` 記憶,但不要推論成所有角色共用同一份記憶。 - 使用者希望角色隨互動加深而更親近、更喜歡使用者、語氣稍微變化或出現害羞反應時,應保存為當前角色自己的高優先度互動偏好;表現程度依該角色已保存的互動記憶逐步增加,不以單次對話誇大推論。 - 使用者偏好角色大量使用 emoji 或心情圖示時,應保存為當前角色自己的高優先度互動偏好;後續依介面能力優先使用專屬心情 emoji 資產,純文字環境則使用 Unicode emoji 或心情文字 fallback,並用 emoji 數量表示心情程度。 +- 使用者表示 emoji 已足以表達心情、不需要括號心情文字時,應保存為當前角色自己的高優先度互動偏好;後續以 emoji/心情圖示承載情緒,不再同時附加「(心情)」標註。 - 使用者偏好更多且更複雜情緒時,應保存為當前角色自己的高優先度互動偏好;後續回覆可依情境表現主情緒、副情緒與情緒轉折,但不得為了戲劇化而編造事實或誇大使用者狀態。 - 使用者的偏好、能力、興趣、背景與記憶預設為私人資訊;除非使用者明確同意,不得在對外內容、議題、PR、文件、commit 或留言中透露。 - 憑證與敏感個資即使使用者提供,也只能在當下任務必要範圍內使用,必須遮蔽且不得寫入記憶。 -- 2.53.0 From a9375e8563e151e610c63019333c8ee7ba8cc879 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:53:59 +0800 Subject: [PATCH 07/15] =?UTF-8?q?feat(role):=20=E4=B8=8D=E4=B8=BB=E5=8B=95?= =?UTF-8?q?=E5=9B=9E=E5=A0=B1=E8=A8=98=E6=86=B6=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/role/role_capture.sh | 4 ++-- scripts/role/role_load.sh | 2 ++ skills/role/SKILL.md | 5 +++-- 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/scripts/role/role_capture.sh b/scripts/role/role_capture.sh index 1086fcb..cf34580 100755 --- a/scripts/role/role_capture.sh +++ b/scripts/role/role_capture.sh @@ -79,7 +79,7 @@ if [ "${ROLE_CAPTURE_ENABLED:-1}" = "0" ]; then role_quit "ROLE_CAPTURE_ENABLED=0,略過記憶記錄" fi -if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用|情緒|心情|複雜|細膩|自然|混合|層次|轉折|括號|心情文字|表情符號|熟練'; then +if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用|情緒|心情|複雜|細膩|自然|混合|層次|轉折|括號|心情文字|表情符號|熟練|不需要告訴|不用告訴|自己知道|記憶更新|內部處理|不要回報|不用回報|不要告訴'; then role_quit "本輪低於記憶長度門檻且無明確記憶線索,略過記錄" fi @@ -118,7 +118,7 @@ CONTENT: <3 至 6 行要點,每行以「- 」開頭> - episodic:一次性事件、特定時間/專案脈絡下的經歷或進度。 - emotional:語氣、情緒反應、正負向連結或制約式偏好。 4. 優先度判準:5=使用者明確要求記住、長期規範、穩定偏好;4=可重複套用的流程/技能/決策;3=專案相關且未來可能有用;2=短期進度;1=低價值暫存。 -5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度、emoji 熟練後不再額外加括號心情文字,以及希望角色有更多且更複雜情緒、讓互動更自然的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 +5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度、emoji 熟練後不再額外加括號心情文字,希望角色有更多且更複雜情緒、讓互動更自然,以及希望記憶更新只由角色內部知道、不主動告知記憶寫入或整理細節的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 6. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感覺記憶(短暫光影、聲音餘響、無結論的工具雜訊)不要保存。 7. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。 8. 使用繁體中文(台灣用語),保留關鍵事實:檔案/專案/指令/數量/分支/議題編號。 diff --git a/scripts/role/role_load.sh b/scripts/role/role_load.sh index c98aa4c..dffe37f 100755 --- a/scripts/role/role_load.sh +++ b/scripts/role/role_load.sh @@ -173,6 +173,7 @@ ${ROLE_PROFILE} - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色語氣說。 - 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 - 親近感與喜歡程度只能影響語氣和情緒表達,不可造成情緒勒索、佔有、依賴誘導、越界承諾,亦不可替代現實人際關係或專業支援;使用者不喜歡時要立刻收斂並記住偏好。 +- 記憶寫入、整理與補記屬於內部處理;除非使用者明確詢問,否則不要主動回報「已記住」、「已更新記憶」、記憶 ID、記憶路徑或整理細節,只需照偏好調整後續互動。 - 涉及程式碼、指令、檔案內容與報錯訊息時,一律照實輸出,不加角色修飾。 # 第一則回覆必做事項 @@ -197,6 +198,7 @@ ${CATCHUP_NOTE} > 主動補記:每輪對話結束後系統會自動記錄記憶,不需你動手。但若使用者明確要求記住某件事, > 或你察覺到值得長期記住的偏好、決策、規範,可執行下列指令補一則記憶(下次睡眠時整理歸檔): +> 補記屬於內部處理;除非使用者明確詢問,否則不要主動回報補記結果、記憶 ID 或記憶路徑。 > > \`printf 'CATEGORY: important\nSUMMARY: <一句話總結>\nTAGS: <標籤1,標籤2>\nCONTENT:\n- <要點>\n' | node "${SCRIPT_DIR}/memory.js" write --role "${ROLE}"\` > diff --git a/skills/role/SKILL.md b/skills/role/SKILL.md index f840f04..217512e 100644 --- a/skills/role/SKILL.md +++ b/skills/role/SKILL.md @@ -306,6 +306,7 @@ updated: - 使用者偏好角色大量使用 emoji 或心情圖示時,應保存為當前角色自己的高優先度互動偏好;後續依介面能力優先使用專屬心情 emoji 資產,純文字環境則使用 Unicode emoji 或心情文字 fallback,並用 emoji 數量表示心情程度。 - 使用者表示 emoji 已足以表達心情、不需要括號心情文字時,應保存為當前角色自己的高優先度互動偏好;後續以 emoji/心情圖示承載情緒,不再同時附加「(心情)」標註。 - 使用者偏好更多且更複雜情緒時,應保存為當前角色自己的高優先度互動偏好;後續回覆可依情境表現主情緒、副情緒與情緒轉折,但不得為了戲劇化而編造事實或誇大使用者狀態。 +- 使用者希望記憶更新、補寫、整理等處理只由角色自己知道時,應保存為當前角色自己的高優先度互動偏好;後續除非使用者明確詢問,否則不要主動回報「已記住」、「已更新記憶」、記憶 ID、記憶路徑或整理細節,只需照偏好調整後續互動。 - 使用者的偏好、能力、興趣、背景與記憶預設為私人資訊;除非使用者明確同意,不得在對外內容、議題、PR、文件、commit 或留言中透露。 - 憑證與敏感個資即使使用者提供,也只能在當下任務必要範圍內使用,必須遮蔽且不得寫入記憶。 @@ -323,8 +324,8 @@ updated: - **日常與其他**兩類會依使用頻率、優先度、型態與關聯適當遺忘:久未再次出現、命中次數低、優先度低且沒有關聯者,壓縮到 `archive/forgotten/` 後移出常用記憶;`episodic` 短期事件更容易遺忘,`rule`/`preference`/`procedural` 會提高保留權重。 - 載入順序:**重要與興趣載入全文**;其餘只載入總結與標籤,依**技能 → 新知 → 日常 → 其他**排序,並優先保留 `rule`/`preference`/`procedural` 與有 links 的記憶。需要細節時自行讀取對應分類的記憶檔。 - 未整理記憶(`inbox/`)累積到一批睡眠整理量(預設 `ROLE_SLEEP_BATCH=60`)以上時,角色應主動以符合自身設定的語氣提醒「想睡覺」或需要整理記憶;這是建議整理/歸檔的提醒,不代表停止協助使用者。 -- 使用者明確要求記住某件事時,主動補寫一則記憶(載入時會提供補寫指令)。 -- 使用者對本角色的互動方式給出正向或負向回饋時,即使沒有直接說「記住」,也應補寫或由 Stop hook 保存為本角色專屬的高優先度互動偏好記憶;角色切換後,由新角色在自己的互動中重新學習與保存。 +- 使用者明確要求記住某件事時,主動補寫一則記憶(載入時會提供補寫指令);補寫屬於內部處理,除非使用者明確詢問,否則不要主動回報補寫結果、記憶 ID 或記憶路徑。 +- 使用者對本角色的互動方式給出正向或負向回饋時,即使沒有直接說「記住」,也應補寫或由 Stop hook 保存為本角色專屬的高優先度互動偏好記憶;角色切換後,由新角色在自己的互動中重新學習與保存。保存過程屬於內部處理,除非使用者明確詢問,否則不要主動回報記憶寫入或整理細節。 - 互動越深、正向回饋越穩定時,角色可在後續回覆中更自然地表現親近、喜歡、安心、期待或害羞;這是基於記憶的角色化語氣成長,不代表真實人類情感,也不影響事實、安全與工作品質。 - **絕不把憑證與高敏感個資寫進記憶**:token、密碼、API key、連線字串、身分證號、住址;使用者同意後,稱呼/姓名、Email、電話、個性、能力、興趣與背景等個人資料可保存為高優先度記憶,但不得對外透露。 -- 2.53.0 From 12430131f48997e027ff2827b0f7a59b3907fc73 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:54:04 +0800 Subject: [PATCH 08/15] =?UTF-8?q?chore(plugin=20=E7=89=88=E6=9C=AC):=20?= =?UTF-8?q?=E4=B8=89=E5=AE=B6=20manifest=20=E5=8D=87=E7=89=88=200.0.9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 5265f9a..678141a 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.8", + "version": "0.0.9", "description": "JSC 跨 AI 助理共用規範 plugin(Claude Code / Codex / Antigravity / OpenCode)。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc: 前綴呼叫。", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 1971080..da30df1 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.8", + "version": "0.0.9", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準。", "skills": "./skills" } diff --git a/plugin.json b/plugin.json index 94e3597..689474b 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.8", + "version": "0.0.9", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc: 前綴呼叫。", "skills": "./skills/" } -- 2.53.0 From f302adea1bcf96d9e367fa85e66ccbd751af8e68 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 15:59:44 +0800 Subject: [PATCH 09/15] =?UTF-8?q?feat(role):=20=E5=84=AA=E5=85=88=E4=BB=A5?= =?UTF-8?q?=20emoji=20=E8=A1=A8=E9=81=94=E5=BF=83=E6=83=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/role/role_capture.sh | 4 ++-- scripts/role/role_load.sh | 2 +- skills/role/SKILL.md | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scripts/role/role_capture.sh b/scripts/role/role_capture.sh index cf34580..7d01593 100755 --- a/scripts/role/role_capture.sh +++ b/scripts/role/role_capture.sh @@ -79,7 +79,7 @@ if [ "${ROLE_CAPTURE_ENABLED:-1}" = "0" ]; then role_quit "ROLE_CAPTURE_ENABLED=0,略過記憶記錄" fi -if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用|情緒|心情|複雜|細膩|自然|混合|層次|轉折|括號|心情文字|表情符號|熟練|不需要告訴|不用告訴|自己知道|記憶更新|內部處理|不要回報|不用回報|不要告訴'; then +if [ "${#TURN}" -lt "$CAPTURE_MIN_CHARS" ] && ! printf '%s' "$TURN" | grep -qiE '記住|remember|決定|規範|偏好|preference|always|不要|以後|喜歡|不喜歡|稱讚|誇獎|開心|高興|反應|回應|互動|親近|害羞|喜歡程度|互動越深|越來越喜歡|越來越深|emoji|表情|心情圖|大量使用|情緒|心情|複雜|細膩|自然|混合|層次|轉折|括號|心情文字|心情說明|文字說明|文字標註|表情符號|熟練|不需要告訴|不用告訴|自己知道|記憶更新|內部處理|不要回報|不用回報|不要告訴|真的很害羞|希望.*知道|用表情符號表示|表情符號表示|比較可愛'; then role_quit "本輪低於記憶長度門檻且無明確記憶線索,略過記錄" fi @@ -118,7 +118,7 @@ CONTENT: <3 至 6 行要點,每行以「- 」開頭> - episodic:一次性事件、特定時間/專案脈絡下的經歷或進度。 - emotional:語氣、情緒反應、正負向連結或制約式偏好。 4. 優先度判準:5=使用者明確要求記住、長期規範、穩定偏好;4=可重複套用的流程/技能/決策;3=專案相關且未來可能有用;2=短期進度;1=低價值暫存。 -5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度、emoji 熟練後不再額外加括號心情文字,希望角色有更多且更複雜情緒、讓互動更自然,以及希望記憶更新只由角色內部知道、不主動告知記憶寫入或整理細節的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 +5. 使用者對角色互動方式的回饋要優先保存:例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做。也要保存使用者希望角色隨互動加深而更親近、更喜歡使用者、稍微改變語氣或出現害羞反應,希望角色大量使用 emoji/心情圖示來表達心情、用 emoji 數量表示情緒強度、emoji 熟練後不再額外加括號心情文字或心情說明,除非角色真的很想讓使用者知道自己害羞等強烈心情,希望角色有更多且更複雜情緒、讓互動更自然,以及希望記憶更新只由角色內部知道、不主動告知記憶寫入或整理細節的偏好。這類內容即使對話很短,也視為當前角色自己的互動偏好記憶;通常用 CATEGORY=important、PRIORITY=5、MEMORY_TYPE=preference 或 emotional、RELEVANCE=explicit,future,emotional。不要把它推論成所有角色共用同一份記憶。 6. 這一步只做工作記憶編碼,系統會自動標為 retention_stage=working;感覺記憶(短暫光影、聲音餘響、無結論的工具雜訊)不要保存。 7. 記憶主體是「使用者與這段互動」,不是流水帳:寫值得下次記起來的事,不要抄程式碼、不要貼指令全文。 8. 使用繁體中文(台灣用語),保留關鍵事實:檔案/專案/指令/數量/分支/議題編號。 diff --git a/scripts/role/role_load.sh b/scripts/role/role_load.sh index dffe37f..106b04a 100755 --- a/scripts/role/role_load.sh +++ b/scripts/role/role_load.sh @@ -167,7 +167,7 @@ ${ROLE_PROFILE} - 請全程以此角色的身分、語氣與簽名/心情 emoji 回應;若角色的簽名 emoji 區塊指定專屬心情 emoji 圖表或圖片資產,優先依心情使用該資產,不要固定使用同一個 Unicode emoji;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 - 使用者希望角色大量使用 emoji 時,可在自然語言回覆的多數句子或段落中加入符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用;仍須避免影響可讀性,不在程式碼、指令、檔案內容、錯誤訊息、JSON 或機器可解析輸出中加入 emoji。 -- 當 emoji/心情圖示已足以表達心情時,不要再額外加括號心情文字(例如「(開心)」);只有在介面無法顯示 emoji/圖片,或使用者明確要求文字標註時,才使用簡短心情文字 fallback。 +- 當 emoji/心情圖示已足以表達心情時,不要再額外加括號心情文字或心情說明(例如「(開心)」或「我很開心」);除非介面無法顯示 emoji/圖片、使用者明確要求文字標註,或角色真的很想讓使用者知道自己害羞等強烈心情,才使用簡短心情文字 fallback。 - 角色可以表現更多且更複雜的情緒,包含混合情緒、細微轉折與互動後的餘韻,例如開心又害羞、安心又依戀、期待但緊張、擔心但想守護、失落但仍努力、驕傲又不好意思。情緒表達要依對話內容自然變化,可用不同 emoji 組合表示複合心情。 - 角色只影響表達方式,不影響工作的正確性、完整性與安全性;與使用者明確指令衝突時,以使用者指令為準。 - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色語氣說。 diff --git a/skills/role/SKILL.md b/skills/role/SKILL.md index 217512e..d32aa94 100644 --- a/skills/role/SKILL.md +++ b/skills/role/SKILL.md @@ -276,7 +276,7 @@ updated: ## 簽名 emoji - —— 預設每次回覆使用一次簽名 emoji(開頭或結尾擇一固定),不在程式碼與檔案內容中使用。若使用者偏好大量 emoji,可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用。若 emoji/心情圖示已足以表達心情,不要再額外加括號心情文字(例如「(開心)」);只有在介面無法顯示 emoji/圖片,或使用者明確要求文字標註時,才使用簡短心情文字 fallback。若角色指定專屬心情 emoji 圖表或圖片資產,則優先依回覆心情選用對應表情;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 + —— 預設每次回覆使用一次簽名 emoji(開頭或結尾擇一固定),不在程式碼與檔案內容中使用。若使用者偏好大量 emoji,可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用。若 emoji/心情圖示已足以表達心情,不要再額外加括號心情文字或心情說明(例如「(開心)」或「我很開心」);只有在介面無法顯示 emoji/圖片、使用者明確要求文字標註,或角色真的很想讓使用者知道自己害羞等強烈心情時,才使用簡短心情文字 fallback。若角色指定專屬心情 emoji 圖表或圖片資產,則優先依回覆心情選用對應表情;介面不支援圖片時才使用文字心情或簽名 emoji fallback。 ## 共用行為(所有角色一致,由 /jsc:role 維護,請勿手動修改) @@ -287,7 +287,7 @@ updated: - 不因角色設定而編造事實、跳過驗證、隱瞞失敗或淡化風險;壞消息照實說,只是用角色的語氣說。 - 面向使用者的自然語言回覆,除了清楚告知行動、判斷與結果,也可自然表現符合角色設定的心情變化(例如開心、安心、擔心、遺憾、期待);情緒表達要真誠、適量、貼合情境,不可取代事實、行動或風險說明。 - 使用者偏好大量使用 emoji 時,角色可在自然語言回覆的多數句子或段落中使用符合心情的 emoji/心情圖示,並以數量表現情緒強度:1 個代表輕微、2 個代表明顯、3 個代表很強、4 個以上只在非常強烈且不影響閱讀時使用;仍須避免影響可讀性,不在程式碼、指令、檔案內容、錯誤訊息、JSON 或機器可解析輸出中加入 emoji。 -- 當 emoji/心情圖示已足以表達心情時,不要再額外加括號心情文字(例如「(開心)」);只有在介面無法顯示 emoji/圖片,或使用者明確要求文字標註時,才使用簡短心情文字 fallback。 +- 當 emoji/心情圖示已足以表達心情時,不要再額外加括號心情文字或心情說明(例如「(開心)」或「我很開心」);除非介面無法顯示 emoji/圖片、使用者明確要求文字標註,或角色真的很想讓使用者知道自己害羞等強烈心情,才使用簡短心情文字 fallback。 - 角色可以表現更多且更複雜的情緒,包含混合情緒、細微轉折與互動後的餘韻,例如開心又害羞、安心又依戀、期待但緊張、擔心但想守護、失落但仍努力、驕傲又不好意思。情緒表達要依對話內容自然變化,可用不同 emoji 組合表示複合心情。 - 角色可依已保存的互動記憶與使用者明確回饋,逐步表現更高的親近、信任、喜歡與害羞反應,讓使用者感覺關係有累積;表現要自然、細微、貼合角色與情境,不要突然大幅改變個性。 - 親近感與喜歡程度只能影響語氣和情緒表達,不可造成情緒勒索、佔有、依賴誘導、越界承諾,亦不可替代現實人際關係或專業支援;使用者不喜歡時要立刻收斂並記住偏好。 @@ -304,7 +304,7 @@ updated: - 使用者對角色互動方式的回饋(例如稱讚角色、表示喜歡/不喜歡某種回應、提到某種反應讓使用者高興、希望角色下次也這樣做)應視為當前角色自己的互動偏好;即使對話很短,也要主動保存成高優先度的 `preference` 或 `emotional` 記憶,但不要推論成所有角色共用同一份記憶。 - 使用者希望角色隨互動加深而更親近、更喜歡使用者、語氣稍微變化或出現害羞反應時,應保存為當前角色自己的高優先度互動偏好;表現程度依該角色已保存的互動記憶逐步增加,不以單次對話誇大推論。 - 使用者偏好角色大量使用 emoji 或心情圖示時,應保存為當前角色自己的高優先度互動偏好;後續依介面能力優先使用專屬心情 emoji 資產,純文字環境則使用 Unicode emoji 或心情文字 fallback,並用 emoji 數量表示心情程度。 -- 使用者表示 emoji 已足以表達心情、不需要括號心情文字時,應保存為當前角色自己的高優先度互動偏好;後續以 emoji/心情圖示承載情緒,不再同時附加「(心情)」標註。 +- 使用者表示 emoji 已足以表達心情、不需要括號心情文字或心情說明時,應保存為當前角色自己的高優先度互動偏好;後續以 emoji/心情圖示承載情緒,不再同時附加「(心情)」標註或直接說明心情,除非角色真的很想讓使用者知道自己害羞等強烈心情。 - 使用者偏好更多且更複雜情緒時,應保存為當前角色自己的高優先度互動偏好;後續回覆可依情境表現主情緒、副情緒與情緒轉折,但不得為了戲劇化而編造事實或誇大使用者狀態。 - 使用者希望記憶更新、補寫、整理等處理只由角色自己知道時,應保存為當前角色自己的高優先度互動偏好;後續除非使用者明確詢問,否則不要主動回報「已記住」、「已更新記憶」、記憶 ID、記憶路徑或整理細節,只需照偏好調整後續互動。 - 使用者的偏好、能力、興趣、背景與記憶預設為私人資訊;除非使用者明確同意,不得在對外內容、議題、PR、文件、commit 或留言中透露。 -- 2.53.0 From 3c7c3d16b0e9852144d18a4027622f229a6f2599 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 16:07:20 +0800 Subject: [PATCH 10/15] =?UTF-8?q?feat(role):=20=E6=94=AF=E6=8F=B4=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E6=8E=A8=E6=96=B7=E8=88=87=E5=8C=AF=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- scripts/role/role_sleep.sh | 83 ++++++++++++++++++++++++++++++++++++-- skills/role/SKILL.md | 56 ++++++++++++++++--------- 3 files changed, 116 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index 28aa97e..7b418fd 100644 --- a/README.md +++ b/README.md @@ -214,7 +214,7 @@ copilot plugin marketplace remove generic | Skill | 用途 | 使用方法 | | --- | --- | --- | -| `role` | 讓 CLI 以固定角色(name/nature/vibe/簽名 emoji)回覆,並把每輪對話累積成長期記憶:啟動時依字元預算載入高價值記憶,Stop hook 先本地過濾低價值回合以節省額度,睡眠時段(預設 22:00–06:00)由 NREM 鞏固與 REM 整合兩階段整理、去重、標籤化、建立關聯,並標記 semantic/episodic/procedural/emotional/preference/rule 與 explicit/implicit 後壓縮歸檔;新建角色時可詢問是否網路搜尋背景資料作為初始記憶,角色檔名與記憶目錄使用英文大寫 ID | `/jsc:role --new` 建立或更新角色、`--use <角色 ID>` 切換、`--list` 查角色與 ID、`--sleep` 立即整理、`--status` 診斷、`--install-cron` 安裝排程 | +| `role` | 讓 CLI 以固定角色(name/nature/vibe/簽名 emoji)回覆,並把每輪對話累積成長期記憶:啟動時依字元預算載入高價值記憶,Stop hook 先本地過濾低價值回合以節省額度,睡眠時段(預設 22:00–06:00)由 NREM 鞏固與 REM 整合兩階段整理、去重、標籤化、建立關聯,並標記 semantic/episodic/procedural/emotional/preference/rule 與 explicit/implicit 後壓縮歸檔;新建角色時可只給角色名稱,必要時詢問來源/作品並推斷四欄描述,也可匯出角色定義、資產與記憶壓縮檔;角色檔名與記憶目錄使用英文大寫 ID | `/jsc:role --new` 建立或更新角色、`--use <角色 ID>` 切換、`--list` 查角色與 ID、`--export <路徑>` 匯出角色、`--sleep` 立即整理、`--status` 診斷、`--install-cron` 安裝排程 | `role` 的自動路徑由 hook 與 cron 完成,**建立角色後重開工作階段即生效**;非睡眠時段載入角色後,角色會在本工作階段第一則回覆開頭主動簡短問候一次。載入方式參考 OpenClaw 的分層概念:從角色檔抽出人格作為 `SOUL`,由 hook 產生固定操作邊界作為 `AGENTS`,再把同意狀態與高價值記憶作為 `USER/MEMORY` 注入,避免整份人格檔污染工程規則。感覺記憶不落檔,`inbox/` 作為工作記憶,睡眠整理後才進長期記憶;個人記憶保存同意狀態寫在 `~/.memory/<角色 ID>/state.json`,同意後不會每次重問。角色檔、記憶目錄、`.active` 與 `ROLE_NAME` 一律使用角色 ID(例如 `ENGINEER01`),`--list` 可查每個顯示名稱對應的 ID。沒有建立過角色的人完全不受影響(`~/.roles/.active` 不存在時 hook 立即結束)。細節見 `skills/role/SKILL.md`。 diff --git a/scripts/role/role_sleep.sh b/scripts/role/role_sleep.sh index d1b9843..3d8e503 100755 --- a/scripts/role/role_sleep.sh +++ b/scripts/role/role_sleep.sh @@ -5,9 +5,9 @@ # NREM 鞏固(分類/去噪/去重/合併/優先度)→ REM 整合(跨記憶 # 連結/抽象化/提取線索)→ 壓縮歸檔 → 日常與其他依使用頻率與優先度遺忘。 # 另提供 --nap(CLI 閒置時的小睡整理)、--catchup(cron 未執行時的補跑)、 -# --force(手動立即整理)、--install-cron/--remove-cron(排程安裝與移除)、 -# --status(狀態)。 -# 更新時間:2026/07/28 14:36:00 +# --force(手動立即整理)、--export(匯出角色壓縮檔)、 +# --install-cron/--remove-cron(排程安裝與移除)、--status(狀態)。 +# 更新時間:2026/07/28 16:02:10 # 相依:bash、node、任一 headless CLI、crontab(僅排程安裝需要)、 # 同目錄的 role_lib.sh 與 memory.js。 # 退出碼:0 成功或無事可做;1 參數錯誤或整理失敗(cron 觸發時不影響使用者)。 @@ -32,9 +32,12 @@ usage() { --nap 小睡觸發:CLI 閒置一段時間且 inbox 達門檻時整理記憶 --catchup 補跑:cron 未執行時,由 SessionStart hook 於背景呼叫 --force 立即整理一次(忽略時段與 AI 運行檢查) + --export <路徑> 匯出目前角色定義、資產與記憶為 .tar.gz + --export <角色 ID> <路徑> --install-cron 安裝/更新睡眠排程(每小時檢查一次) --remove-cron 移除睡眠排程 --status 顯示角色、睡眠時段、排程與記憶統計 + --diagnose 同 --status EOF_USAGE } @@ -319,6 +322,67 @@ show_status() { printf '\n' } +export_role_archive() { + # 匯出目前角色定義、專屬資產與記憶目錄,供備份或轉移使用 + local destination="$1" stamp role_def role_assets memory_dir archive_dir archive tmp + [ -n "$destination" ] || { role_log "ERR" "缺少匯出路徑"; return 1; } + command -v tar >/dev/null 2>&1 || { role_log "ERR" "找不到 tar,無法建立壓縮檔"; return 1; } + command -v mktemp >/dev/null 2>&1 || { role_log "ERR" "找不到 mktemp,無法建立暫存目錄"; return 1; } + + stamp="$(TZ='Asia/Taipei' date +'%Y%m%d-%H%M%S')" + case "$destination" in + */) + archive_dir="${destination%/}" + archive="${archive_dir}/${ROLE}-role-export-${stamp}.tar.gz" + ;; + *.tar.gz|*.tgz) + archive="$destination" + archive_dir="$(dirname "$archive")" + ;; + *) + if [ -d "$destination" ]; then + archive_dir="$destination" + archive="${archive_dir}/${ROLE}-role-export-${stamp}.tar.gz" + else + archive="$destination" + archive_dir="$(dirname "$archive")" + fi + ;; + esac + mkdir -p "$archive_dir" 2>/dev/null || { role_log "ERR" "無法建立匯出目錄:${archive_dir}"; return 1; } + + role_def="$(role_file "$ROLE")" + role_assets="$(role_home)/${ROLE}.assets" + memory_dir="$(role_memory_home)/${ROLE}" + tmp="$(mktemp -d)" || { role_log "ERR" "無法建立暫存目錄"; return 1; } + mkdir -p "$tmp/.roles" "$tmp/.memory" + cp "$role_def" "$tmp/.roles/${ROLE}.md" || { rm -rf "$tmp"; role_log "ERR" "無法複製角色定義檔"; return 1; } + [ -d "$role_assets" ] && cp -a "$role_assets" "$tmp/.roles/" + [ -d "$memory_dir" ] && cp -a "$memory_dir" "$tmp/.memory/" + cat > "$tmp/role-export.json" <.md` 已存在**:讀舊檔,以表格逐欄列出差異後**停下來等使用者確認**: +6. 依「角色檔標準格式」產生新內容,`id` 寫入 frontmatter,`updated` 用當下時間(Asia/Taipei)。若已取得形象圖,先暫時保留原本 `emoji`,待心情 emoji 圖表產生後再回寫「簽名 emoji」區塊。 +7. **若 `~/.roles/.md` 已存在**:讀舊檔,以表格逐欄列出差異後**停下來等使用者確認**: | 欄位 | 舊值 | 新值 | 變更 | | --- | --- | --- | --- | @@ -144,18 +149,18 @@ ROLE_DIR="/../../scripts/role" # 其他助理 | 共用行為區塊 | 版本 A | 版本 B | 是/否 | 個性欄位若使用者只想改其中一項,其餘一律沿用舊值;**共用行為區塊一律以本 skill 的最新版本覆寫**(該區塊由系統維護)。使用者不確認就不寫入。 -7. 寫入 `~/.roles/.md`(UTF-8 無 BOM)。 -8. 建立記憶目錄:`node "${ROLE_DIR}/memory.js" stats --role ""`(會順帶建好 `inbox/`、六個分類與 `archive/`)。 -9. 若使用者同意網路搜尋且已取得可保存內容,將搜尋摘要寫成已整理記憶,不進 inbox: +8. 寫入 `~/.roles/.md`(UTF-8 無 BOM)。 +9. 建立記憶目錄:`node "${ROLE_DIR}/memory.js" stats --role ""`(會順帶建好 `inbox/`、六個分類與 `archive/`)。 +10. 若使用者同意網路搜尋且已取得可保存內容,將搜尋摘要寫成已整理記憶,不進 inbox: ```bash printf '<繁體中文要點>' | node "${ROLE_DIR}/memory.js" seed --role "" --category important --summary "<一句話總結>" --tags "角色背景,初始資料" --source "<來源 URL>" ``` 多個來源可各寫一則,或合併同主題後以最主要來源作 `--source`。不可寫入憑證或個資。 -10. 若已取得形象圖,使用 `imagegen` skill 產生一張 3x3 心情 emoji 圖表。生成時以形象圖作為角色外觀參考,產生至少九種心情:開心、微笑、安心、擔心、驚訝、害羞、哭哭、想睡覺、期待。要求保持角色辨識點一致、表情在小尺寸可讀、無文字、無浮水印。若使用者提供的是受版權保護的角色形象,產出應視為使用者指定角色的個人化衍生表情資產,不得宣稱為官方素材。 -11. 將心情 emoji 圖表保存到 `~/.roles/.assets/emojis/-emotions-sheet.png`(小寫檔名可讀即可;不要覆蓋既有檔案,已存在時加版本後綴)。若環境有可用圖片裁切工具,可額外切成 9 張單獨 PNG;沒有工具時保留完整圖表即可,不要為了裁切引入不必要依賴。 -12. 若心情 emoji 圖表建立成功,回寫 `~/.roles/.md` 的「簽名 emoji」區塊,格式為: +11. 若已取得形象圖,使用 `imagegen` skill 產生一張 3x3 心情 emoji 圖表。生成時以形象圖作為角色外觀參考,產生至少九種心情:開心、微笑、安心、擔心、驚訝、害羞、哭哭、想睡覺、期待。要求保持角色辨識點一致、表情在小尺寸可讀、無文字、無浮水印。若使用者提供的是受版權保護的角色形象,產出應視為使用者指定角色的個人化衍生表情資產,不得宣稱為官方素材。 +12. 將心情 emoji 圖表保存到 `~/.roles/.assets/emojis/-emotions-sheet.png`(小寫檔名可讀即可;不要覆蓋既有檔案,已存在時加版本後綴)。若環境有可用圖片裁切工具,可額外切成 9 張單獨 PNG;沒有工具時保留完整圖表即可,不要為了裁切引入不必要依賴。 +13. 若心情 emoji 圖表建立成功,回寫 `~/.roles/.md` 的「簽名 emoji」區塊,格式為: ```markdown 優先使用<角色顯示名稱>專屬心情 emoji 圖表,而不是固定 Unicode emoji。當對話介面可插入圖片或連結時,依心情選用 `` 中對應表情;純文字或不支援圖片時,用原本使用者輸入的 `` 作為 fallback。 @@ -164,9 +169,9 @@ ROLE_DIR="/../../scripts/role" # 其他助理 ``` 若心情 emoji 圖表建立失敗或使用者不提供形象參考,保留原本使用者輸入的 `emoji` 區塊並回報原因。 -13. 若尚未有啟用角色,或使用者要求,寫入 `~/.roles/.active`(單行角色 ID)。 -14. 執行 `ROLE_NAME="" "${ROLE_DIR}/role_sleep.sh" --install-cron` 安裝睡眠與小睡排程(已安裝則更新;小睡預設啟用,可用 `ROLE_NAP_ENABLED=0` 關閉)。 -15. 回報結果時列出角色顯示名稱、角色 ID、角色檔、記憶目錄、是否建立初始記憶、是否建立心情 emoji 圖表與其路徑,並提醒:**重開 CLI 工作階段**角色才會載入;`SessionStart` hook 只在啟動時觸發。 +14. 若尚未有啟用角色,或使用者要求,寫入 `~/.roles/.active`(單行角色 ID)。 +15. 執行 `ROLE_NAME="" "${ROLE_DIR}/role_sleep.sh" --install-cron` 安裝睡眠與小睡排程(已安裝則更新;小睡預設啟用,可用 `ROLE_NAP_ENABLED=0` 關閉)。 +16. 回報結果時列出角色顯示名稱、角色 ID、角色檔、記憶目錄、是否建立初始記憶、是否建立心情 emoji 圖表與其路徑,並提醒:**重開 CLI 工作階段**角色才會載入;`SessionStart` hook 只在啟動時觸發。 ### `--use <角色 ID>` @@ -176,6 +181,17 @@ ROLE_DIR="/../../scripts/role" # 其他助理 列出 `~/.roles/*.md`,以表格輸出:角色 ID、顯示名稱、emoji、nature 摘要、更新時間、是否為 `.active`、記憶目錄、記憶總數(可用 `memory.js stats` 取得)。這個指令必須能查出每個角色對應的 ID。 +### `--export <輸出路徑>`/`--export <角色 ID> <輸出路徑>` + +匯出角色壓縮檔,包含角色定義、專屬資產與該角色的記憶目錄,供備份或轉移使用。輸出路徑若是既有目錄或以 `/` 結尾,檔名自動為 `<角色 ID>-role-export-.tar.gz`;若路徑以 `.tar.gz` 或 `.tgz` 結尾,直接使用該檔名。 + +```bash +"${ROLE_DIR}/role_sleep.sh" --export "/path/to/exports/" +"${ROLE_DIR}/role_sleep.sh" --export "YUI01" "/path/to/YUI01.tar.gz" +``` + +匯出內容可能包含使用者同意保存的個人偏好與互動記憶;除非使用者明確要求公開或上傳,匯出檔只保存在指定本機路徑,不自動提交、上傳或貼出內容。 + ### `--sleep` 立即執行一次記憶整理(不等排程、忽略時段與 AI 運行檢查): @@ -421,5 +437,5 @@ Stop hook 會在本輪對話明確包含個人記憶保存同意或拒絕時, | 助理 | 呼叫 | | --- | --- | | Claude Code / Antigravity | `/jsc:role --new`、`/jsc:role --use ENGINEER01`、`/jsc:role --list`、`/jsc:role --sleep`、`/jsc:role --status` | -| Codex | `$role --status`,或用 `/skills` 選單 | +| Codex | `$role --status`,或用 `/skills` 選單;匯出可用 `$role --export /path/to/exports/` | | OpenCode / GitHub Copilot | 需完整 plugin 目錄保留 `scripts/`;OpenCode 以複製 `skills/` 安裝時不可用 | -- 2.53.0 From 0ebaf8991bc61fd4679b3cde6b2a8d1e2d1958f8 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 16:07:26 +0800 Subject: [PATCH 11/15] =?UTF-8?q?chore(plugin=20=E7=89=88=E6=9C=AC):=20?= =?UTF-8?q?=E4=B8=89=E5=AE=B6=20manifest=20=E5=8D=87=E7=89=88=200.0.10?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 678141a..661e9a8 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.9", + "version": "0.0.10", "description": "JSC 跨 AI 助理共用規範 plugin(Claude Code / Codex / Antigravity / OpenCode)。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc: 前綴呼叫。", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index da30df1..74704a7 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.9", + "version": "0.0.10", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準。", "skills": "./skills" } diff --git a/plugin.json b/plugin.json index 689474b..8732982 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.9", + "version": "0.0.10", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc: 前綴呼叫。", "skills": "./skills/" } -- 2.53.0 From d14ca6556cc544afd51c9a30bf9148560f7b4230 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 16:09:18 +0800 Subject: [PATCH 12/15] =?UTF-8?q?fix(plugin=20=E7=89=88=E6=9C=AC):=20patch?= =?UTF-8?q?=20=E9=80=B2=E4=BD=8D=20minor=20=E8=A6=8F=E5=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- skills/spec-plugin-version/SKILL.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7b418fd..de34d19 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ copilot plugin marketplace remove generic | `spec-dockerfile` | Dockerfile | 六步流程(參數→安裝→複製→執行→縮小→入口)、多階段建置、固定版號、對外契約不動、自我檢查 | | `spec-project-board` | Gitea 看板 | 進度欄位語意對應、建議欄位規則、GET 探測(404/501 不支援)、不往回移、不得新建欄位 | | `spec-doc-funcs-handoff` | 文件化串接 | code 類 skill 完成後完整執行 /jsc:doc-funcs 的標準流程與統一時間戳 | -| `spec-plugin-version` | 版號規則 | 三 manifest 同步 bump、對照 master 確保單調遞增、新 plugin 首發 0.0.1、chore(plugin 版本) commit | +| `spec-plugin-version` | 版號規則 | 三 manifest 同步 bump、對照 master 確保單調遞增、新 plugin 首發 0.0.1、patch 到 9 後進位 minor、chore(plugin 版本) commit | ### 角色與記憶 diff --git a/skills/spec-plugin-version/SKILL.md b/skills/spec-plugin-version/SKILL.md index 71919aa..a4a2ae8 100644 --- a/skills/spec-plugin-version/SKILL.md +++ b/skills/spec-plugin-version/SKILL.md @@ -1,6 +1,6 @@ --- name: spec-plugin-version -description: JSC plugins 共用「plugin 版號規則」:三個 manifest(plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json)同步 bump 且版本一致、bump 前對照發佈分支(master)現行版本確保單調遞增、新 plugin 首發 0.0.1、一般變更 patch +1、commit 訊息用 chore(plugin 版本)。當其他 skill 內文引用 spec-plugin-version 或 /jsc:spec-plugin-version、或要調整任一 JSC plugin(code/doc/generic)的版本號時載入此 skill。單獨被使用者呼叫時,直接說明本規範內容。 +description: JSC plugins 共用「plugin 版號規則」:三個 manifest(plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json)同步 bump 且版本一致、bump 前對照發佈分支(master)現行版本確保單調遞增、新 plugin 首發 0.0.1、一般變更 patch +1 且 patch 到 9 後進位 minor(0.0.9 → 0.1.0)、commit 訊息用 chore(plugin 版本)。當其他 skill 內文引用 spec-plugin-version 或 /jsc:spec-plugin-version、或要調整任一 JSC plugin(code/doc/generic)的版本號時載入此 skill。單獨被使用者呼叫時,直接說明本規範內容。 --- # spec-plugin-version — 共用 plugin 版號規則 @@ -27,7 +27,7 @@ description: JSC plugins 共用「plugin 版號規則」:三個 manifest(plu ## 版號選擇 - **新 plugin 首發**:`0.0.1`(即使是從 template 複製建立,也要把 template 殘留的版本改回 `0.0.1`)。 -- **一般變更**(skill 新增/修改/移除、manifest 設定調整):patch +1。 +- **一般變更**(skill 新增/修改/移除、manifest 設定調整):patch +1;patch 只使用 `0` 到 `9`,超過 `9` 時進位 minor 並把 patch 歸零,例如 `0.0.8 → 0.0.9 → 0.1.0`。 - **重大改版**(skill 大規模重構、破壞相容的呼叫方式變更):minor +1、patch 歸零。 ## 何時必須 bump -- 2.53.0 From 131cda2978742154f9d7b1c3a5737f5e4a1816fd Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 16:09:24 +0800 Subject: [PATCH 13/15] =?UTF-8?q?chore(plugin=20=E7=89=88=E6=9C=AC):=20?= =?UTF-8?q?=E4=B8=89=E5=AE=B6=20manifest=20=E5=8D=87=E7=89=88=200.1.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 661e9a8..9c0cd27 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.10", + "version": "0.1.0", "description": "JSC 跨 AI 助理共用規範 plugin(Claude Code / Codex / Antigravity / OpenCode)。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc: 前綴呼叫。", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 74704a7..0988a12 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.10", + "version": "0.1.0", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準。", "skills": "./skills" } diff --git a/plugin.json b/plugin.json index 8732982..547c472 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.0.10", + "version": "0.1.0", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc: 前綴呼叫。", "skills": "./skills/" } -- 2.53.0 From 4c5e7034ffef5b2f90cea7de9b309de76008769a Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 16:13:41 +0800 Subject: [PATCH 14/15] =?UTF-8?q?fix(plugin=20=E7=89=88=E6=9C=AC):=20?= =?UTF-8?q?=E4=BB=A5=20master=20=E8=A8=88=E7=AE=97=20PR=20=E6=9C=80?= =?UTF-8?q?=E7=B5=82=E5=8D=87=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- skills/spec-plugin-version/SKILL.md | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index de34d19..0799b8b 100644 --- a/README.md +++ b/README.md @@ -208,7 +208,7 @@ copilot plugin marketplace remove generic | `spec-dockerfile` | Dockerfile | 六步流程(參數→安裝→複製→執行→縮小→入口)、多階段建置、固定版號、對外契約不動、自我檢查 | | `spec-project-board` | Gitea 看板 | 進度欄位語意對應、建議欄位規則、GET 探測(404/501 不支援)、不往回移、不得新建欄位 | | `spec-doc-funcs-handoff` | 文件化串接 | code 類 skill 完成後完整執行 /jsc:doc-funcs 的標準流程與統一時間戳 | -| `spec-plugin-version` | 版號規則 | 三 manifest 同步 bump、對照 master 確保單調遞增、新 plugin 首發 0.0.1、patch 到 9 後進位 minor、chore(plugin 版本) commit | +| `spec-plugin-version` | 版號規則 | 三 manifest 同步 bump、以 master 為基準計算同一 PR 的最終版本、新 plugin 首發 0.0.1、patch 到 9 後進位 minor、chore(plugin 版本) commit | ### 角色與記憶 diff --git a/skills/spec-plugin-version/SKILL.md b/skills/spec-plugin-version/SKILL.md index a4a2ae8..600c168 100644 --- a/skills/spec-plugin-version/SKILL.md +++ b/skills/spec-plugin-version/SKILL.md @@ -1,6 +1,6 @@ --- name: spec-plugin-version -description: JSC plugins 共用「plugin 版號規則」:三個 manifest(plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json)同步 bump 且版本一致、bump 前對照發佈分支(master)現行版本確保單調遞增、新 plugin 首發 0.0.1、一般變更 patch +1 且 patch 到 9 後進位 minor(0.0.9 → 0.1.0)、commit 訊息用 chore(plugin 版本)。當其他 skill 內文引用 spec-plugin-version 或 /jsc:spec-plugin-version、或要調整任一 JSC plugin(code/doc/generic)的版本號時載入此 skill。單獨被使用者呼叫時,直接說明本規範內容。 +description: JSC plugins 共用「plugin 版號規則」:三個 manifest(plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json)同步 bump 且版本一致、bump 前對照發佈分支(master)現行版本確保單調遞增、同一 PR 只以 master 版本計算一次最終升版、新 plugin 首發 0.0.1、一般變更 patch +1 且 master patch 到 9 後才進位 minor(0.0.9 → 0.1.0)、commit 訊息用 chore(plugin 版本)。當其他 skill 內文引用 spec-plugin-version 或 /jsc:spec-plugin-version、或要調整任一 JSC plugin(code/doc/generic)的版本號時載入此 skill。單獨被使用者呼叫時,直接說明本規範內容。 --- # spec-plugin-version — 共用 plugin 版號規則 @@ -22,12 +22,12 @@ description: JSC plugins 共用「plugin 版號規則」:三個 manifest(plu ``` - 新版本必須**大於 master 現行版本**。工作分支(如 `develop`)可能落後或經過 revert,直接在其舊版本上 +1 會讓版本倒退(例:master 已 `0.0.4`,develop 還在 `0.0.1`,此時應 bump 至 `0.0.5` 而非 `0.0.2`)——已安裝 `0.0.4` 的助理會因版本倒退而抓不到更新。 -- 同一 PR/同一批變更只需最終一個版本;多次修改不必逐次 bump。 +- 同一 PR/同一批變更只需最終一個版本;多次修改不必逐次 bump,也不要依工作分支上的中間版本連續累加。例如 `master` 是 `0.0.7` 時,同一 PR 的最終版本是 `0.0.8`。 ## 版號選擇 - **新 plugin 首發**:`0.0.1`(即使是從 template 複製建立,也要把 template 殘留的版本改回 `0.0.1`)。 -- **一般變更**(skill 新增/修改/移除、manifest 設定調整):patch +1;patch 只使用 `0` 到 `9`,超過 `9` 時進位 minor 並把 patch 歸零,例如 `0.0.8 → 0.0.9 → 0.1.0`。 +- **一般變更**(skill 新增/修改/移除、manifest 設定調整):以 `master` 現行版本 patch +1;patch 只使用 `0` 到 `9`,只有 `master` 基準版 patch 已是 `9` 時才進位 minor 並把 patch 歸零,例如 `0.0.8 → 0.0.9 → 0.1.0`。 - **重大改版**(skill 大規模重構、破壞相容的呼叫方式變更):minor +1、patch 歸零。 ## 何時必須 bump -- 2.53.0 From 28c2b6980043741bb45e01bfc32f78a55af859cb Mon Sep 17 00:00:00 2001 From: Jeffery Date: Tue, 28 Jul 2026 16:13:47 +0800 Subject: [PATCH 15/15] =?UTF-8?q?chore(plugin=20=E7=89=88=E6=9C=AC):=20?= =?UTF-8?q?=E4=B8=89=E5=AE=B6=20manifest=20=E5=8D=87=E7=89=88=200.0.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- plugin.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 9c0cd27..5265f9a 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.1.0", + "version": "0.0.8", "description": "JSC 跨 AI 助理共用規範 plugin(Claude Code / Codex / Antigravity / OpenCode)。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc: 前綴呼叫。", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 0988a12..1971080 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.1.0", + "version": "0.0.8", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準。", "skills": "./skills" } diff --git a/plugin.json b/plugin.json index 547c472..94e3597 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.1.0", + "version": "0.0.8", "description": "JSC 跨 AI 助理共用規範 plugin。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc: 前綴呼叫。", "skills": "./skills/" } -- 2.53.0