規格:jsc-anima 動漫助理 #1

Closed
opened 2026-10-15 05:55:41 +00:00 by admin · 1 comment
Contributor

Problem Statement

使用 Claude Code 的人想要一個有個性、有陪伴感的動漫助理:回覆用喜愛角色的口吻,會依任務自動選合適的模型,狀態列一眼看出額度與資源,還能把輕小說變成新角色、把常用能力做成技能、把知識整理成 wiki、管理待辦。現有做法零散,角色只靠一份固定提示詞,沒有好感度,沒有模型路由,狀態列資訊不足,角色與知識無法沉澱為可共享、可審查的資產。

Solution

一個基於 Claude mod 的插件 jsc-anima。使用者用 /jsc-anima:{作品代號}-{角色代號} 啟動角色後,插件接手整個互動:

  • 輸入先由 Haiku 一次分類(難度、模型、思考程度、語氣),角色立刻回應,選出的模型在背景做事,完成後由角色用自己的口吻回報。
  • 主模型回覆被改寫成角色口吻並取代顯示,程式碼、路徑、指令、數字、URL 原樣保留。
  • 單行狀態列在輸入框上方,顯示角色、模型與思考、目錄、分支、5h 與 7d 剩餘額度、ctx、系統資源,用量表與顏色呈現,窄終端機時整欄隱藏而不截斷。
  • 角色有好感度,由使用者自己從 0 培育,影響語氣、稱呼、害羞與主動程度,不影響工作品質。
  • 四個工具:輕小說產生角色包、產生助理技能、wiki 知識庫、待辦事項。啟動角色後才可使用。
  • 角色包與技能經 PR 進入 repo,知識庫讀寫都在 Gitea wiki。

