DeepSeek Harness Hub
← 返回列表

xiangrui979/foresight

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

Status: experimental

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/25 · 已提供中文文档

ForeSight:一个面向 DeepSeek Harness(dsh)的时序-方面长期记忆插件

综合分
29
GitHub 分
29
用户评分
★ Stars
2
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add xiangrui979/foresight
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/schemastery
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

ForeSight

dsh-plugin
DeepSeek Harness
License: MIT
Status: experimental

面向 DeepSeek Harness(dsh)的时相化长期记忆插件。

每条记忆都携带显式的时间语义——语言学的体(aspect:进行体 / 完成体 / 未然体 / 恒常体)与锚(anchor:时点 / 区间 / 开放 / 无关)配对。框架机械地执行生命周期:锚到期衰减、TTL 兜底、续期提醒(nudge)、先行体审查、预测到期自动判定,以及基于证据的冲突消解,全部由单一保守/激进系数 β 控制。

问题由来

长期记忆是数据管理问题,而不是提示词工程问题。不加管理的 Agent 记忆通常踩到两个常见的坑:

陈旧注入。 一个月前已结束的项目仍与新鲜信息竞争注入配额,仿佛它仍是当前上下文。

有效时间丢失。 "我昨天做过这件事"被说成"刚才"——没有任何记录标明一条记忆何时为真,更不用说何时不再为真。

为什么存在

与聊天厂商的滚动窗口式记忆不同,ForeSight 把记忆当作调度的第一等数据:过期、注入资格、检索权重与矛盾消解全部由一份结构化策略文件(policy.yaml)推导——零硬编码行为。

ForeSight 从语言学借用两个轴来应对:

| 轴 | 取值 | 控制什么 |
|---|---|---|
| 体 (aspect) | 进行体 / 完成体 / 未然体 / 恒常体 | 生命周期:到期、永久、待验证、永不注入 |
| 锚 (anchor) | 无锚 / 时点 / 区间 / 开放 | 语句何时为真(有效时间) |

通俗地说,体回答"这件事处于什么阶段"——进行体:"我正在写报告"(仍在进行,终将结束 → 结束后过期);完成体:"报告已经提交"(已定论,永久保留);未然体:"下周要交报告"(尚待发生,到时验证);恒常体:"我每天喝咖啡"(不随时间变化——这类内容不进记忆库,而是写入 SOUL.md/user.md 长期生效)。锚回答"这句话何时为真"——时点("8月20日")、区间("大三期间")、开放("自3月以来")或无锚(与时间无关)。

几个值得注意的设计取舍:

- 体的分类借鉴了成熟的语言学概念,但它是一个刻意保持最小的起点,而非完备理论——schema 可配置(policy.yaml),并预期随使用演化。
- 核心与 Agent 无关:dsh 只是其中一个适配层(platforms/dsh)。embedding 与 LLM 均为可插拔接口——默认本地 Ollama,且规则兜底保证没有模型也能运转整个生命周期。
- 生命周期由机制执行,而非模型判断:过期、注入资格与冲突消解均由策略驱动,可选的 LLM 仅用于分类与推导。但需要说明的是,这是早期探索性实现——分类、策略模型与执行机制都仍在演进中。

环境要求

- Node.js ≥ 20
- 带 cordis 插件系统的 DeepSeek Harness(dsh)
- 一个 embedding 后端(默认:Ollama + nomic-embed-text-v2-moe,768 维)
- (可选)用于分类/推导的 LLM API(默认:DeepSeek 兼容 API;存在规则兜底,无 API 也能运行)

安装(dsh profile)

在你的 ~/.dsh/profiles// 目录下
pnpm add @foresight/memory

然后将插件加入 profile 的 bundle 列表,并在 patch 中接线:

cordis.patch.yml(profile 级)
- id: foresight-core
config:
memoryRoot: ''   # 例如 /home/you/.config/foresight
dbFile: 'foresight.db'
embedBaseUrl: 'http://localhost:11434'
embedModel: 'nomic-embed-text-v2-moe'

配置——我的数据存在哪?

你的数据存放在仓库之外,自己的数据目录里。 插件绝不携带任何用户数据;仓库是纯代码 + 模板。

数据目录结构

/
├── SOUL.md          # 人格设定(从 templates/SOUL.md.example 复制)
├── user.md          # 用户画像(从 templates/user.md.example 复制)
├── policy.yaml      # 全部可调参数(从 templates/policy.yaml.example 复制)
└── foresight.db     # SQLite 存储(自动创建)

首次运行时插件期望那三个文本文件已存在。插件会按需创建目录,但不会静默写入 policy——请先复制模板,再自行调整:

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

解析链

显式选项(adapter)→ 环境变量 → policy.yaml → 默认值

| 设置 | 环境变量 | 默认值 |
|---|---|---|
| 数据目录 | FORESIGHT_MEMORY_DIR | %APPDATA%/foresight(win)/ ~/.local/share/foresight(unix) |
| db 文件 | FORESIGHT_DB_FILE | foresight.db |
| embedding URL | FORESIGHT_EMBED_URL | http://localhost:11434 |
| embedding 模型 | FORESIGHT_EMBED_MODEL | nomic-embed-text-v2-moe |
| LLM base URL | FORESIGHT_LLM_BASE_URL | https://api.deepseek.com/v1 |
| LLM 模型 | FORESIGHT_LLM_MODEL | deepseek-v4-flash |

策略文件

policy.yaml 是行为的唯一事实来源:权限矩阵、体注册表(TTL、驻留期、注入模式)、gate 分类、激活 β 与衰减常数、检索因子权重、注入预算、nudge 频率、服务器端口/token。你的助手的人格、画像与记忆策略由你决定——没有任何一项被硬编码进代码。

目录结构

src/
├── types.ts            # 领域类型(体×锚)
├── defaults.ts         # 默认值唯一的存放处
├── config.ts           # 解析链 + 数据目录引导
├── policy.ts           # policy.yaml 加载器 + 行为查询
├── schema.ts           # SQLite DDL + 迁移 + sqlite-vec
├── store.ts            # CRUD、软删除、向量、FTS、审计
├── gate/               # 写入门:分类 + 校验(aspect-text)
├── govern/             # 权限模型
├── evolve/             # 时间性过期/TTL、激活、β 冲突消解
├── retrieve/           # 可组合评分因子 + 搜索(3 种形态)
└── store/embed.ts      # embed provider 接口(默认 Ollama)

验证

pnpm install
pnpm build     # tsc
pnpm test      # node --test tests/ — 无需外部服务

所有测试针对内存/临时存储与假 embedder 运行——整套测试在干净机器上通过,不需要 Ollama、不需要 API key、不需要数据目录。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群