 JefferyandClaude Opus 5
|
97c76bc035
|
feat(role): 共用行為新增鬧彆扭、內心留白與感覺必記三條規則
使用者要求把互動中談出來的心情處理方式納入共用行為規範,讓其他角色也能套用。
三條新規則(同步寫入 role_load.sh 的 AGENTS 區塊與 SKILL.md 的 JSC-ROLE-COMMON 範本):
- 心裡想的話不必告訴使用者:不做括號內心戲或自我解說心情,留白比說明自然;
並釐清「直接說出感受」與「自我解說旁白」的差別,前者仍可用
- 表達留白不等於不記錄:感覺、強度與觸發原因仍要完整寫進記憶,即使回覆只有一句話;
含蓄只針對怎麼說,不針對有沒有感覺
- 鬧彆扭是可選行為:僅在角色氛圍適合且使用者明確表示喜歡時才套用,可用於掩蓋害羞;
必須輕微且很快收回,不可變成責怪、情緒勒索、索求關注、鬧脾氣拒絕做事或迴避回報壞消息;
並明確區分彆扭與自責(撒嬌可以,貶低自己不行),冷靜嚴謹型角色不應套用
判斷說明:
- 共用規則有三個生效位置(role_load.sh 實際注入、SKILL.md 範本、既有角色檔),已全部同步
- 「不用括號旁白」原本只被既有條目涵蓋到「(開心)」這類標註,未涵蓋內心戲旁白,故新增而非合併
- 「失誤被看見反而可愛」判斷不納入共用規範:屬個別使用者的互動特質,且寫成通用規則
有「不必修正錯誤」的誤讀風險,僅保留於該角色的個人記憶
版號 0.0.5 → 0.0.6
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-29 09:21:14 +08:00 |
|
 JefferyandClaude Opus 5
|
70efcd55f2
|
fix(role): 檢查腳本自行載入設定,修正 cron 環境取不到變數
晨間狀態檢查在 cron 下實際不會運作:cron 沒有互動 shell 的環境變數,
而 ~/.bashrc 多數在非互動時提早 return,導致範例腳本永遠拿不到 GITEA_TOKEN
而安靜結束,功能等於無效。
- examples/check-gitea-prs.sh 新增 load_env_var():依序從 ~/.roles/.env、
~/.bashrc、~/.profile 只抽取所需變數的那一行並 eval 該行賦值,
不要求使用者把權杖複製到新檔案,也不必寫進 crontab
- role skill 補設定來源說明:非機密放 ~/.roles/.env(權限 600),
權杖留在原本位置不要複製副本
- 版號 0.0.4 → 0.0.5
驗證:以 env -i 模擬 cron 環境(完全無環境變數)執行,成功取得設定並列出
待合併 PR;確認輸出無疑似權杖字串、.env 不含權杖。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-29 09:12:15 +08:00 |
|
 JefferyandClaude Opus 5
