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

智能体会话中心 iamvicliu/AgentHub

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

把 Claude Code、Codex、Cursor 等 10 种 AI Agent 的本地会话汇到一处,统一搜索、阅读和管理(macOS,支持 Apple 芯片和 Intel 芯片)。

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add iamvicliu/AgentHub
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/22) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

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

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/31 19:58:36

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

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

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 80 处,展示前 56 条)
  • 执行外部命令固定命令
    apps/cli/src/cli.test.ts:28
    return execFileSync('node', [BIN, ...args], {
  • 执行外部命令固定命令
    apps/cli/src/cli.test.ts:38
    execFileSync('node', [BIN, ...args], {
  • 删除本地文件递归
    apps/cli/src/cli.test.ts:175
    return { dir, cleanup: () => rmSync(dir, { recursive: true, force: true }) }
  • 读取本地文件
    apps/cli/src/cli.test.ts:268
    expect(existsSync(BIN)).toBe(true)
  • 读取本地文件
    apps/cli/src/cli.test.ts:269
    const mode = statSync(BIN).mode
  • 执行外部命令固定命令
    apps/cli/src/cli.test.ts:290
    execFileSync('node', [BIN, 'nonexistent'], { encoding: 'utf8', stdio: 'pipe' }),
  • 删除本地文件递归
    apps/cli/src/cli.test.ts:318
    rmSync(dir, { recursive: true, force: true })
  • 写入本地文件
    apps/cli/src/cli.test.ts:371
    mkdirSync(join(currentProjectDir, 'packages', 'cli'), { recursive: true })
  • 写入本地文件
    apps/cli/src/cli.test.ts:372
    writeFileSync(join(currentProjectDir, 'package.json'), '{"name":"current-project"}')
  • 删除本地文件递归
    apps/cli/src/cli.test.ts:463
    rmSync(dir, { recursive: true, force: true })
  • 删除本地文件递归
    apps/cli/src/cli.test.ts:639
    rmSync(dir, { recursive: true, force: true })
  • 删除本地文件递归
    apps/cli/src/cli.test.ts:683
    rmSync(dir, { recursive: true, force: true })
  • 执行外部命令来自配置/变量
    apps/cli/src/clipboard.ts:11
    const result = spawnSync(command, args, {
  • 读取本地文件
    apps/cli/src/index.ts:22
    const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf8')) as {
  • 读取本地文件
    apps/cli/src/local-entrypoint.test.ts:10
    const packageJson = JSON.parse(readFileSync(resolve(repoRoot, 'package.json'), 'utf8')) as {
  • 读取本地文件
    apps/cli/src/local-entrypoint.test.ts:13
    const entrypoint = readFileSync(resolve(repoRoot, 'scripts/spool-local.mjs'), 'utf8')
  • 发起网络请求
    apps/web/src/lib/api.ts:38
    const r = await fetch(`/api/snapshots/${encodeURIComponent(id)}`, {
  • 发起网络请求
    apps/web/src/lib/api.ts:74
    const r = await fetch(`/api/profiles/${encodeURIComponent(handle)}`, {
  • 发起网络请求
    apps/web/src/lib/api.ts:113
    const r = await fetch('/api/me/profile', {
  • 发起网络请求
    apps/web/src/lib/api.ts:126
    const r = await fetch('/api/me/profile', {
  • 发起网络请求
    apps/web/src/lib/api.ts:143
    const r = await fetch('/api/me/avatar', {
  • 发起网络请求
    apps/web/src/lib/api.ts:156
    const r = await fetch('/api/me/avatar', {
  • 发起网络请求
    apps/web/src/lib/cli-auth.ts:30
    const r = await fetch(`/api/cli-auth/approve?code=${encodeURIComponent(code)}`, {
  • 发起网络请求
    apps/web/src/lib/cli-auth.ts:50
    const r = await fetch('/api/cli-auth/approve', {
  • 发起网络请求
    apps/web/src/lib/hub-api.ts:51
    const r = await fetch(`/api/hub/v1/sessions/${encodeURIComponent(sid)}`, {
  • 发起网络请求
    apps/web/src/lib/hub-api.ts:74
    const r = await fetch(`/api/hub/v1/sessions/${encodeURIComponent(sid)}/view`, {
  • 发起网络请求
    apps/web/src/lib/hub-api.ts:87
    const r = await fetch(`/api/hub/v1/sessions/${encodeURIComponent(sid)}/spool-file`, {
  • 发起网络请求
    apps/web/src/lib/hub-api.ts:111
    const r = await fetch(
  • 发起网络请求
    apps/web/src/server.ts:6
    fetch(request, env) {
  • 删除本地文件递归
    packages/core/src/session-management.test.ts:23
    dirs.splice(0).forEach((dir) => rmSync(dir, { recursive: true, force: true }))
  • 写入本地文件
    packages/core/src/session-management.test.ts:33
    mkdirSync(project, { recursive: true })
  • 写入本地文件
    packages/core/src/session-management.test.ts:64
    writeFileSync(
  • 读取本地文件
    packages/core/src/session-management.test.ts:114
    writeFileSync(path, `${readFileSync(path, 'utf8').trimEnd()}\n${line}\n`)
  • 写入本地文件
    packages/core/src/session-management.test.ts:114
    writeFileSync(path, `${readFileSync(path, 'utf8').trimEnd()}\n${line}\n`)
  • 写入本地文件
    packages/core/src/session-management.test.ts:150
    mkdirSync(trash)
  • 写入本地文件
    packages/core/src/session-management.test.ts:153
    renameSync(file, join(trash, String(index++))),
  • 写入本地文件
    packages/core/src/session-management.test.ts:170
    mkdirSync(join(project, uuid, 'subagents'), { recursive: true })
  • 读取本地文件
    packages/core/src/session-management.test.ts:172
    const fixture = readFileSync(
  • 删除本地文件递归
    packages/core/src/session-management.test.ts:239
    rmSync(join(config, 'sessions'), { recursive: true })
  • 读取本地文件
    packages/core/src/session-management.test.ts:247
    expect(readdirSync(project)).toEqual([`${uuid}.jsonl.bak`])
  • 读取本地文件
    packages/core/src/session-management.test.ts:248
    expect(readdirSync(join(config, 'file-history'))).toEqual(['other-session'])
  • 读取本地文件
    packages/core/src/session-management.test.ts:249
    expect(readdirSync(join(config, 'session-env'))).toEqual([])
  • 删除本地文件
    packages/core/src/session-management.test.ts:279
    rmSync(path)
  • 读取本地文件
    packages/core/src/session-management.ts:143
    if (lstatSync(path).isSymbolicLink() || !lstatSync(path).isDirectory())
  • 读取本地文件
    packages/core/src/session-management.ts:157
    if (!lstatSync(path).isFile() || lstatSync(path).isSymbolicLink())
  • 读取本地文件
    packages/core/src/session-management.ts:171
    for (const entry of readdirSync(root, { withFileTypes: true })) {
  • 读取本地文件
    packages/core/src/session-management.ts:199
    lstatSync(session.path)
  • 读取本地文件
    packages/core/src/session-management.ts:231
    const stat = lstatSync(path)
  • 读取本地文件
    packages/core/src/session-management.ts:260
    entries = readdirSync(join(base, 'sessions'))
  • 删除本地文件递归
    packages/session-view/src/build-output.test.ts:14
    rmSync(OUT_DIR, { recursive: true, force: true })
  • 读取本地文件
    packages/session-view/src/build-output.test.ts:23
    const stylesheet = readFileSync(join(OUT_DIR, 'styles.css'), 'utf8')
  • 读取本地文件
    packages/ui/src/build-output.test.ts:20
    expect(readFileSync(join(outDir, 'styles.css'), 'utf8')).toContain("@import './tokens.css'")
  • 读取本地文件
    packages/ui/src/build-output.test.ts:21
    expect(readFileSync(join(outDir, 'tokens.css'), 'utf8')).toContain('--sp-accent: #c85a00')
  • 删除本地文件递归
    packages/ui/src/build-output.test.ts:23
    rmSync(outDir, { recursive: true, force: true })
  • 读取本地文件
    packages/ui/src/css-contract.test.ts:7
    const tokens = readFileSync(resolve(cssRoot, 'tokens.css'), 'utf8')
  • 读取本地文件
    packages/ui/src/css-contract.test.ts:8
    const styles = readFileSync(resolve(cssRoot, 'styles.css'), 'utf8')
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

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

界面预览

4 张 · 点击查看大图

功能亮点

  • 汇聚多种AI会话
  • 统一搜索会话
  • 统一阅读管理

README

由 DeepSeek 最新模型翻译生成
简体中文 · English AgentHub 把 Claude Code、Codex、Cursor 等 10 种 AI 智能体的本地会话汇到一处,统一搜索、阅读和管理。 用了好几个 AI 工具以后,想找回「上周那次是怎么解决的」,往往得挨个打开各个工具翻各家的历史记录。AgentHub 把这些会话收进一个列表:一次搜索就能搜遍所有智能体,打开就能顺畅地读完整段对话。 - 只读、不打扰:读取各智能体写在本机的会话记录,不做 IDE、不管理 worktree,也不改你的代码。 - 全部留在本机:会话和索引都存在你的电脑上,不上传。 - macOS 桌面应用,Apple 芯片(M1/M2/M3/M4 等)和 Intel 芯片的 Mac 都能用,界面支持简体中文、繁體中文、English、日本語、한국어、Deutsch、Français。 AgentHub 会话列表:Claude Code、Codex CLI、Gemini CLI 的会话汇在一个列表里 能做什么 一个列表看全部会话 - 所有智能体的会话混在一个列表里,可以按智能体筛选,筛选按钮上直接显示每个智能体有多少会话。 - 按最近、最早、消息最多或标题排序;常看的会话可以置顶。 - 每行显示最后活动时间、消息条数和模型。 搜索 - 同时搜索标题和正文,命中的词会高亮。标题命中排在前面,也可以改成按时间排。
展开完整文档(README 剩余 1 节)
简体中文 · English

AgentHub

把 Claude Code、Codex、Cursor 等 10 种 AI 智能体的本地会话汇到一处,统一搜索、阅读和管理。

用了好几个 AI 工具以后,想找回「上周那次是怎么解决的」,往往得挨个打开各个工具翻各家的历史记录。AgentHub 把这些会话收进一个列表:一次搜索就能搜遍所有智能体,打开就能顺畅地读完整段对话。

- 只读、不打扰:读取各智能体写在本机的会话记录,不做 IDE、不管理 worktree,也不改你的代码。
- 全部留在本机:会话和索引都存在你的电脑上,不上传。
- macOS 桌面应用,Apple 芯片(M1/M2/M3/M4 等)和 Intel 芯片的 Mac 都能用,界面支持简体中文、繁體中文、English、日本語、한국어、Deutsch、Français。

AgentHub 会话列表:Claude Code、Codex CLI、Gemini CLI 的会话汇在一个列表里

能做什么

一个列表看全部会话

- 所有智能体的会话混在一个列表里,可以按智能体筛选,筛选按钮上直接显示每个智能体有多少会话。
- 按最近、最早、消息最多或标题排序;常看的会话可以置顶。
- 每行显示最后活动时间、消息条数和模型。

搜索

- 同时搜索标题和正文,命中的词会高亮。标题命中排在前面,也可以改成按时间排。
- 按 ⌘K 随时启动搜索。

搜索结果,命中的词高亮显示

阅读

- 清楚区分「我」和智能体的消息。
- 只看我的消息:一键隐藏智能体的回复,快速回顾自己问过什么。
- 消息目录:列出你在这个会话里的每一次提问,点一下就跳过去;目录宽度可以拖动调整。
- 会话内查找:⌘F 查找,⌘G / ⌘⇧G 跳到下一个 / 上一个;⌘ 返回列表,筛选和搜索都还在。
- 系统提示、子代理记录这类内部内容默认隐藏,需要排查问题时可以在设置里打开。

阅读会话,右侧是消息目录

管理

- 改名:给会话起个好记的名字。(Codex 和 Hermes 的会话改名会自动同步回原智能体;其他智能体只改 AgentHub 里的名字)
- 删除:确认后把原始记录移进废纸篓,同时清理索引,误删了可以从废纸篓找回。
- 在终端继续:Claude Code、Codex、Gemini CLI、OpenCode、Pi 的会话可以一键在终端里接着聊。终端工具可以自动识别,也可以自己指定。

自动同步

- 智能体写入新内容后,大约 2 秒就会出现在 AgentHub 里,不需要手动刷新;底部状态栏会显示「正在更新列表…」。
- 关掉窗口后 AgentHub 留在菜单栏继续同步;完全退出后,下次启动会自动补上这段时间的变化。
- 手动点击左下角的同步状态,可以立即做一次完整同步。

安全检查

在本机扫描会话里可能泄露的 API 密钥、密码、私钥和个人信息,方便在截图、复制或分享对话之前先检查一遍。扫描只在本机进行,但不能代替你自己的判断。

Raycast 扩展:不开窗口也能搜

配合 AgentHub 的 Raycast 扩展「AgentHub会话搜索」,在 Raycast 里就能直接搜遍所有智能体的会话:

- 输入关键词即时搜索,也可以按智能体筛选;留空显示最近的消息。
- 右侧预览消息正文,回车查看这条消息的前后文。
- 一键「在 AgentHub 查看」:打开 AgentHub 并定位、高亮这条消息。
- 还可以复制消息或会话 ID、在访达中显示原始记录;Codex 会话可以直接在 Codex 里打开。
- 只读访问 AgentHub 的本地索引,不改数据、不联网。

Raycast 扩展需要另外安装,源码和安装步骤见 [AgentHub会话搜索。

第三方 App 对接

agenthub://session/... 链接可以直接打开某个会话并高亮其中一条消息,方便从笔记、Raycast 等工具跳回来。

支持的智能体

设置里的数据源页面,列出 10 种智能体和各自的会话数

| 智能体 | 搜索和阅读 | 在终端继续 | 在 AgentHub 删除原始会话 | 改名同步回原智能体 | 用真实会话实测 |
| Claude Code | ✓ | ✓ | ✓(会话还在运行时会拒绝) | — | ✓ |
| Codex CLI | ✓ | ✓ | ✓ | ✓ | ✓ |
| Cursor | ✓ | — | — | — | ✓ |
| DeepSeek Harness | ✓ | — | — | — | ✓ |
| Gemini CLI | ✓ | ✓ | ✓ | — | ⚠️ 未实测 |
| Hermes | ✓ | — | ✓(永久删除,不进废纸篓) | ✓ | ✓ |
| OpenClaw | ✓ | — | — | — | ⚠️ 未实测 |
| OpenCode | ✓ | ✓ | — | — | ✓ |
| Pi | ✓ | ✓ | ✓ | — | ⚠️ 未实测 |
| WorkBuddy | ✓ | — | ✓ | — | ✓ |

- 不支持删除原始会话的 Agent,在 AgentHub 里点删除会先弹出说明,不会误删。
- 各 Agent 在自己应用里归档的会话,AgentHub 也不显示(WorkBuddy、DeepSeek Harness、Cursor、Codex)。

⚠️ 以下内容还没有用真实数据实测过,只用测试数据验证了读取格式,可能有问题,遇到了欢迎反馈:

- Gemini CLI、OpenClaw、Pi 三个 Agent 的全部功能(搜索阅读、在终端继续、删除)。
- OpenCode 和 Pi 用 agenthub:// 链接跳转到某条消息。
- Cursor 的命令行版(cursor-agent)的会话不支持,只支持 Cursor 编辑器里的对话。
- Intel 芯片版是在 Apple 芯片的 Mac 上交叉编译的,还没在 Intel 真机上运行过。

安装

1. 到 Releases 下载和你的 Mac 芯片对应的安装包:
- Apple 芯片(M1、M2、M3、M4 等):AgentHub-版本号-Apple-Silicon.dmg
- Intel 芯片:AgentHub-版本号-Intel.dmg

不确定是哪种芯片:点屏幕左上角的苹果菜单 → 「关于本机」,「芯片」一栏写 Apple M 开头的就是 Apple 芯片,「处理器」一栏写 Intel 的就是 Intel 芯片。

2. 打开 DMG,把 AgentHub 拖进“应用程序”文件夹。
3. 第一次打开时,macOS 会提示“无法验证开发者”或“已损坏,无法打开”。这是因为安装包没有经过 Apple 公证,不是文件真的坏了。任选一种方式放行:
- 打开“系统设置 → 隐私与安全性”,在页面下方找到 AgentHub,点“仍要打开”;
- 或者在“终端”里运行下面这行,然后重新打开:

xattr -dr com.apple.quarantine /Applications/AgentHub.app

也可以按下方“开发与打包”自己构建。

数据与隐私

- 所有数据都在本机:AgentHub 的索引和设置在 ~/.agenthub/,会话原文仍由各 Agent 自己保存。
- 改名默认只改 AgentHub 里的名字,不动原 Agent 的记录(Codex、Hermes 例外,会同步回去)。
- 删除会删掉原始记录,不只是在 AgentHub 里隐藏。删除前请先关掉正在写这个会话的 Agent。
- 某个 Agent 的数据目录暂时读不到时,AgentHub 不会清空它已有的索引。
- AgentHub 基于开源项目 Spool 开发,代码里仍保留了上游的更新检查和云端分享相关代码(界面上已经没有入口),所以它不是完全不联网的应用。

已知限制

- 打开链接时用的是已建好的索引;会话原文刚改过的话,先同步一次再打开。
- 会话原文被编辑、截断或重排后,指向其中某条消息的旧链接可能失效;AgentHub 会明确报错,不会跳到别的消息。
- AgentHub 完全退出时,Raycast 扩展的新搜索可能需要先打开 AgentHub;已经搜出来的结果可以直接跳转。

以下是技术说明,普通使用可以跳过。

技术说明

各 Agent 的数据位置

| Agent | 默认读取位置 | 可用的环境变量 |
| Claude Code | ~/.claude/projects/<项目>/<id>.jsonl | SPOOL_CLAUDE_DIR |
| Codex CLI | ~/.codex/sessions//rollout-.jsonl(及 .jsonl.zst) | SPOOL_CODEX_DIR |
| Cursor | ~/.cursor/projects/<工作区>/agent-transcripts/<id>/<id>.jsonl,标题等取自 globalStorage/state.vscdb | CURSOR_DATA_DIR、SPOOL_CURSOR_DIR、SPOOL_CURSOR_STATE_DB |
| DeepSeek Harness | ~/.dsh/sessions/<项目>/<id>/session.v<N>.jsonl[.zstd] | DSH_HOME、SPOOL_DSH_DIR |
| Gemini CLI | ~/.gemini/tmp//chats/session-.json[l] | GEMINI_CLI_HOME、SPOOL_GEMINI_DIR |
| Hermes | ~/.hermes/state.db、~/.hermes/sessions/.jsonl | HERMES_HOME、SPOOL_HERMES_DIR |
| OpenClaw | ~/.openclaw/agents//agent/openclaw-agent.sqlite、/sessions/.jsonl | OPENCLAW_STATE_DIR、SPOOL_OPENCLAW_DIR |
| OpenCode | ~/.local/share/opencode/opencode.db | OPENCODE_DATA_DIR、SPOOL_OPENCODE_DIR |
| Pi | ~/.pi/agent/sessions/ | SPOOL_PI_DIR |
| WorkBuddy | ~/.workbuddy/projects/<项目>/<id>.jsonl | WORKBUDDY_CONFIG_DIR、SPOOL_WORKBUDDY_DIR |

- 数据库类来源(Hermes、OpenClaw、OpenCode、Cursor 状态库)一律只读打开。
- 子代理的会话(Claude、WorkBuddy、DeepSeek Harness)不单独列出。
- Codex:原始会话和续接分段合并成一个会话,列表与 Codex App 一致(以 Codex 自己的会话表为准)。Codex 开启 features.local_thread_store_compression 后,会把约 7 天未写入的会话压缩成 .jsonl.zst,AgentHub 两种格式都能读。
- WorkBuddy:换过账号时旧账号的历史仍会收录,并在列表里标出账号;只有一个账号时不显示标记。
- DeepSeek Harness:压缩转写由多个 zstd 帧拼接而成,逐帧解压。
- Cursor:读取的是 Cursor 编辑器的数据;cursor-agent 命令行版的 ~/.cursor/chats/*/store.db 暂未接入。

数据位置与标识

- 索引数据库 ~/.agenthub/agenthub.db,设置、日志、备份也在 ~/.agenthub/;开发模式用 ~/.agenthub-dev/,可用 SPOOL_DATA_DIR 指定。
- 应用配置目录 ~/Library/Application Support/AgentHub。
- 应用标识 com.vicliu.agenthub,链接协议 agenthub://,链接格式见 本地会话链接。

开发与打包

使用仓库声明的 pnpm 版本:

pnpm install --frozen-lockfile
pnpm run rebuild:native:node
pnpm --filter @spool/app typecheck
pnpm exec vp test run apps/app/src packages/core/src packages/session-view/src --no-file-parallelism
pnpm run package:mac

- 目标平台为 macOS,Apple 芯片用 pnpm run package:mac,Intel 芯片用 pnpm run package:mac:x64。签名和公证需要你自己的开发者证书。
- better-sqlite3 必须匹配运行时;切到 Electron 开发时运行 pnpm run rebuild:native:electron。
- 不要使用上游的 scripts/release.sh:它面向上游的 npm 包发布,AgentHub 只发布桌面应用。

代码结构

apps/
app/ AgentHub 桌面应用(Electron) cli/ 上游的命令行工具 web/ 上游的网站与在线阅读器 backend/ 上游的云端服务 packages/ core/ 本地会话读取、索引(SQLite)与全文搜索 redact/ 敏感信息检测 session-kit/ 会话数据模型与解析 session-view/ 会话渲染组件 share-kit/ 上游的分享与导出

致谢

AgentHub 基于 Spool v0.6.3 开发,感谢上游作者的开源实现。AgentHub 保留原作者署名和许可证,与 Spool 官方无关联,也不是 Spool 的新版本。
问题和建议请提交到 Issues。

License

MIT

Trademark

「Spool」和 Spool 标志是 TypeSafe Limited 的商标。MIT 许可证只覆盖源代码,不授予使用 Spool 名称或标志的许可。详见 TRADEMARK.md。
预览分享卡片长什么样 ↓iamvicliu/AgentHub
分享 · DeepSeek Harness Hub
iamvicliu/AgentHub

把 Claude Code、Codex、Cursor 等 10 种 AI Agent 的本地会话汇到一处,统一搜索、阅读和管理(macOS,支持 Apple 芯片和 Intel 芯片)。

这是你的仓库?认领条目

回到顶部