@qwen-code/qwen-code 0.15.7-preview.0 → 0.15.7-preview.1
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/bundled/qc-helper/docs/features/code-review.md +14 -14
- package/bundled/review/DESIGN.md +2 -0
- package/bundled/review/SKILL.md +6 -6
- package/cli.js +9253 -7392
- package/package.json +2 -2
|
@@ -129,15 +129,15 @@ You can review PRs from other repositories by passing the full URL:
|
|
|
129
129
|
|
|
130
130
|
This runs in **lightweight mode** — no worktree, no linter, no build/test, no autofix. The review is based on the diff text only (fetched via GitHub API). PR comments can still be posted if you have write access.
|
|
131
131
|
|
|
132
|
-
| Capability
|
|
133
|
-
|
|
|
132
|
+
| Capability | Same-repo | Cross-repo |
|
|
133
|
+
| ---------------------------------------------------------- | --------- | ----------------------------- |
|
|
134
134
|
| LLM review (Agents 1-6 + verify + iterative reverse audit) | ✅ | ✅ |
|
|
135
135
|
| Agent 7: Build & test | ✅ | ❌ (no local codebase) |
|
|
136
|
-
| Deterministic analysis (linter/typecheck)
|
|
137
|
-
| Cross-file impact analysis
|
|
138
|
-
| Autofix
|
|
139
|
-
| PR inline comments
|
|
140
|
-
| Incremental review cache
|
|
136
|
+
| Deterministic analysis (linter/typecheck) | ✅ | ❌ |
|
|
137
|
+
| Cross-file impact analysis | ✅ | ❌ |
|
|
138
|
+
| Autofix | ✅ | ❌ |
|
|
139
|
+
| PR inline comments | ✅ | ✅ (if you have write access) |
|
|
140
|
+
| Incremental review cache | ✅ | ❌ |
|
|
141
141
|
|
|
142
142
|
## PR Inline Comments
|
|
143
143
|
|
|
@@ -258,13 +258,13 @@ For large diffs (>10 modified symbols), analysis prioritizes functions with sign
|
|
|
258
258
|
|
|
259
259
|
The review pipeline uses a bounded number of LLM calls regardless of how many findings are produced:
|
|
260
260
|
|
|
261
|
-
| Stage | LLM calls | Notes
|
|
262
|
-
| -------------------------------- | ----------------- |
|
|
263
|
-
| Deterministic analysis (Step 3) | 0 | Shell commands only
|
|
264
|
-
| Review agents (Step 4) | 9 (or 8) | Run in parallel; Agent 7 skipped in cross-repo mode
|
|
265
|
-
| Batch verification (Step 5) | 1 | Single agent verifies all findings at once
|
|
266
|
-
| Iterative reverse audit (Step 6) | 1-3 | Loops until "No issues found" or 3-round cap
|
|
267
|
-
| **Total** | **11-13 (10-12)** | Same-repo: 11-13; cross-repo: 10-12 (no Agent 7)
|
|
261
|
+
| Stage | LLM calls | Notes |
|
|
262
|
+
| -------------------------------- | ----------------- | --------------------------------------------------- |
|
|
263
|
+
| Deterministic analysis (Step 3) | 0 | Shell commands only |
|
|
264
|
+
| Review agents (Step 4) | 9 (or 8) | Run in parallel; Agent 7 skipped in cross-repo mode |
|
|
265
|
+
| Batch verification (Step 5) | 1 | Single agent verifies all findings at once |
|
|
266
|
+
| Iterative reverse audit (Step 6) | 1-3 | Loops until "No issues found" or 3-round cap |
|
|
267
|
+
| **Total** | **11-13 (10-12)** | Same-repo: 11-13; cross-repo: 10-12 (no Agent 7) |
|
|
268
268
|
|
|
269
269
|
Most PRs converge to the lower end of the range (1 reverse audit round); the cap prevents runaway cost on pathological cases.
|
|
270
270
|
|
package/bundled/review/DESIGN.md
CHANGED
|
@@ -121,6 +121,7 @@ Forcing the user to confirm-or-decline every time the PR has any Qwen Code histo
|
|
|
121
121
|
**Priority matters because** a stale or resolved comment that happens to share a `(path, line)` with a new finding is not a real conflict — the underlying code may have changed in the stale case, and the conversation is already closed in the resolved case. Without priority, the line-based check would fire false-positive prompts on those.
|
|
122
122
|
|
|
123
123
|
**Trade-off:**
|
|
124
|
+
|
|
124
125
|
- ✅ Common case (re-running /review on a PR after a few new commits) no longer prompts unnecessarily.
|
|
125
126
|
- ✅ The terminal log keeps the user informed about what was skipped, so transparency is preserved.
|
|
126
127
|
- ❌ Conceptual overlap that doesn't share a line is missed — e.g. a prior comment on line 559 about cache lifecycle and a new comment on line 1352 about cache lifecycle would be classified `No conflict`. Line-based heuristics cannot detect "same root cause, different anchor." If the user wants semantic-overlap detection, they must read the terminal log and the PR comments themselves.
|
|
@@ -144,6 +145,7 @@ Line-based classification was chosen because it's deterministic, cheap, and catc
|
|
|
144
145
|
**Why this stacks with self-PR downgrade:** a self-authored PR with red CI hits **both** downgrade rules. The event is `COMMENT` either way, so stacking is operationally a no-op — but the body should mention both reasons so a future maintainer reading the review knows why an LLM that found no Critical issues did not approve.
|
|
145
146
|
|
|
146
147
|
**Trade-off:**
|
|
148
|
+
|
|
147
149
|
- ✅ No more "LLM approved while CI is red" embarrassments.
|
|
148
150
|
- ✅ Reviewer's substantive work (inline comments) is preserved.
|
|
149
151
|
- ❌ Adds two extra API calls (`check-runs` + `statuses`) per APPROVE-bound submit; only relevant for the `APPROVE` path so the cost is negligible.
|
package/bundled/review/SKILL.md
CHANGED
|
@@ -117,12 +117,12 @@ Extract the list of changed files from the diff output. For local uncommitted re
|
|
|
117
117
|
|
|
118
118
|
Tools currently covered:
|
|
119
119
|
|
|
120
|
-
| Language
|
|
121
|
-
|
|
122
|
-
| TypeScript / JavaScript | `tsc --noEmit --incremental` (typecheck), `eslint --format=json` (linter, changed files only)
|
|
123
|
-
| Python
|
|
124
|
-
| Rust
|
|
125
|
-
| Go
|
|
120
|
+
| Language | Tools |
|
|
121
|
+
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
122
|
+
| TypeScript / JavaScript | `tsc --noEmit --incremental` (typecheck), `eslint --format=json` (linter, changed files only) |
|
|
123
|
+
| Python | `ruff check --output-format=json` (linter, changed files only) |
|
|
124
|
+
| Rust | `cargo clippy --message-format=json` (typecheck — clippy includes compile checks; Agent 7 can skip `cargo build`) |
|
|
125
|
+
| Go | `go vet ./...` (typecheck — vet includes compile checks; Agent 7 can skip `go build`), `golangci-lint run --out-format=json ./...` (linter) |
|
|
126
126
|
|
|
127
127
|
Read the output JSON. `findings[]` entries are already pre-confirmed (Source: `[typecheck]` for tsc / cargo-clippy / go-vet, `[linter]` for eslint / ruff / golangci-lint, with `severity` mapped to Critical / Nice to have); pass them straight through to Step 5. `toolsRun[]` records exit codes / durations / timeout flags; `toolsSkipped[]` records why a tool didn't run (no config, missing runtime, etc.) — include the skipped tool names in the Step 7 summary.
|
|
128
128
|
|