deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:wpc0323/deepseek-web-import
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
将 chat.deepseek.com 网页端的历史对话导入为 DeepSeek Harness (DSH) 的正式会话:导入后会话出现在左侧工作区列表中,可以打开、查看完整历史,并选择模型继续对话。
本项目是 DSH 的动态 Cordis 插件(Host + Client 双半部),不是 npm 包。加载方式见下文「安装」。
userToken 后一键拉取对话目录(仅显示标题 + 日期,不展开正文)cannot prepare session while it is live)~/.dsh/sessions/<工作区>/ 下,重启 DSH 后仍在userToken 中的 value 字段(兼容 {"value":"...","__version":"0"} 格式)导入对话后请刷新网页(F5),左侧工作区才会立即显示新导入的会话。
若不刷新,新会话可能要到下次会话列表刷新/重连后才出现。
这是一个 动态 Cordis 插件(运行在当前 DSH 进程内,定义+激活即可用)。安装步骤:
打开一个 DSH cordis 会话,把下面这段提示词发给 agent:
请读取本仓库根目录的
host.js和client.js,分别作为code.host和code.client,调用cordis_define(plugin.kind: "new",idPrefix: "dswi")定义插件,然后cordis_run激活它。如果有 Client 审批请求,请批准。
批准后,设置 → 左侧会出现 「DeepSeek 对话导入」 页面。
说明:动态插件在 DSH 进程重启后需要重新加载(重复上面一步即可)。
userToken → 保存。F12 → Application → Local Storage → 复制 userToken 的值。value 字段,直接复制整段即可。现象:重启 DSH 后某个会话报
Error: corrupt session log: seq gap in committed region at line N (expected X, got Y)
(历史加载失败 / resume 失败 / 无法选模型,都是同一个根因。)
根因:DSH 的 JSONL 会话日志要求事件 seq 从 0 连续递增。触发条件需要两条同时成立:
session/end-seed 由活动会话(live session)作为单独一次 append 写入日志(DSH 自身的 agent 循环在会话收尾时会这么做);这与本插件无关,而且插件的写法恰好避开了触发:插件导入的会话把标题 + 全部消息 + session/end-seed 作为同一批 sessionPersistence.append 一次性写入持久层,不经过活动会话的单独 append,因此「导入 + 重启」不会触发该 bug(已实测:所有导入的会话体检全部 OK,损坏的只有 DSH 自己创建的活动会话)。
⚠️ 注意:若你打开导入的会话继续对话,后续写入改由 DSH 的活动会话机制负责,就回到与普通会话相同的 DSH bug 风险——这仍是 DSH 自身问题(普通会话同样可能中招),与本插件无关。
修复:把重复的那一行(与上一条 seq 相同的事件)删掉即可。删除前先备份
~/.dsh/sessions/**/session.jsonl.zstd;删除后要保证 seq 连续,并避免破坏
agent/inbox/spliced 的插入/移除配对。本仓库不附带修复脚本(仅保留插件本体)。
GET /api/v0/chat_session/fetch_page?count=100GET /api/v0/chat/history_messages?chat_session_id=<uuid>turn/start → user/message → step/start → assistant/message → step/end → turn/end,surface 事件带 surfaceOp: "append",含 session/title 与 session/end-seed),通过 sessionPersistence.create + append 只写持久化,再 workspace.attachSession 挂载到所选工作区 —— 不进入 live store,因此可以被正常打开/对话。web.fetch 无法携带自定义 Header,插件通过 subprocess 起 Node 发送带 Authorization: Bearer 的请求;请求启用了 rejectUnauthorized: false(本机 TLS 证书校验失败的环境限制)。credentials 服务($DSH_HOME/.credentials.yaml),不写入会话/设置文档。userToken 方式。fetch_page 响应仅含 chat_sessions + has_more,无可用游标字段(cursor/lte_cursor 参数均不生效),超过 100 条时只返回最新 100 条。userToken 有时效(约数小时~数天),失效后重新复制保存即可。userToken。CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。