npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

dsh-chat-sync

v0.3.4

Published

DSH plugin: auto-import local AI CLI conversations (Claude Code, Codex CLI, Cursor Agent) as real DSH sessions

Readme

dsh-chat-sync

GitHub npm

DSH(DeepSeek Harness)插件:把本地 Claude Code / Codex CLI / Cursor Agent 的对话自动导入为 DSH 会话,在侧边栏统一查看。

功能

| 能力 | 说明 | | --- | --- | | 自动导入 | 发现新对话自动创建 DSH 会话 | | 工作区匹配 | 按源对话的项目路径自动匹配或创建 DSH 工作区 | | 三源分组 | 侧边栏按 Claude Code / Codex CLI / Cursor Agent 分组显示 | | 动态同步 | fs.watch 递归监听 + SSE 推送,列表自动刷新 | | 隐私围栏 | 所有 API 仅接受 loopback 请求 |

数据源

| 源 | 路径 | | --- | --- | | Claude Code | ~/.claude/projects/<项目>/<sessionId>.jsonl | | Codex CLI | ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl | | Cursor Agent | ~/.cursor/projects/<项目>/agent-transcripts/<uuid>/<uuid>.jsonl |

工作原理

自动导入流程

  1. 扫描:定期扫描三个数据源目录,发现新的对话文件
  2. 匹配工作区:根据源对话的 cwd(工作目录)查找匹配的 DSH 工作区
    • 匹配到 → 直接使用
    • 未匹配 → 自动创建新工作区目录
  3. 创建会话:通过 DSH API 创建新会话,挂载到对应工作区
  4. 命名:会话标题格式为 [来源] 原始标题(如 [Claude] 修复登录bug

状态追踪

已导入的会话记录在 .chat-sync/imported.json,避免重复导入。只导入最近 24 小时内有更新的会话。

安装

# 使用 dsh plugin 安装
dsh plugin --profile web add dsh-chat-sync

配置

在 profile 的 cordis.patch.yml~/.dsh/profiles/web/cordis.patch.yml)按 id 覆盖:

- id: chat-sync
  config:
    enabled: true
    # 浏览功能
    watch: true                    # 动态同步
    syncToWorkspace: true          # 文件复制到 .chat-sync 目录
    # 自动导入
    autoImport: true               # 自动导入为 DSH 会话
    autoImportIntervalMs: 60000    # 扫描间隔(毫秒)
    # 高级
    maxSessions: 500               # 会话列表上限
    maxMessageChars: 8000          # 单条消息截断长度
    recentLiveMs: 180000           # 「活跃」判定窗口

配置项说明

| 配置项 | 默认值 | 说明 | | --- | --- | --- | | enabled | true | 插件总开关 | | watch | true | 文件监听 + SSE 推送 | | syncToWorkspace | true | 文件复制到 .chat-sync 目录 | | autoImport | true | 自动导入为 DSH 会话 | | autoImportIntervalMs | 60000 | 自动导入扫描间隔 |

API(均 loopback-only)

| 路由 | 说明 | | --- | --- | | GET /api/dsh-chat-sync/status | 各源可用性 / 会话数 / 同步模式 | | GET /api/dsh-chat-sync/sessions | 过滤后的会话列表 | | GET /api/dsh-chat-sync/session?id=<source:uuid> | 消息流(增量) | | GET /api/dsh-chat-sync/events | SSE 实时更新 |

开发与测试

node --check lib/index.js lib/sources.js lib/routes.js lib/client.js lib/auto-import.js
node tests/smoke.mjs         # 端到端测试
node tests/client-load.mjs   # 客户端加载测试

License

MIT