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

Agent 记忆工作台 Ariestar/sivtr

DeepSeek Harness
Ariestar4 天前有提交已提供中文文档扫描:含敏感能力

人类与智能体共用的统一智能体记忆工作空间

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

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

自动兼容检查未通过:仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装。以下命令仍可尝试,但可能失败。
无法用 dsh 插件命令安装(仓库内无 dsh 插件清单)
git clone https://github.com/Ariestar/sivtr.git
按该仓库 README 的原生方式安装;若作者另行发布了 DSH 插件包,请以其文档为准

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · search
装得上吗
作者未把包发布到 npm,只能用源码安装
插件本身没问题,是分发方式不同
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

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

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

仓库根目录及浅层子目录均无 dsh 插件清单,无法用 dsh 插件安装命令安装

展开查看检查明细 ↓

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

✗npm 包sivtr(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 02:39:05

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

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

可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 31 处,展示前 30 条)
  • 执行外部命令来自配置/变量
    editors/vscode/src/extension.ts:81
    execFile(command, ["--version"], { cwd, timeout: 5000, windowsHide: true }, (error) => {
  • 读取本地文件
    share-web/e2e/viewer.spec.ts:4
    const fixture = JSON.parse(readFileSync(new URL("../tests/fixtures/rust-publication-v1.json", import.meta.url), "utf8")) as { publication_id: string;
  • 读取本地文件
    share-web/e2e/viewer.spec.ts:5
    const granularFixture = JSON.parse(readFileSync(new URL("../tests/fixtures/rust-publication-v2.json", import.meta.url), "utf8")) as { publication_id:
  • 读取本地文件
    share-web/e2e/viewer.spec.ts:6
    const xssFixture = JSON.parse(readFileSync(new URL("../tests/fixtures/xss-publication-v1.json", import.meta.url), "utf8")) as { publication_id: string
  • 写入本地文件
    share-web/server/self-host.mjs:59
    await mkdir(dataDir, { recursive: true, mode: 0o700 });
  • 写入本地文件
    share-web/server/self-host.mjs:128
    await mkdir(publication.directory, { recursive: true, mode: 0o700 });
  • 读取本地文件
    share-web/server/self-host.mjs:162
    body = await readFile(publication.envelopePath);
  • 读取本地文件
    share-web/server/self-host.mjs:187
    info = await stat(assetPath);
  • 读取本地文件
    share-web/server/self-host.mjs:194
    const body = await readFile(assetPath);
  • 读取本地文件
    share-web/server/self-host.mjs:207
    entries = await readdir(directory, { withFileTypes: true });
  • 读取本地文件
    share-web/server/self-host.mjs:227
    const info = await stat(path);
  • 读取本地文件
    share-web/server/self-host.mjs:251
    const value = JSON.parse(await readFile(path, "utf8"));
  • 删除本地文件
    share-web/server/self-host.mjs:344
    await unlink(path);
  • 删除本地文件递归
    share-web/server/self-host.test.mjs:14
    await Promise.all(running.splice(0).map(({ server, root }) => new Promise((resolve) => server.close(() => resolve())).then(() => rm(root, { recursive:
  • 发起网络请求
    share-web/server/self-host.test.mjs:25
    const stored = await fetch(`${fixture.base}/api/v1/publications/${ID}`);
  • 读取本地文件
    share-web/server/self-host.test.mjs:30
    const metadataText = await readFile(join(fixture.dataDir, "v1", "7d", `${"c".repeat(22)}.json`), "utf8");
  • 发起网络请求
    share-web/server/self-host.test.mjs:38
    expect((await fetch(`${fixture.base}/api/v1/publications/${ID}`)).status).toBe(404);
  • 读取本地文件
    share-web/server/self-host.test.mjs:47
    const metadataText = await readFile(join(fixture.dataDir, "v1", "1d", `${"d".repeat(22)}.json`), "utf8");
  • 发起网络请求
    share-web/server/self-host.test.mjs:50
    expect((await fetch(`${fixture.base}/api/v1/publications/${id}`)).status).toBe(404);
  • 读取本地文件
    share-web/server/self-host.test.mjs:51
    await expect(readFile(join(fixture.dataDir, "v1", "1d", `${"d".repeat(22)}.json`))).rejects.toMatchObject({ code: "ENOENT" });
  • 发起网络请求
    share-web/server/self-host.test.mjs:56
    const response = await fetch(`${fixture.base}/s/${ID}#k=never-sent`);
  • 发起网络请求
    share-web/server/self-host.test.mjs:65
    const invalidType = await fetch(`${fixture.base}/api/v1/publications/${ID}`, {
  • 写入本地文件
    share-web/server/self-host.test.mjs:83
    await mkdir(distDir, { recursive: true });
  • 写入本地文件
    share-web/server/self-host.test.mjs:84
    await writeFile(join(distDir, "index.html"), "<!doctype html><title>Sivtr test viewer</title>");
  • 发起网络请求
    share-web/server/self-host.test.mjs:100
    return fetch(`${base}/api/v1/publications/${id}`, {
  • 发起网络请求
    share-web/src/worker.ts:20
    async fetch(request: Request, env: Env, ctx: ExecutionContext): Promise<Response> {
  • 发起网络请求
    share-web/src/worker.ts:45
    return env.ASSETS.fetch(new Request(new URL("/", request.url), request));
  • 发起网络请求
    share-web/src/worker.ts:47
    return env.ASSETS.fetch(request);
  • 发起网络请求
    share-web/viewer/src/main.ts:53
    const response = await fetch(`/api/v1/publications/${encodeURIComponent(id)}`, { cache: "no-store" });
  • 写入剪贴板
    share-web/viewer/src/main.ts:210
    await navigator.clipboard.writeText(pre.innerText);
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

界面预览

5 张 · 点击查看大图

功能亮点

  • 统一记忆工作空间

README

由 DeepSeek 最新模型翻译生成
sivtr 面向智能体和人的统一记忆空间 让智能体和终端共享同一个上下文 你的 Agent 记忆,不必是一套笨重的知识系统。 Docs 中文文档 为什么需要 sivtr? 开发者和 Agent 经常浪费时间重建已经存在的上下文:终端报错、测试输出、工具日志、之前的 AI 会话。sivtr 把这些本地工作变成可搜索的记忆,但不要求你引入一套很重的知识系统。 有了 sivtr,你可以: - 让 Agent 修复最近一次失败,而不用自己粘贴日志; - 几秒钟找回昨天的测试输出、构建报错或关键决策; - 从摘要跳回当时那条命令输出或 Agent 回复; - 把一组有用结果保存成 @failures 这样的变量,在下一条命令里继续用。 [!IMPORTANT] Agent 工作流建议安装 sivtr CLI,用 sivtr mcp install 注册 MCP,并可选用内置 sivtr-memory skill。MCP 是 Agent 读取本地证据的主路径;skill 负责教它何时、如何调用。 特性 - MCP 优先的 Agent 记忆:一次 sivtr mcp install,Agent 直接调用 search/show/zoom/filter/status/usage/stats 工具,不用你粘贴日志。
展开完整文档(README 剩余 1 节)
sivtr

面向智能体和人的统一记忆空间

让智能体和终端共享同一个上下文

你的 Agent 记忆,不必是一套笨重的知识系统。

Docs

中文文档

为什么需要 sivtr?

开发者和 Agent 经常浪费时间重建已经存在的上下文:终端报错、测试输出、工具日志、之前的 AI 会话。sivtr 把这些本地工作变成可搜索的记忆,但不要求你引入一套很重的知识系统。

有了 sivtr,你可以:

- 让 Agent 修复最近一次失败,而不用自己粘贴日志;
- 几秒钟找回昨天的测试输出、构建报错或关键决策;
- 从摘要跳回当时那条命令输出或 Agent 回复;
- 把一组有用结果保存成 @failures 这样的变量,在下一条命令里继续用。

[!IMPORTANT]
Agent 工作流建议安装 sivtr CLI,用 sivtr mcp install 注册 MCP,并可选用内置 sivtr-memory skill。MCP 是 Agent 读取本地证据的主路径;skill 负责教它何时、如何调用。

特性

- MCP 优先的 Agent 记忆:一次 sivtr mcp install,Agent 直接调用 search/show/zoom/filter/status/usage/stats 工具,不用你粘贴日志。
- 保留输出的终端捕获:记录 Bash、Zsh、PowerShell、Nushell 里的命令、stdout/stderr、退出码、目录和耗时;pipe 和 run 直接写入同一个 archive。
- 统一本地 archive:所有终端和 Agent session 先同步到一个 archive.db;provider 只负责发现和解析,搜索、筛选、导出、TUI、MCP、Web API 共用同一份记录模型。
- 40+ Agent provider:Codex / Claude Code / Cursor / Dsh / Gemini / Goose / Hermes / OpenCode / OpenClaw / Grok / Pi / Qoder / Qoder-CN / Qwen,以及更多 JSONL、SQLite、目录和容器格式——同一个 registry 和查询面。
- 精确证据,而不是摘要:每个命中都落到稳定 ref,可 show / zoom / filter,或交给下一个 Agent。
- 命名记忆变量:把结果保存成 @failures,复用 @last,管道用 @,也可 @failures[1,3..5] 取子集。
- 用量与成本:从 transcript 提取 token usage,用精确微美元整数和内置 pricing snapshot 计算成本;未知价格明确显示为 unpriced,不猜价格。
- 可选 semantic / hybrid search:配置一个 OpenAI-compatible embedding endpoint 后,用向量排序或 RRF 融合 BM25;不配置时结构化搜索仍完整可用。
- 统计、质量和可移植导入导出:stats、secret findings、starred sessions、Claude.ai/ChatGPT JSON/ZIP 导入,以及 JSON/JSONL/Markdown/HTML 导出。
- 跨设备访问:只读分享 workspace,用 desk:... ref 像读本地一样浏览另一台设备;多设备还能组成 group,成员间自动同步、一次 sync 拉齐。
- 主题可配:[theme] mode = auto|dark|light,自动跟随系统外观并检测 truecolor。
- 一键安装与诊断:sivtr setup 装 hooks + MCP;sivtr doctor --fix 自动修复。
- 人用 CLI 仍然在:search / show / filter / nav,以及 TUI 浏览器——有用,但不是主叙事。

快速开始

安装预编译 CLI(无需 Rust 工具链):

cargo binstall sivtr

Linux 上 cargo binstall 默认安装静态 musl 构建(不依赖系统 GLIBC 版本),与 install.sh 同源。

其它方式:

cargo install sivtr # 从源码编译(需要 Rust)
curl -fsSL https://raw.githubusercontent.com/Ariestar/sivtr/main/install.sh | sh # Linux/macOS/WSL 一行安装

Windows(PowerShell):

irm https://raw.githubusercontent.com/Ariestar/sivtr/main/install.ps1 | iex

升级:

sivtr update # 下载最新 release,SHA256 校验后原地替换

首次安装(采集 + MCP 宿主):

sivtr setup # 采集 + MCP 宿主 + sivtr-memory skill(缺失时安装)或分步: sivtr init all # 或单个 shell:bash、zsh、nushell、powershell sivtr mcp install # 检测已装宿主;或 -p claude,cursor,codex,opencode,openclaw,grok,hermes,pi,qoder,qodercn,gemini,qwen,goose
npx skills add Ariestar/sivtr --skill sivtr-memory -g -y
sivtr doctor

[!NOTE]
sivtr setup 或 sivtr init 安装 shell 集成后,新开一个 shell 即可捕获命令输出,无需额外启用。升级后重新运行 init 会原位更新旧 hook。要暂停捕获,用 sivtr config edit 设置 [pty_proxy] enabled = false 并重启 shell;安装和升级都会保留这个显式关闭设置。

同步并查看 archive:

sivtr sync
sivtr usage daily
sivtr stats

[!NOTE]
在 Windows 上,如果 sivtr init powershell 提示 profile 没有加载,执行一次 Set-ExecutionPolicy -Scope CurrentUser RemoteSigned 把当前用户的执行策略调高即可。sivtr 不会修改注册表——hook 只写在你的 PowerShell profile 里。

Agent 记忆(MCP)

这是主路径。sivtr mcp install 之后,Agent 通过结构化工具读写本地终端与 AI session 记忆:

| 工具 | 用途 |
| sivtr_search | 找最近失败、决策、命令 |
| sivtr_show | 打开命中背后的精确 record/part |
| sivtr_zoom | 展开前后上下文 |
| sivtr_filter | 缩小结果集 |
| sivtr_status | workspace / remote / origin 状态 |
| sivtr_usage | token 用量与模型成本 |
| sivtr_stats | archive 活动、质量与用量统计 |

可选 skill(教 Agent 何时调用这些工具):

npx skills add Ariestar/sivtr --skill sivtr-memory -g

然后直接说:

修复最近的终端报错。先用 sivtr。

Agent 应先搜本地证据、打开原文、改代码并验证——而不是让你粘贴日志。

需要自己查时,CLI 仍然可用:

sivtr s terminal --status failure --latest 5 --refs
sivtr s agent -m "TODO|decision|failed" --since today -f timeline

示例

更多完整玩法见 Playbooks / 玩法实例。

| 场景 | 你怎么用 | 演示 |
| 修复最近的终端报错 | 对 Agent 说(MCP):修复最近的终端报错。先用 sivtr。 | |
| 中断后继续 | 对 Agent 说:继续。先用 sivtr memory。 | |
| 给下一个 Agent 写交接 | 对 Agent 说:给下一个 Agent 写一份带证据的交接。 | |
| 生成最近工作时间线 | sivtr s agent --since today --sort oldest -f timelinesivtr s terminal --since today --sort oldest -f timeline | |
| 把结果保存成变量并继续处理 | sivtr s terminal -m "panic" --save failuressivtr filter @failures --status failure --refs | |

核心概念

| 概念 | 含义 |
| WorkRecord | 一个有用的工作事件:终端命令、Agent turn、工具调用或捕获输出块。 |
| WorkPart | Record 里的命令、输出、assistant 回复、tool output 或 error。只想拿有用片段而不是整个事件时用它。 |
| WorkRef | 某段精确记忆的稳定地址,例如 pi/<session>/3/p1。适合引用、复现和交接。 |
| WorkSet | @last、@failures 这类记忆变量背后的数据:一组有顺序的 refs,可以筛选、保存、切片、管道传递、导航、扩展和展示。 |

记忆变量:

| 句柄 | 用途 |
| @last | 最近一次搜索或投影结果。 |
| @name | 通过 --save name 或 sivtr var set name 创建的命名变量,例如 @failures。 |
| @name[1,3..5] | 从已保存变量中只取几项。 |
| @ | 使用管道里上一条命令传来的结果。 |

命令速查

完整命令、子命令与参数见 CLI Reference。核心命令速查:

安装与维护

sivtr setup # 一键配置:环境检测 + hooks + MCP + skill + smoke sivtr doctor --fix # 诊断并自动修复 binary/config/hooks/providers sivtr mcp install -p claude,cursor,codex # 指定宿主注册 MCP(不指定则检测已装的) sivtr update # 自更新到最新 release sivtr config show # 查看配置(init 生成默认文件 / edit 用 $EDITOR 打开)

日常使用

sivtr # TUI workspace 浏览器 sivtr run cargo test # 执行命令并捕获输出(run <COMMAND> [ARGS...]) sivtr s terminal --status failure --latest 5 --refs # 最近 5 个失败终端事件 sivtr s agent -m "panic|TODO" --since today -f timeline # 今天的 agent 决策时间线 sivtr show @last # 打开上次搜索结果内容 sivtr show desk:terminal/session_42/3 # 打开远端精确 ref sivtr copy # 复制最近命令块 sivtr copy out 2..4 # 第 2~4 块的输出 sivtr copy in --pick --regex panic # 交互挑选含 panic 的输入块 sivtr copy cmd --pick # 交互挑选命令本身 sivtr copy 3 --print # 第 3 块直接打印到 stdout sivtr usage daily --breakdown # 按天/provider/model 查看 token 与成本 sivtr usage session codex/<session-id> # 查看单个 session 的用量 sivtr export sessions --format markdown # 导出 archive 中的 session sivtr import sessions --provider chatgpt conversations.json

远程与协同

sivtr share # 交互选择 workspace 创建只读分享 sivtr share invite <share> --expires 10m # 签发单次 invite(stdout = bare key) sivtr remote add desk <invite-key> # 把队友的 share 挂成本机 remote desk sivtr group create <name> # 建组并贡献当前 workspace(如 create team) sivtr group invite <name> --expires 1d --max-uses 10 # 签发多设备 join 链接 sivtr group join <invite-key> # 加入并贡献自己的 workspacetext sivtr group members team # 组内成员与其贡献 sivtr s <peer>:terminal --status failure --latest 5 --refs # 读队友记忆像读本地

远程访问

两台装了 sivtr 的设备可以像读本地一样互相读取 workspace 的 session——用于协同开发:想看队友的终端输出或 AI 会话时,不用离开自己的机器。

ref 统一为 origin:body: text codex/4 # 本机当前 workspace docs:codex/4 # 本机另一个 workspace(按目录名) desk:terminal/... # remote add 得到的远端名 alice/sivtr:hermes/... # device/workspace 坐标

在持有 workspace 的设备上: bash sivtr share # 交互选择 workspace(Enter = 当前);只创建 share sivtr share invite <name> # 签发单次 invite(stdout = bare key) sivtr ws list # 查看本机 workspace origin 标签

在另一台设备上: bash sivtr remote add desk <invite> # 粘贴 sivtr share invite 输出的 bare key sivtr s desk:terminal --status failure --latest 5 --refs sivtr show desk:terminal/session_42/3 sivtr zoom desk:terminal/session_42/3 -C 2 sivtr nav desk:terminal/session_42/3 +1 --refs sivtr copy desk:terminal/session_42/3 --print

分享是 opt-in、只读,默认在数据离开本机前脱敏常见密钥。远程传输走加密 iroh;需要时会自动启动 daemon。未登记的 origin 会报错——用 sivtr remote add 登记 remote,或用 sivtr ws 查看本机 workspace。

群组(group)

两台以上设备要长期共享记忆时,与其各自 share 再挂载,不如组成一个群组:组内每台设备贡献自己的 workspace,成员之间自动同步、随时互相读取。
bash

组主(owner)在 A 机上:

sivtr group create <name> # 建组并贡献当前 workspace sivtr group invite <name> # 签发多设备 join 链接(stdout = bare key)

成员在 B 机上:

sivtr group join <invite> # 加入并贡献自己的 workspace sivtr group list # 所有组 sivtr group members <name> # 组内成员与其贡献 sivtr group sync <name> # 手动拉一次成员清单

日常使用:像本地一样读队友的记忆

sivtr s <peer>:terminal --status failure --latest 5 --refs

组由 owner 管理:rename 改名、remove <group> <peer> 踢人;owner 退出(leave)会解散整组。成员每次变更都自动同步给全组,无需手动刷新。

支持来源

| Source | 支持内容 |
| Terminal | Bash、Zsh、PowerShell、Nushell shell hooks;pipe 和 run capture。 |
| Codex | 本地 rollout/session JSONL files。 |
| Claude Code | 本地 transcript/session files。 |
| Cursor | 本地 Cursor agent transcript JSONL。 |
| OpenCode | 本地 session 数据库。 |
| OpenClaw | 本地 OpenClaw agent SQLite(+ legacy JSONL)。 |
| Hermes | 本地 Hermes state.db(sessions/ 下 JSONL 为 residual)。 |
| Grok | 本地 Grok agent sessions(~/.grok,可用 GROK_HOME)。 |
| Dsh | 本地 Dsh agent sessions。 |
| Gemini | 本地 Gemini CLI sessions。 |
| Goose | 本地 Goose agent sessions。 |
| Pi | 本地 Pi agent session logs。 |
| Qoder / Qoder-CN | 本地 Qoder 与 Qoder-CN agent sessions。 |
| Qwen | 本地 Qwen Code sessions。 |
| 更多 provider | Amp、Aider、Antigravity、Copilot、Forge、gptme、iFlow、Kimi、Kiro、OpenHands、Poolside、RooCode、Trae、Vibe、VSCode Copilot、Windsurf、Zed、Zencoder 等。 |
| Web 导入 | Claude.ai 与 ChatGPT 的 JSON/ZIP 导出,经 sivtr import sessions 写入 archive。 |

文档

- 文档:https://sivtr.pages.dev/
- 中文文档:https://sivtr.pages.dev/zh-cn/
- Playbooks:https://sivtr.pages.dev/zh-cn/playbooks/
- 命令行参考:docs-site/src/content/docs/reference/cli.md
- 记忆技能:skills/sivtr-memory

开发

环境、PR 约定与编码指南见 CONTRIBUTING.md。
bash
cargo fmt --all -- --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace

文档站: bash
cd docs-site
bun install --frozen-lockfile
bun run build

仓库结构: text crates/sivtr-core/ core model、provider parsers、archive、usage、search、config src/ CLI commands、TUI、shell hooks、hotkey integration docs-site/ Astro/Starlight documentation site editors/vscode/ AI session picker 的 VS Code bridge skills/ bundled agent skills
预览分享卡片长什么样 ↓Ariestar/sivtr
分享 · DeepSeek Harness Hub
Ariestar/sivtr

人类与智能体共用的统一智能体记忆工作空间

这是你的仓库?认领条目

回到顶部