爱意满满的作品展示区。
dafang

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

  •  
  •   dafang ·
    dafang · 57 mins ago · 52 views

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

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5606 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 08:07 · PVG 16:07 · LAX 01:07 · JFK 04:07
    ♥ Do have faith in what you're doing.