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
Maintainers
Readme
dsh-chat-sync
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 |
工作原理
自动导入流程
- 扫描:定期扫描三个数据源目录,发现新的对话文件
- 匹配工作区:根据源对话的
cwd(工作目录)查找匹配的 DSH 工作区- 匹配到 → 直接使用
- 未匹配 → 自动创建新工作区目录
- 创建会话:通过 DSH API 创建新会话,挂载到对应工作区
- 命名:会话标题格式为
[来源] 原始标题(如[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
