🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

证据记忆内核 MajidAsghariTabrizi/credence

DeepSeek Harnessv2.0.0
MajidAsghariTabrizi25 天前有提交已提供中文文档扫描:含敏感能力

让智能体记住证据而非文本,任务重启不丢

30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:npm 同名包「credence」归属 npm/deprecate-holder,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add MajidAsghariTabrizi/credence
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · chat
装得上吗
静态安装检查有提示项,装前建议看一眼 README
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 25 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

npm 同名包「credence」归属 npm/deprecate-holder,装到的可能不是本插件

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包credence @ 2.0.0
✓Node 引擎要求 >=22.6 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/10 21:29:25

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 14 处,展示前 14 条)
  • 执行外部命令来自配置/变量
    bin/credence.mjs:9
    const result = spawnSync(process.execPath, ['--experimental-strip-types', cli, ...process.argv.slice(2)], { stdio: 'inherit' })
  • 写入本地文件
    src/kernel/keel.ts:14
    mkdirSync(missionsDir, { recursive: true })
  • 读取本地文件
    src/kernel/keel.ts:19
    if (!existsSync(this.file)) return []
  • 读取本地文件
    src/kernel/keel.ts:21
    for (const line of readFileSync(this.file, 'utf8').split('\n')) {
  • 写入本地文件
    src/kernel/keel.ts:28
    appendFileSync(this.file, JSON.stringify(e) + '\n', 'utf8')
  • 写入本地文件
    src/kernel/packs.ts:21
    mkdirSync(packsDir, { recursive: true })
  • 读取本地文件
    src/kernel/packs.ts:26
    if (!existsSync(file)) return null
  • 读取本地文件
    src/kernel/packs.ts:27
    return JSON.parse(readFileSync(file, 'utf8')) as PackMeta
  • 读取本地文件
    src/kernel/packs.ts:41
    if (!existsSync(this.packsDir)) return []
  • 读取本地文件
    src/kernel/packs.ts:42
    return readdirSync(this.packsDir, { withFileTypes: true }).filter(d => d.isDirectory()).map(d => d.name)
  • 写入本地文件
    src/kernel/store.ts:15
    mkdirSync(storeDir, { recursive: true })
  • 读取本地文件
    src/kernel/store.ts:17
    if (existsSync(this.file)) {
  • 读取本地文件
    src/kernel/store.ts:18
    for (const line of readFileSync(this.file, 'utf8').split('\n')) {
  • 写入本地文件
    src/kernel/store.ts:27
    appendFileSync(this.file, JSON.stringify(event) + '\n', 'utf8')
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 证据优先记忆
  • 不可变信念历史
  • 任务重启不丢失

证据优先的智能体记忆与持久任务运行时——UNKNOWN 状态、不可变信念历史、受治理的学习,以及能扛住 kill -9 的任务。零依赖 TypeScript 内核。

README

由 DeepSeek 最新模型翻译生成
credence MOST AGENTS REMEMBER TEXT. THIS ONE REMEMBERS EVIDENCE. credence 是证据优先的智能体记忆与持久任务运行时。它不是向量库,不是 RAG 流水线,也不是编排器——它是这些组件底下那一层:一份只追加的知识账本,每条信念都带着自己的证据,每次修正都保留历史,每次学习都要过权限闸门,每个任务都能扛过进程重启。 - 什么时候需要它:你的智能体要跑几小时甚至几天,而现在的「记忆」只是往上下文窗口里塞文本。 - 它不一样在哪:这里的知识有认识论:分级支持度、证据链接、取代链,以及一个显式的 UNKNOWN 状态。由 credence 驱动的智能体能回答:「我不知道——但这是我最接近的已知信息,以及它为什么不够格。」 KILL THE AGENT. THE MISSION CONTINUES. (这是真实 npm run demo:kill 运行的定时回放——里面是实际捕获的输出行和 PID,不是模拟。往下看,你可以自己跑一遍。) 30 秒跑起来 需要 Node ≥ 22.6。不用安装,不用 API key,不用模型——整个 demo 都是确定性的,本地就能跑。
展开完整文档(README 剩余 1 节)
credence

MOST AGENTS REMEMBER TEXT. THIS ONE REMEMBERS EVIDENCE.

credence 是证据优先的智能体记忆与持久任务运行时。它不是向量库,不是 RAG 流水线,也不是编排器——它是这些组件底下那一层:一份只追加的知识账本,每条信念都带着自己的证据,每次修正都保留历史,每次学习都要过权限闸门,每个任务都能扛过进程重启。

- 什么时候需要它:你的智能体要跑几小时甚至几天,而现在的「记忆」只是往上下文窗口里塞文本。
- 它不一样在哪:这里的知识有认识论:分级支持度、证据链接、取代链,以及一个显式的 UNKNOWN 状态。由 credence 驱动的智能体能回答:「我不知道——但这是我最接近的已知信息,以及它为什么不够格。」

KILL THE AGENT. THE MISSION CONTINUES.

(这是真实 npm run demo:kill 运行的定时回放——里面是实际捕获的输出行和 PID,不是模拟。往下看,你可以自己跑一遍。)

30 秒跑起来

需要 Node ≥ 22.6。不用安装,不用 API key,不用模型——整个 demo 都是确定性的,本地就能跑。

git clone https://github.com/MajidAsghariTabrizi/credence
cd credence
npm run demo:kill

刚才这个 kill-and-resume 只是四个招牌时刻之一。你也可以一个一个跑:

| 时刻 | 命令 | 你会看到什么 |
| I DON'T KNOW | npm run demo:unknown | 一个问题只有传闻、没有证据 → UNKNOWN,并给出原因。不猜。 |
| I CHANGED MY MIND | npm run demo:contradiction | 新校准与旧信念冲突 → 旧主张被取代,绝不删除,整条链可查。 |
| I LEARNED — BUT NOT BY MYSELF | npm run demo:governed | 工作智能体提交知识 → DENIED。所有者提交。之后工作智能体复用了它无权自学的那部分知识。 |

或者一次跑完:npm run demo。

这份 README 里每一条核心主张背后都有测试、命令或 fixture——见 PROOF, NOT PROMISES。

这个仓库拥有的五个理念

1. 带认知论的内存

一条主张不是向量里的一串字符,而是一条记录:

claim c_e21f0106
text "star tracker drifts 0.02°/sol after firmware 2.1 recalibration"
support measured (measured > inferred > reported)
basis "post-firmware-2.1 calibration run GC-CAL-0051"
evidence e_cal0051 — 21-sol drift series, slope 0.019, r²=0.99 state active (active | superseded | disputed)
supersededBy [] (grows — never rewrites)

2. UNKNOWN 是一项特性

只要覆盖率低于阈值,或者证据缺失,ask 就返回 unknown —— 连同原因和最近被拒的候选一起返回。检索规则 → src/kernel/ask.ts · 演示 → npm run demo:unknown

3. 历史不可变

更正会取代旧内容。旧主张永远可读,链接到它的替代者,两者之间的冲突事件也一并保留。折叠 → src/kernel/store.ts · 演示 → npm run demo:contradiction

4. 任务比进程活得久

任务状态是磁盘上的追加式日志(keel)。杀掉进程,新进程折叠日志后继续。任务状态是运行状态 —— 它永远不会自动成为可信知识。src/kernel/keel.ts · 演示 → npm run demo:kill

5. 学习需要权限

智能体可以探索、可以提议。只有 owner/lead 能提交持久知识。被拒的提交会记入日志,不会丢失 —— 提议等待复核。src/kernel/learn.ts · 演示 → npm run demo:governed

拿证据说话,不空口承诺

| 主张 | 运行这个 | 读这个 |
| 「它会说我不知道」 | npm run demo:unknown | test/kernel.test.ts · unknown |
| 「它会改变想法,但不删除过去」 | npm run demo:contradiction | store.ts · supersession fold |
| 「Worker 无法提交」 | npm run demo:governed | learn.ts · authority gate |
| 「任务能挺过进程死亡」 | npm run demo:kill | keel.ts · durable resume |
| 「检索质量可测量」 | npm run bench | bench/ · fixtures + runner |
| 「零依赖」 | cat package.json | — |

基准测试是合成的、带种子的(确定性)、诚实的 —— 最新结果基于这个内核本身:unknown 检出 1.00,无法回答时的幻觉 0,复述召回 0.65(token 覆盖率检索,无嵌入),200 条主张时 ask 延迟 p95 ~1.3 ms。难看的数字照样公开。

架构

Agents worker · lead · watcher · operator (propose, never commit) Harness lifecycle · tools · keel missions (durable operational state) Brain ask · explain · investigate · learn · pulse Packs ground-control/ … each an events.jsonl (append-only, one fold away)

一个进程,一个目录,零依赖。事件日志就是数据库——不用迁移,不用服务器。深入阅读 → docs/ARCHITECTURE.md。

深挖细节

Brain 不知道答案时会怎样?

ask 会给每条活跃断言打分,依据是查询覆盖率(你的问题里有多少内容 token 出现在这条断言中),再按支持等级加权。低于 0.45——或者最佳匹配没有任何证据——你会得到 state: unknown,附带 why 和被拒绝的 nearest 候选。接下来你可以 investigate:收集器汇总发现,分成持久候选(通过 learn 提交)和临时观察(永不提交——今天测出的值明天就错了)。

新证据和旧证据冲突时会怎样?

supersede 增量会写入两个事件:contradiction-raised(两个 id 加备注)和 claim-superseded(旧 → 新)。折叠时把旧断言标记为 superseded,并追加后继 id。explain <claimId> 会走完整条链。什么都不删除;日志只增不减。

到底谁有权限 learn?

调用方身份是一个角色:owner、lead:、agent:、watcher。propose() 把增量记为待处理提案;agent/watcher 的提交会被拒绝,并写入 learning-denied 事件——拒绝本身也是历史的一部分。owner/lead 用 commitProposal 批准。私有断言(sensitivity: private)在存储层就被过滤掉,智能体读不到。

进程死掉后什么能活下来?

被杀之前追加的一切:断言、证据、提案、任务步骤。keel 在每一步完成之后才写入,所以中途被杀会重放那一步——不跳过,不重复。mission-resumed 事件用来统计中断次数。

真实状态

| 能力 | 状态 |
| 只追加断言账本、取代、溯源 | 可用 + 已测试 |
| UNKNOWN 检测(覆盖率 + 证据门限) | 可用 + 已度量 |
| 权限模型(propose/deny/commit) | 可用 + 已测试 |
| 持久任务、杀掉再恢复 | 可用 + 已测试(单进程命令行规模) |
| Packs(领域存储) | 可用(注册表还很简陋) |
| Token 覆盖检索 | 可用 + 已实测 —— 刻意保持简单;暂时没有嵌入 |
| 反射 / 系统 1 层 | 未实现 |
| 由 LLM 驱动的采集器 | 未实现(采集器是确定性函数 —— 自带模型) |
| DeepSeek Harness 集成 | 实验性 —— integrations/deepseek-harness/ |

这是 v0.1.0:一个小而完整、诚实的核心 —— 不是平台。上面这些缺口就是路线图。

DeepSeek Harness 集成

Credence 是集成目标,不是依赖。这个适配器通过内核的编程 API,把 ask / learn / pulse 暴露给 DeepSeek Harness 智能体会话 —— 智能体可以查询账本、提交学习提案(如果它想自行提交,会被正确地拒绝)。与 DeepSeek 无隶属关系;harness 只是个好宿主。

参与贡献

欢迎提 issue 和 PR —— good first issues 已标记。请阅读 CONTRIBUTING.md。内核刻意写成约 700 行无依赖的 TypeScript:扩展它之前,先一口气读完。

许可证

MIT · © 2026 Majid Asghari Tabrizi。合成演示域(探测器 MNEMOSYNE-7)纯属虚构;若与真实航天器遥测数据雷同,那是标定误差。
预览分享卡片长什么样 ↓MajidAsghariTabrizi/credence
分享 · DeepSeek Harness Hub
MajidAsghariTabrizi/credence

让智能体记住证据而非文本,任务重启不丢

这是你的仓库?认领条目

回到顶部