mlx-bun 0.3.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +57 -32
- package/docs/README.md +58 -42
- package/docs/archive/investigations/benchmark-ledger-through-v0.4.0.md +3617 -0
- package/docs/archive/investigations/openjarvis-fit.md +198 -0
- package/docs/archive/investigations/qwen38-27b-campaign-log.md +1092 -0
- package/docs/archive/planning/release-notes-v0.4.0.md +45 -0
- package/docs/archive/planning/release-notes-v0.5.0.md +37 -0
- package/docs/design/batching.md +1535 -50
- package/docs/design/decode-speed-program.md +394 -1171
- package/docs/design/generic-model-support.md +195 -3
- package/docs/design/kv-cache.md +538 -225
- package/docs/design/speculative-decoding.md +552 -50
- package/docs/design/turboquant.md +140 -17
- package/docs/design/unified-engine-frontier-plan.md +259 -150
- package/docs/planning/PRODUCT_ROADMAP.md +21 -6
- package/docs/planning/public-readiness-handoff.md +244 -0
- package/docs/planning/public-readiness.md +149 -0
- package/docs/reference/benchmarks.md +3537 -1112
- package/docs/reference/cli.md +102 -2
- package/docs/reference/distribution.md +45 -13
- package/docs/reference/environment.md +159 -13
- package/docs/reference/library-api.md +18 -4
- package/docs/reference/memory.md +1 -1
- package/docs/reference/models.md +28 -7
- package/docs/reference/server-api.md +257 -33
- package/docs/reference/server-config.md +372 -151
- package/docs/reference/troubleshooting.md +13 -21
- package/package.json +2 -2
- package/src/audio/audiotoolbox.ts +112 -0
- package/src/audio/conformer.ts +8 -0
- package/src/audio/mic-capture.ts +98 -0
- package/src/audio/silero-vad.ts +379 -0
- package/src/audio/whisper-decode.ts +774 -0
- package/src/audio/whisper-fast.ts +732 -0
- package/src/audio/whisper-format.ts +73 -0
- package/src/audio/whisper-mel.ts +185 -0
- package/src/audio/whisper-timing.ts +274 -0
- package/src/audio/whisper-tokenizer.ts +239 -0
- package/src/audio/whisper-transcribe.ts +410 -0
- package/src/backends/mlx/assistant-target.ts +46 -0
- package/src/backends/mlx/autoregressive-draft-rows.ts +120 -0
- package/src/backends/mlx/autoregressive.ts +22 -1
- package/src/backends/mlx/batch-group.ts +464 -236
- package/src/backends/mlx/cache-attachment.ts +67 -0
- package/src/backends/mlx/cache-layout.ts +31 -0
- package/src/backends/mlx/checkpoint-state.ts +53 -0
- package/src/backends/mlx/continuation-persistence.ts +107 -0
- package/src/backends/mlx/continuation-request.ts +43 -0
- package/src/backends/mlx/continuation.ts +77 -0
- package/src/backends/mlx/draft-target.ts +7 -22
- package/src/backends/mlx/encoder-cache.ts +25 -0
- package/src/backends/mlx/fill-append.ts +21 -8
- package/src/backends/mlx/fill-group.ts +497 -0
- package/src/backends/mlx/full-kv-row-append.ts +32 -0
- package/src/backends/mlx/full-kv-row-donor.ts +54 -0
- package/src/backends/mlx/full-transitioning-kv-rows.ts +65 -0
- package/src/backends/mlx/gateway-binding.ts +122 -19
- package/src/backends/mlx/kv-codec.ts +9 -0
- package/src/backends/mlx/kv-maintenance.ts +161 -0
- package/src/backends/mlx/kv-tensor-rows.ts +212 -0
- package/src/backends/mlx/mixed-iteration.ts +62 -0
- package/src/backends/mlx/model-prompt.ts +46 -32
- package/src/backends/mlx/model-serving.ts +5 -4
- package/src/backends/mlx/paged-cache-codec.ts +27 -0
- package/src/backends/mlx/prefill-cohort.ts +100 -0
- package/src/backends/mlx/prefill-policy.ts +26 -0
- package/src/backends/mlx/prefill-rows.ts +244 -0
- package/src/backends/mlx/prefill.ts +1 -1
- package/src/backends/mlx/projected-context-rows.ts +72 -0
- package/src/backends/mlx/prompt-input.ts +29 -0
- package/src/backends/mlx/qwen-prompt-input.ts +40 -0
- package/src/backends/mlx/request-state-policy.ts +54 -0
- package/src/backends/mlx/rollback.ts +45 -4
- package/src/backends/mlx/row-sampling.ts +49 -0
- package/src/backends/mlx/serial-executor.ts +51 -73
- package/src/backends/mlx/speculative-group.ts +438 -0
- package/src/backends/mlx/speculative-round.ts +161 -0
- package/src/backends/mlx/speculative.ts +24 -7
- package/src/backends/mlx/state-rows.ts +104 -0
- package/src/backends/mlx/state-views.ts +21 -1
- package/src/backends/mlx/target-layout-capability.ts +35 -0
- package/src/backends/mlx/transitioning-kv-rows.ts +173 -0
- package/src/cli.ts +333 -36
- package/src/contracts/execution.ts +21 -0
- package/src/contracts/object-cache.ts +8 -0
- package/src/contracts/pi-provider.ts +1 -1
- package/src/contracts/pi.ts +3 -1
- package/src/contracts/prefix-cache.ts +33 -0
- package/src/contracts/resources.ts +7 -0
- package/src/contracts/sampling.ts +23 -0
- package/src/contracts/scheduling.ts +27 -0
- package/src/engine/execution-plan.ts +38 -25
- package/src/engine/execution-tasks.ts +44 -0
- package/src/engine/namespaced-cache.ts +13 -0
- package/src/engine/resources.ts +12 -1
- package/src/engine/scheduler.ts +32 -7
- package/src/fill/fill-session.ts +14 -3
- package/src/fit.ts +29 -15
- package/src/generate.ts +105 -195
- package/src/grammar.ts +13 -0
- package/src/inference/draft-acceptance.ts +41 -0
- package/src/inference/draft-output.ts +49 -0
- package/src/inference/prefill.ts +6 -0
- package/src/inference/rollback.ts +2 -2
- package/src/kv-scheme.ts +92 -12
- package/src/kv-store.ts +183 -93
- package/src/lab/README.md +5 -1
- package/src/lab/paged-kv/paged-attention.ts +117 -0
- package/src/lab/paged-kv/paged-kv-rows.ts +111 -0
- package/src/lab/paged-kv/paged-kv.ts +126 -46
- package/src/md-modules.d.ts +5 -0
- package/src/mlx/array.ts +39 -1
- package/src/mlx/ffi.ts +19 -0
- package/src/mlx/normalized-argmax.ts +116 -0
- package/src/mlx/ops.ts +97 -10
- package/src/model/artifact-identity.ts +73 -0
- package/src/model/batched-kv.ts +235 -0
- package/src/model/batched-mask.ts +12 -4
- package/src/model/batched-quant.ts +8 -2
- package/src/model/batched-quantized-kv.ts +144 -0
- package/src/model/batched-rotating-quant.ts +76 -15
- package/src/model/batched-rotating-state.ts +76 -0
- package/src/model/batched-rotating.ts +64 -22
- package/src/model/batched-row-storage.ts +52 -0
- package/src/model/batched-ssm.ts +52 -0
- package/src/model/batched-turboquant-kv.ts +94 -0
- package/src/model/compiled-decode.ts +7 -1
- package/src/model/decoded-kv-donor.ts +12 -0
- package/src/model/delayed-quantized-kv.ts +72 -0
- package/src/model/delayed-rotating-quantized-kv.ts +93 -0
- package/src/model/delayed-turboquant-kv.ts +57 -0
- package/src/model/factory.ts +26 -0
- package/src/model/fingerprint.ts +12 -0
- package/src/model/full-prefill-padding.ts +56 -0
- package/src/model/full-prefill-row.ts +105 -0
- package/src/model/gemma4-base.ts +183 -82
- package/src/model/gemma4.ts +116 -28
- package/src/model/generated/gemma4-12b.ts +4 -1
- package/src/model/generated/gemma4-26b.ts +4 -1
- package/src/model/generated/gemma4-e4b.ts +4 -1
- package/src/model/glm52-cache.ts +80 -4
- package/src/model/glm52-mla.ts +12 -6
- package/src/model/glm52.ts +19 -40
- package/src/model/kv-attention-view.ts +70 -0
- package/src/model/minicpm5.ts +11 -7
- package/src/model/profile.ts +29 -4
- package/src/model/quantized-append-attention.ts +31 -0
- package/src/model/qwen3-delta-state.ts +74 -0
- package/src/model/qwen3-delta.ts +59 -36
- package/src/model/qwen3-mrope.ts +7 -9
- package/src/model/qwen3_5.ts +177 -75
- package/src/model/rotating-kv-donor.ts +35 -0
- package/src/model/rotating-kv-layout.ts +262 -0
- package/src/model/rotating-row-transaction.ts +35 -0
- package/src/model/speculative-rotating-kv.ts +101 -0
- package/src/model/ssm-prefill-padding.ts +39 -0
- package/src/model/support.ts +8 -0
- package/src/model/token-groups.ts +66 -0
- package/src/model/trellis-linear.ts +4 -4
- package/src/model/turboquant-codec.ts +89 -0
- package/src/model/universal/dense.ts +14 -13
- package/src/model/whisper.ts +435 -0
- package/src/native/mic_capture.swift +92 -0
- package/src/native-pack.ts +6 -5
- package/src/pi-web.ts +9 -1
- package/src/preflight.ts +31 -15
- package/src/prompt-cache.ts +306 -86
- package/src/runtime-config.ts +1 -5
- package/src/safetensors.ts +9 -2
- package/src/sampler.ts +37 -25
- package/src/serve/audio-routes.ts +323 -0
- package/src/serve/chat-request.ts +2 -0
- package/src/serve/chat-stage.ts +19 -14
- package/src/serve/completion-executor.ts +9 -1
- package/src/serve/discovery-routes.ts +17 -1
- package/src/serve/generated-token-history.ts +57 -0
- package/src/serve/generation-gateway.ts +88 -38
- package/src/serve/model-binding.ts +7 -1
- package/src/serve/model-host.ts +3 -4
- package/src/serve/preparation.ts +3 -3
- package/src/serve/prompt-response-trace.ts +14 -0
- package/src/serve/request-plan.ts +6 -3
- package/src/serve/request-prep.ts +40 -25
- package/src/serve/text-completion-stage.ts +2 -2
- package/src/serve/transcription-server.ts +64 -0
- package/src/serve/transcription-service.ts +502 -0
- package/src/server.ts +185 -261
- package/src/spec/assistant-rows.ts +93 -0
- package/src/spec/assistant-source.ts +28 -18
- package/src/spec/cache-identity.ts +22 -0
- package/src/spec/deepspec-rows.ts +29 -0
- package/src/spec/deepspec-source.ts +12 -10
- package/src/spec/dflash-source.ts +28 -4
- package/src/spec/drafter.ts +153 -142
- package/src/spec/dspark/deepspec-module.ts +95 -120
- package/src/spec/dspark/module-dflash.ts +126 -170
- package/src/spec/glm52-mtp-graph.ts +29 -0
- package/src/spec/glm52-mtp-rows.ts +132 -0
- package/src/spec/glm52-mtp-source.ts +54 -136
- package/src/spec/glm52-mtp-state.ts +33 -0
- package/src/spec/ngram-source.ts +115 -21
- package/src/spec/projected-draft-rows.ts +73 -0
- package/src/spec/qwen-mtp-module.ts +171 -0
- package/src/spec/qwen-mtp-rows.ts +230 -0
- package/src/spec/qwen-mtp-source.ts +84 -226
- package/src/spec/qwen-mtp-state.ts +30 -0
- package/src/spec/serve-loop.ts +73 -69
- package/src/spec/source.ts +93 -15
- package/src/spec/two-model-rows.ts +62 -0
- package/src/spec/two-model.ts +45 -103
- package/src/ssd-cache.ts +107 -36
- package/src/ssd-durability.ts +29 -27
- package/src/storage/host-buffer.ts +24 -0
- package/src/storage/kv-writer.ts +83 -0
- package/src/storage/kv-writer.worker.js +264 -0
- package/src/storage/retention-policy.ts +37 -0
- package/src/tiered-prompt-cache.ts +45 -0
- package/src/vision/embedder.ts +8 -0
- package/src/vision/prompt.ts +101 -65
- package/src/vision/qwen3vl-prompt.ts +101 -64
- package/src/vision/qwen3vl-tower.ts +11 -0
- package/src/vision/siglip.ts +8 -0
- package/src/web/app.html +12 -0
- package/src/web/app.js +217 -57
- package/src/web/src/chat.ts +4 -1
- package/src/web/src/composer.ts +3 -0
- package/src/web/src/voice.ts +141 -0
- package/src/web/sw.js +1 -1
- package/src/backends/mlx/memory-guard.ts +0 -40
- package/src/spec/prefix-state.ts +0 -45
- /package/docs/{planning → archive/planning}/release-notes-v0.3.0.md +0 -0
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
# OpenJarvis research and fit with mlx-bun
|
|
2
|
+
|
|
3
|
+
Inspected September 8, 2026. OpenJarvis source revision
|
|
4
|
+
[`e25e77d36ee487aa456978e7a7f19a7f6d712260`](https://github.com/open-jarvis/OpenJarvis/tree/e25e77d36ee487aa456978e7a7f19a7f6d712260).
|
|
5
|
+
mlx-bun revision `673b43f39b88d8f6438e625aaaceca00851d0fbf`.
|
|
6
|
+
This is a source/documentation review, not a reproduced benchmark or a verified
|
|
7
|
+
live integration. No servers, model downloads, inference, or training ran.
|
|
8
|
+
|
|
9
|
+
OpenJarvis is useful both as a possible consumer of mlx-bun and as prior work
|
|
10
|
+
for the local adaptation research. Its most useful architectural idea is a
|
|
11
|
+
versioned configuration that can be evaluated and changed across model,
|
|
12
|
+
agent, tools, memory, and runtime settings. mlx-bun already supplies several
|
|
13
|
+
of those components. The remaining opportunity is to connect them through
|
|
14
|
+
replayable task evidence and controlled updates.
|
|
15
|
+
|
|
16
|
+
## What the diagram means for this project
|
|
17
|
+
|
|
18
|
+
The [architecture documentation][architecture] separates five configurable
|
|
19
|
+
components. Interfaces and hardware surround them. The table maps those
|
|
20
|
+
roles to documented mlx-bun capabilities; it does not claim identical scope.
|
|
21
|
+
|
|
22
|
+
| OpenJarvis component | Existing mlx-bun contribution | Work above or around the engine |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| Intelligence | Supported model graphs, model discovery, quantization and adapters | Task-aware model/adapter selection, with measured loading and switching costs |
|
|
25
|
+
| Engine | Native MLX inference, HTTP serving, TypeScript library, caching and batching | An OpenJarvis compatibility check and an adapter for richer runtime measurements |
|
|
26
|
+
| Agents | Built-in Pi and integration with an external Pi | Compare task loops, including bounded RLM, outside numerical inference code |
|
|
27
|
+
| Tools and memory | Pi tools, embeddings, personal Markdown wiki and synthesis | Common tool contracts, evidence provenance and replayable memory snapshots |
|
|
28
|
+
| Learning | LoRA SFT/DPO/ORPO training and adapter serving | Verified data collection, candidate evaluation, retention tests and promotion |
|
|
29
|
+
| User interfaces | CLI and browser application | Messaging/desktop integrations only when a concrete workload needs them |
|
|
30
|
+
|
|
31
|
+
Local sources: [CLI](../../reference/cli.md),
|
|
32
|
+
[library API](../../reference/library-api.md),
|
|
33
|
+
[server API](../../reference/server-api.md),
|
|
34
|
+
[memory](../../reference/memory.md), [training](../../reference/training.md).
|
|
35
|
+
The Dreaming is memory synthesis, not weight training. Its current
|
|
36
|
+
[`runPipeline`](../../../src/memory/pipeline.ts) assumes conversations are
|
|
37
|
+
already ingested; closing that ingestion gap remains existing work.
|
|
38
|
+
Serving a model does not imply its architecture supports every training path.
|
|
39
|
+
|
|
40
|
+
## RLM implementation and its limits
|
|
41
|
+
|
|
42
|
+
OpenJarvis includes a concrete [`RLMAgent`][rlm] with a persistent Python
|
|
43
|
+
[`RLMRepl`][repl]. It installs external context in a variable, executes
|
|
44
|
+
model-written code, exposes `llm_query` and `llm_batch`, and can return an
|
|
45
|
+
answer through `FINAL`, `FINAL_VAR`, or the `answer` dictionary.
|
|
46
|
+
|
|
47
|
+
This is a useful reference for the bounded external-context experiment in
|
|
48
|
+
the existing `harness_research/RESEARCH_PROGRAM.md`. It belongs in the task
|
|
49
|
+
execution loop. A separate optimizer could improve its prompt, decomposition
|
|
50
|
+
rules or tool configuration over time.
|
|
51
|
+
|
|
52
|
+
The inspected implementation has several details an experiment must account for:
|
|
53
|
+
|
|
54
|
+
- `llm_batch` runs subqueries sequentially. Its name does not imply engine
|
|
55
|
+
batching or parallel execution.
|
|
56
|
+
- Subqueries call `engine.generate` directly and can resolve one round of
|
|
57
|
+
returned tool calls. They do not create child REPL agents. This path should
|
|
58
|
+
not be described as arbitrary-depth recursive RLM execution.
|
|
59
|
+
- `AgentResult.metadata` accumulates root-call usage. `_make_sub_query`
|
|
60
|
+
returns text and does not add leaf or follow-up usage to that accumulator.
|
|
61
|
+
Measure every backend request independently for whole-task accounting.
|
|
62
|
+
- Root turns and per-call output tokens have limits, but these methods do not
|
|
63
|
+
impose one shared subcall/token/deadline budget. A single REPL program can
|
|
64
|
+
request many leaves. Enforce shared admission limits in a request broker.
|
|
65
|
+
- The REPL checks prohibited substrings and then invokes in-process Python
|
|
66
|
+
`exec`. Output truncation happens after execution. These mechanisms are not
|
|
67
|
+
process isolation or a hard execution/memory deadline. The project has
|
|
68
|
+
separate sandbox facilities; a benchmark must explicitly select isolation
|
|
69
|
+
and keep authoritative evaluation data outside the candidate environment.
|
|
70
|
+
- `_resolve_context` reads `AgentContext.metadata["context"]` or memory
|
|
71
|
+
results, while the normal user input still enters the root prompt.
|
|
72
|
+
Put the large corpus in the external-context field, not the user question.
|
|
73
|
+
Existing conversation messages are also retained by
|
|
74
|
+
[`BaseAgent._build_messages`][base-agent].
|
|
75
|
+
|
|
76
|
+
The appropriate comparison remains retrieval versus an external-context
|
|
77
|
+
REPL without subcalls versus bounded depth-1 RLM, on dense document
|
|
78
|
+
aggregation. Small lookup tasks establish connectivity but give weak
|
|
79
|
+
evidence about RLM's value. On a serial Mac GPU, extra model calls can erase
|
|
80
|
+
the benefit of smaller contexts; measure complete tasks.
|
|
81
|
+
|
|
82
|
+
## Self-improvement is several separate implementations
|
|
83
|
+
|
|
84
|
+
| Mechanism | What the inspected source establishes |
|
|
85
|
+
|---|---|
|
|
86
|
+
| Learned routing | [`LearnedRouterPolicy`][routing] maps coarse query classes to models using trace outcomes and feedback. This is distinct from training language-model weights. |
|
|
87
|
+
| Configuration search | [`SpecSearchOrchestrator`][search] connects diagnosis, typed edit planning, execution, evaluation and recording. Runtime dependencies must be supplied. |
|
|
88
|
+
| Candidate gate | [`BenchmarkGate`][gate] compares overall score and per-cluster regressions using a versioned benchmark and repeatable subsample seed. |
|
|
89
|
+
| Weight training | [`SFTTrainer`][sft] delegates LoRA training to a separate trainer. [`GRPOTrainer`][grpo] contains a Torch/Transformers training loop with policy and reference models. Neither was executed in this review. |
|
|
90
|
+
| Weight updates inside spec search | [`LoraStubApplier`][lora-stub] rejects `LORA_FINETUNE` and raises `NotImplementedError` if applied. Separate trainers do not establish an integrated spec-search training cycle. |
|
|
91
|
+
|
|
92
|
+
The [spec-search guide][search-guide] describes a teacher diagnosing local
|
|
93
|
+
student failures and proposing changes. Its quickstart uses fake
|
|
94
|
+
teacher/student/judge components. It illustrates the orchestration, not
|
|
95
|
+
measured improvement by a deployed learning system.
|
|
96
|
+
|
|
97
|
+
There is documentation drift worth preserving in a reproduction. The guide's
|
|
98
|
+
gate predicate requires improvement on the targeted failure cluster. The
|
|
99
|
+
inspected `BenchmarkGate.evaluate` instead requires improvement in overall
|
|
100
|
+
score and rejects excessive per-cluster regressions; it receives no target
|
|
101
|
+
cluster argument. Its constructor defaults to a 0.05 regression allowance,
|
|
102
|
+
while the guide's configuration uses 0.01. `from_config` forwards the supplied
|
|
103
|
+
value. Pin the actual configuration and predicate instead of assuming that
|
|
104
|
+
the prose, constructor defaults, and configured execution are interchangeable.
|
|
105
|
+
|
|
106
|
+
The [learning architecture page][learning] also describes older router names
|
|
107
|
+
and a GRPO router stub. Current learned routing is consolidated in
|
|
108
|
+
`learning/routing/learned_router.py`, while the separate intelligence GRPO
|
|
109
|
+
trainer has implementation code. A blanket claim that "GRPO is a stub"
|
|
110
|
+
would therefore be misleading.
|
|
111
|
+
|
|
112
|
+
The [paper][paper] is close prior work for the research program: it studies
|
|
113
|
+
typed specifications and teacher-guided edits across several components,
|
|
114
|
+
with local inference after search. Its reported experiments span multiple
|
|
115
|
+
models and hardware classes, including Macs and larger workstations.
|
|
116
|
+
They do not establish the same gains on our M1 Max or M4 Pro, or prove that
|
|
117
|
+
the checked-out code reproduces every reported experiment. Its acknowledged
|
|
118
|
+
limitations include judge bias, statistical precision and search convergence.
|
|
119
|
+
We should reproduce a bounded comparison before adopting performance claims.
|
|
120
|
+
|
|
121
|
+
## Integration path
|
|
122
|
+
|
|
123
|
+
The current [engine registry][engines] already registers `MLXEngine` through
|
|
124
|
+
the shared [`_OpenAICompatibleEngine`][http-engine]. That class accepts a
|
|
125
|
+
host URL, probes `/v1/models`, and calls `/v1/chat/completions`. The generic
|
|
126
|
+
`OpenAICompatEngine` offers the same interface for explicit endpoints.
|
|
127
|
+
This makes using mlx-bun as the inference backend a plausible small
|
|
128
|
+
integration, without importing OpenJarvis into the inference engine.
|
|
129
|
+
|
|
130
|
+
For a future smoke test, construct the generic engine with mlx-bun's origin
|
|
131
|
+
URL, without `/v1`, and choose the exact model ID from `list_models()`.
|
|
132
|
+
Check plain completion, tool-call round trips, streaming completion/error
|
|
133
|
+
handling, cancellation, reasoning output, model identity and usage against
|
|
134
|
+
raw HTTP responses. This review did not perform that test.
|
|
135
|
+
|
|
136
|
+
Two adapter behaviors need special attention:
|
|
137
|
+
|
|
138
|
+
- Synchronous generation retries a tool-bearing HTTP 400 without `tools`
|
|
139
|
+
and `tool_choice`. A successful retry does not establish tool compatibility.
|
|
140
|
+
- It takes the maximum of reported prompt tokens and an estimate, and labels
|
|
141
|
+
reported prompt tokens as `prompt_tokens_evaluated`. Those fields cannot
|
|
142
|
+
establish actual prefill work or cache reuse. Retain raw server measurements.
|
|
143
|
+
|
|
144
|
+
Use HTTP for the first comparison. A direct TypeScript implementation can
|
|
145
|
+
later use mlx-bun's library if measured requirements justify it.
|
|
146
|
+
|
|
147
|
+
## Recommended direction
|
|
148
|
+
|
|
149
|
+
Keep mlx-bun responsible for inference correctness, resource management,
|
|
150
|
+
training execution and adapter lifecycle. Keep experimental task loops and
|
|
151
|
+
the process that changes them in `harness_research` initially. Use the same
|
|
152
|
+
backend for Pi, a controlled loop and OpenJarvis comparisons.
|
|
153
|
+
|
|
154
|
+
The next useful steps extend the existing research program:
|
|
155
|
+
|
|
156
|
+
1. Complete the already proposed repeated-failure-feedback experiment in
|
|
157
|
+
`harness_research/NEXT_EXPERIMENT.md`. OpenJarvis strengthens the case for
|
|
158
|
+
including both a prompt-only comparison and executable loop changes.
|
|
159
|
+
2. Define an immutable run identity covering model artifact, quantization,
|
|
160
|
+
adapter, agent code, prompts, tools, memory snapshot, runtime settings,
|
|
161
|
+
task revision and evaluation revision. Record all root/leaf/teacher calls.
|
|
162
|
+
3. Add an OpenJarvis baseline through HTTP after the compatibility checks.
|
|
163
|
+
Preserve its full configuration and raw request trace.
|
|
164
|
+
4. Run the separate RLM ablation with one shared request budget, isolated
|
|
165
|
+
execution and serial GPU admission. Include forced finalization in costs.
|
|
166
|
+
5. Introduce typed candidate edits, frozen evaluation and rollback. Start with
|
|
167
|
+
bounded prompt/tool/loop changes before searching many dimensions together.
|
|
168
|
+
6. Connect verified examples to existing LoRA training only after the fixed
|
|
169
|
+
task loop is measurable. Compare frozen, controller-only, adapter-only and
|
|
170
|
+
combined adaptation, including retention and collection/training/eval cost.
|
|
171
|
+
|
|
172
|
+
Personal memory, task scratch state, training data and learned adapters need
|
|
173
|
+
separate identities. A useful memory article is not automatically a training
|
|
174
|
+
example, and a plausible answer is not automatically a verified success.
|
|
175
|
+
Background synthesis, judging and training all consume the same Mac budget.
|
|
176
|
+
The existing serialized scheduling proposal remains appropriate for the first
|
|
177
|
+
study; this research supplies no evidence for concurrent training and serving.
|
|
178
|
+
|
|
179
|
+
The opportunity is a local system that improves verified task outcomes while
|
|
180
|
+
remaining usable on a personal Mac. OpenJarvis provides a close comparison
|
|
181
|
+
and concrete implementation ideas. Our differentiator must be demonstrated
|
|
182
|
+
through that complete operating loop, including its costs and failures.
|
|
183
|
+
|
|
184
|
+
[architecture]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/docs/architecture/overview.md
|
|
185
|
+
[learning]: https://open-jarvis.github.io/OpenJarvis/architecture/learning/
|
|
186
|
+
[paper]: https://arxiv.org/html/2605.17172v1
|
|
187
|
+
[rlm]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/agents/rlm.py
|
|
188
|
+
[repl]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/agents/rlm_repl.py
|
|
189
|
+
[base-agent]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/agents/_stubs.py
|
|
190
|
+
[routing]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/routing/learned_router.py
|
|
191
|
+
[search]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/spec_search/orchestrator.py
|
|
192
|
+
[gate]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/spec_search/gate/benchmark_gate.py
|
|
193
|
+
[sft]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/intelligence/sft_trainer.py
|
|
194
|
+
[grpo]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/intelligence/grpo_trainer.py
|
|
195
|
+
[lora-stub]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/learning/spec_search/execute/appliers/lora_stub.py
|
|
196
|
+
[search-guide]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/docs/user-guide/llm-guided-spec-search.md
|
|
197
|
+
[engines]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/engine/openai_compat_engines.py
|
|
198
|
+
[http-engine]: https://github.com/open-jarvis/OpenJarvis/blob/e25e77d36ee487aa456978e7a7f19a7f6d712260/src/openjarvis/engine/_openai_compat.py
|