Skip to content
dsh.fish
Bundle

dsh-point

Point checkpoints and ancestry-aware session continuation for DeepSeek Harness

Source
guix4ever
License
MIT
Updated
Updated 3 days ago

Readme

# dsh-point

Point checkpoints and ancestry-aware session continuation for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness).

[简体中文](./README.zh-CN.md)

`dsh-point` gives a DSH workspace an immutable Point history without loading all prior sessions into every new context. Point is the only history unit: save a Point, continue from a Point, and let the agent read an authorized ancestor Point only when needed.

## Features

- `/point-stash [title]` saves complete participant-visible events since the previous Point.
- A Web workspace view renders the Point parent DAG, node details, and an explicit **Continue from this Point** action.
- Continue creates or reuses a deterministic DSH Session and carries Point ancestry without copying historical events into context.
- `point_read(point_id)` lets the model read original events from an ancestor Point; unrelated Points are rejected.
- Crash recovery reconciles the local cursor against immutable Point metadata instead of creating duplicate Points.
- Compaction records are excluded, while the original visible transcript, content blocks, source metadata, and paired tool calls/results are preserved.

## Requirements

- Node.js 22.19 or newer
- DeepSeek Harness 0.1.0-rc.6
- The [`point`](https://github.com/guix4ever/point) CLI available on `PATH`

Install Point first if needed:

```bash
python3 -m pip install "git+https://github.com/guix4ever/point.git"
```

## Install

Add the plugin to the DSH Web profile:

```bash
dsh plugin --profile web add dsh-point
```

Restart DSH after installation. The package contributes both the Host plugin and its Web client bundle through `cordis.patch.yml`.

## Use

Save the current completed work:

```text
/point-stash explain the change briefly
```

Open the **Points** tab in the DSH conversation view to inspect the current workspace DAG. Selecting a node is read-only; press **Continue from this Point** to open its deterministic continuation Session.

The continuation receives only the selected Point ancestry. If historical detail is relevant, the model can call:

```text
point_read(point_id)
```

Only Point ids in that continuation's ancestry are accepted.

## Integrity and failure policy

The save boundary waits for agent idle, flushes DSH persistence, and advances its cursor only after `point stash` succeeds. Projection fails closed on non-contiguous events, open turns, incomplete assistant chunks, duplicate or missing tool identities, dangling calls, and empty visible Points.

The browser cannot choose a filesystem path, Point binary, or shell argument. Workspace path and agent preset are derived by the Host from the addressed DSH Session.

## Development

```bash
npm ci
npm run typecheck
npm test
npm pack --dry-run
```

Maintained sources are TypeScript in `src/` and `client-src/`. Runtime entry points are built into `lib/` and committed so Git installation does not require a local build step.

## Current scope

- The client module targets DSH Web, the client platform currently exposed by DSH. Host behavior is reusable by other entry points.
- The DAG deliberately uses a small horizontally scrollable layout rather than a graph framework, pan/zoom, clustering, or a second history abstraction.
- Automated coverage includes the real Point CLI, crash reconciliation, ancestry authorization, Host restart idempotence, and a real DSH Web/Chromium acceptance run. A paid live-model invocation is not required for this release.

## License

MIT

Install

dsh plugin --profile web add github:guix4ever/dsh-point

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source