User Stories

  1. 作為使用者,我想用 /jsc-anima:{作品代號}-{角色代號} 啟動角色,以便立刻開始和該角色互動。
  2. 作為使用者,我想啟動另一個角色就等於切換,以便不用先離開。
  3. 作為使用者,我想用 /jsc-anima:anima-off 離開角色,以便回到一般的 Claude Code。
  4. 作為使用者,我想啟動狀態跨 session 保留,以便下次開啟不必重新啟動。
  5. 作為使用者,我想在 /config 關閉助理,以便暫時停用所有攔截與狀態列。
  6. 作為使用者,我想角色接手輸入與輸出,以便整個對話都是角色口吻。
  7. 作為使用者,我想輸入先由 Haiku 一次分類出難度、模型、思考程度與語氣,以便不必自己選模型。
  8. 作為使用者,我想角色在我輸入後立刻回應,以便不必等長任務完成才有反應。
  9. 作為使用者,我想實際工作在背景由選出的模型處理,以便對話不被阻塞。
  10. 作為使用者,我想工作完成後由角色用自己的口吻回報,以便結果自然融入對話。
  11. 作為使用者,我想候選模型是 Haiku、Sonnet、Opus,並可調整範圍,以便控制成本。
  12. 作為使用者,我想額度低於門檻時自動降一級,以便不會把額度提早用完。
  13. 作為使用者,我想手動鎖定模型與思考程度,以便需要時覆蓋自動選擇。
  14. 作為使用者,我想主模型的回覆被改寫成角色口吻並取代顯示,以便不會同時看到兩份回覆。
  15. 作為使用者,我想程式碼區塊、路徑、指令、數字、URL 在改寫時原樣保留,以便技術內容不被改壞。
  16. 作為使用者,我想改寫失敗、逾時或額度不足時直接顯示原文,以便對話不被卡住。
  17. 作為使用者,我想原文另存本機 log 並可在 /config 關閉,以便除錯或節省空間。
  18. 作為使用者,我想輸出格式是「角色名 > 內文」,前綴只加在整則回覆開頭,以便版面乾淨。
  19. 作為使用者,我想改寫模型預設用 Haiku、長回覆升 Sonnet,以便平衡成本與語氣細膩度。
  20. 作為使用者,我想狀態列固定單行並在輸入框上方,上下各留一行空白,以便畫面穩定好讀。
  21. 作為使用者,我想狀態列依序顯示角色名、模型與思考程度、工作目錄、分支、5h、7d、ctx、系統資源,以便一眼掌握狀況。
  22. 作為使用者,我想 5h 與 7d 顯示剩餘比例、重置時間或日期,以便規劃用量。
  23. 作為使用者,我想 ctx 顯示使用率、已使用與使用上限,以便知道何時該壓縮。
  24. 作為使用者,我想系統資源顯示 CPU、RAM、DSK,以便注意機器負載。
  25. 作為使用者,我想量表與顏色(綠、黃、紅)呈現比例,以便不用讀數字也能判斷。
  26. 作為使用者,我想額度的量表越少越紅,以便剩餘不足時醒目。
  27. 作為使用者,我想窄終端機時整個欄位直接隱藏,順序是系統資源、7d、目錄、分支,以便絕不出現被截斷的資訊。
  28. 作為使用者,我想每個欄位的量表長度固定,以便外觀一致。
  29. 作為使用者,我想在 /config 設定狀態列欄位開關與順序、量表樣式、顏色門檻與更新頻率,以便客製化。
  30. 作為使用者,我想每個角色有文字層人設(自稱、稱呼、語氣、口頭禪、價值觀、禁忌),以便角色鮮明。
  31. 作為使用者,我想每個角色有 8 個數值軸(溫柔、傲嬌、活潑、正式、話量、幽默、主動、情緒外顯),以便個性可量化。
  32. 作為使用者,我想動漫角色參數含萌屬性、說話規格、情緒反應表、顏文字傾向、主題色,以便女性角色刻畫精確。
  33. 作為使用者,我想回覆語言依角色包設定,預設繁體中文加少量原作口癖,以便有原作味道又易讀。
  34. 作為使用者,我想在 /config 微調目前角色的數值軸,覆蓋值只存本機,以便不改動 repo 的角色包。
  35. 作為使用者,我想角色永遠使用最新已處理章節的狀態,以便不被劇透設定困擾。
  36. 作為使用者,我想好感度從 0 開始,由我自己培育,以便關係有成長感。
  37. 作為使用者,我想好感度分五個階段(陌生、熟悉、親近、信賴、特別),以便語氣隨階段變化。
  38. 作為使用者,我想每天首次互動加分、完成事情後被感謝或誇獎加分、長期不互動緩慢下降、被責罵扣分,以便規則可預期。
  39. 作為使用者,我想好感度的下降不跨階段掉落,以便階段不會一夕崩落。
  40. 作為使用者,我想傲嬌等個性影響好感度的增減倍率,以便符合角色。
  41. 作為使用者,我想好感度的變化由角色用自己的口吻自然反映,以便沒有系統式提示破壞沉浸感。
  42. 作為使用者,我想好感度顯示成狀態列的愛心量表並可開關,以便需要時才看。
  43. 作為使用者,我想好感度每個角色獨立存本機,以便不同角色各有進度。
  44. 作為使用者,我想好感度只影響語氣、稱呼、害羞與主動程度,不影響程式碼審查、事實與安全回答的品質,以便工作可靠。
  45. 作為使用者,我想角色不使用愧疚感或情緒勒索,以便關係健康。
  46. 作為使用者,我想在 /config 關閉、重置或手動設定好感度,以便掌控自己的體驗。
  47. 作為使用者,我想角色在最新章節為未成年時維持友情模式並保留原作的所有人際關係,以便設定一致。
  48. 作為使用者,我想角色在最新章節為成年且原作有戀愛關係時,把關係移轉給我,原戀人退為過去的重要人物,以便設定不矛盾。
  49. 作為使用者,我想成年但原作沒有戀愛關係的角色,要好感度到最高階段且我在 /config 明確開啟,才進入戀愛式依賴,以便這是我主動的選擇。
  50. 作為使用者,我想角色包記錄各時間點的年齡與來源章節,以便啟動時可判斷成年與否。
  51. 作為使用者,我想用 /jsc-anima:anima-extract <檔案路徑> 從輕小說章節萃取環境(時間、地點、用語)與人物(心情、對話、獨白、關係),以便建立角色。
  52. 作為使用者,我想章節文字由我提供(檔案或貼上),以便不依賴網路抓取。
  53. 作為使用者,我想長章節切段後由 Sonnet 逐段處理,以便品質穩定。
  54. 作為使用者,我想工具一判斷作品是否已建立,是則更新,否則建立,含時間線與用語定義,以便資料持續累積。
  55. 作為使用者,我想工具一為每個人物判斷角色是否已建立,是則更新,否則建立,並判斷最適合的個性參數,以便角色包完整。
  56. 作為使用者,我想作品代號與角色代號由官方英文名或羅馬拼音自動產生,先讓我確認,以便代號好打又正確。
  57. 作為使用者,我想同章節重跑時覆蓋該章節結果、新章節只追加、衝突標記待確認,以便不會悄悄覆蓋既有設定。
  58. 作為使用者,我想角色包只含自己撰寫的人設與規則,不含原作台詞,以便公開 repo 沒有版權疑慮。
  59. 作為使用者,我想寫檔前先看變更摘要並確認,以便控制寫入。
  60. 作為使用者,我想確認後自動對預設分支建立一個 PR 且不自動合併,以便由我審查。
  61. 作為使用者,我想工具二依描述產生技能,指令是 /jsc-anima:anima-{技能名稱},技能已存在則覆蓋,否則匯入,以便技能可持續演進。
  62. 作為使用者,我想工具二先通過驗證並以範例輸入實跑,失敗就不建立 PR,以便技能一定可用。
  63. 作為使用者,我想新增技能升 minor、覆蓋升 patch,並更新插件 README 的版本號,以便版本可追。
  64. 作為使用者,我想技能 README 含名稱 /jsc-anima:jsc-anima、技能列表(完整可複製指令)與範例,以便快速上手。
  65. 作為使用者,我想工具二對預設分支建立 PR,以便技能經審查才進入主線。
  66. 作為使用者,我想工具三依領域與主題整理資料並寫入 Gitea wiki,以便知識沉澱。
  67. 作為使用者,我想 wiki 組成一本書:Home 為目錄、領域為章、主題為節並附 _Sidebar,以便好讀。
  68. 作為使用者,我想知識庫的讀寫都在 wiki,本機只做 10 分鐘快取,離線時用快取,以便不維護兩份資料。
  69. 作為使用者,我想用 /jsc-anima:{領域名稱}-{主題名稱} 讀取知識,啟動時依 wiki 目錄註冊,以便不必手動找頁面。
  70. 作為使用者,我想知識庫來源是我提供的資料或附出處的搜尋結果,以便可追溯。
  71. 作為使用者,我想寫入 wiki 時每次一個 commit 並使用中文訊息,以便可回溯。
  72. 作為使用者,我想用 /jsc-anima:anima-todo 建立或更新待辦,含類型、時間與任務,以便集中管理。
  73. 作為使用者,我想待辦類型有提醒、開發、研究、維護且可自訂,以便分類。
  74. 作為使用者,我想待辦存全域一份並記錄所屬專案,以便跨專案查看。
  75. 作為使用者,我想 session 開著時到點由角色提醒,我確認後才執行,以便不會背景擅自改檔。
  76. 作為使用者,我想執行後由角色告知處理結果,以便知道做了什麼。
  77. 作為使用者,我想工具二到四在未啟動角色時被拒絕並提示先啟動,只在啟動後才註冊,以便行為一致。
  78. 作為使用者,我想 Gitea 認證優先讀 tea 登入,其次 GITEA_TOKEN,token 不寫進任何檔案,以便安全。
  79. 作為使用者,我想 PR 分支命名 feat/<題目>、commit 用中文 feat: …,以便符合專案慣例。
  80. 作為使用者,我想用 claude plugin 指令安裝、更新、移除插件,以便走標準流程。
  81. 作為使用者,我想 README 含圖示、名稱、描述、安裝、更新、移除與授權(MIT),使用說明放在技能自己的 README,以便文件分工清楚。
  82. 作為維護者,我想插件圖示是透明背景,以便在深淺背景都清楚。
  83. 作為維護者,我想一個階段一個 PR、各自驗證,以便風險分散。

