Skills Plugins MCP Prompt Model 导航 博客 资讯 我的中心
会话与消息 #deepseek#deepseek-harness#deepseek-harness-plugin#dsh#dsh-plugin#dsh-plugin-market

convoport

将 AI 网页对话保存至本地 JSON 和 SQLite,并导入为可继续的 Agent 会话。

mrelysium @mrelysium ⬇ 2 ★ 1 main

安装

dsh plugin --profile web add github:mrelysium/convoport
下载安装清单

需要可复现安装时,可在仓库后追加 #commit 固定提交。

将 AI 网页对话保存至本地 JSON 和 SQLite,并导入为可继续的 Agent 会话。

该插件未提供要点说明,请参考仓库 README。

deepseekdeepseek-harnessdeepseek-harness-plugindshdsh-plugindsh-plugin-market
  1. 安装并启动 DeepSeek Harness:npx @deepseek-ai/dsh web
  2. 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
  3. 用 dsh plugins list 确认已安装,必要时重启 Harness 生效

插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。

代码仓库github.com/mrelysium/convoport
许可证MIT
主要语言main
下载量2
GitHub 星标1
最近推送2026-08-23
收录日期2026-09-19
分类会话与消息

事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。

以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。

# convoport

**DeepSeek Harness plugin: auto-capture your DeepSeek web conversations, store them 100% locally, import selected messages into workspace sessions, and see how many tokens you've saved.**

[![npm version](https://img.shields.io/npm/v/convoport)](https://www.npmjs.com/package/convoport)
[![npm downloads](https://img.shields.io/npm/dm/convoport)](https://www.npmjs.com/package/convoport)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)

[中文说明](README.zh.md)

## What it does

| Capability | Description |
|---|---|
| **Auto-capture** | Companion MV3 browser extension watches `chat.deepseek.com`, pulls conversations via the official `history_messages` API, and syncs them to this plugin automatically. |
| **Local storage** | Data lives in `$DSH_HOME/capture/` (JSON, one file per conversation + `index.json`). **Zero upload** — and it's plain JSON, readable by any developer. |
| **Token savings stats** | Cumulative tokens saved / conversation count / today's captures / estimated savings (with the counting method stated on the page). |
| **Message-level import** | Don't import whole conversations — open a capture, **check individual messages** (quick-select "first 3 / last 3"), then import = **create a new Harness session** in the current workspace with those messages as its history. Continue chatting from there. |

## Architecture

```
Browser extension (MV3)                dsh plugin (this repo)
┌──────────────────────┐   POST   ┌──────────────────────────────┐
│ content script       │ ────────▶ │ lib/index.js  server half    │
│ · chat.deepseek.com  │ /capture │ · /capture/ingest    ingest   │
│ · official API pull  │          │ · /capture/sessions  list     │
│ · batched reporting  │          │ · /capture/messages  detail   │
└──────────────────────┘          │ · /capture/stats     stats    │
                                  │ · /capture/import    new sess │
                                  │ lib/client.js  Web sidebar    │
                                  │   sidebar.footer.action slot  │
                                  └──────────────────────────────┘
```

## Install

```bash
# 1. Install the plugin
dsh plugin --profile web add convoport
# Restart dsh web, refresh the browser.

# 2. Load the browser extension (extension/ ships inside the npm package;
#    also available from this repo)
#    Path: node_modules/convoport/extension/  (or repo extension/)
#    chrome://extensions → enable Developer mode → Load unpacked → pick extension/
#    Optional: click the extension icon → Options → confirm the backend URL
#    is http://127.0.0.1:3080 (the dsh web port).
```

> Note: Chrome deliberately blocks command-line loading of unpacked extensions;
> the manual "Load unpacked" step above is required (it's the standard flow).

## Usage

1. With the extension enabled, just chat on `chat.deepseek.com` — the extension syncs automatically.
2. A "⛁ Convoport" button appears at the bottom of the Web sidebar:
   - Stat cards: total tokens saved / conversations / today's captures / estimated savings
   - Capture list: title, message count, tokens, import status
3. Click a conversation → **message-level picker**: check the messages you want (quick-select "first 3 / last 3 / all / clear").
4. Click "Import selected → new session (N)" — a new session appears in the sidebar; its history is exactly the messages you picked. Continue chatting there.

A `/capture` command also shows the stats overview right in the chat.

## API

| Method | Path | Description |
|---|---|---|
| POST | `/capture/ingest` | Extension reports a conversation `{source,url,title,captured_at,messages[]}`; idempotent merge by url, dedup by message_id |
| GET | `/capture/sessions` | Capture asset list (with import status) |
| GET | `/capture/messages?id=` | Full messages of one capture |
| GET | `/capture/stats` | Stats |
| GET | `/capture/search?q=` | Full-text search (SQLite FTS5 + LIKE fallback) |
| POST | `/capture/import` | `{id, indexes[]}` → create a new Harness session, returns `sessionId` |
| DELETE | `/capture/sessions?id=` | Delete a capture |

## Token accounting

- Prefers DeepSeek's official `accumulated_token_count` (the extension writes per-message `token_count`).
- Falls back to the Harness-style heuristic: 4 chars/token + structural overhead (same as `dsh-token-meter`).
- The stats page/command output always states the method; estimated savings use a `$0.02 / 1k tokens` reference price.

## Development

```bash
# Local development (link install):
# in your profile's package.json dependencies, add:
#   "convoport": "link:"
# then run:
dsh plugin --profile web add convoport   # triggers reconcile
```

Server-side changes (`lib/index.js`) require restarting `dsh web`; client-side
(`lib/client.js`) is read live without cache — just refresh the browser.

### Tests

```bash
npm test              # all suites except extension-e2e
npm run test:e2e      # extension→plugin full chain (needs dsh web running)
npm run pack:check    # inspect what npm pack would publish
```

数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。