Threadshare:把 Codex / Claude Code 会话变成只读链接,顺便索引本地历史找规律

发布于

dafang:

跑完的 Agent 会话就沉在本地了 —— 想把某次调试过程发给同事看只能截图;想回头查「这个报错上次怎么解决的」只能翻 `~/.claude/projects` 下面的 jsonl 。做了个工具解决这两件事,MIT ,已发 npm 。

[GitHub 链接](https://github.com/team-harness/threadshare)

## 一条命令把会话变成链接

```bash
npm i -g @team-harness/threadshare # 需要 Node 20+

threadshare sessions claude # 列最近 10 个会话,纯本地读文件不上传
threadshare share claude <session-id> # 出一条只读 Viewer 链接
```

`sessions` 会给出完整 session ID 、更新时间、项目、Git 分支和脱敏后的首条请求预览,不记得 ID 也能找到。Codex 、Claude Code 、Paseo agent 都支持。装完直接用默认托管服务,不用先部署服务端。

几个我自己用得多的 flag:

- `--dry-run` 走完全一样的导出、协议校验和 5 MiB 检查,但**不连网络**。加 `--report` 只多给聚合计数(字节数、entry 类型、消息角色、脱敏标记),不含正文和本地路径。预检失败直接非零退出,不会退化成正式发布。
- `--expires 7d` 控制有效期(1 分钟到 365 天)。
- `--revoke` 拿一次性撤销 token ,服务端只存它的 SHA-256 摘要,token 本身无法找回也不能放进 URL 。
- `--pick-start` 列出最近 10 个用户 turn 让你选起点,不想把整个会话都发出去的时候用。

还有个 `threadshare read <url> --format agent`,输出的紧凑格式保留全部 User/Assistant Markdown ,但工具调用只汇总名称、状态和相邻次数 —— tool 的输入输出、thinking 、todo 正文都不输出。用来把一个长会话喂给另一个 Agent 比较合适。

## 比分享更有意思的是本地索引

```bash
threadshare insights sync
```

把本地所有 Codex / Claude 会话建成索引,之后直接用自然语言问 Agent 就行,不用背命令或 schema —— 兼容的 Agent 会自己读 `threadshare insights spec --format json` 选查询。

我自己那个索引 3600+ session 、11000+ turn ,跑出来几个结果:

- `WebFetch` 9 次调用 9 次全失败 —— 平时失败了就换个方式绕过去,从来没意识到它一次都没成功过
- `Bash` 失败绝对数最高,但 13674 次调用里完成了 13345 次,跟上面完全是两类问题
- 返回的 50 条代表性失败链全部是 never-succeeded ,其中 34 条是 `Bash`
- 两个 13 周窗口对比,Turn 数少了 50.3%,但每个 Turn 的 Tool 调用多了 36.4%
- 最大分组约 28.4 亿 token ,其中约 98% 的 input token 来自缓存

第一条是最让我意外的,不索引一遍真看不出来。第四条 Turn 腰斩但每 Turn 工具调用涨三成,既可能是自动化更深了也可能是编排开销变大了,工具只给数据不替你下结论。

完整报告,每个问题都写了证据边界:[完整报告链接](https://github.com/team-harness/threadshare/blob/main/docs/insights-analysis-example.md)

另外 `insights sync --repository .` 注册仓库之后,**普通的 `git commit`** 成功输出就能把 Agent session 和 commit 关联起来,不用换特殊提交命令。完整 hash 算 direct evidence ,短 hash 只在仓库内唯一解析时才算 observed evidence 。之后可以问「这个 commit 关联哪些 session 」「这个 bug 修之前有哪些尝试和文件改动」「下一个 Agent 接手前还缺什么」。

设计上比较克制的一点:**每条 edge 都只是证据,不是作者身份或因果声明**。Agent 被要求报告 relation 、strength 、source 、facts 和 limitations ,candidate 和 contextual edge 只能当调查线索。共现不会被表述成因果。

## 几个边界

- Insights 完全本地不上传。但 deep query 能返回完整消息、工具输入输出、错误和文件路径,输出要当本机敏感数据看。
- Viewer 链接只读、不公开列出,但**没有访问鉴权** —— 拿到链接的人都能看,发之前自己过一眼内容。
- 导出会跳过隐藏记录、meta 记录和 sidechain 记录,不导出原始 system prompt 和 provider 配置。常见凭据字段尽力脱敏,但不保证识别全部。
- Insights 目前只有 macOS / Linux 的 arm64 、x64 原生包; Windows 上 share / read / export 这些核心命令可用。

## 自部署

不想用默认托管服务的话,Viewer / API / `threadshare-history@v1` 协议是同一套,Cloudflare Workers + R2 和阿里云函数计算 + OSS 都有现成脚本,然后 `THREADSHARE_URL` 指过去就行。协议不绑 provider 也不绑云平台。

欢迎试,有问题提 issue 或者在这里说。

---

原文链接:[点击查看](https://www.v2ex.com/t/1235004)

评论

暂无评论。

0.058836s