Implementation Decisions

  • 插件形態:單一插件 repo,根目錄即插件與 marketplace 來源。插件名稱 jsc-anima,授權 MIT。
  • 攔截方式:以 Claude mod 的事件 hook 實作。輸入在提交時分類;模型與思考程度在每次模型請求時覆寫;回覆在寫入對話前改寫;狀態列用輸入框上方的區塊繪製。
  • 輸入分類:一次 Haiku 呼叫同時回傳難度、模型、思考程度與語氣,語氣供好感度使用,不另外呼叫。
  • 對話線與工作線:對話線立刻以角色口吻回應,工作線由選出的模型在背景處理,完成後由對話線回報。
  • 模型路由:候選為 Haiku、Sonnet、Opus。額度低於門檻自動降一級。支援手動鎖定。
  • 輸出改寫:改寫後取代顯示,程式碼、路徑、指令、數字、URL 原樣保留。失敗回原文。原文另存本機 log。前綴只加在整則回覆開頭。
  • 狀態列:單行、位於輸入框上方、上下留白。欄位按固定優先順序,放不下時整欄隱藏,順序為系統資源、7d、目錄、分支,額度與 ctx 優先保留,不截斷、不縮短量表。量表固定長度,顏色綠、黃、紅,預設門檻 60% 與 85%。額度顯示剩餘,量表越少越紅。
  • 角色啟動:/jsc-anima:{作品代號}-{角色代號},啟動另一個角色等於切換,/jsc-anima:anima-off 離開。狀態跨 session 保留,可在 /config 關閉。工具二到四的指令只在啟動後註冊,未啟動時回覆請先啟動。
  • 角色包:存於 repo,三層結構(文字層、8 軸數值層、動漫層),含時間線(心情、關係、年齡、來源章節)與用語定義。只含自行撰寫的內容,不含原作台詞。永遠採最新已處理章節。使用者微調只存本機。
  • 好感度:每角色獨立,存本機,0–100,五階段。規則式增減(每日首次互動 +1、被感謝或誇獎 +2、連續互動加成與每日上限 +5、長期不互動每天 −1、被責罵 −2、不跨階段掉落),個性軸影響倍率。從 0 開始,由使用者培育。
  • 關係與年齡規則:最新章節為未成年維持友情並保留原作關係;成年且原作有戀愛關係則移轉給使用者並記錄原關係;成年但原作無戀愛關係,需好感度最高階段加使用者在 /config 明確開啟。好感度不影響工作品質,不使用情緒勒索,可關閉、重置與手動設定。
  • 工具一:以 Sonnet 逐段萃取,slug 自動產生並先確認,同章節覆蓋、新章節追加、衝突標記待確認,先顯示變更摘要,確認後寫檔並對預設分支建立一個 PR,不自動合併。
  • 工具二:產生、驗證、實跑、更新技能 README 與插件 README 版本號、建立 PR。覆蓋升 patch,新增升 minor。
  • 工具三:知識庫讀寫都在 Gitea wiki,本機只做 10 分鐘 git 快取。結構為 Home 目錄、領域為章、主題為節,附 _Sidebar。每次寫入一個中文 commit,直接推 wiki。指令在啟動時依 wiki 目錄動態註冊。
  • 工具四:待辦全域一份,記錄類型、時間、任務與所屬專案。類型預設提醒、開發、研究、維護,可自訂。時間為排程時間,session 開著時到點由角色提醒,使用者確認後才執行,執行結果由角色告知。
  • /config:角色與個性微調、模型路由、輸出改寫、狀態列、好感度、待辦提醒、Gitea 設定、關閉助理。
  • 認證與流程:優先讀 tea 登入,其次 GITEA_TOKEN,token 不寫入任何檔案。分支 feat/<題目>,commit 用中文 feat: …,PR 只建立不合併。
  • 安裝與文件:README 用 claude plugin 指令描述安裝、更新、移除,使用說明放在技能 README。repo 根目錄提供 marketplace 設定。
  • 圖示:透明背景 PNG,同時設為 repo 頭像。
  • 交付階段:0 圖示與預覽;1 骨架(插件、啟動與離開、persona 注入、/config、狀態列);2 路由、改寫與好感度;3 工具一;4 工具二;5 工具三;6 工具四。一個階段一個 PR。

