@te-river/opencode-team-mode 1.7.8 → 1.7.10
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/dist/host/v2-retry.d.ts +22 -17
- package/dist/host/v2-retry.d.ts.map +1 -1
- package/dist/host/v2-retry.js +83 -25
- package/dist/host/v2-retry.js.map +1 -1
- package/docs/installation-v2.md +11 -6
- package/docs/v2-port-notes.md +19 -0
- package/package.json +1 -1
- package/scripts/gen-v2-config.mjs +1 -1
package/dist/host/v2-retry.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 错峰重试 (#49 feature 3)
|
|
2
|
+
* 错峰重试 (#49 feature 3) — the honest half of "back off when the provider
|
|
3
3
|
* throttles us".
|
|
4
4
|
*
|
|
5
5
|
* THE HONEST BOUNDARY, stated first because everything below is shaped by it:
|
|
@@ -8,11 +8,16 @@
|
|
|
8
8
|
* does exactly three things, and says so:
|
|
9
9
|
*
|
|
10
10
|
* 1. RECOGNISE a provider throttle from the event feed (`session.error`), by
|
|
11
|
-
* matching explicit signatures only
|
|
11
|
+
* matching explicit signatures only — never by guessing. A text that
|
|
12
12
|
* not carry a known signature classifies as `unknown` and changes nothing.
|
|
13
13
|
* 2. COMPUTE an exact wait (the fixed 5s/10s/20s ladder for retries #1/#2/#3, doubling
|
|
14
|
-
* to the cap after that; jitter applies only when retryJitter > 0)
|
|
15
|
-
*
|
|
14
|
+
* to the cap after that; jitter applies only when retryJitter > 0) — but ONLY for the
|
|
15
|
+
* kinds a wait can fix. A HARD quota (allocated-exceeded / increase-your-limit /
|
|
16
|
+
* token-limit / 余额不足) names no wait: the directive says stop and raise-or-reset,
|
|
17
|
+
* and the breaker trips on the SECOND consecutive hard-quota error instead of
|
|
18
|
+
* `breakAfter`. The structured `retryAfterMs` host 2.1.2 (#57146) puts on session
|
|
19
|
+
* errors is honored as the wait floor. Inject it into the
|
|
20
|
+
* NEXT request's system prompt as an actionable sentence ("等 N 秒再发"),
|
|
16
21
|
* not a vague "try later". The directive is consumed once, so a host that
|
|
17
22
|
* replays the hook in-process cannot duplicate it.
|
|
18
23
|
* 3. COOL DOWN: after `breakAfter` consecutive throttle errors the breaker
|
|
@@ -33,16 +38,10 @@ export interface ProviderErrorClass {
|
|
|
33
38
|
kind: ProviderErrorKind;
|
|
34
39
|
/** A `Retry-After`-style hint parsed out of the text, in ms; 0 when absent. */
|
|
35
40
|
retryAfterMs: number;
|
|
41
|
+
/** true only inside the quota kind when the text says waiting cannot fix this
|
|
42
|
+
* (allocated quota / increase your limit / token-limit / 余额不足). */
|
|
43
|
+
hardQuota: boolean;
|
|
36
44
|
}
|
|
37
|
-
/**
|
|
38
|
-
* Classify a provider error from its TEXT alone. Explicit signatures only:
|
|
39
|
-
* a text with no known signature is `unknown` and must never trip anything �? * mislabelling an ordinary error as a quota error is the failure mode the plan
|
|
40
|
-
* names, and the way to avoid it is to require the signature.
|
|
41
|
-
*
|
|
42
|
-
* Order matters: quota before rate before transient, because a message can carry
|
|
43
|
-
* more than one token (e.g. "quota exceeded (429)") and the most specific class
|
|
44
|
-
* is the useful one.
|
|
45
|
-
*/
|
|
46
45
|
export declare function classifyProviderError(text: unknown): ProviderErrorClass;
|
|
47
46
|
export interface RetryConfig {
|
|
48
47
|
enabled: boolean;
|
|
@@ -61,7 +60,7 @@ export interface RetryConfig {
|
|
|
61
60
|
*/
|
|
62
61
|
export declare const RETRY_DEFAULTS: RetryConfig;
|
|
63
62
|
/**
|
|
64
|
-
* Resolve the knobs. An ILLEGAL value falls back to its default
|
|
63
|
+
* Resolve the knobs. An ILLEGAL value falls back to its default — it never
|
|
65
64
|
* silently disables the feature ("非法值回退默认,不静默关闸"). Only an explicit
|
|
66
65
|
* `retry: "off"` turns it off.
|
|
67
66
|
*/
|
|
@@ -99,7 +98,7 @@ export interface RetryDirective {
|
|
|
99
98
|
delayMs: number;
|
|
100
99
|
}
|
|
101
100
|
export interface RetryGovernor {
|
|
102
|
-
observe(text: unknown): ProviderErrorClass & {
|
|
101
|
+
observe(text: unknown, structuredRetryAfterMs?: number): ProviderErrorClass & {
|
|
103
102
|
delayMs: number;
|
|
104
103
|
};
|
|
105
104
|
observeEvent(raw: unknown): void;
|
|
@@ -133,6 +132,12 @@ export declare function createRetryGovernor(opts?: RetryGovernorOptions): RetryG
|
|
|
133
132
|
* assuming one shape.
|
|
134
133
|
*/
|
|
135
134
|
export declare function errorTextOf(raw: unknown): string;
|
|
135
|
+
/**
|
|
136
|
+
* Host 2.1.2 (#57146) puts `retryAfterMs` on structured session errors. Read it
|
|
137
|
+
* defensively — same walk style as `errorTextOf`: the payload shape is not a promised
|
|
138
|
+
* interface, so an absent or non-numeric field is simply 0.
|
|
139
|
+
*/
|
|
140
|
+
export declare function structuredRetryAfterOf(raw: unknown): number;
|
|
136
141
|
export interface RetryLayerInput {
|
|
137
142
|
scope?: TeamScope;
|
|
138
143
|
governor: RetryGovernor;
|
|
@@ -146,9 +151,9 @@ export interface RetryLayer {
|
|
|
146
151
|
}
|
|
147
152
|
/**
|
|
148
153
|
* Register the two hooks the retry layer owns:
|
|
149
|
-
* · `session.hook("context")`
|
|
154
|
+
* · `session.hook("context")` — inject the pending directive (exact seconds)
|
|
150
155
|
* into the NEXT request's system prompt, once, Team-scoped.
|
|
151
|
-
* · `permission.hook("evaluate")`
|
|
156
|
+
* · `permission.hook("evaluate")` — deny a `subagent` dispatch while the
|
|
152
157
|
* breaker's cooldown is active, Team-scoped, only ever stricter.
|
|
153
158
|
*
|
|
154
159
|
* Nothing here throws into a hook: a failure is counted and the call is allowed
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2-retry.d.ts","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"v2-retry.d.ts","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"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"}
|
package/dist/host/v2-retry.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* 错峰重试 (#49 feature 3)
|
|
2
|
+
* 错峰重试 (#49 feature 3) — the honest half of "back off when the provider
|
|
3
3
|
* throttles us".
|
|
4
4
|
*
|
|
5
5
|
* THE HONEST BOUNDARY, stated first because everything below is shaped by it:
|
|
@@ -8,11 +8,16 @@
|
|
|
8
8
|
* does exactly three things, and says so:
|
|
9
9
|
*
|
|
10
10
|
* 1. RECOGNISE a provider throttle from the event feed (`session.error`), by
|
|
11
|
-
* matching explicit signatures only
|
|
11
|
+
* matching explicit signatures only — never by guessing. A text that
|
|
12
12
|
* not carry a known signature classifies as `unknown` and changes nothing.
|
|
13
13
|
* 2. COMPUTE an exact wait (the fixed 5s/10s/20s ladder for retries #1/#2/#3, doubling
|
|
14
|
-
* to the cap after that; jitter applies only when retryJitter > 0)
|
|
15
|
-
*
|
|
14
|
+
* to the cap after that; jitter applies only when retryJitter > 0) — but ONLY for the
|
|
15
|
+
* kinds a wait can fix. A HARD quota (allocated-exceeded / increase-your-limit /
|
|
16
|
+
* token-limit / 余额不足) names no wait: the directive says stop and raise-or-reset,
|
|
17
|
+
* and the breaker trips on the SECOND consecutive hard-quota error instead of
|
|
18
|
+
* `breakAfter`. The structured `retryAfterMs` host 2.1.2 (#57146) puts on session
|
|
19
|
+
* errors is honored as the wait floor. Inject it into the
|
|
20
|
+
* NEXT request's system prompt as an actionable sentence ("等 N 秒再发"),
|
|
16
21
|
* not a vague "try later". The directive is consumed once, so a host that
|
|
17
22
|
* replays the hook in-process cannot duplicate it.
|
|
18
23
|
* 3. COOL DOWN: after `breakAfter` consecutive throttle errors the breaker
|
|
@@ -29,31 +34,35 @@ import { resolveConfig } from "../tm/config.js";
|
|
|
29
34
|
export const RETRY_MARKER = "## Team Retry";
|
|
30
35
|
/**
|
|
31
36
|
* Classify a provider error from its TEXT alone. Explicit signatures only:
|
|
32
|
-
* a text with no known signature is `unknown` and must never trip anything
|
|
37
|
+
* a text with no known signature is `unknown` and must never trip anything —
|
|
33
38
|
* names, and the way to avoid it is to require the signature.
|
|
34
39
|
*
|
|
35
40
|
* Order matters: quota before rate before transient, because a message can carry
|
|
36
41
|
* more than one token (e.g. "quota exceeded (429)") and the most specific class
|
|
37
42
|
* is the useful one.
|
|
38
43
|
*/
|
|
44
|
+
/** The exhaustion sub-signature: a wait cannot fix these — the limit must be raised
|
|
45
|
+
* or the period must roll over. A bare "quota exceeded" stays SOFT (it may already
|
|
46
|
+
* carry a reset), per the "explicit signatures only" rule above. */
|
|
47
|
+
const HARD_QUOTA_RE = /allocated quota exceeded|increase your quota|insufficient quota|quota limit|token[- ]limit|余额不足/;
|
|
39
48
|
export function classifyProviderError(text) {
|
|
40
49
|
const s = typeof text === "string" ? text : "";
|
|
41
50
|
if (!s.trim())
|
|
42
|
-
return { kind: "unknown", retryAfterMs: 0 };
|
|
51
|
+
return { kind: "unknown", retryAfterMs: 0, hardQuota: false };
|
|
43
52
|
const lower = s.toLowerCase();
|
|
44
53
|
const retryAfterMs = parseRetryAfter(s);
|
|
45
54
|
if (/allocated quota exceeded|quota exceeded|insufficient_quota|exceeded.*quota|quota.*exceed|配额|余额不足/.test(lower)) {
|
|
46
|
-
return { kind: "quota", retryAfterMs };
|
|
55
|
+
return { kind: "quota", retryAfterMs, hardQuota: HARD_QUOTA_RE.test(lower) };
|
|
47
56
|
}
|
|
48
57
|
if (/\b429\b|too many requests|rate[ _-]?limit|rate_limit_exceeded|限流|请求过于频繁/.test(lower)) {
|
|
49
|
-
return { kind: "rate", retryAfterMs };
|
|
58
|
+
return { kind: "rate", retryAfterMs, hardQuota: false };
|
|
50
59
|
}
|
|
51
60
|
if (/\b50[0-4]\b|overloaded|temporarily unavailable|service unavailable|bad gateway|gateway timeout|timed? ?out|timeout|econnreset|etimedout|socket hang up/.test(lower)) {
|
|
52
|
-
return { kind: "transient", retryAfterMs };
|
|
61
|
+
return { kind: "transient", retryAfterMs, hardQuota: false };
|
|
53
62
|
}
|
|
54
|
-
return { kind: "unknown", retryAfterMs };
|
|
63
|
+
return { kind: "unknown", retryAfterMs, hardQuota: false };
|
|
55
64
|
}
|
|
56
|
-
/** `Retry-After: 30` / `retry after 30 seconds`
|
|
65
|
+
/** `Retry-After: 30` / `retry after 30 seconds` → 30 000 ms. Absent → 0. */
|
|
57
66
|
function parseRetryAfter(s) {
|
|
58
67
|
const m = /retry[-_ ]?after["'\s:=]+(\d+)/i.exec(s);
|
|
59
68
|
if (!m)
|
|
@@ -78,7 +87,7 @@ export const RETRY_DEFAULTS = {
|
|
|
78
87
|
};
|
|
79
88
|
const isOff = (raw) => /^(off|false|0|no)$/i.test(String(raw ?? "").trim());
|
|
80
89
|
/**
|
|
81
|
-
* Resolve the knobs. An ILLEGAL value falls back to its default
|
|
90
|
+
* Resolve the knobs. An ILLEGAL value falls back to its default — it never
|
|
82
91
|
* silently disables the feature ("非法值回退默认,不静默关闸"). Only an explicit
|
|
83
92
|
* `retry: "off"` turns it off.
|
|
84
93
|
*/
|
|
@@ -136,17 +145,28 @@ export function createRetryGovernor(opts = {}) {
|
|
|
136
145
|
threw: 0,
|
|
137
146
|
};
|
|
138
147
|
let streak = 0;
|
|
148
|
+
let hardStreak = 0;
|
|
139
149
|
let cooldownUntil = 0;
|
|
140
150
|
let pending = null;
|
|
141
151
|
const inCooldown = () => now() < cooldownUntil;
|
|
142
|
-
const buildDirective = (
|
|
152
|
+
const buildDirective = (cls, delayMs) => {
|
|
153
|
+
if (cls.hardQuota) {
|
|
154
|
+
const hint = cls.retryAfterMs > 0 ? `(错误文本给出的重试时间:约 ${Math.round(cls.retryAfterMs / 1000)} 秒)` : "";
|
|
155
|
+
return {
|
|
156
|
+
text: `${RETRY_MARKER}(配额耗尽,不是故障)\n检测到 provider 配额耗尽(hard quota):等待与重试都无法解决——请停止向该 provider 重发${hint},等其配额重置,或请用户提升配额/更换模型。需要完成的工作请主代理自己执行(再派子代理只会被同样的配额打回)。这是配额保护,不是插件故障;可用 retry: "off" 关闭。`,
|
|
157
|
+
delayMs: 0,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
return buildLadderDirective(cls.kind, delayMs);
|
|
161
|
+
};
|
|
162
|
+
const buildLadderDirective = (kind, delayMs) => {
|
|
143
163
|
const secs = Math.max(1, Math.round(delayMs / 1000));
|
|
144
164
|
const text = inCooldown()
|
|
145
|
-
? `${RETRY_MARKER}(配额保护,不是故障)\n连续 ${cfg.breakAfter}
|
|
146
|
-
: `${RETRY_MARKER}(配额保护,不是故障)\n检测到 provider ${kindLabel(kind)} 错误:请等待 ${secs}
|
|
165
|
+
? `${RETRY_MARKER}(配额保护,不是故障)\n连续 ${cfg.breakAfter} 次配额/限流错误,已进入冷却:请等待 ${secs} 秒后再发下一次请求,这是配额保护,不是插件故障;可用 retry: "off" 关闭。`
|
|
166
|
+
: `${RETRY_MARKER}(配额保护,不是故障)\n检测到 provider ${kindLabel(kind)} 错误:请等待 ${secs} 秒后再发下一次请求。这是配额保护,不是插件故障;可用 retry: "off" 关闭。`;
|
|
147
167
|
return { text, delayMs };
|
|
148
168
|
};
|
|
149
|
-
const observe = (text) => {
|
|
169
|
+
const observe = (text, structuredRetryAfterMs = 0) => {
|
|
150
170
|
const cls = classifyProviderError(text);
|
|
151
171
|
if (cls.kind === "unknown") {
|
|
152
172
|
report.unknownSeen++;
|
|
@@ -159,20 +179,27 @@ export function createRetryGovernor(opts = {}) {
|
|
|
159
179
|
else
|
|
160
180
|
report.transientSeen++;
|
|
161
181
|
streak++;
|
|
162
|
-
|
|
182
|
+
hardStreak = cls.hardQuota ? hardStreak + 1 : 0;
|
|
183
|
+
const structured = Number.isFinite(structuredRetryAfterMs) && structuredRetryAfterMs > 0 ? structuredRetryAfterMs : 0;
|
|
184
|
+
const retryAfterSource = structured > 0 ? "structured" : cls.retryAfterMs > 0 ? "text" : "none";
|
|
185
|
+
// A hard quota names NO wait — the ladder would be a promise a reset cannot keep.
|
|
186
|
+
const delayMs = cls.hardQuota ? 0 : Math.max(backoffMs(streak - 1, cfg.baseMs, cfg.maxMs, cfg.jitter, random), structured, cls.retryAfterMs);
|
|
163
187
|
report.lastDelayMs = delayMs;
|
|
164
|
-
emit({ event: "classified", kind: cls.kind, delay_ms: delayMs, streak });
|
|
165
|
-
// The breaker: consecutive errors
|
|
166
|
-
|
|
188
|
+
emit({ event: "classified", kind: cls.kind, hard_quota: cls.hardQuota, delay_ms: delayMs, streak, retry_after_source: retryAfterSource });
|
|
189
|
+
// The breaker: consecutive errors of a throttle class. A hard quota is different
|
|
190
|
+
// work — two in a row means the provider is out of allocation, and waiting for
|
|
191
|
+
// breakAfter only burns the user's tokens on a dead endpoint.
|
|
192
|
+
if (isThrottle(cls.kind) && (cls.hardQuota ? hardStreak >= 2 : streak >= cfg.breakAfter)) {
|
|
167
193
|
const wasIn = inCooldown();
|
|
168
194
|
cooldownUntil = now() + cfg.cooldownMs;
|
|
169
195
|
report.cooldowns++;
|
|
170
196
|
if (!wasIn)
|
|
171
197
|
report.breakTrips++;
|
|
172
198
|
streak = 0;
|
|
199
|
+
hardStreak = 0;
|
|
173
200
|
emit({ event: "cooldown", break_trips: report.breakTrips, cooldowns: report.cooldowns, cooldown_ms: cfg.cooldownMs });
|
|
174
201
|
}
|
|
175
|
-
pending = buildDirective(cls
|
|
202
|
+
pending = buildDirective(cls, delayMs);
|
|
176
203
|
return { ...cls, delayMs };
|
|
177
204
|
};
|
|
178
205
|
return {
|
|
@@ -180,7 +207,7 @@ export function createRetryGovernor(opts = {}) {
|
|
|
180
207
|
observeEvent(raw) {
|
|
181
208
|
const text = errorTextOf(raw);
|
|
182
209
|
if (text)
|
|
183
|
-
observe(text);
|
|
210
|
+
observe(text, structuredRetryAfterOf(raw));
|
|
184
211
|
},
|
|
185
212
|
directive: () => pending,
|
|
186
213
|
takeDirective() {
|
|
@@ -194,6 +221,7 @@ export function createRetryGovernor(opts = {}) {
|
|
|
194
221
|
report,
|
|
195
222
|
reset() {
|
|
196
223
|
streak = 0;
|
|
224
|
+
hardStreak = 0;
|
|
197
225
|
cooldownUntil = 0;
|
|
198
226
|
pending = null;
|
|
199
227
|
},
|
|
@@ -243,12 +271,42 @@ export function errorTextOf(raw) {
|
|
|
243
271
|
}
|
|
244
272
|
return parts.join(" ");
|
|
245
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* Host 2.1.2 (#57146) puts `retryAfterMs` on structured session errors. Read it
|
|
276
|
+
* defensively — same walk style as `errorTextOf`: the payload shape is not a promised
|
|
277
|
+
* interface, so an absent or non-numeric field is simply 0.
|
|
278
|
+
*/
|
|
279
|
+
export function structuredRetryAfterOf(raw) {
|
|
280
|
+
if (!raw || typeof raw !== "object")
|
|
281
|
+
return 0;
|
|
282
|
+
const pick = (v) => (typeof v === "number" && Number.isFinite(v) && v > 0 ? v : 0);
|
|
283
|
+
const o = raw;
|
|
284
|
+
const direct = pick(o.retryAfterMs);
|
|
285
|
+
if (direct)
|
|
286
|
+
return direct;
|
|
287
|
+
const err = o.error;
|
|
288
|
+
if (err && typeof err === "object") {
|
|
289
|
+
const e = pick(err.retryAfterMs);
|
|
290
|
+
if (e)
|
|
291
|
+
return e;
|
|
292
|
+
}
|
|
293
|
+
const props = (o.properties ?? o.payload ?? o.data);
|
|
294
|
+
if (props && typeof props === "object") {
|
|
295
|
+
const p = pick(props.retryAfterMs);
|
|
296
|
+
if (p)
|
|
297
|
+
return p;
|
|
298
|
+
const pe = props.error;
|
|
299
|
+
if (pe && typeof pe === "object")
|
|
300
|
+
return pick(pe.retryAfterMs);
|
|
301
|
+
}
|
|
302
|
+
return 0;
|
|
303
|
+
}
|
|
246
304
|
const rank = { allow: 0, ask: 1, deny: 2 };
|
|
247
305
|
/**
|
|
248
306
|
* Register the two hooks the retry layer owns:
|
|
249
|
-
* · `session.hook("context")`
|
|
307
|
+
* · `session.hook("context")` — inject the pending directive (exact seconds)
|
|
250
308
|
* into the NEXT request's system prompt, once, Team-scoped.
|
|
251
|
-
* · `permission.hook("evaluate")`
|
|
309
|
+
* · `permission.hook("evaluate")` — deny a `subagent` dispatch while the
|
|
252
310
|
* breaker's cooldown is active, Team-scoped, only ever stricter.
|
|
253
311
|
*
|
|
254
312
|
* Nothing here throws into a hook: a failure is counted and the call is allowed
|
|
@@ -304,7 +362,7 @@ export async function applyV2RetryGovernor(ctx, input) {
|
|
|
304
362
|
/* the trajectory line is an extra */
|
|
305
363
|
}
|
|
306
364
|
const secs = Math.max(1, Math.round(governor.cooldownRemainingMs() / 1000));
|
|
307
|
-
const message =
|
|
365
|
+
const message = `配额保护:上游配额/限流已连续打回请求,冷却中(剩余约 ${secs} 秒)。期间不派发新的子代理——子代理的模型请求会继续被打回,需要完成的工作请主代理自己执行,或等冷却结束/提升配额。这是配额保护,不是故障;可用 retry: "off" 关闭。`;
|
|
308
366
|
// Only ever stricter: a host that already denied keeps its decision.
|
|
309
367
|
if (rank.deny <= rank[event.effect ?? "allow"])
|
|
310
368
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"v2-retry.js","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"v2-retry.js","sourceRoot":"","sources":["../../src/host/v2-retry.ts"],"names":[],"mappings":"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"}
|
package/docs/installation-v2.md
CHANGED
|
@@ -190,7 +190,8 @@ it applies to new sessions.
|
|
|
190
190
|
### Step 4 — Restart and verify
|
|
191
191
|
|
|
192
192
|
```bash
|
|
193
|
-
|
|
193
|
+
# restart the desktop app — do NOT use `opencode reload`: it crashes on
|
|
194
|
+
# 2.1.2's background-service path (upstream anomalyco/opencode#57719)
|
|
194
195
|
```
|
|
195
196
|
|
|
196
197
|
Four checks, in this order:
|
|
@@ -211,9 +212,11 @@ Four checks, in this order:
|
|
|
211
212
|
### Updating / 更新
|
|
212
213
|
|
|
213
214
|
```bash
|
|
214
|
-
opencode plugin update @te-river/opencode-team-mode #
|
|
215
|
+
opencode plugin update @te-river/opencode-team-mode # NOTE: broken on 2.1.2 — says
|
|
216
|
+
# "Plugin is not configured" for a configured plugin (upstream anomalyco/opencode#57719);
|
|
217
|
+
# re-run the installer instead
|
|
215
218
|
node ~/.config/opencode/node_modules/@te-river/opencode-team-mode/scripts/gen-v2-config.mjs
|
|
216
|
-
opencode reload
|
|
219
|
+
# then restart the desktop app (`opencode reload` is broken there too)
|
|
217
220
|
```
|
|
218
221
|
|
|
219
222
|
The second command is not optional after an upgrade: the role files carry the prompts, and
|
|
@@ -453,7 +456,8 @@ Windows 上的路径是
|
|
|
453
456
|
### 第 4 步 — 重启并核对
|
|
454
457
|
|
|
455
458
|
```bash
|
|
456
|
-
opencode reload
|
|
459
|
+
# 重启桌面端——不要用 `opencode reload`:它在 2.1.2 的后台服务路径上崩溃
|
|
460
|
+
# (上游 anomalyco/opencode#57719)
|
|
457
461
|
```
|
|
458
462
|
|
|
459
463
|
按顺序做四项核对:
|
|
@@ -473,9 +477,10 @@ opencode reload # 或者直接重启桌面端
|
|
|
473
477
|
### 更新
|
|
474
478
|
|
|
475
479
|
```bash
|
|
476
|
-
opencode plugin update @te-river/opencode-team-mode #
|
|
480
|
+
opencode plugin update @te-river/opencode-team-mode # 注意:2.1.2 上这条会报
|
|
481
|
+
# "Plugin is not configured"(插件其实已配置)——请改重跑安装器(上游 anomalyco/opencode#57719)
|
|
477
482
|
node ~/.config/opencode/node_modules/@te-river/opencode-team-mode/scripts/gen-v2-config.mjs
|
|
478
|
-
opencode reload
|
|
483
|
+
# 然后重启桌面端(`opencode reload` 在 2.1.2 上同样会崩)
|
|
479
484
|
```
|
|
480
485
|
|
|
481
486
|
第二条命令在升级之后不是可选项:角色文件里装的是提示词,新版本可能改过。重跑很便宜——没变
|
package/docs/v2-port-notes.md
CHANGED
|
@@ -652,3 +652,22 @@ three forced-background `subagent` dispatches each settled and their full bodies
|
|
|
652
652
|
(the completion envelope injection path works on 2.1.2), and the boot probe against the real
|
|
653
653
|
config shows `loading plugin … @te-river/opencode-team-mode@latest` from the host cache with the
|
|
654
654
|
`[team-mode] v2 人格已启动` note and no load failure.
|
|
655
|
+
|
|
656
|
+
**The reload path is broken on 2.1.2 `[L]`:** `opencode-cli reload` dies with
|
|
657
|
+
`ServiceUnavailableError: TypeError: o is not a function. (In 'o()', 'o' is an instance of Object)`
|
|
658
|
+
inside `ServerProcess.start` (exit 1); from another cwd the same trace shows
|
|
659
|
+
`at Worktree.refresh`. The control that localizes it: `reload --standalone` in a fully
|
|
660
|
+
redirected sandbox with an EMPTY config answers `Configuration reloaded` exit 0, while
|
|
661
|
+
service-attach reload crashes even with an empty `OPENCODE_CONFIG_DIR` and a healthy
|
|
662
|
+
`service status` — so the bug is the background-service attach / worktree-refresh path in the
|
|
663
|
+
host binary, not config content and not plugins (plugin code never runs in the CLI process).
|
|
664
|
+
The desktop UI surfaces the same TypeError on its plugin-update toast, and
|
|
665
|
+
`opencode plugin update <pkg>` reports "Plugin is not configured" for a globally configured
|
|
666
|
+
plugin (both with and without the `@latest` suffix). Upstream issue filed as
|
|
667
|
+
anomalyco/opencode#57719; our docs/installers now tell users to restart the app instead.
|
|
668
|
+
**The gentler path exists, untested:** the command tree carries `opencode service restart`
|
|
669
|
+
("Restart the background server"; `service start|stop|status` beside it) — the first thing to
|
|
670
|
+
try before touching processes at all. It restarts the background server the CLI shares; how
|
|
671
|
+
the DESKTOP app re-attaches to its embedded server afterwards is unmeasured, so it has not
|
|
672
|
+
been adopted into the docs yet — verify it live (accepting a possible session interruption)
|
|
673
|
+
before recommending it.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@te-river/opencode-team-mode",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.10",
|
|
4
4
|
"description": "Team collaboration mode plugin for OpenCode Desktop — injects specialized agents (architect, reviewer, implementer, tester, researcher) and team workflow commands into your OpenCode workspace.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -480,7 +480,7 @@ function main() {
|
|
|
480
480
|
for (const u of unverified) console.log(u)
|
|
481
481
|
console.log(
|
|
482
482
|
`\n共 ${written.length} 个文件(角色 ${Object.keys(agents).length} + 命令 ${Object.keys(commands).length})` +
|
|
483
|
-
`${printOnly ? "(--print,未落盘)" : ""}
|
|
483
|
+
`${printOnly ? "(--print,未落盘)" : ""}。重启桌面端后 Team 出现在 agent 选择器、/team-* 出现在命令列表(2.1.2 上别用 opencode reload,它会崩——上游 anomalyco/opencode#57719)。`,
|
|
484
484
|
)
|
|
485
485
|
if (unverified.length) {
|
|
486
486
|
console.log(`注意:${unverified.length} 个文件无法确认是否与目标同一文件,已保留不删(#48 fail-safe)。`)
|