Bundle
dsh-introspect
Local-first self-observability for DeepSeek Harness: record real events, project them onto five observation axes (MEL/ROI/ARCTIC/TSA/RRI), store them in local SQLite, and watch MEL x RRI on a right-side panel.
- Source
- guhanfei-ai
- License
- MIT
- Updated
- Updated 14 hours ago
Readme
# dsh-introspect
Local-first self-observability for DeepSeek Harness.
Observe your events, energy, time, value, direction and reality feedback — locally.
> Observe the world. Introspect the self.
---
## What it does
Records real events into a local SQLite database and projects them onto five observation axes:
| Axis | Question | Range |
|------|----------|-------|
| **MEL** | How much usable mental energy is available? | 0–200 |
| **RRI** | Did the real world observably move? | 0–100 |
| **ROI** | What did this return to me relative to what it cost? | unbounded |
| **ARCTIC** | Did this move me toward where I want to go? | -10..+10 |
| **TSA** | How much finite time did this consume? | minutes, nullable |
The right-side Introspect panel shows all five, a **MEL × RRI** time series, and recent events.
**Why MEL × RRI?** High internal energy does not necessarily imply high external progress. dsh-introspect deliberately keeps mental energy and reality feedback as separate dimensions so you can see when they diverge.
---
## Install
```bash
dsh plugin --profile web add link:/path/to/dsh-introspect
```
Or from a published tag:
```bash
dsh plugin --profile <profile> add <pkg>#v<version>
```
---
## Tools
| Tool | Description |
|------|-------------|
| `introspect_record` | Store one event (only when the user explicitly asks to record). |
| `introspect_status` | Today's compact state block. |
| `introspect_today` | Today's aggregation and timeline. |
| `introspect_history` | Bounded multi-day query with filters and sorting. |
| `introspect_get` | One event with its verbatim raw text. |
| `introspect_update` | Correct a score when the user says it is wrong. |
| `introspect_delete` | Remove one event (requires explicit user confirmation). |
---
## How it works
```
You describe what happened
↓
DeepSeek Harness model understands the event
↓
introspect_record stores it in local SQLite
↓
Introspect panel refreshes automatically
```
- The plugin itself never calls any LLM.
- Events are recorded only when you explicitly ask ("记录一下", "记一笔", "/self ...").
- All data stays in `$DSH_HOME/introspect/events.sqlite3` on your machine.
---
## Right-side panel
The Introspect panel (toggle with the "内观" button) shows:
1. **Five metrics** — latest MEL, RRI, ROI, ARCTIC, TSA with trend arrows and averages.
2. **MEL × RRI chart** — dual-line time series with the energy-reality gap shaded between them.
3. **Recent events** — click to expand full details (raw text, all metrics with reasons, tags).
4. **Live refresh** — the panel updates automatically after each recorded event.
Supports dark mode and light mode (follows the DeepSeek Harness theme).
---
## Data
| Item | Location |
|------|----------|
| Database | `$DSH_HOME/introspect/events.sqlite3` |
| Schema | `PRAGMA user_version`, single `events` table |
| Backup | Copy the `.sqlite3` file; it's a standard SQLite database |
Override with `dbPath` in the plugin config (`cordis.patch.yml`).
---
## Privacy
- **No cloud account.** No registration, no login, no remote identity.
- **No upload.** The plugin does not send its database or any event data to any external service.
- **No external AI calls.** The plugin calls no LLM API directly.
- **No telemetry.** No analytics, no usage tracking.
- **No auto-capture.** Only explicitly requested events are stored.
If the DeepSeek Harness session uses a remote AI provider, the conversation content (including event descriptions) may transit that provider's infrastructure. The plugin controls only its own local storage.
See [docs/PRIVACY.md](docs/PRIVACY.md) for the full statement.
---
## Development
```bash
npm install
npm run build:client # build client.js from src/client/ fragments
npm test # run all tests
npm run verify # build + syntax check + test
```
Tests cover: SQLite initialization, migration, CRUD, unicode, null metrics, timezone boundaries, tool validation, approval hooks, API trust fence, client pure functions, chart geometry, and secret/hygiene scans.
---
## Metrics documentation
See [docs/METRICS.md](docs/METRICS.md) for the full definition of each axis, their ranges, bands, aggregation rules, and limitations.
---
## Architecture
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).
---
## License
MITInstall
dsh plugin --profile web add github:guhanfei-ai/dsh-introspect
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-introspect from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.