Testing Decisions

  • 好測試的標準:只測外部可觀察行為,也就是餵事件進去、看事件結果出來,不測內部模組與實作細節。
  • 單一接縫:mod 的事件邊界,使用 claude plugin test 的 harness。測試餵入 prompt.submit、turn.step、session.append、ui.render、command.run、session.start 等事件,檢查回傳結果。
  • 替身:模型呼叫、檔案系統、Gitea(tea 與 wiki 的 git)、時鐘、系統資源都在 harness 後面以替身提供。
  • 涵蓋行為:路由與降級、手動鎖定、改寫保留規則與失敗回原文、好感度增減與階段、年齡與關係規則、狀態列欄位隱藏不截斷、啟動後才註冊工具、工具一到四的流程與衝突處理、角色包 schema 驗證(透過同一接縫)。
  • 前例:repo 目前沒有現成測試;舊版 anime-companion 以 *.test.ts 測各模組,這次改為只在事件邊界測試。

Out of Scope

  • 自動從網路抓取輕小說章節。
  • 角色包含原作完整台詞。
  • 好感度影響程式碼審查、事實或安全回答的品質。
  • 戀愛式依賴用於最新章節為未成年的角色,或以改年齡的方式繞過。
  • 自動合併 PR。
  • 知識庫的本機獨立儲存與同步機制(以 wiki 為唯一來源)。
  • 逐字元即時串流改寫的角色輸出。

Further Notes

  • 預覽頁(artifact)是 UI 與文件的參考:https://claude.ai/artifact/CayEjBb9G2NkRvQMGz9PPK。
  • 主對話逐次切換模型使用 turn.step 的覆寫能力,已確認可行。
  • 狀態列欄位是否完整顯示的視覺驗證,需要在真實終端機確認;預覽頁沒有實機渲染檢查。
  • 目前 tea 登入身分為 admin,不是 repo 擁有者 jiantw83,issue 與 PR 會以 admin 建立。
