QuantumKuba/dsh-continuum ↗★ 0
dsh-continuum
Persistent project memory, context-safe agent handoffs, checkpointing, evidence tracking, and long-running task continuity for DeepSeek Harness
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:QuantumKuba/dsh-continuum说明文档
阅读完整 README ↗Web UI "Plugin Configuration" & settings.yaml
dsh-continuum integrates seamlessly with DeepSeek Harness's @deepseek-ai/dsh-settings service. You can configure it visually in the DSH Web UI under Plugin configuration, or in ~/.dsh/settings.yaml:
dsh-continuum:
autoInjectContext: true # Automatically inject Context Pack into system prompts
maxContextPackTokens: 8000 # Maximum token budget for Context Pack
defaultLeaseTtlMinutes: 10 # Task execution lease TTL before sweep
storageMode: workspace # 'workspace' (.continuum/) | 'home' (~/.continuum/) | 'custom'
customStoragePath: "" # Custom directory if storageMode is 'custom'
Changes made in the Web UI take effect immediately in real time without restarting the server.
Programmatic API Usage
You can also use Continuum directly in standalone Node.js / TypeScript code:
import { ContinuumEngine, FileSystemStorageBackend, StorageResolver } from 'dsh-continuum'
// 1. Initialize storage backend
const resolver = new StorageResolver({ mode: 'workspace' })
const storage = new FileSystemStorageBackend(resolver)
const engine = new ContinuumEngine(storage)
// 2. Initialize project & North Star
await engine.initProject('proj-alpha', 'Project Alpha', 'Core Engine', {
id: 'agent-orchestrator',
role: 'orchestrator'
})
await engine.setNorthStar(
'Build resilient distributed consensus',
['Linearizable reads', 'Crash recovery'],
{ id: 'agent-orchestrator', role: 'orchestrator' }
)
// 3. Create task with independent verification policy
const task = await engine.createTask({
title: 'Implement WAL Appender',
description: 'Write write-ahead log with fsync flush barrier',
acceptanceCriteria: ['Pass crash fault tests'],
verificationPolicy: 'independent' // Four-eyes principle
}, {
actor: { id: 'agent-orchestrator', role: 'orchestrator' }
})
// 4. Implementer claims task (lease issued)
const claim = await engine.claimTask(task.data.id, {
actor: { id: 'agent-implementer', role: 'implementer' }
})
console.log('Claimed task with lease:', claim.data.leaseId)