neuron-explorer
Steering-first neuron explorer for Qwen3.5-4B: push every MLP neuron, keep every rollout, browse the results
翻譯準備中
一個用於 JavaScript 單倉庫的任務執行器與快取工具,根據任務聲明決定指令執行順序與快取。
AI 翻譯
A task runner and cache for JavaScript monorepos. It decides which of hundreds of commands must run, in what order, and which to skip, from what each task declares, and caches each result under a key
開發工具TypeScript · MDXGitHub @vznjs上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
一個用於 JavaScript 單倉庫的任務執行器與快取工具。它根據每個任務的聲明,決定數百個指令中哪些必須執行、執行順序以及哪些可跳過,並將每個結果以其輸入組成的金鑰快取起來。
AI 翻譯
A task runner and cache for JavaScript monorepos. It decides which of hundreds of commands must run, in what order, and which to skip, from what each task declares, and caches each result under a key made from its inputs.
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
The fastest way to build a monorepo.
vx runs your task graph, remembers every result, and never does the
same work twice.
The runner adds seconds to a cold build where others add minutes. On a
1,090-package graph of 3,270 tasks whose ideal schedule is 3m 38s,
vx finishes in 3m 46s (+0:08), Turborepo in 5m 13s (+1:35) and Nx in
34m 44s (+31:06) — 8 ms of overhead per package against 88 ms and
1,712 ms, so the graph can grow and the runner stays in seconds. The cold build
burns 35 s of CPU in vx, 73 s in Turborepo and 114 minutes in Nx; a
fully cached run replays the graph in 510 ms.檢視完整 README ↗Task orchestration with a cache you can trust, on a core you can extend. Each task is one shell command with declared inputs and outputs; vx runs them in dependency order and replays results from a content-addressed cache.
In a git repo:
bunx @vzn/vx init # installs vx, writes an empty root vx.config.ts and the lockfile plugin
A prebuilt binary for Linux (glibc, not Alpine's musl) and macOS, x64 and arm64. Windows: run vx inside WSL2.
A task runs its tool directly, never through a package script. Cache one by saying what it reads and writes:
// packages/app/vx.config.ts
import { defineProject } from '@vzn/vx/config'
export default defineProject({
tasks: {
build: {
exec: { command: 'tsc -b' },
dependsOn: ['^build'], // dependencies build first
inputs: { files: ['src/**', 'tsconfig.json'] },
cache: {
outputs: { files: ['dist/**'] },
},
},
},
})
vx run build --all # builds, in dependency order; stores the results
vx run build --all # nothing changed: up-to-date, in milliseconds
rm -rf packages/*/dist
vx run build --all # restored from the cache, not rebuilt
vx lockinit also writes .vx/projects.lock.json, every project's config as it evaluated.
Commit it. Every run reads its configs from the lock, so run
vx lock and commit the lock again after you:
vx.config.ts or .vx/workspace.ts,Otherwise runs keep the old configs. On CI, vx lock --check fails a
stale lock before any task runs.
Starters: examples/basic, and
examples/ci with a GitHub Actions workflow; CI runs both
on every commit. The CI guide
explains the workflow.
More: Quickstart ·
Configure ·
CLI · every config field.
commands included): remote cache, remote execution, telemetry,
CLI verbs. Core ships none and needs none.What vx can do, not what it is limited to. Declared in .vx/workspace.ts; without any, vx runs and caches locally.
| Package | What it adds |
|---|---|
@vzn/vx-migrate | Migrate from Turbo or Nx: write native configs, keep its remote cache |
@vzn/vx-reapi | Remote cache and remote execution over Bazel's REAPI (NativeLink, BuildBuddy) |
@vzn/vx-lockfile | Key each project on its own lockfile slice: pnpm, bun, npm, yarn |
@vzn/vx-otel | OpenTelemetry traces, metrics and logs, no SDK |
@vzn/vx-ci | GitHub Actions job summary |
@vzn/vx-history | Schedule by the critical path learned from past runs |
@vzn/vx-cache | Remote cache for CI jobs, on a vx cache server |
@vzn/vx-cache-server | The cache server you host: Bun or Docker with S3, or Workers with R2 |
@vzn/vx-history-server | The task timings server vxHistory() reads: Bun, Docker or Workers |
Hosting the three servers: servers docs.
Write your own: plugin guide · architecture.
Beside turbo.json or nx.json, bunx @vzn/vx init runs @vzn/vx-migrate:
it writes a vx.config.ts per package from turbo.json or the Nx graph,
and you keep those and delete the old config. vx init --keep writes only
a .vx/workspace.ts that maps the old config instead, and its lock: a temporary start,
not a way to run the repo. The benchmark below uses native vx config.
Migration guide.
| vx | Turborepo | Nx | |
|---|---|---|---|
| Config | TypeScript, evaluated into the cache key | JSON (static) | JSON (static) |
| Output ownership | Strict: wiped before exec and restore | Additive (stale files survive) | Additive |
| Clean-tree hashing | No source reads (git index OIDs) | git OIDs | re-hash / daemon |
| Daemon | None | None for turbo run | On by default |
| Per-task sandbox | Yes: kernel-level, opt-in, local | No | On Nx Cloud only |
| Plugin API | Yes: every pipeline stage | No | Yes (TS-tied) |
| Install | Single binary; no Bun, Node optional | npm + Node | npm + Node |
Every gap, and when another tool is the better pick: comparison · vx, Turborepo, Nx, Bazel.
package.json and the lockfile are still read.The head-to-head against Turborepo, Nx and Vite Task, each in its own native config, is re-measured on every change to vx and published on the site: benchmarks.
Pre-alpha, dogfooded: this repo lints, tests and builds itself with vx. The schema may still change; 1.0's promise: versioning-1.0.md.
vx is maintained by VZN and takes issues, not pull requests: report a bug or ask for a feature in issues.
vx is MIT licensed. The prebuilt binaries embed Bun and a few npm packages under permissive licenses; their notices ship as THIRD_PARTY_NOTICES.txt in each platform package and GitHub release.
@vzn/vx-devtools| Code the servers and plugins share: the CI OIDC token check |
@vzn/vx-dte | Spread one run over workers your own CI starts |
@vzn/vx-dte-server | The relay dte() meets its workers at: Workers, Bun or Docker |