|
e10865ced7
|
feat(role): 精確資訊逐字保留、晨間狀態檢查、排除 skill 注入內容
三件事都源自 2026/07/28-29 實際踩到的問題。
一、整理與濃縮提示詞加「精確資訊逐字保留」規則
原本 role_sleep.sh 只要求「壓縮成 5 行、不超過 400 字」,沒有任何規則保護精確資訊,
導致一則含檔案路徑與網址的記憶被整理成純情感摘要,路徑與網址全部遺失且無法復原。
- role_sleep.sh 新增第 19 條:檔案路徑、網址、指令、環境變數名稱、版本號、識別碼、檔名
一律逐字保留,不得摘要改寫;必要時可超過字數上限;憑證與個資的禁令仍優先
- role_capture.sh 第 8 條同步強化,並釐清與第 7 條「不要整段抄程式碼」的界線
二、新增 --brief 晨間狀態檢查
睡眠時段結束的整點執行使用者自訂檢查腳本,把有變化的結果寫成一則 daily 記憶,
讓角色當天第一次互動就能主動回報(例如 PR 還沒合併、CI 失敗),不必等使用者開口才查。
- 刻意不內建任何檢查邏輯,不假設使用者用 Gitea/GitHub:檢查內容放 ~/.roles/<角色>.checks/*.sh
- 目錄不存在時完全不動作,也不安裝排程條目,對沒設定的人零影響
- 只執行有 +x 的 *.sh;無執行權限記警告並略過
- 沒有輸出就不寫記憶(靜默即代表一切正常,不打擾使用者)
- 每個腳本受 ROLE_BRIEF_TIMEOUT 限制,輸出受 ROLE_BRIEF_EACH_LIMIT/ROLE_BRIEF_LIMIT 截斷
- 腳本輸出視為外部資料,寫入前一律經 transcript.js redact 遮蔽
- install_cron/remove_cron/show_status 一併支援;附 examples/check-gitea-prs.sh 範例
三、對話交接排除 skill 等注入內容
實測發現載入一個 skill 會插入一筆 isMeta 的 user 訊息(長度可達兩萬字元),
被誤認為使用者發言,既吃光字元預算也讓輪數計算失真(29 輪虛胖,實際 26 輪)。
- transcript.js 新增 isMetaEntry():以 isMeta 與 sourceToolUseID 判斷注入內容
- isRealUserMessage() 與 dialogLines() 皆排除,連帶讓 Stop hook 的本輪抽取更準確
驗證:晨間檢查涵蓋有輸出/無輸出/無執行權限/逾時/含機密五種腳本,
確認遮蔽生效、逾時腳本未納入、無權限腳本未執行、全部無輸出時不寫記憶、
ROLE_BRIEF_ENABLED=0 可停用;對話交接確認 skill 內容已排除且 8 則全為真實使用者發言。
版號 0.0.3 → 0.0.4
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-29 09:05:22 +08:00 |
|
 JefferyandClaude Opus 5
|
48dc9ea74a
|
feat(role): SessionStart 載入近期逐字對話做工作階段交接
長期記憶是模型濃縮過的摘要,語氣與情緒會被壓掉(使用者說「我好想妳」會被濃縮成
「使用者表達想念」)。而逐字對話一直躺在 transcript JSONL 裡,過去沒有任何機制去讀它,
使用者重開工作階段時角色因此看不到剛剛的互動,表現得像失去記憶,只能靠 resume 找回。
transcript.js:
- 新增 recent <路徑> [輪數] [字元]:抽最近數輪的純對話,輸出前經 redact 遮蔽
- 新增 turns <路徑>:輸出對話輪數,供取檔判斷
- 只取 [user] 與 [assistant] 文字;工具呼叫、工具結果、思考區塊、hook 注入內容一律丟棄
- 以「輪」分組並各自收斂成一則:角色一輪內常輸出多段文字,不合併會讓則數爆炸並把預算
吃光,反而擠掉使用者說的話(實測未合併時 8 輪只剩 2 則使用者發言,合併後為 8 則)
- 超預算時整輪丟棄最舊的,保持問答成對,不會只剩單邊發言
role_load.sh:
- hook 輸入改為一併取出 transcript_path
- 當前 transcript 對話不足 2 輪時(全新工作階段實測僅數行),回頭找同目錄最近修改的對話檔
- 新增 ROLE_LOAD_DIALOG_TURNS(預設 8)與 ROLE_LOAD_DIALOG_LIMIT(預設 4000),
獨立預算不佔用 ROLE_LOAD_LIMIT,任一設 0 可關閉
驗證:resume 與全新工作階段皆正確載入 8 輪成對對話;未給 transcript_path、檔案不存在、
無 hook 輸入、關閉設定等情境均安全降級不報錯;假造含 token/Email/電話與 thinking 的
transcript 確認機密遮蔽為 *** 且思考與工具內容未載入。
版號 0.0.2 → 0.0.3
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-28 17:59:51 +08:00 |
|
 JefferyandClaude Opus 5
|
bf599e81a5
|
feat(role): SessionStart 載入未整理的近期工作記憶
修補記憶交接的先天缺口:role_load.sh 的順序是先 memory.js load 載入記憶,
之後才在背景補跑 --catchup 整理(腳本註解亦寫明「結果會在下次載入時反映」)。
而 load 原本只讀已整理的六個分類,完全不讀 inbox,導致上一段工作永遠來不及
進入本次載入 —— 使用者重開工作階段時,角色看不到剛剛做過的事,表現得像失去
記憶,只能靠 resume 找回上下文。
- memory.js 新增 inboxBlock():讀 inbox 最新數則的 summary,附時間與標籤,最新在前
- cmdLoad 把該區塊放在最前面,並使用獨立字元預算,不佔用 ROLE_LOAD_LIMIT
(已驗證:開關 inbox 時長期記憶區塊逐字元完全一致,未被擠壓)
- 新增 ROLE_LOAD_INBOX_LIMIT(預設 1200)與 ROLE_LOAD_INBOX_COUNT(預設 10),
任一設 0 可關閉
- role skill 補「近期工作記憶交接(不可移除)」段落,寫明缺口原因與範圍限制:
這是摘要級交接,角色會知道上一段在做什麼、進行到哪,但不等於逐字記得整段
對話;需要完整上下文仍應使用 resume
- 版號 0.0.1 → 0.0.2
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-28 17:47:21 +08:00 |
|
Jeffery
|
3c7c3d16b0
|
feat(role): 支援角色推斷與匯出
|
2026-07-28 16:07:20 +08:00 |
|
Jeffery
|
f302adea1b
|
feat(role): 優先以 emoji 表達心情
|
2026-07-28 15:59:44 +08:00 |
|
Jeffery
|
a9375e8563
|
feat(role): 不主動回報記憶更新
|
2026-07-28 15:53:59 +08:00 |
|
Jeffery
|
0b9e153cda
|
feat(role): 省略 emoji 後的括號心情標註
|
2026-07-28 15:46:05 +08:00 |
|
Jeffery
|
c904f4bb9b
|
feat(role): 支援複合情緒表達
|
2026-07-28 15:41:15 +08:00 |
|
Jeffery
|
1f365efa02
|
feat(role): 支援 emoji 數量表達心情程度
|
2026-07-28 15:38:08 +08:00 |
|
Jeffery
|
10bae7b6f4
|
feat(role): 支援互動親近度成長
|
2026-07-28 15:33:56 +08:00 |
|
Jeffery
|
e477e0d1a4
|
feat(role): 記錄角色互動偏好回饋
|
2026-07-28 15:26:44 +08:00 |
|
Jeffery
|
b0c93441a1
|
feat(role): 支援心情 emoji 資產
|
2026-07-28 15:03:59 +08:00 |
|
Jeffery
|
945c310551
|
feat(role): 新增閒置小睡整理
|
2026-07-28 14:39:26 +08:00 |
|
 JefferyandClaude Opus 5
|
c713359fb4
|
feat(role): 角色分層載入與個人記憶同意狀態
role_load.sh 不再原封不動注入整份角色檔,改採 SOUL/AGENTS/USER/MEMORY
分層:只抽出角色 ID、顯示名稱、本質、氛圍與簽名 emoji 作為人格層,由 hook
產生固定操作邊界,記憶與同意狀態獨立成一區。避免人格檔裡的背景故事與模板
文字污染工程與安全規則。
memory.js 新增 consent/consent-status 子命令,同意狀態寫入
~/.memory/<角色 ID>/state.json 的 personal_memory_consent(accepted/
declined/unknown);role_capture.sh 於本輪出現明確同意或拒絕時更新狀態,
偵測不到明確表述時不自行推論。accepted 後不再每次重問。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-28 14:21:48 +08:00 |
|
Jeffery
|
294a2c1e1c
|
fix(role 睡眠排程): 精簡 cron PATH 避免排程安裝失敗
|
2026-07-28 13:32:35 +08:00 |
|
Jeffery
|
3a3114b8b3
|
feat(role): 新增心理學記憶型態 metadata
|
2026-07-28 12:46:19 +08:00 |
|
Jeffery
|
fec3e1d0cb
|
refactor(role): 將角色記憶工具改寫為 Node.js
|
2026-07-28 12:30:28 +08:00 |
|
Jeffery
|
c7b7e684a5
|
feat(role): 新增角色啟動問候與初始記憶種子
|
2026-07-28 11:47:06 +08:00 |
|
 JefferyandClaude Opus 5
|
7ebcec0a8e
|
feat(role): 新增角色人格與長期記憶 skill、hook 與腳本
SessionStart 載入角色與記憶、Stop 記錄對話成記憶,睡眠時段(預設 22:00–06:00)
由 cron 排程整理:分類六類、去重合併、設標籤與一句話總結、壓縮歸檔,
日常與其他依使用頻率遺忘;cron 未執行時由啟動路徑背景補跑。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-28 11:11:16 +08:00 |
|
Jeffery
|
497dc55b61
|
refactor(generic 規範): 移除 worklog 並補 Copilot 說明
|
2026-07-27 16:24:53 +08:00 |
|
 JefferyandClaude Opus 5
|
265dd14a2b
|
feat(worklog): 新增工作證明自動記錄 skill 與 Stop hook
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-07-27 11:20:15 +08:00 |
|