ofttold-memory(拾光):用本地 Markdown 把記憶帶進每個 DSH 會話

前言

在 DeepSeek Harness(DSH)裏開新會話,上下文往往從零開始:昨天定過的約定、項目路徑、你糾正過一次的偏好,都要靠人再講一遍,或靠模型「記得去翻文件」——後者在忙起來時很容易漏。社區裏也有把記憶塞進向量庫或外部服務的做法;拾光走的是另一條路:指定工作區裏的一個筆記文件夾,每會話開頭注入其中幾段 Markdown,清單、日記摘要、待辦狀態由插件按規則維護,寫進文件的纔算數。

下面介紹 IcyDate 維護的 DSH 插件 ofttold-memory(中文名「拾光」),分類爲「記憶」,當前在 GitHub 上約 2 stars。本文事實來自倉庫 README 與 npm 包元數據;安裝與配置以原文爲準。

這是什麼

拾光是給 AI 用的「小本子」:模型可以往裏面寫當天做了什麼、自己的判斷、常拐錯的步驟;下次開口前插件先把本子 relevant 部分擺進上下文。README 強調:它記得的不只是用戶說過什麼,還有模型自己寫進日記的內容。你也可以把「希望 AI 是什麼樣的人」寫進 relationship.md,不必每會話重複囑咐。

插件面向 DSH web profile,依賴 Node.js 22+ 與 DSH 0.2.x 系列(見包內 engines 與 peerDependencies)。許可證爲 MIT。其他 harness 支持在 README 中標註爲「規劃中」。

核心功能

會話注入與文件骨架

安裝後首次運行會在當前工作區創建 .ofttold/,並鋪五文件骨架(空殼加註釋,不預填記憶):

  • memory.md:注入源(如「常被提起」「待辦」)
  • index.md:日記索引
  • relationship.md:身份描述與情緒詞表、緩存區
  • detours.md:常出錯步驟
  • diary/:按天一文件的日記

若把配置裏的 memoryDir 指向已有文件夾,插件只補缺文件,已有內容不動;但需補齊 relationship.md 與 diary/,否則「寫的一半」會缺塊。

清單與沉底

memory.md 裏「常被提起」建議上限約 8 條。寫滿後插件按權重決定誰沉底(公式爲 exp(-t / 2^n),詳見倉庫 docs/design.md),沉底不是刪除,日記裏再提起可浮回。設計目標是:不看見就會幹錯活的信息才進清單,而不是把一切「重要」都堆進上下文。

日記、摘要與體檢

每天一個 diary/YYYY-MM-DD.md。文件頂部的 ## 今天(HH:mm 更新) 是隨寫隨新的摘要;插件會比對摘要時間與正文最後一節時間,落後則點名。summaryFrom(默認 17:30)之前不催摘要。

同一套邏輯做「日記體檢」,只報不改:缺 情緒: 行、標籤不在詞表、節數超過你設的 diarySections、過了點仍無摘要等,會在塊尾合併成一行 Diary check — …。

工具:落盤纔算記住

README 明確:口頭「記下了」若沒有調用工具寫到文件,與沒記一樣。

工具 作用
remember_note 寫入 memory.md:kind: anchor(默認)進「常被提起」,kind: task 進「待辦」
complete_task 勾選待辦並補完成日,不刪除記錄
remember_emotion 改 relationship.md 裏 **現在** 一行;詞必須在同文件 ## 情緒詞表 中,否則拒絕

情緒值由人定,插件校驗詞表並打時間戳;不自動寫日記,沒寫只在塊尾給一行狀態(不寫成催寫指令)。

塊尾狀態行

注入末尾可能附帶:今日日記是否存在、待辦條數與最久未動天數、到期/逾期任務、relationship.md 當天是否被文件工具打開過、第二會話與「今日日記寫入時間」的關係等。這些是狀態事實,便於模型決定是否補寫,而不是替用戶做內容判斷。

生效節奏

README 用表格說明預期:第 1 天本子仍空、模型開始往裏寫;約第 3 天能接上上次事;約第 10 天日記與自我描述更穩定;約一個月後本子行數變多但注入仍只挑少量條目——延遲是設計的一部分,不是裝完立刻滿配記憶。

安裝與啓用

官方安裝命令(npm 預構建包,無需本地構建):

dsh plugin --profile web add ofttold-memory@latest

跟倉庫最新源碼安裝時,README 說明可將包名換爲 github:IcyDate/ofttold-memory(與 @latest 二選一,按你的更新策略來)。

裝好後可在 設置 → 拾光 調整,或直接改 profile 的 cordis.patch.yml(例如 memoryDir)。

Windows 注意(來自 README 實測說明):dsh plugin 會轉發到 pnpm,需先 npm install -g pnpm;PowerShell 執行策略可能攔 .ps1,可用 cmd /c "dsh plugin --profile web add ofttold-memory" 或在 cmd 中執行;國內鏡像未同步時可加 --registry=https://registry.npmjs.org/。插件需寫入 ~/.dsh/profiles/,若由沙箱內的 agent 代裝可能 EPERM,安裝命令宜在本機終端自行執行。

典型用法

1、安裝並確認工作區出現 .ofttold/

執行上面的 dsh plugin 命令,打開 DSH web profile,在新工作區發起會話,確認骨架文件已創建。

2、編輯 memory.md 的「常被提起」

按 README 示例格式寫硬約定與高頻路徑,例如:

## 常被提起

- **項目在哪** → `~/work/my-project`|省掉每次都要問
- **什麼不能動** → 不要改 `config/prod.yml`

3、通過工具追加錨點或待辦

模型側應調用(示意來自 README):

remember_note(text: "主人喜歡一條溪穿街的古鎮,黃龍溪那種", title: "主人喜歡古鎮")

待辦示例格式:

- [ ] 2026-11-02 起 | 2026-11-05 到期 | 修上游白名單

4、維護情緒詞表與當前狀態

在 relationship.md 維護 ## 情緒詞表,用 remember_emotion(word: "定") 更新 **現在** 行;日記裏 情緒: 標籤需用詞表內的詞,否則體檢會提示且情緒檢索對不上。

適用場景與注意

適合:希望記憶留在工作區 Git 可管的 Markdown 裏、接受「養幾天才順」、需要待辦/日記/清單分工且願意自己寫內容的人;不想把會話記憶默認交給外部 SaaS 的 DSH 用戶。

邊界(README「它做什麼,不做什麼」):插件不替你決定記什麼、不判斷情緒含義、不自動補日記;上限、沉底、詞表等「看不見就會錯」的部分交給代碼,內容取捨留給寫文件的人。

安全與信任:插件以當前 DSH 進程權限讀寫工作區與 profile;安裝前請查看 GitHub 倉庫 源碼與 MIT 許可證,再決定是否用於含敏感信息的項目。

結尾

拾光把「每會話先看一眼筆記」做成 DSH 插件:文件夾在你手裏,注入一次,工具和塊尾把「寫沒寫、過沒過期、今天翻沒翻 relationship」說清楚。社區插件目錄見 SkillHub 上的 ofttold-memory 頁;源碼、設計說明與變更記錄在 IcyDate/ofttold-memory。DSH 生態強調「一切皆插件」,SkillHub 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