@yejiming/dsh-data-agent 0.0.5 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +127 -128
- package/README.md +123 -127
- package/lib/client.js +42071 -114
- package/lib/client.js.map +1 -1
- package/lib/command.js +875 -0
- package/lib/{defaults-Bac6QvNt.js → connections-DeauhaZi.js} +427 -19
- package/lib/defaults-DP4RyRh1.js +21 -0
- package/lib/index.js +185 -51
- package/lib/routes.js +94 -170
- package/lib/tool.js +751 -50
- package/lib/types/analysis.d.ts +1071 -0
- package/lib/types/client/AnalysisChart.d.ts +26 -0
- package/lib/types/client/AnalysisDashboard.d.ts +30 -0
- package/lib/types/client/analysis-charts.d.ts +40 -0
- package/lib/types/client/analysis-view-model.d.ts +44 -0
- package/lib/types/client/locales.d.ts +48 -0
- package/lib/types/client/persistence.d.ts +6 -1
- package/lib/types/clients.d.ts +10 -9
- package/lib/types/command.d.ts +41 -0
- package/lib/types/connections.d.ts +115 -40
- package/lib/types/index.d.ts +67 -47
- package/lib/types/routes.d.ts +25 -77
- package/lib/types/sql.d.ts +1 -1
- package/lib/types/storage.d.ts +70 -0
- package/lib/types/structured-read.d.ts +50 -0
- package/lib/types/tool.d.ts +25 -20
- package/lib/types/tui-connection-form.d.ts +98 -0
- package/package.json +61 -4
- package/preset/data-agent/agent.cordis.yml +34 -18
- package/preset/data-agent/preset.yml +2 -2
- package/lib/query-CmhTFklw.js +0 -86
package/README.en.md
CHANGED
|
@@ -1,196 +1,195 @@
|
|
|
1
|
-
# Data Agent ·
|
|
1
|
+
# DSH Data Agent · Analyze Data Through Conversation
|
|
2
2
|
|
|
3
3
|
[中文](README.md) | **English**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
<p align="center">
|
|
6
|
+
<img src="assets/dsh-data-agent-banner.png" alt="dsh-data-agent hero banner" width="100%">
|
|
7
|
+
</p>
|
|
8
|
+
<p align="center">
|
|
9
|
+
<img src="https://img.shields.io/github/v/release/omdsh-dev/dsh-data-agent?style=flat-square" alt="Version">
|
|
10
|
+
|
|
11
|
+
<img src="https://img.shields.io/github/stars/omdsh-dev/dsh-data-agent?style=flat-square" alt="Stars">
|
|
12
|
+
|
|
13
|
+
<img src="https://img.shields.io/npm/v/@yejiming%2Fdsh-data-agent?style=flat-square&label=npm" alt="npm">
|
|
14
|
+
|
|
15
|
+
<img src="https://img.shields.io/badge/license-MIT-blue?style=flat-square" alt="License">
|
|
16
|
+
</p>
|
|
17
|
+
<p align="center">
|
|
18
|
+
<strong>Connect DeepSeek Harness to databases and turn conversations into data analysis and business insights</strong><br>
|
|
19
|
+
<em>Natural-language queries · Automatic SQL execution · Iterative analysis · Web UI · dsh-tui · Read-only protection</em>
|
|
20
|
+
</p>
|
|
6
21
|
|
|
7
|
-
|
|
22
|
+
<p align="center">
|
|
8
23
|
|
|
9
|
-
|
|
24
|
+
[Project Overview](#project-overview) · [Features](#features) · [Quick Install](#quick-install) · [Web UI](#using-data-agent-in-the-web-ui) · [dsh-tui](#using-data-agent-in-dsh-tui) · [Security](#security)
|
|
10
25
|
|
|
11
|
-
|
|
26
|
+
</p>
|
|
27
|
+
|
|
28
|
+
## Project Overview
|
|
29
|
+
|
|
30
|
+
dsh-data-agent is a data analysis plugin for DeepSeek Harness (DSH). Connect a database and ask a business question; DSH inspects schemas, writes and runs SQL, continues the analysis from real results, and returns clear conclusions and business insights. The plugin supports both the Web UI and dsh-tui without modifying the DSH source code.
|
|
12
31
|
|
|
13
32
|
## Features
|
|
14
33
|
|
|
15
|
-
- **
|
|
34
|
+
- **Analyze data through conversation**: Describe your goal in natural language. DSH understands the question, breaks it into analysis steps, queries real data, and organizes the conclusions. You can keep asking follow-up questions to explore the same context in greater depth.
|
|
35
|
+
- **Discover business insights automatically**: Data Agent goes beyond returning query results. It helps compare trends, locate anomalies, identify valuable customers or products, and turn the data into explanations that support decisions.
|
|
36
|
+
- **Web analysis reports (render-analysis)**: In the Web UI the agent can choose, within an ordinary tool call, to produce a single chart or a Dashboard-style report (metric/line/bar/pie/scatter/table views) with an inline preview and a “View analysis” Modal. Whether to chart is the agent's decision — schema exploration, single scalars, and queries without visual value are never forced into charts.
|
|
37
|
+
- **Works with both Web UI and dsh-tui**: For a visual workflow, we recommend [zhu1090093659/dsh-web-ui](https://github.com/zhu1090093659/dsh-web-ui), where you can connect databases, browse schemas, and inspect results in the browser. For a keyboard-first workflow, we recommend [ccch1mneyyy/dsh-TUI](https://github.com/ccch1mneyyy/dsh-TUI), where you can use the same Data Mode, connect through `/database`, and move directly into conversational analysis. Both interfaces provide the core Data Agent experience.
|
|
38
|
+
- **Connect common business databases**: Supports MySQL, PostgreSQL, SQLite, Oracle, Hive, and Impala across application databases, analytics systems, local data files, and data warehouses.
|
|
39
|
+
- **Let DSH complete the analysis loop**: DSH inspects table structures, writes SQL, runs the query, and adjusts its approach based on errors or returned data instead of stopping at an unverified SQL draft.
|
|
40
|
+
- **Stay focused with Data Mode**: The session uses DSH's native `str_replace_editor` for files and keeps `sql-query`, `sql-write`, and `sql-cmd`; Web additionally provides `render-analysis`. Host or community tools such as `describe_image` and `ssh_*` do not leak into Data Mode.
|
|
41
|
+
- **Work safely with real data**: Use read-only mode and a read-only database account when appropriate. TUI passwords are masked and are never restored as part of a form draft. You decide whether the session may modify data.
|
|
16
42
|
|
|
17
|
-
|
|
43
|
+

|
|
18
44
|
|
|
19
|
-
|
|
20
|
-
- **Database tools**: `sql-query` runs read-only SQL and returns structured `{ columns, rows, affectedRows, elapsedMs }`; `sql-write` runs one write/management SQL per call with explicit autocommit semantics; `sqlcmd` keeps the original raw terminal output. All three run through the database clients (mysql / psql / sqlite3 / sqlplus / beeline / impala-shell); no shell layer (argv arrays + SQL via stdin), timeouts terminate the process tree, output is bounded and truncated, and one call carries at most one SQL statement.
|
|
21
|
-
- **Data Agent preset**: choose "Data Agent" when creating a session — the tool surface is `sql-query`/`sql-write`/`sqlcmd`/`read`/`write`/`edit`, and every other project tool (bash, grep, skill, todo, goal, web, subagent, …) is simply absent, i.e. disabled; non-Data-Agent sessions render no workbench at all.
|
|
45
|
+
The Web UI also includes an embedded database workbench for browsing schemas, inspecting columns, and running an occasional SQL statement. Once the conversation starts, the workbench moves to the sidebar so it does not interrupt the analysis.
|
|
22
46
|
|
|
23
|
-
|
|
47
|
+

|
|
24
48
|
|
|
25
|
-
|
|
49
|
+
Choose “Data Mode” when creating a session, and DSH will use the data-analysis workflow for everything that follows.
|
|
50
|
+
|
|
51
|
+

|
|
26
52
|
|
|
27
53
|
## Quick Install
|
|
28
54
|
|
|
29
|
-
|
|
30
|
-
`lib/` is committed, and no `prepare`/`prepack` scripts are declared).
|
|
55
|
+
The Web UI and dsh-tui use separate DSH profiles. Install only the profile for the interface you use, or run both commands if you use both interfaces.
|
|
31
56
|
|
|
32
57
|
### Method 1: npm (recommended)
|
|
33
58
|
|
|
34
59
|
```sh
|
|
35
|
-
# Install from npm (initializes the profile on first use)
|
|
36
60
|
dsh plugin --profile web add @yejiming/dsh-data-agent
|
|
61
|
+
dsh plugin --profile dsh-tui add @yejiming/dsh-data-agent
|
|
37
62
|
```
|
|
38
63
|
|
|
39
|
-
### Method 2: GitHub
|
|
64
|
+
### Method 2: GitHub
|
|
40
65
|
|
|
41
66
|
```sh
|
|
42
|
-
# Install from the GitHub source (lib/ is committed, no build at install time)
|
|
43
67
|
dsh plugin --profile web add github:omdsh-dev/dsh-data-agent
|
|
68
|
+
dsh plugin --profile dsh-tui add github:omdsh-dev/dsh-data-agent
|
|
44
69
|
```
|
|
45
70
|
|
|
46
|
-
|
|
71
|
+
The plugin installs the Data Mode preset automatically. No local build is required.
|
|
47
72
|
|
|
48
|
-
|
|
49
|
-
dsh --profile web --dump-config # the data-agent layer should appear
|
|
50
|
-
ls $DSH_HOME/.agent-presets/data-agent/ # agent.cordis.yml + preset.yml (auto-installed)
|
|
51
|
-
```
|
|
73
|
+
## Using Data Agent in the Web UI
|
|
52
74
|
|
|
53
|
-
Start the Web
|
|
75
|
+
Start the Web UI:
|
|
54
76
|
|
|
55
77
|
```sh
|
|
56
78
|
dsh --profile web
|
|
57
79
|
```
|
|
58
80
|
|
|
59
|
-
|
|
81
|
+
Then:
|
|
82
|
+
|
|
83
|
+
1. Create a session and choose “Data Mode.”
|
|
84
|
+
2. Enter your connection details in the database workbench.
|
|
85
|
+
3. Once connected, ask an analysis question directly in the conversation.
|
|
86
|
+
4. Follow up on the first result and ask DSH to narrow the scope, compare dimensions, or summarize the conclusions.
|
|
87
|
+
|
|
88
|
+
For example, ask: “Analyze order changes over the last 30 days, identify the regions and products with the largest revenue decline, and explain the main causes.” DSH will inspect the relevant tables, generate and run the queries, and complete the analysis from real results.
|
|
60
89
|
|
|
61
|
-
|
|
90
|
+
### Web analysis reports
|
|
91
|
+
|
|
92
|
+
In the Web UI, Data Mode also provides the render-analysis tool: the agent first explores and verifies facts with sql-query, then decides for itself whether a visualization helps. When it does, one tool call produces one versioned analysis report:
|
|
93
|
+
|
|
94
|
+
- A report holds 1-6 read-only datasets and 1-8 views (metric, line, bar, pie, scatter, table); multiple views may reuse one dataset, and aggregation or Top N is written in the SQL itself;
|
|
95
|
+
- Simple questions produce a single main chart (inline preview in the result row); complex questions produce a compact summary plus a “View analysis” button;
|
|
96
|
+
- “View analysis” opens a large Modal with every view of that report: a compact metric band, a full-width main chart, a two-column secondary grid, and a detail table — responsive across light/dark themes and narrow screens;
|
|
97
|
+
- The complete report snapshot is persisted with the session log: refreshing or replaying history never re-queries the database and creates no extra browser storage;
|
|
98
|
+
- The tool is Web-only: the dsh-tui tool surface is unchanged and loads no chart or browser dependencies.
|
|
99
|
+
|
|
100
|
+
## Using Data Agent in dsh-tui
|
|
101
|
+
|
|
102
|
+
Start the terminal interface:
|
|
103
|
+
|
|
104
|
+
```sh
|
|
105
|
+
dsh --profile dsh-tui
|
|
106
|
+
```
|
|
62
107
|
|
|
63
|
-
|
|
108
|
+
In a blank session, switch to Data Mode and connect a database:
|
|
64
109
|
|
|
65
110
|
```text
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
│ Database workbench (input.dock) │ fetch │ @yejiming/dsh-data-agent (host row)│
|
|
69
|
-
│ · connection config (6 types) │ ─────▶ │ · /plugins/data-agent/* routes │
|
|
70
|
-
│ · schema explorer + SQL box │ │ · dataAgentConnections store │
|
|
71
|
-
│ · hero stacked / active rail │ │ · preset self-install → $DSH_HOME/ │
|
|
72
|
-
└─────────────────────────────┘ └──────────────┬───────────────────────┘
|
|
73
|
-
│ same process
|
|
74
|
-
data-agent session (full agent loop reuse) ▼
|
|
75
|
-
┌──────────────────────────────────────────────────────────────────────────┐
|
|
76
|
-
│ agent.cordis.yml (preset layer, only 3 rows) │
|
|
77
|
-
│ · persona → data-engineer system prompt │
|
|
78
|
-
│ · dsh-tool-fs → read / write / edit (project built-ins) │
|
|
79
|
-
│ · dsh-data-agent/tool → sql-query / sql-write / sqlcmd (tool half) │
|
|
80
|
-
└──────────────────────────────────────────────────────────────────────────┘
|
|
111
|
+
/preset data-agent
|
|
112
|
+
/database connect
|
|
81
113
|
```
|
|
82
114
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
The tool half only consumes host services (`tools`, `subprocess`, `dataAgentConnections`) and provides none, so the preset guard needs no `isolate` realm.
|
|
93
|
-
|
|
94
|
-
## Configuration
|
|
95
|
-
|
|
96
|
-
Every field has a loader default; there are no library-level defaults. Host row `data-agent`:
|
|
97
|
-
|
|
98
|
-
| Key | Meaning |
|
|
99
|
-
|---|---|
|
|
100
|
-
| `presetId` | Preset directory name installed under `$DSH_HOME/.agent-presets/` (default `data-agent`) |
|
|
101
|
-
| `installPreset` | Whether to self-install the preset on startup (default true; existing directories are skipped, keeping user edits) |
|
|
102
|
-
| `connectTimeoutMs` | End-to-end deadline for one /connect connectivity check (default 10000 ms) |
|
|
103
|
-
| `introspectMaxTables` | Cap on the table list returned by /connect and /status (default 500) |
|
|
104
|
-
| `queryTimeoutMs` | Deadline for one database-tool query (default 30000 ms) |
|
|
105
|
-
| `maxResultChars` | In-memory cap on captured database-tool output, per stream (default 20000 chars) |
|
|
106
|
-
| `clients` | Per-type CLI client overrides: `{ command?, args? }` for keys `mysql` / `postgres` / `sqlite` / `oracle` / `hive` / `impala` (built-in defaults mysql/psql/sqlite3/sqlplus/beeline/impala-shell) |
|
|
107
|
-
| `connections` | Config-seeded connections keyed by session id (`'*'` = wildcard default for any session without its own; headless/keyless runs and deployments pinning one database). **No password field** — passwords only enter memory via the /connect route |
|
|
108
|
-
|
|
109
|
-
The `tool-sqlcmd` row (inside the data-agent preset) additionally has `maxRows` (default 100, enforced: an unbounded SELECT gets a top-level LIMIT and structured parsing truncates as a second guard); `queryTimeoutMs` / `maxResultChars` / `clients` share the host row's names and defaults.
|
|
110
|
-
|
|
111
|
-
The `data-agent-routes` row has its own config: `connectTimeoutMs` / `introspectMaxTables` / `maxResultChars` mirror the main row; plus `queryTimeoutMs` (for /query and metadata queries, default 30000) and `maxQueryChars` (single-SQL length cap for /query, default 65536).
|
|
112
|
-
|
|
113
|
-
```yaml
|
|
114
|
-
# Example override in cordis.patch.yml or a profile layer
|
|
115
|
-
- id: data-agent
|
|
116
|
-
name: '@yejiming/dsh-data-agent'
|
|
117
|
-
config:
|
|
118
|
-
clients:
|
|
119
|
-
mysql:
|
|
120
|
-
command: /usr/local/bin/mysql-client
|
|
121
|
-
# Wildcard default connection: sessions without an explicit /connect fall back
|
|
122
|
-
# to this database (password-free scenario only)
|
|
123
|
-
connections:
|
|
124
|
-
'*':
|
|
125
|
-
type: sqlite
|
|
126
|
-
database: /tmp/analytics.db
|
|
115
|
+
The connection form displays all relevant fields together. Use Tab or Shift+Tab to move between fields. Press Enter on database type or read-only mode to show every option, use the arrow keys to select one, and press Enter again to confirm.
|
|
116
|
+
|
|
117
|
+
After connecting, return to the chat input and ask a business question. Other useful database commands include:
|
|
118
|
+
|
|
119
|
+
```text
|
|
120
|
+
/database status Show the current connection
|
|
121
|
+
/database test Test the current connection
|
|
122
|
+
/database disconnect Disconnect the current database
|
|
127
123
|
```
|
|
128
124
|
|
|
129
|
-
|
|
125
|
+
When you reopen the connection form in the same session, it restores the latest database type, host, port, user, database, and read-only mode. The password always remains masked and is never restored.
|
|
130
126
|
|
|
131
|
-
|
|
127
|
+

|
|
132
128
|
|
|
133
|
-
|
|
129
|
+
## How to Ask Better Analysis Questions
|
|
134
130
|
|
|
135
|
-
|
|
131
|
+
For more valuable results, include the business goal, time range, and dimensions you care about. For example:
|
|
136
132
|
|
|
137
|
-
|
|
133
|
+
```text
|
|
134
|
+
Analyze revenue and gross-margin changes by region in Q2 2026.
|
|
135
|
+
Find the regions with unusual performance, drill down into categories and key customers,
|
|
136
|
+
and recommend three concrete business actions.
|
|
137
|
+
```
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
You can also ask DSH to save the SQL or analysis so it can be reviewed and reused:
|
|
140
140
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
| `POST /query` | body `{ sessionId, sql }`; runs one SQL statement (the workbench command box, non-agent channel), returns `{ ok, result: { exitCode, stdout, stderr, truncated } }`; `sql` length capped by `maxQueryChars`; multiple statements are rejected; readonly rejects writes |
|
|
141
|
+
```text
|
|
142
|
+
Complete a member repeat-purchase analysis, save the final SQL to
|
|
143
|
+
analysis/repurchase.sql, and summarize the main findings in a format suitable for a weekly report.
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Before You Start
|
|
147
|
+
|
|
148
|
+
DSH must be able to reach the target database from your machine, and the corresponding database client must be installed:
|
|
150
149
|
|
|
151
|
-
|
|
150
|
+
- SQLite is usually included with macOS or Linux.
|
|
151
|
+
- MySQL requires the `mysql` client.
|
|
152
|
+
- PostgreSQL requires the `psql` client.
|
|
153
|
+
- Oracle, Hive, and Impala require their respective command-line clients.
|
|
152
154
|
|
|
153
|
-
|
|
155
|
+
We recommend creating a read-only database account so Data Agent can explore and analyze data without modifying production records.
|
|
154
156
|
|
|
155
|
-
|
|
156
|
-
- **Connection-config persistence**: the workbench saves the connection config (type/host/port/user/database) to browser localStorage (key `dsh-data-agent.connection.v1`) to restore the form and auto-reconnect once on page switches/restarts. **Passwords are not persisted by default**; they are stored only when "remember password" is explicitly checked (plain-text localStorage, opt-in). To clear: run `localStorage.removeItem('dsh-data-agent.connection.v1')` in the browser console.
|
|
157
|
-
- **No shell layer**: `ctx.subprocess.spawn` uses argv arrays, SQL and connect prefixes travel via stdin — no shell concatenation injection surface; metadata route identifiers pass the whitelist.
|
|
158
|
-
- **SQL execution authority**: with the approval policy set to `never`, `sql-write`/`sqlcmd` and `/query` execute DDL/DML directly — connections are session-isolated; assess the data-plane risk yourself. `readonly: true` rejects write statements; each database-tool call is an independent client process with autocommit, so transactions do not span calls.
|
|
159
|
-
- **Timeouts & caps**: query timeouts, output truncation, table-list caps, and the /query SQL length are all config items — no hard-coded tunables.
|
|
157
|
+
If you see `failed to mount` or a missing `@yejiming/dsh-data-agent` package error, the plugin is usually not installed in the current profile. Make sure you ran the matching install command for the Web UI or dsh-tui, then restart DSH.
|
|
160
158
|
|
|
161
|
-
##
|
|
159
|
+
## Security
|
|
160
|
+
|
|
161
|
+
- Prefer a read-only database account and enable read-only mode in the connection form.
|
|
162
|
+
- Temporary passwords entered in the Web UI or dsh-tui are used only for the current connection. The TUI displays only `*` and never restores the password when the form is reopened.
|
|
163
|
+
- If authentication must be restored across processes, use a DSH credential reference instead of putting a plaintext password in command arguments.
|
|
164
|
+
- When read-only mode is disabled, Data Agent can run update or administrative statements at your request. Before connecting to a production database, review the account permissions and backup policy.
|
|
165
|
+
- Database connections are isolated by session, making it easier to keep different projects, customers, and analysis environments separate.
|
|
166
|
+
|
|
167
|
+
## Uninstall and Rollback
|
|
162
168
|
|
|
163
169
|
```sh
|
|
164
|
-
dsh plugin --profile web remove @yejiming/dsh-data-agent
|
|
165
|
-
|
|
170
|
+
dsh plugin --profile web remove @yejiming/dsh-data-agent
|
|
171
|
+
dsh plugin --profile dsh-tui remove @yejiming/dsh-data-agent
|
|
172
|
+
rm -rf $DSH_HOME/.agent-presets/data-agent
|
|
166
173
|
```
|
|
167
174
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
## Development
|
|
175
|
+
Uninstalling the plugin does not automatically delete saved non-secret connection information. If you need to remove it completely, back it up first and then delete the corresponding Data Agent storage records in DSH.
|
|
171
176
|
|
|
172
|
-
|
|
177
|
+
## Local Development
|
|
173
178
|
|
|
174
179
|
```sh
|
|
175
|
-
pnpm
|
|
176
|
-
pnpm
|
|
180
|
+
pnpm install
|
|
181
|
+
pnpm build
|
|
182
|
+
pnpm test
|
|
177
183
|
```
|
|
178
184
|
|
|
179
|
-
`lib/` is committed, so
|
|
180
|
-
never requires a build. To rebuild the artifacts, just run `pnpm install`: all
|
|
181
|
-
`@deepseek-ai/*` dependencies are published on npm, so there is no need to copy
|
|
182
|
-
or symlink `node_modules` from a local DSH checkout anymore.
|
|
183
|
-
`pnpm-workspace.yaml` follows the dsh convention (`nodeLinker: hoisted`); pnpm
|
|
184
|
-
11's supply-chain policy blocks freshly published packages and dependency build
|
|
185
|
-
scripts, so the repository pre-declares `minimumReleaseAgeExclude` (the rc.6
|
|
186
|
-
family) and `allowBuilds: esbuild`.
|
|
185
|
+
The prebuilt `lib/` directory is committed to the repository, so npm and GitHub installations do not require a local build.
|
|
187
186
|
|
|
188
187
|
## License
|
|
189
188
|
|
|
190
189
|
MIT
|
|
191
190
|
|
|
192
|
-
##
|
|
191
|
+
## Related Links
|
|
193
192
|
|
|
194
|
-
- [dshfind.com](https://dshfind.com): Chinese learning
|
|
195
|
-
- [dsh-web-ui](https://github.com/dsh-external/dsh-web-ui):
|
|
196
|
-
- [dsh-cc-tui](https://github.com/dsh-external/dsh-cc-tui): Claude Code
|
|
193
|
+
- [dshfind.com](https://dshfind.com): A Chinese learning and sharing community for DeepSeek Harness
|
|
194
|
+
- [dsh-web-ui](https://github.com/dsh-external/dsh-web-ui): A collection of plugins and skins for the DeepSeek Harness Web UI
|
|
195
|
+
- [dsh-cc-tui](https://github.com/dsh-external/dsh-cc-tui): A Claude Code-style full-screen terminal interface
|