Bundle
dsh-code-intel
Symbol-aware code outline and hybrid code search for DeepSeek Harness.
- Source
- lonelymoon87
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 15 hours ago
Readme
# dsh-code-intel
[](https://github.com/lonelymoon87/dsh-code-intel/actions/workflows/ci.yml)
[](https://github.com/lonelymoon87/dsh-code-intel/actions/workflows/dsh-compatibility.yml)
[](https://github.com/lonelymoon87/dsh-code-intel/releases/latest)
[](./LICENSE)
Symbol-aware code outline, persistent workspace indexing, and explicit lexical or embedding-assisted search for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness).
The v0.1.3 release is tested with DSH 0.1.0-rc.8 and 0.1.1-rc.1 while retaining the rc.6-compatible peer range. Prebuilt packages are distributed through GitHub Releases; npm publication is prepared but not yet live.
[简体中文](./README.zh-CN.md)
## MVP
- `code_search` ranks AST symbol chunks and bounded module windows, returning `path:line`, symbol metadata, snippets, scores, and the active retrieval mode.
- `code_outline` parses one file immediately or projects a directory from the persistent index.
- The first workspace search starts a cancellable `code-index` background job instead of blocking the agent turn.
- SQLite persistence under `.dsh/code-index/` uses DSH filesystem versions for incremental rebuilds.
- `fs/observed` marks successful DSH file operations dirty; a Chokidar watcher covers local shell, IDE, and external changes.
- TypeScript, TSX, JavaScript, JSX, Python, Go, Rust, and Java use the install-script-free Tree-sitter WASM grammars published for VS Code.
- An optional OpenAI-compatible embedding endpoint adds cosine similarity to lexical ranking. Without it, results explicitly say `mode: lexical`.
DeepSeek's official API does not currently expose a public embedding endpoint, so this plugin does not invent one or silently label lexical results as semantic.
## Index lifecycle
On the first `code_search` or directory `code_outline`, the tool returns an `indexing` result and a job id. Inspect or wait for that job with the built-in jobs tools, then call the code tool again. File outlines do not require a complete workspace index.
The cache contains derived source text and optional vectors. It stays inside the workspace, excludes `.dsh` from its own scan, and may be deleted at any time for a full rebuild. A retrieval-configuration fingerprint automatically invalidates vectors when the embedding endpoint or model changes.
Source traversal and reads use the mounted DSH filesystem service. SQLite and Chokidar require the provider's `processPath()` to be accessible from the plugin host, so the MVP targets the standard local filesystem execution world. If a remote filesystem exposes paths that are not host-accessible, cache creation fails loudly instead of indexing a different directory.
Node 22 currently labels the built-in SQLite module experimental. The on-disk cache is disposable and schema-versioned; source files remain the only source of truth.
## Retrieval modes
Lexical mode scores exact query matches, query tokens, symbol names, and paths. Hybrid mode combines that score with cosine similarity over endpoint-produced vectors. A configured endpoint or credential failure fails the indexing job or search; fallback occurs only when embedding is not configured.
Credentials are references, not secret values in YAML. The plugin resolves the reference through `ctx.credentials` for each indexing or query operation and never stores the credential.
## Permissions and data
- Code Intel reads supported source files through the mounted DSH filesystem service, watches the resolved local workspace, and writes a rebuildable SQLite index under `.dsh/code-index/` by default.
- Lexical mode makes no network requests. Hybrid mode sends extracted code chunks and queries to the explicitly configured OpenAI-compatible embedding endpoint and resolves only the named credential reference.
- The index can contain source-derived snippets and optional vectors. The plugin sends no telemetry and does not register custom durable session events; deleting the index directory removes its persisted data.
## Install
The package supports DSH `>=0.1.0-rc.6 <0.2.0` plugin APIs and Node.js `^22.19 || >=24`.
```sh
dsh plugin --profile web add https://github.com/lonelymoon87/dsh-code-intel/releases/download/v0.1.3/dsh-code-intel-0.1.3.tgz
```
The release tarball is prebuilt and needs no build allowance. A pinned source install is also supported:
```sh
dsh plugin --profile web add github:lonelymoon87/dsh-code-intel#v0.1.3
```
The source install runs this package's `prepare` build. pnpm 10 and later reject it until the profile allowlists the exact package key printed by the failed command; apply that instruction and rerun the same `dsh plugin add` command. Replace `web` with `headless` to install into the one-shot agent profile.
To upgrade, rerun `dsh plugin add` with the newer release URL. To uninstall:
```sh
dsh plugin --profile web remove dsh-code-intel
```
## Configuration
Lexical mode needs no provider configuration:
```yaml
- id: code-intel
name: dsh-code-intel
config:
indexDir: .dsh/code-index
include: [.ts, .tsx, .js, .jsx, .py, .go, .rs, .java]
exclude: [.dsh, .git, node_modules, dist, build, coverage, vendor]
maxFileSize: 1000000
maxChunkChars: 12000
maxResults: 20
watch: true
embedding: false
```
Hybrid mode uses a complete OpenAI-compatible embeddings URL:
```yaml
embedding:
provider: openai-compatible
endpoint: https://embedding.example/v1/embeddings
model: your-embedding-model
credentialRef: EMBEDDING_API_KEY
batchSize: 32
```
`indexDir` and exclusions must stay workspace-relative. Only the listed, parser-backed extensions are accepted in MVP.
## Verification
Tests use real temporary workspaces and SQLite databases. They cover all parser families, background indexing, lexical retrieval, direct outline, `fs/observed` refresh, hybrid ranking, credential absence, vector persistence, cache replacement, and invalid configuration.
- The v0.1.3 tarball installs directly from its HTTPS release URL into clean DSH 0.1.0-rc.8 and 0.1.1-rc.1 profiles.
- The packed bundle and pinned GitHub source install both appear in `dsh --dump-config`.
- CI covers Node 22.19 and Node 24; a compatibility matrix repeats the real install against DSH 0.1.0-rc.8 plus the `latest` and `next` npm tags.
- Bugs and compatibility reports are tracked in [GitHub Issues](https://github.com/lonelymoon87/dsh-code-intel/issues).
## License
[MIT](./LICENSE)
Install
dsh plugin --profile web add github:lonelymoon87/dsh-code-intel
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-code-intel from the hub
- 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.