前言¶
在 DeepSeek Harness (DSH) 的开发实践中,长期记忆往往被当作静态数据集处理,容易导致“陈旧注入”(已结束的项目仍占据上下文预算)或“有效时间丢失”(无法记录事实何时为真或失效)。ForeSight 旨在将记忆视为具有明确时序语义的调度数据,通过生命周期管理机制,解决上述问题。
插件定位¶
ForeSight 是一个为 DeepSeek Harness (DSH) 提供时序方面长期记忆的插件。它不依赖硬编码行为,而是通过可配置的策略文件来驱动记忆的衰减、注入和冲突解决。
核心功能¶
ForeSight 的核心设计基于语言学中的“体”与“锚”两个维度:
- 体:控制记忆的生命周期阶段,如进行体(持续进行,会过期)、完成体(已结束,永久)、未然体(待验证)和恒常体(恒常事实,如用户偏好)。
- 锚:定义事实为真的时间范围,如时间点、时间区间、开放区间或无时间限制。
- 生命周期管理:自动执行衰减(锚点过期)、TTL 回退、续期提醒、前瞻性审查和预测验证。
- 冲突解决:提供保守/激进两种旋钮(β),基于证据进行冲突裁决。
- 架构特性:代理无关设计,支持可插拔的嵌入和 LLM 服务,使用 SQLite 向量存储。
安装与启用¶
安装需在 DSH 的 profile 目录下执行:
# 在 ~/.dsh/profiles/<name>/ 目录下
pnpm add @foresight/memory
启用时,需在 cordis.patch.yml 中配置插件并指定数据根目录、嵌入服务和数据库文件:
# cordis.patch.yml (profile-level)
- id: foresight-core
config:
memoryRoot: '<your data directory>' # 例如 /home/you/.config/foresight
dbFile: 'foresight.db'
embedBaseUrl: 'http://localhost:11434'
embedModel: 'nomic-embed-text-v2-moe'
配置与数据目录¶
数据存储在本地目录,不在仓库中。目录结构如下:
<memoryRoot>/
├── SOUL.md # 个性设定(需复制 templates/SOUL.md.example)
├── user.md # 用户档案(需复制 templates/user.md.example)
├── policy.yaml # 策略配置(需复制 templates/policy.yaml.example)
└── foresight.db # SQLite 向量存储(自动创建)
首次运行前,需手动复制模板并调整配置:
mkdir -p ~/.config/foresight
cp templates/SOUL.md.example ~/.config/foresight/SOUL.md
cp templates/user.md.example ~/.config/foresight/user.md
cp templates/policy.yaml.example ~/.config/foresight/policy.yaml
配置优先级为:显式选项 > 环境变量 > policy.yaml > 默认值。
注意事项¶
- 实验性状态:插件目前处于实验性状态,分类法、策略模型和机制正在积极修订。
- 依赖要求:需要 Node.js ≥ 20,以及安装了 cordis 插件系统的 DeepSeek Harness (dsh)。
- 默认嵌入服务:默认使用本地 Ollama,模型为
nomic-embed-text-v2-moe。 - 权限与数据:插件会创建目录但不会静默写入策略文件,需手动复制模板。
结语¶
ForeSight 通过将记忆管理从 Prompt 工程转向数据管理,为 DSH Agent 提供了可控的长期记忆方案。其基于体和锚的时序语义设计,有助于在保持上下文相关性时过滤过期信息。