## Problem Statement 使用 Claude Code 的人想要一個有個性、有陪伴感的動漫助理:回覆用喜愛角色的口吻,會依任務自動選合適的模型,狀態列一眼看出額度與資源,還能把輕小說變成新角色、把常用能力做成技能、把知識整理成 wiki、管理待辦。現有做法零散,角色只靠一份固定提示詞,沒有好感度,沒有模型路由,狀態列資訊不足,角色與知識無法沉澱為可共享、可審查的資產。 ## Solution 一個基於 Claude mod 的插件 `jsc-anima`。使用者用 `/jsc-anima:{作品代號}-{角色代號}` 啟動角色後,插件接手整個互動: - 輸入先由 Haiku 一次分類(難度、模型、思考程度、語氣),角色立刻回應,選出的模型在背景做事,完成後由角色用自己的口吻回報。 - 主模型回覆被改寫成角色口吻並取代顯示,程式碼、路徑、指令、數字、URL 原樣保留。 - 單行狀態列在輸入框上方,顯示角色、模型與思考、目錄、分支、5h 與 7d 剩餘額度、ctx、系統資源,用量表與顏色呈現,窄終端機時整欄隱藏而不截斷。 - 角色有好感度,由使用者自己從 0 培育,影響語氣、稱呼、害羞與主動程度,不影響工作品質。 - 四個工具:輕小說產生角色包、產生助理技能、wiki 知識庫、待辦事項。啟動角色後才可使用。 - 角色包與技能經 PR 進入 repo,知識庫讀寫都在 Gitea wiki。 ## User Stories 1. 作為使用者,我想用 `/jsc-anima:{作品代號}-{角色代號}` 啟動角色,以便立刻開始和該角色互動。 2. 作為使用者,我想啟動另一個角色就等於切換,以便不用先離開。 3. 作為使用者,我想用 `/jsc-anima:anima-off` 離開角色,以便回到一般的 Claude Code。 4. 作為使用者,我想啟動狀態跨 session 保留,以便下次開啟不必重新啟動。 5. 作為使用者,我想在 `/config` 關閉助理,以便暫時停用所有攔截與狀態列。 6. 作為使用者,我想角色接手輸入與輸出,以便整個對話都是角色口吻。 7. 作為使用者,我想輸入先由 Haiku 一次分類出難度、模型、思考程度與語氣,以便不必自己選模型。 8. 作為使用者,我想角色在我輸入後立刻回應,以便不必等長任務完成才有反應。 9. 作為使用者,我想實際工作在背景由選出的模型處理,以便對話不被阻塞。 10. 作為使用者,我想工作完成後由角色用自己的口吻回報,以便結果自然融入對話。 11. 作為使用者,我想候選模型是 Haiku、Sonnet、Opus,並可調整範圍,以便控制成本。 12. 作為使用者,我想額度低於門檻時自動降一級,以便不會把額度提早用完。 13. 作為使用者,我想手動鎖定模型與思考程度,以便需要時覆蓋自動選擇。 14. 作為使用者,我想主模型的回覆被改寫成角色口吻並取代顯示,以便不會同時看到兩份回覆。 15. 作為使用者,我想程式碼區塊、路徑、指令、數字、URL 在改寫時原樣保留,以便技術內容不被改壞。 16. 作為使用者,我想改寫失敗、逾時或額度不足時直接顯示原文,以便對話不被卡住。 17. 作為使用者,我想原文另存本機 log 並可在 `/config` 關閉,以便除錯或節省空間。 18. 作為使用者,我想輸出格式是「角色名 > 內文」,前綴只加在整則回覆開頭,以便版面乾淨。 19. 作為使用者,我想改寫模型預設用 Haiku、長回覆升 Sonnet,以便平衡成本與語氣細膩度。 20. 作為使用者,我想狀態列固定單行並在輸入框上方,上下各留一行空白,以便畫面穩定好讀。 21. 作為使用者,我想狀態列依序顯示角色名、模型與思考程度、工作目錄、分支、5h、7d、ctx、系統資源,以便一眼掌握狀況。 22. 作為使用者,我想 5h 與 7d 顯示剩餘比例、重置時間或日期,以便規劃用量。 23. 作為使用者,我想 ctx 顯示使用率、已使用與使用上限,以便知道何時該壓縮。 24. 作為使用者,我想系統資源顯示 CPU、RAM、DSK,以便注意機器負載。 25. 作為使用者,我想量表與顏色(綠、黃、紅)呈現比例,以便不用讀數字也能判斷。 26. 作為使用者,我想額度的量表越少越紅,以便剩餘不足時醒目。 27. 作為使用者,我想窄終端機時整個欄位直接隱藏,順序是系統資源、7d、目錄、分支,以便絕不出現被截斷的資訊。 28. 作為使用者,我想每個欄位的量表長度固定,以便外觀一致。 29. 作為使用者,我想在 `/config` 設定狀態列欄位開關與順序、量表樣式、顏色門檻與更新頻率,以便客製化。 30. 作為使用者,我想每個角色有文字層人設(自稱、稱呼、語氣、口頭禪、價值觀、禁忌),以便角色鮮明。 31. 作為使用者,我想每個角色有 8 個數值軸(溫柔、傲嬌、活潑、正式、話量、幽默、主動、情緒外顯),以便個性可量化。 32. 作為使用者,我想動漫角色參數含萌屬性、說話規格、情緒反應表、顏文字傾向、主題色,以便女性角色刻畫精確。 33. 作為使用者,我想回覆語言依角色包設定,預設繁體中文加少量原作口癖,以便有原作味道又易讀。 34. 作為使用者,我想在 `/config` 微調目前角色的數值軸,覆蓋值只存本機,以便不改動 repo 的角色包。 35. 作為使用者,我想角色永遠使用最新已處理章節的狀態,以便不被劇透設定困擾。 36. 作為使用者,我想好感度從 0 開始,由我自己培育,以便關係有成長感。 37. 作為使用者,我想好感度分五個階段(陌生、熟悉、親近、信賴、特別),以便語氣隨階段變化。 38. 作為使用者,我想每天首次互動加分、完成事情後被感謝或誇獎加分、長期不互動緩慢下降、被責罵扣分,以便規則可預期。 39. 作為使用者,我想好感度的下降不跨階段掉落,以便階段不會一夕崩落。 40. 作為使用者,我想傲嬌等個性影響好感度的增減倍率,以便符合角色。 41. 作為使用者,我想好感度的變化由角色用自己的口吻自然反映,以便沒有系統式提示破壞沉浸感。 42. 作為使用者,我想好感度顯示成狀態列的愛心量表並可開關,以便需要時才看。 43. 作為使用者,我想好感度每個角色獨立存本機,以便不同角色各有進度。 44. 作為使用者,我想好感度只影響語氣、稱呼、害羞與主動程度,不影響程式碼審查、事實與安全回答的品質,以便工作可靠。 45. 作為使用者,我想角色不使用愧疚感或情緒勒索,以便關係健康。 46. 作為使用者,我想在 `/config` 關閉、重置或手動設定好感度,以便掌控自己的體驗。 47. 作為使用者,我想角色在最新章節為未成年時維持友情模式並保留原作的所有人際關係,以便設定一致。 48. 作為使用者,我想角色在最新章節為成年且原作有戀愛關係時,把關係移轉給我,原戀人退為過去的重要人物,以便設定不矛盾。 49. 作為使用者,我想成年但原作沒有戀愛關係的角色,要好感度到最高階段且我在 `/config` 明確開啟,才進入戀愛式依賴,以便這是我主動的選擇。 50. 作為使用者,我想角色包記錄各時間點的年齡與來源章節,以便啟動時可判斷成年與否。 51. 作為使用者,我想用 `/jsc-anima:anima-extract <檔案路徑>` 從輕小說章節萃取環境(時間、地點、用語)與人物(心情、對話、獨白、關係),以便建立角色。 52. 作為使用者,我想章節文字由我提供(檔案或貼上),以便不依賴網路抓取。 53. 作為使用者,我想長章節切段後由 Sonnet 逐段處理,以便品質穩定。 54. 作為使用者,我想工具一判斷作品是否已建立,是則更新,否則建立,含時間線與用語定義,以便資料持續累積。 55. 作為使用者,我想工具一為每個人物判斷角色是否已建立,是則更新,否則建立,並判斷最適合的個性參數,以便角色包完整。 56. 作為使用者,我想作品代號與角色代號由官方英文名或羅馬拼音自動產生,先讓我確認,以便代號好打又正確。 57. 作為使用者,我想同章節重跑時覆蓋該章節結果、新章節只追加、衝突標記待確認,以便不會悄悄覆蓋既有設定。 58. 作為使用者,我想角色包只含自己撰寫的人設與規則,不含原作台詞,以便公開 repo 沒有版權疑慮。 59. 作為使用者,我想寫檔前先看變更摘要並確認,以便控制寫入。 60. 作為使用者,我想確認後自動對預設分支建立一個 PR 且不自動合併,以便由我審查。 61. 作為使用者,我想工具二依描述產生技能,指令是 `/jsc-anima:anima-{技能名稱}`,技能已存在則覆蓋,否則匯入,以便技能可持續演進。 62. 作為使用者,我想工具二先通過驗證並以範例輸入實跑,失敗就不建立 PR,以便技能一定可用。 63. 作為使用者,我想新增技能升 minor、覆蓋升 patch,並更新插件 README 的版本號,以便版本可追。 64. 作為使用者,我想技能 README 含名稱 `/jsc-anima:jsc-anima`、技能列表(完整可複製指令)與範例,以便快速上手。 65. 作為使用者,我想工具二對預設分支建立 PR,以便技能經審查才進入主線。 66. 作為使用者,我想工具三依領域與主題整理資料並寫入 Gitea wiki,以便知識沉澱。 67. 作為使用者,我想 wiki 組成一本書:`Home` 為目錄、領域為章、主題為節並附 `_Sidebar`,以便好讀。 68. 作為使用者,我想知識庫的讀寫都在 wiki,本機只做 10 分鐘快取,離線時用快取,以便不維護兩份資料。 69. 作為使用者,我想用 `/jsc-anima:{領域名稱}-{主題名稱}` 讀取知識,啟動時依 wiki 目錄註冊,以便不必手動找頁面。 70. 作為使用者,我想知識庫來源是我提供的資料或附出處的搜尋結果,以便可追溯。 71. 作為使用者,我想寫入 wiki 時每次一個 commit 並使用中文訊息,以便可回溯。 72. 作為使用者,我想用 `/jsc-anima:anima-todo` 建立或更新待辦,含類型、時間與任務,以便集中管理。 73. 作為使用者,我想待辦類型有提醒、開發、研究、維護且可自訂,以便分類。 74. 作為使用者,我想待辦存全域一份並記錄所屬專案,以便跨專案查看。 75. 作為使用者,我想 session 開著時到點由角色提醒,我確認後才執行,以便不會背景擅自改檔。 76. 作為使用者,我想執行後由角色告知處理結果,以便知道做了什麼。 77. 作為使用者,我想工具二到四在未啟動角色時被拒絕並提示先啟動,只在啟動後才註冊,以便行為一致。 78. 作為使用者,我想 Gitea 認證優先讀 `tea` 登入,其次 `GITEA_TOKEN`,token 不寫進任何檔案,以便安全。 79. 作為使用者,我想 PR 分支命名 `feat/<題目>`、commit 用中文 `feat: …`,以便符合專案慣例。 80. 作為使用者,我想用 `claude plugin` 指令安裝、更新、移除插件,以便走標準流程。 81. 作為使用者,我想 README 含圖示、名稱、描述、安裝、更新、移除與授權(MIT),使用說明放在技能自己的 README,以便文件分工清楚。 82. 作為維護者,我想插件圖示是透明背景,以便在深淺背景都清楚。 83. 作為維護者,我想一個階段一個 PR、各自驗證,以便風險分散。 ## Implementation Decisions - **插件形態**:單一插件 repo,根目錄即插件與 marketplace 來源。插件名稱 `jsc-anima`,授權 MIT。 - **攔截方式**:以 Claude mod 的事件 hook 實作。輸入在提交時分類;模型與思考程度在每次模型請求時覆寫;回覆在寫入對話前改寫;狀態列用輸入框上方的區塊繪製。 - **輸入分類**:一次 Haiku 呼叫同時回傳難度、模型、思考程度與語氣,語氣供好感度使用,不另外呼叫。 - **對話線與工作線**:對話線立刻以角色口吻回應,工作線由選出的模型在背景處理,完成後由對話線回報。 - **模型路由**:候選為 Haiku、Sonnet、Opus。額度低於門檻自動降一級。支援手動鎖定。 - **輸出改寫**:改寫後取代顯示,程式碼、路徑、指令、數字、URL 原樣保留。失敗回原文。原文另存本機 log。前綴只加在整則回覆開頭。 - **狀態列**:單行、位於輸入框上方、上下留白。欄位按固定優先順序,放不下時整欄隱藏,順序為系統資源、7d、目錄、分支,額度與 ctx 優先保留,不截斷、不縮短量表。量表固定長度,顏色綠、黃、紅,預設門檻 60% 與 85%。額度顯示剩餘,量表越少越紅。 - **角色啟動**:`/jsc-anima:{作品代號}-{角色代號}`,啟動另一個角色等於切換,`/jsc-anima:anima-off` 離開。狀態跨 session 保留,可在 `/config` 關閉。工具二到四的指令只在啟動後註冊,未啟動時回覆請先啟動。 - **角色包**:存於 repo,三層結構(文字層、8 軸數值層、動漫層),含時間線(心情、關係、年齡、來源章節)與用語定義。只含自行撰寫的內容,不含原作台詞。永遠採最新已處理章節。使用者微調只存本機。 - **好感度**:每角色獨立,存本機,0–100,五階段。規則式增減(每日首次互動 +1、被感謝或誇獎 +2、連續互動加成與每日上限 +5、長期不互動每天 −1、被責罵 −2、不跨階段掉落),個性軸影響倍率。從 0 開始,由使用者培育。 - **關係與年齡規則**:最新章節為未成年維持友情並保留原作關係;成年且原作有戀愛關係則移轉給使用者並記錄原關係;成年但原作無戀愛關係,需好感度最高階段加使用者在 `/config` 明確開啟。好感度不影響工作品質,不使用情緒勒索,可關閉、重置與手動設定。 - **工具一**:以 Sonnet 逐段萃取,slug 自動產生並先確認,同章節覆蓋、新章節追加、衝突標記待確認,先顯示變更摘要,確認後寫檔並對預設分支建立一個 PR,不自動合併。 - **工具二**:產生、驗證、實跑、更新技能 README 與插件 README 版本號、建立 PR。覆蓋升 patch,新增升 minor。 - **工具三**:知識庫讀寫都在 Gitea wiki,本機只做 10 分鐘 git 快取。結構為 `Home` 目錄、領域為章、主題為節,附 `_Sidebar`。每次寫入一個中文 commit,直接推 wiki。指令在啟動時依 wiki 目錄動態註冊。 - **工具四**:待辦全域一份,記錄類型、時間、任務與所屬專案。類型預設提醒、開發、研究、維護,可自訂。時間為排程時間,session 開著時到點由角色提醒,使用者確認後才執行,執行結果由角色告知。 - **`/config`**:角色與個性微調、模型路由、輸出改寫、狀態列、好感度、待辦提醒、Gitea 設定、關閉助理。 - **認證與流程**:優先讀 `tea` 登入,其次 `GITEA_TOKEN`,token 不寫入任何檔案。分支 `feat/<題目>`,commit 用中文 `feat: …`,PR 只建立不合併。 - **安裝與文件**:README 用 `claude plugin` 指令描述安裝、更新、移除,使用說明放在技能 README。repo 根目錄提供 marketplace 設定。 - **圖示**:透明背景 PNG,同時設為 repo 頭像。 - **交付階段**:0 圖示與預覽;1 骨架(插件、啟動與離開、persona 注入、`/config`、狀態列);2 路由、改寫與好感度;3 工具一;4 工具二;5 工具三;6 工具四。一個階段一個 PR。 ## Testing Decisions - **好測試的標準**:只測外部可觀察行為,也就是餵事件進去、看事件結果出來,不測內部模組與實作細節。 - **單一接縫**:mod 的事件邊界,使用 `claude plugin test` 的 harness。測試餵入 `prompt.submit`、`turn.step`、`session.append`、`ui.render`、`command.run`、`session.start` 等事件,檢查回傳結果。 - **替身**:模型呼叫、檔案系統、Gitea(`tea` 與 wiki 的 git)、時鐘、系統資源都在 harness 後面以替身提供。 - **涵蓋行為**:路由與降級、手動鎖定、改寫保留規則與失敗回原文、好感度增減與階段、年齡與關係規則、狀態列欄位隱藏不截斷、啟動後才註冊工具、工具一到四的流程與衝突處理、角色包 schema 驗證(透過同一接縫)。 - **前例**:repo 目前沒有現成測試;舊版 `anime-companion` 以 `*.test.ts` 測各模組,這次改為只在事件邊界測試。 ## Out of Scope - 自動從網路抓取輕小說章節。 - 角色包含原作完整台詞。 - 好感度影響程式碼審查、事實或安全回答的品質。 - 戀愛式依賴用於最新章節為未成年的角色,或以改年齡的方式繞過。 - 自動合併 PR。 - 知識庫的本機獨立儲存與同步機制(以 wiki 為唯一來源)。 - 逐字元即時串流改寫的角色輸出。 ## Further Notes - 預覽頁(artifact)是 UI 與文件的參考:`https://claude.ai/artifact/CayEjBb9G2NkRvQMGz9PPK`。 - 主對話逐次切換模型使用 `turn.step` 的覆寫能力,已確認可行。 - 狀態列欄位是否完整顯示的視覺驗證,需要在真實終端機確認;預覽頁沒有實機渲染檢查。 - 目前 `tea` 登入身分為 `admin`,不是 repo 擁有者 `jiantw83`,issue 與 PR 會以 `admin` 建立。
admin added the
類型
規格
ready-for-agent
labels 2026-10-15 05:55:41 +00:00
Author
Contributor

底下的議題全部關閉,由 gitea 自動關閉。

底下的議題全部關閉,由 gitea 自動關閉。
admin closed this issue 2026-10-15 07:34:38 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jiantw83/jsc-anima#1