dsh-import-agents: bring pi / opencode / codex / claude-code history & agents into dsh #1362
Replies: 4 comments
|
If you think this should be part of dsh itself, join the proposal discussion: #1359 (asking maintainers whether to make it a first-party plugin / built-in). Feedback on scope, storage contract, or sources most welcome there. |
|
Update — v0.2.4: one-command install via the official The plugin now declares a dsh plugin --profile web add dsh-import-agentsRestart
Repo: https://github.com/Chang-Tong/dsh-import-agents · npm: |
|
Update — fixed in v0.2.7 🎉 Two fixes shipped in 0.2.7 (now live on npm):
Update with: |
|
Writing the imported sessions in dsh's own on-disk format, checksummed frames and all, is the part that makes this genuinely useful rather than a viewer — resuming an imported session with its full history as context is something an index cannot offer. Worth naming the fork in the road for anyone choosing, because we took the other branch and the trade is real. Importing converts: the history then exists twice, the copy is a snapshot as of the import, and fidelity depends on the mapping from each source format into dsh's. Re-running it later has to reconcile what changed on both sides. In exchange you get first-class sessions — resume, browse, everything dsh already does. Indexing in place does not convert: the source files stay the only copy, sessions that grow after the fact are re-read incrementally, and nothing has to be reconciled. In exchange there is no resumable dsh session at the end — you get search and recall over what happened, not a conversation to continue. Which one is right depends on whether the goal is continue that session or answer from what that session established. Both are legitimate; they are not substitutes. One thing you will hit either way, from maintaining parsers for twenty of these formats: they drift without notice. opencode moved its SQLite schema, Cursor keeps CLI transcripts and IDE chats in different stores, Codex changed its session directory layout. We ended up with synthetic fixtures per format and a conformance test that fails when a real file stops matching the fixture, which is the only reason drift gets noticed at parse time rather than as a silent gap in someone's history months later. Ours is https://github.com/vshulcz/deja-vu — the dsh side is |
Uh oh!
There was an error while loading. Please reload this page.
Sharing a plugin I built: dsh-import-agents — import sessions, chat history, and agents from pi (pi-coding-agent), opencode, codex, and claude-code into DeepSeek Harness (dsh).
Why
I work across several coding agents. dsh is where I want my history to live, but past conversations were scattered across pi / opencode / codex / claude-code JSONL files and an opencode SQLite DB. This plugin pulls them all in:
$DSH_AGENTS_HOME/skills, withmetadata.source/metadata.kindin the frontmatter.cwdinstead of piling up ungrouped.In the GUI
/import-all) and shows the result inline./import-pi,/import-opencode,/import-agents,/import-all,/attach-workspaces, with options like--limit N,--project <substr>,--since,--no-tools.Install
Restart
dsh web, refresh the page — the Sync button appears in the composer tool row. That's it.Links
dsh-import-agentsv0.2.1Verified against the real dsh backend (
list/load/prepareround-trip), idempotent re-imports with stable ids (pi-<uuid>,oc-<id>,codex-<id>,claude-<id>).Feedback welcome — especially if you also hop between multiple coding agents 😄
All reactions