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

dafang 2026-08-17 15:09 1

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


https://github.com/team-harness/threadshare


一条命令把会话变成链接


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 比较合适。


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


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 或者在这里说。

最新回复 (0)
    没有回复
* 帖子来源V2EX
返回