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

记忆路由锁 398894496-arch/KRouter

DeepSeek Harness
398894496-arch13 天前有提交已提供中文文档扫描:高危

让你的编程 agent 记住你们定过什么,也记住后来改成了什么。

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add 398894496-arch/KRouter
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

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

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

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

✗npm 包dsh-krouter(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 11:46:01

🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

命令参数由运行时变量拼接读写/删除本地文件读取剪贴板或密钥环境变量
查看扫描证据(共 9 处,展示前 9 条)
  • 读取本地文件
    extras/dsh/lib/index.js:22
    if (process.env.KROUTER_WRITER && existsSync(process.env.KROUTER_WRITER)) return true;
  • 读取密钥环境变量
    extras/dsh/lib/index.js:24
    const path = process.env.KROUTER_KEYS_ENV || join(homedir(), ".dsh-krouter-keys.env");
  • 读取本地文件
    extras/dsh/lib/index.js:25
    if (existsSync(path)) {
  • 读取本地文件
    extras/dsh/lib/index.js:26
    for (const raw of readFileSync(path, "utf8").split("\n")) {
  • 读取本地文件
    extras/dsh/lib/index.js:39
    if (vault && existsSync(page)) {
  • 读取本地文件
    extras/dsh/lib/index.js:40
    for (const raw of readFileSync(page, "utf8").split("\n")) {
  • 读取本地文件
    extras/dsh/lib/route.js:52
    if (existsSync(path)) return path;
  • 执行外部命令表达式求值
    extras/dsh/lib/route.js:94
    ? spawnSync(...pythonArgv(script, args), {
  • 执行外部命令来自配置/变量
    extras/dsh/lib/route.js:100
    : spawnSync(script, args, {
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

2 张 · 点击查看大图

功能亮点

  • 跨编程智能体使用
  • 延续次日上下文

给编程智能体的第二大脑。收尾当天,提炼进 Obsidian,明天接着翻那页。Cursor、Codex、Claude Code、DeepSeek Harness。

README

由 DeepSeek 最新模型翻译生成
KRouter 让你的编程 agent 记住你们定过什么,也记住后来改成了什么。 Claude Code、Codex、Cursor、DeepSeek Harness 共用同一份记忆:一个 Obsidian 里的纯 Markdown 文件夹,你自己能看、能改。问一句「我们发版流程是怎么定的」,agent 会给出答案,并告诉你出自哪一页。纠错之后,新结论直接取代旧结论,不会两个一起冒出来。库里没有的,agent 会被明确告知「库里没有」,而不是拿一条差不多的凑数。 · English: README.md 周一定了 A,周三改成 B,周四 agent 答 B 并引用那条纠错;库里没有的问题直接拒答 用数字说话。 200 道从没拿来调过分的中英文留出题,都用默认设置:KRouter 引错 26%,claude-mem 64%, basic-memory 78%。80 道库里答不了的题,KRouter 拒答 47 道,另外两个一道都不拒。60 道「决定后来改过」的题, KRouter 答对 50 道,它们是 34 和 16 道。这两款工具本来就没有拒答机制,也不知道哪页被取代了,所以差距有一部分是结构决定的:给纯全文检索加上 KRouter 那两条规则,它就和 KRouter 打平。KRouter 多出来的,是这两条规则默认就开着,外加出处回执和一个你能直接编辑的库。
展开完整文档(README 剩余 1 节)
KRouter

让你的编程 agent 记住你们定过什么,也记住后来改成了什么。

Claude Code、Codex、Cursor、DeepSeek Harness 共用同一份记忆:一个 Obsidian 里的纯 Markdown 文件夹,你自己能看、能改。问一句「我们发版流程是怎么定的」,agent 会给出答案,并告诉你出自哪一页。纠错之后,新结论直接取代旧结论,不会两个一起冒出来。库里没有的,agent 会被明确告知「库里没有」,而不是拿一条差不多的凑数。

· English: README.md

周一定了 A,周三改成 B,周四 agent 答 B 并引用那条纠错;库里没有的问题直接拒答

用数字说话。 200 道从没拿来调过分的中英文留出题,都用默认设置:KRouter 引错 26%,claude-mem 64%, basic-memory 78%。80 道库里答不了的题,KRouter 拒答 47 道,另外两个一道都不拒。60 道「决定后来改过」的题, KRouter 答对 50 道,它们是 34 和 16 道。这两款工具本来就没有拒答机制,也不知道哪页被取代了,所以差距有一部分是结构决定的:给纯全文检索加上 KRouter 那两条规则,它就和 KRouter 打平。KRouter 多出来的,是这两条规则默认就开着,外加出处回执和一个你能直接编辑的库。怎么测的 · 一秒钟自己复现

安装

curl -fsSL https://raw.githubusercontent.com/398894496-arch/KRouter/main/scripts/bootstrap.sh | sh

Windows(PowerShell):irm https://raw.githubusercontent.com/398894496-arch/KRouter/main/scripts/bootstrap.ps1 | iex · Claude Code 插件:/plugin install krouter --marketplace 398894496-arch/KRouter(需要 Claude Code 2.1.275 或更高;在 shell 里用 claude plugin install krouter --marketplace 398894496-arch/KRouter 需要 2.1.292)。第三方插件市场不会自动更新:运行 claude plugin update krouter@krouter,或在 /plugin → Marketplaces → krouter 里选 Enable auto-update。

想先看看再装?下面只有最后一行会改动你的机器:

git clone https://github.com/398894496-arch/KRouter.git && cd KRouter
./scripts/first_run.sh # 在自带的示例库上出一张回执
python3 scripts/bootstrap.py --dry-run # 列出安装会做的每一处改动,一处都不做
python3 scripts/bootstrap.py --vault ~/notes --no-timer # 装到你自己的库,先不开夜间任务

唯一的前提是 Python 3。安装脚本会建一个库(已有的库用 --vault 指定,一个文件都不覆盖),通过 MCP 把 Claude Code 和 Codex 接上,就到此为止:只装查询,什么都不问,没有任何内容离开本机。想让它开始记住,运行它最后打印的那一行(bootstrap.py --ask),它会问你两个问题。

装完五分钟

1. 问你的 agent:「上周我们关于 X 是怎么定的?」 它会从库里查,给出答案和出处页;库里没有,就直说没有。
2. 「要把本机已有的 agent 会话导进来吗?」(加 --ask 时) 答应后,近 7 天的 Claude Code、Codex 和 Cursor agent 会话会变成页面,每个会话一页,内容是你的提问和每轮最后的回答。像 key 的文字会先脱敏,全程不出本机。
3. 「要让模型提炼一下定了什么吗?」 答应后,你已经在用的模型(登录好的 CLI 或 API key)会在最近几个会话的页面顶上写出「定了什么、改了什么」。发之前它会先告诉你要发多少字。

之后每晚的任务(同样先问你)会导入前一天的会话、做提炼、整理库,不用你维护。

适不适合你

适合:你用 Claude Code、Codex、Cursor 或 DeepSeek Harness(常常不止一个),笔记用 Markdown 记或愿意这么记,而且总要给 agent 反复交代同一个决定。不适合:你要基于向量的语义搜索、要把上一轮聊天自动塞进下一轮、要托管的记忆 API,或者希望装好就是一个装满的大脑。

不只用于写代码:同样的事放到短视频工作里,录法一样(Claude Code 加插件、演示库、真实输出):

周一定了封面标题规则 A,周三改成 B,周四 agent 答 B 并给出处页;库里没有的问题直接说没有

不需要:装 Obsidian(它只是可选的查看器)、维护别名表、自己设环境变量。已经有库?--vault 一个文件都不改。默认就只装查询:不装夜间任务,不导入会话。

和常见 agent 记忆的区别

| | KRouter | 常见的 agent 记忆 |
| 记忆放在哪 | 你能打开、编辑、比对、同步的 Markdown 页 | 数据库或向量库 |
| 纠错之后 | 新页取代旧页,旧页标成「已取代」 | 新旧两条都能匹配上,只能指望对的那条排前面 |
| 什么都对不上时 | 返回 recall: none,agent 会说库里没有 | 拿最接近的一条,说得很肯定 |
| 每条答案 | 带出处页和回执 | 通常没有出处 |
| 谁在用 | 本机所有 agent 共用一个库(MCP、skill、规则) | 通常只服务一个工具 |

在用 claude-mem? 不用卸掉。导入器已经在真实安装的 claude-mem 13.35.0 上完整跑通过。安装时会发现它的记忆库并问你要不要导入:会话总结变成页面,每个项目的决定汇成一页,等你确认。你的模型还能把这些决定理一遍,分出哪些还有效、哪些被后来的决定取代了,这一步是 claude-mem 自己不做的。Claude Code 插件也能做到 claude-mem 让人觉得「有记忆」的那两件事,只是存成纯 Markdown:会话结束时自动记下;开新会话时,自动带上这个仓库里你确认过的决定和最近的纠错,每条都注明出处页。仓库按路径区分,不按文件夹名。这两件事都要你先同意导入才会做。

什么会离开本机

查询从不外发:查找走本地的 SQLite 全文索引,每次约 110 ms。导入会话也只在本机做。只有你点过头的步骤才会把文字发给模型,就是提炼会话和夜间整理两步,发给你本来就在用的 CLI 或 API key,用 --dry-run 可以先看会发多少。key 和标成机密的页从不外发,也从不引用。夜间写入用 API key 通道时,本机不跑任何写入进程;用 CLI 通道时,各家 CLI 能读到的范围不同,安装时会告诉你选的是哪一条。细节见 SECURITY.md。

备份。 运行 backup.py init --dir <一个会同步到别处的文件夹>,就会每晚给整个库(连同历史)做一个加密备份包,并且当晚重新打开验证过才算数。可以指向 iCloud 云盘、OneDrive、Dropbox、网盘同步文件夹或移动硬盘,也可以同时指两个;KRouter 不连任何云。为什么这样做,而不是直接同步或推送整个库:DETAILS.zh.md → 备份你的库。

老实的数字

| 测了什么 | 结果 |
| 该拒答时拒答(公开测试集,CI 跑) | 离题问题英文 12/12、中文 6/6 拒答 |
| 在一个没人调过分的库上的错误引用率(第三套测试集,200 道留出题,中英各半,带日志干扰页;方括号是 95% 区间) | 默认设置下:KRouter 引错 26% [19, 33],80 道近邻题拒答 47 道,120 道可答题答对 102 道;纯全文检索引错 58% [52, 65]。和认真做的基线比是持平,不是领先:给纯全文检索加上同样的两条规则(跳过已被取代的旧页、低于分数下限就拒答),答题数相同时它引错 42 页、KRouter 36 页,答对 96 道对 102 道,但两项差距都不显著(配对区间:引错率 [-10.2, +1.3] 个百分点,答对 [-2, +14])。同样这 200 道题、都用默认设置:claude-mem 13.39 引错 64% [58, 71],basic-memory 0.23 引错 78% [72, 84];80 道近邻题两者一道都没拒;60 道「决定改过」的题,它们分别答对 34 和 16 道,KRouter 50 道 |
| 精确命中和向量检索比(「已取代」和「近邻」题,CI 跑) | 精确命中会拒答;TF-IDF、MiniLM、BGE-M3 会引一个近邻 |
| 作者库里的真实查询 | 盲评从 0.62 到 1.47(满分 2)。这是开发集,在留出题上没有提升。新流量攒够 50 条查询后再做一次盲评(不早于 2026-10-20) |

自己复现

不用安装、不用模型,只要 Python 3;题目就在仓库里,上面的数字大约一秒就能跑出来:

python3 bench/memory_honesty/run.py --set heldout3 --ci # KRouter,带 95% 区间
python3 bench/memory_honesty/run.py --set heldout3 --vs-matched bm25-floor # 和加了同样两条规则的 BM25 比

方法和还没做好的地方:docs/VERIFY.md。

更多

- 工作原理和全部选项:安装参数、夜间写手、精确命中和排序召回、问答卡、四种 agent 接入
- SECURITY.md:每条模型通道能看到什么、能做什么
- docs/FOR-AGENTS.md:给 agent 判断 KRouter 适不适合它的用户时参考的事实
- CHANGELOG.md · CONTRIBUTING.md:适合新人的 issue 都打了标签

原名 DSH-KRouter,旧链接、旧 clone 地址和旧安装命令都会自动跳转。 MIT 协议。
预览分享卡片长什么样 ↓398894496-arch/KRouter
分享 · DeepSeek Harness Hub
398894496-arch/KRouter

让你的编程 agent 记住你们定过什么,也记住后来改成了什么。

回到顶部