Perceptor X-rays your repository: an interactive, Obsidian-style dependency & behavior map, with static complexity and data-access risk read straight off each method — rendered right inside VS Code.

- Graph mode — folders as connection-sized circle nodes, dependencies as edges, in a force layout.
- Folder mode — a collapsible tree (folder → type → behaviors), with a method detail panel.
- Method insight — for any method: a static Big-O / complexity read, data-access
(SQL/ORM) risk signals (N+1,
SELECT *, unbounded finds…), and a Simulate flow storyboard that animates, step by step, what the method receives, every call it makes, and what it returns. - Explain — ask your own local Claude for a complete plain-English explanation of a method, inline in its detail panel.
- Chat — describe a change in plain language and Claude proposes it with impact analysis. Each conversation has its own thread; edit any sent message to re-run from that point.
- @ File references — type
@in chat to get an autocomplete popup of project files; selected files are included as context for Claude. - Inline Edit (
Cmd+Shift+I) — select code in the editor, press the shortcut, and a Perceptor chat thread opens right next to the selected lines (via VS Code's CommentController API). Describe what you want; Claude proposes a diff. Buttons adapt to the current state: Submit, Stop, Attach File, Remove Attached File, View in Chat, and Close. - Change tasks — add / move / edit a behavior or create files & folders from the map; the work is carried out by your own local Claude. No server, no hosted backend, your tokens.
Screenshots
Folder mode — collapsible tree with a method detail panel:

Method insight — complexity, data-access risk, and the Simulate-flow storyboard:

Explain — ask your own local Claude about a method, inline:

Inline Edit — select code, press Cmd+Shift+I, and edit right in the editor:

Change tasks — review and apply changes carried out by your local Claude:

Quick start (3 steps)
- Get the file —
perceptor-<version>.vsix. - Install it — open VS Code → Extensions panel (left sidebar) → click the
…menu at the top → Install from VSIX… → pick the file. - Open the map — open any project folder, then click Perceptor in the
bottom status bar (or press
Cmd/Ctrl+Shift+Pand run Perceptor: Open).
That's it — the map appears and updates by itself. (Optional: the AI edit/explain
features need the free claude CLI installed; the map works fine without it.)
Installation
From the VS Code Marketplace (easiest):
Open the Extensions panel (Cmd/Ctrl+Shift+X), search for Perceptor, and
click Install — or from the command line:
code --install-extension berkcansavur.perceptor
From a packaged .vsix file:
code --install-extension perceptor-*.vsix
…or in VS Code: Extensions panel → … menu → Install from VSIX… → pick the file.
Then open any folder and run Perceptor: Open (see Usage). To update, install a newer build the same way.
Build the .vsix yourself:
npm install
npm run package # → packages/extension/perceptor-<version>.vsix
Requires the
claudeCLI on your PATH only if you use the AI-powered explain/change tasks; the map itself works without it.
Usage
- Open a folder/workspace in VS Code.
Cmd/Ctrl+Shift+P→ Perceptor: Open (or use the status-bar item).- Switch between Graph and Folder modes, pan / zoom / search, click a type to open it in the editor.
- In Folder mode, click a behavior to open its detail panel — complexity, data-access risk, the Simulate-flow storyboard (press Run), and Explain.
- Inline Edit — select code in the editor and press
Cmd+Shift+Ito open a chat thread right next to it. Describe your change, submit, and review the proposed diff in the Changes tab.
The map refreshes automatically as files change.
Supported languages
| Language | Extracted symbols |
|---|---|
| TypeScript / TSX | class, interface, enum, type alias, exported const |
| Java | class, interface, enum, record, annotation (@interface) |
| C# | class, interface, enum, struct, record, delegate |
| Go | struct, interface (receiver methods, channel/pointer/slice/map unwrap) |
Settings
| Setting | Default | Description |
|---|---|---|
perceptor.claudePath |
(empty) | Path to the Claude CLI used for explain/change tasks. Empty = auto-detect via your login shell (recommended); set an absolute path to override. |
perceptor.autoProcessOnOpen |
false |
Auto-process queued tasks on open (token-conservative; off by default). |
Privacy
Everything runs locally. The analyzer and task engine run in the extension host
on your machine; explain/change tasks invoke your own claude CLI with your own tokens.
No code leaves your machine through this extension.
License
MIT © Berkcan Şavur