@shadowclone/cli 0.0.3 → 0.0.5
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 +18 -13
- package/dist/shadowclone.js +393 -50
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -60,6 +60,11 @@ Grant consent for desired transcript sources:
|
|
|
60
60
|
shadowclone init
|
|
61
61
|
```
|
|
62
62
|
|
|
63
|
+
Every source is off until it is enabled here, and two of them read files that are not transcripts:
|
|
64
|
+
|
|
65
|
+
- **`git-metadata`** reads the git remote origin of a working directory, so rules can be scoped to the organization they were learned from. Without it every directory is treated as its own isolated origin.
|
|
66
|
+
- **`agent-context`** reads the user's own `CLAUDE.md` or `AGENTS.md`, their skill markdown, and their agent memory directory. It exists so a transfer evaluation can freeze the same setup for both arms, and it is read only by `shadowclone eval`. Contents pass through redaction before they are written into a snapshot.
|
|
67
|
+
|
|
63
68
|
Index your historical sessions and build your profile:
|
|
64
69
|
|
|
65
70
|
```bash
|
|
@@ -86,25 +91,25 @@ shadowclone install
|
|
|
86
91
|
|
|
87
92
|
This writes `.claude/agents/shadowclone.md` and excludes it from git tracking.
|
|
88
93
|
|
|
89
|
-
##
|
|
94
|
+
## Transfer evaluation
|
|
90
95
|
|
|
91
|
-
Shadowclone
|
|
96
|
+
Shadowclone measures whether the profile changes behavior, against tasks the user actually asked for:
|
|
92
97
|
|
|
93
98
|
```bash
|
|
94
|
-
shadowclone eval --
|
|
99
|
+
shadowclone eval --tasks 5 --engine codex
|
|
95
100
|
```
|
|
96
101
|
|
|
97
|
-
The evaluator
|
|
98
|
-
1. **Baseline run:**
|
|
99
|
-
2. **Clone run:** agent
|
|
102
|
+
The evaluator selects historical requests that name an identifiable starting commit, rebuilds each one as an isolated git snapshot at that commit, and runs the task twice:
|
|
103
|
+
1. **Baseline run:** the agent with frozen instructions and no profile.
|
|
104
|
+
2. **Clone run:** the same agent with the profile learned from sessions strictly earlier than the task.
|
|
105
|
+
|
|
106
|
+
Arm order alternates between repetitions, and the profile is learned only from evidence that predates the task and shares no session with it.
|
|
107
|
+
|
|
108
|
+
Each run is graded two ways. The repository's own `test` and `typecheck` scripts run inside a `sandbox-exec` or `bubblewrap` boundary with no network. A blind judge then grades the observed files and actions twice with the requirement order reversed, and any disagreement between the two passes is recorded as uncertain rather than resolved.
|
|
100
109
|
|
|
101
|
-
|
|
102
|
-
- **Tools:** Jaccard similarity of invoked tools.
|
|
103
|
-
- **Verification:** Jaccard similarity of two-token bash verification commands (e.g. `bun test`, `cargo check`).
|
|
104
|
-
- **Files:** Jaccard similarity of posix repository-relative edited paths.
|
|
105
|
-
- **Planning:** Match on whether planning tools were invoked before the first file edit.
|
|
110
|
+
The command previews how many agent invocations it may spend and asks before starting. Pass `--yes` to skip the prompt, or `--json` for machine-readable output.
|
|
106
111
|
|
|
107
|
-
|
|
112
|
+
Receipts are written to `~/.shadowclone/eval/<evalId>/receipt.json` after every run, so `--eval-id <id>` resumes an interrupted evaluation against the same frozen tasks.
|
|
108
113
|
|
|
109
114
|
## Unattended dispatch
|
|
110
115
|
|
|
@@ -133,7 +138,7 @@ The SQLite index stores file offsets, timestamps, and event kinds. Raw transcrip
|
|
|
133
138
|
Distillation excerpts pass through a deterministic sliced replacer before reaching any model. Secrets keep identifying prefixes (such as `AKIA` or `sk_live_`) while stripping high-entropy characters, keeping code context intact without leaking credentials.
|
|
134
139
|
|
|
135
140
|
**Shannon entropy layer.**
|
|
136
|
-
|
|
141
|
+
Tokens of 24 characters or more that reach 4.5 bits of entropy per character are sliced under the `shannon-entropy` label, even when they match no known vendor pattern. Long identifiers, file paths, and UUIDs measure below that threshold and stay readable.
|
|
137
142
|
|
|
138
143
|
**Third-party tool results are excluded.**
|
|
139
144
|
Distillation inputs allowlist user prompts and developer steering corrections. Tool outputs from database queries, log dumps, and file reads are excluded by category rather than relying on regex filtering.
|