@songsid/agend 2.1.4-beta.18 → 2.1.4-beta.19
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/backend/antigravity.d.ts +1 -0
- package/dist/backend/antigravity.js +4 -0
- package/dist/backend/antigravity.js.map +1 -1
- package/dist/backend/codex.d.ts +17 -0
- package/dist/backend/codex.js +51 -0
- package/dist/backend/codex.js.map +1 -1
- package/dist/backend/types.d.ts +10 -0
- package/dist/backend/types.js.map +1 -1
- package/dist/channel/adapters/discord.js +48 -21
- package/dist/channel/adapters/discord.js.map +1 -1
- package/dist/channel/adapters/telegram.js +5 -3
- package/dist/channel/adapters/telegram.js.map +1 -1
- package/dist/channel/types.d.ts +1 -1
- package/dist/cli.js +31 -21
- package/dist/cli.js.map +1 -1
- package/dist/config-validator.js +3 -0
- package/dist/config-validator.js.map +1 -1
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/daemon.d.ts +33 -0
- package/dist/daemon.js +134 -6
- package/dist/daemon.js.map +1 -1
- package/dist/doctor.js +34 -27
- package/dist/doctor.js.map +1 -1
- package/dist/fleet-context.d.ts +2 -0
- package/dist/fleet-manager.d.ts +14 -0
- package/dist/fleet-manager.js +305 -75
- package/dist/fleet-manager.js.map +1 -1
- package/dist/locale.js +656 -330
- package/dist/locale.js.map +1 -1
- package/dist/outbound-handlers.js +5 -1
- package/dist/outbound-handlers.js.map +1 -1
- package/dist/restart-progress.d.ts +2 -0
- package/dist/restart-progress.js +3 -0
- package/dist/restart-progress.js.map +1 -1
- package/dist/scheduler/db.d.ts +5 -0
- package/dist/scheduler/db.js +35 -0
- package/dist/scheduler/db.js.map +1 -1
- package/dist/tips.d.ts +34 -0
- package/dist/tips.js +554 -0
- package/dist/tips.js.map +1 -0
- package/dist/topic-commands.d.ts +5 -2
- package/dist/topic-commands.js +101 -61
- package/dist/topic-commands.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/ui/dashboard.html +55 -32
- package/dist/ui/settings.html +46 -37
- package/dist/ui/view.html +23 -15
- package/package.json +1 -1
package/dist/tips.js
ADDED
|
@@ -0,0 +1,554 @@
|
|
|
1
|
+
import { Cron } from "croner";
|
|
2
|
+
export const ADVANCED_TIP_UNLOCK_THRESHOLD = 30;
|
|
3
|
+
export const TIPS = [
|
|
4
|
+
// ── Beginner (30) ─────────────────────────────────────────────────────
|
|
5
|
+
{ id: "tip-001", level: "beginner",
|
|
6
|
+
text_en: "A fleet-topic instance is one CLI process running in a tmux pane and may appear as a Telegram topic or Discord channel/thread. ClassicBot instances use ordinary chat channels.",
|
|
7
|
+
text_zh: "Fleet-topic instance 是在 tmux pane 中執行的一個 CLI process,可對應 Telegram topic 或 Discord channel/thread;ClassicBot instance 則使用一般聊天頻道。" },
|
|
8
|
+
{ id: "tip-002", level: "beginner",
|
|
9
|
+
text_en: "General is the fleet coordinator. It can route a request to an existing instance or create one when a separate session is needed.",
|
|
10
|
+
text_zh: "General 是 fleet 的協調者,可將需求交給既有 instance,或在需要獨立 session 時建立新的 instance。" },
|
|
11
|
+
{ id: "tip-003", level: "beginner",
|
|
12
|
+
text_en: "While an agent is working a Cancel button sits under its bubble — tap it to stop the current turn.",
|
|
13
|
+
text_zh: "Agent 工作時,訊息下方會顯示取消按鈕;按下後會停止目前這一輪。" },
|
|
14
|
+
{ id: "tip-004", level: "beginner",
|
|
15
|
+
text_en: "When tool_progress is enabled, a completed turn keeps its tool-history text after the Cancel button is removed.",
|
|
16
|
+
text_zh: "啟用 tool_progress 後,一輪完成時會移除取消按鈕,但保留工具歷程文字。" },
|
|
17
|
+
{ id: "tip-005", level: "beginner",
|
|
18
|
+
text_en: "`/ctx` reports the available context estimate, backend, model, and instance name. Some backends may not expose a context percentage.",
|
|
19
|
+
text_zh: "`/ctx` 會顯示可取得的 context 估計值、backend、model 與 instance 名稱;部分 backend 可能無法提供百分比。" },
|
|
20
|
+
{ id: "tip-006", level: "beginner",
|
|
21
|
+
text_en: "`/clear` asks a supported backend to reset its conversation context. It is admin-only and requires confirmation.",
|
|
22
|
+
text_zh: "`/clear` 會要求支援的 backend 重設對話 context;此指令限管理員使用,並需要再次確認。" },
|
|
23
|
+
{ id: "tip-007", level: "beginner",
|
|
24
|
+
text_en: "`/compact` sends the backend's context-reduction command. Backend semantics differ; Antigravity maps this action to a full clear.",
|
|
25
|
+
text_zh: "`/compact` 會送出 backend 對應的 context 縮減指令;各 backend 語義不同,Antigravity 會改用完整清除。" },
|
|
26
|
+
{ id: "tip-008", level: "beginner",
|
|
27
|
+
text_en: "`/usage` shows available subscription metrics for backends used by running or paused instances. Data may be unavailable when a CLI is not logged in or its provider exposes no metric.",
|
|
28
|
+
text_zh: "`/usage` 顯示 running 或 paused instance 所使用 backend 的可用訂閱資料;CLI 未登入或 provider 未提供資料時可能顯示無資料。" },
|
|
29
|
+
{ id: "tip-009", level: "beginner",
|
|
30
|
+
text_en: "`/model` opens the model selector or applies a model override. It uses the effective instance configuration and is admin-only.",
|
|
31
|
+
text_zh: "`/model` 可開啟模型選單或套用 model override;它以 instance 的 effective config 為準,且限管理員使用。" },
|
|
32
|
+
{ id: "tip-010", level: "beginner",
|
|
33
|
+
text_en: "Admin-only `/status` summarizes fleet and instance state, including running, paused, stopped, and crashed processes.",
|
|
34
|
+
text_zh: "限管理員使用的 `/status` 會整理 fleet 與 instance 狀態,包括 running、paused、stopped 與 crashed。" },
|
|
35
|
+
{ id: "tip-011", level: "beginner",
|
|
36
|
+
text_en: "`/restart` requests a restart of the entire fleet, not only the current instance. Use an instance-specific restart action when only one CLI process should restart.",
|
|
37
|
+
text_zh: "`/restart` 會要求重啟整個 fleet,不是只重啟目前的 instance;僅需重啟單一 CLI process 時,應使用 instance 專用的 restart 操作。" },
|
|
38
|
+
{ id: "tip-012", level: "beginner",
|
|
39
|
+
text_en: "Administrators can use `/pause` on an idle non-General instance. It stops the CLI process while preserving the data needed for a later wake.",
|
|
40
|
+
text_zh: "管理員可對 idle 且非 General 的 instance 使用 `/pause`;它會停止 CLI process,並保留之後喚醒所需的資料。" },
|
|
41
|
+
{ id: "tip-013", level: "beginner",
|
|
42
|
+
text_en: "A message to a paused instance starts its wake path automatically. Administrators can use `/wake` for an immediate manual wake.",
|
|
43
|
+
text_zh: "訊息送到 paused instance 時會自動進入喚醒流程;管理員需要立即手動喚醒時可使用 `/wake`。" },
|
|
44
|
+
{ id: "tip-014", level: "beginner",
|
|
45
|
+
text_en: "`/cancel` stops the running turn from the keyboard — same effect as the Cancel button.",
|
|
46
|
+
text_zh: "`/cancel` 可從文字指令停止目前這一輪,效果與取消按鈕相同。" },
|
|
47
|
+
{ id: "tip-015", level: "beginner",
|
|
48
|
+
text_en: "Administrators can use `/effort` to change reasoning effort. Available levels depend on the backend and model; xhigh or max appear only when supported.",
|
|
49
|
+
text_zh: "管理員可使用 `/effort` 調整推理強度;可選等級取決於 backend 與 model,xhigh 或 max 只會在支援時提供。" },
|
|
50
|
+
{ id: "tip-016", level: "beginner",
|
|
51
|
+
text_en: "Allowlisted administrators can use `/update` to install the selected AgEnD release and restart the fleet. Its progress message reports the current stage and elapsed time.",
|
|
52
|
+
text_zh: "Allowlist 中的管理員可使用 `/update` 安裝所選的 AgEnD 版本並重啟 fleet;進度訊息會顯示目前階段與經過時間。" },
|
|
53
|
+
{ id: "tip-017", level: "beginner",
|
|
54
|
+
text_en: "`/doctor` runs backend diagnostics from General. The `agend doctor` CLI additionally checks service, D-Bus, fleet, tmux, and IPC state.",
|
|
55
|
+
text_zh: "General 中的 `/doctor` 會執行 backend 診斷;`agend doctor` CLI 另會檢查 service、D-Bus、fleet、tmux 與 IPC 狀態。" },
|
|
56
|
+
{ id: "tip-018", level: "beginner",
|
|
57
|
+
text_en: "`/dashboard` returns links for View, editable View, Settings, and the Web UI. Token-bearing links are restricted to administrators.",
|
|
58
|
+
text_zh: "`/dashboard` 會回傳 View、可編輯 View、Settings 與 Web UI 連結;含 token 的連結只提供給管理員。" },
|
|
59
|
+
{ id: "tip-019", level: "beginner",
|
|
60
|
+
text_en: "Photos and files attached to a message are downloaded into AgEnD's inbox and delivered to the instance with a local path.",
|
|
61
|
+
text_zh: "訊息附帶的圖片與檔案會下載到 AgEnD inbox,再以本機路徑投遞給 instance。" },
|
|
62
|
+
{ id: "tip-020", level: "beginner",
|
|
63
|
+
text_en: "Telegram voice messages are delivered as audio. When Groq transcription is configured, AgEnD also prepends the transcript.",
|
|
64
|
+
text_zh: "Telegram 語音訊息會以音訊投遞;若已設定 Groq 語音轉錄,AgEnD 也會在訊息前附上逐字稿。" },
|
|
65
|
+
{ id: "tip-021", level: "beginner",
|
|
66
|
+
text_en: "Replying to a message gives the agent its quoted text as context. On supported Discord replies, referenced images are delivered as well.",
|
|
67
|
+
text_zh: "回覆某則訊息時,agent 會收到被引用的文字;在支援的 Discord reply 中,被引用的圖片也會一併投遞。" },
|
|
68
|
+
{ id: "tip-022", level: "beginner",
|
|
69
|
+
text_en: "AgEnD uses reactions as delivery status: ⏳ queued, 👀 delivered to the instance, ✅ turn confirmed, and ❌ failed.",
|
|
70
|
+
text_zh: "AgEnD 以 reaction 表示投遞狀態:⏳ 排隊中、👀 已送到 instance、✅ 回合已確認、❌ 失敗。" },
|
|
71
|
+
{ id: "tip-023", level: "beginner",
|
|
72
|
+
text_en: "Messages sent while an agent is busy may wait in its delivery queue. A delayed reply alone does not mean the message was lost; Cancel also discards deliveries that were queued before it.",
|
|
73
|
+
text_zh: "Agent 忙碌時收到的訊息可能會先進入投遞佇列;回覆延遲本身不代表訊息遺失。按下取消時,也會丟棄先前尚未投遞的佇列內容。" },
|
|
74
|
+
{ id: "tip-024", level: "beginner",
|
|
75
|
+
text_en: "Model-name matching in AgEnD is advisory. A safely formed name is passed to the CLI, which remains the authority and may reject an unavailable model.",
|
|
76
|
+
text_zh: "AgEnD 對 model 名稱的相容性判斷只提供提示;格式安全的名稱仍會交給 CLI,是否可用由 CLI 最終決定。" },
|
|
77
|
+
{ id: "tip-025", level: "beginner",
|
|
78
|
+
text_en: "General can make a best-effort model lookup before an override is chosen. Some CLIs expose no catalog, so an empty result does not prove that no models are available.",
|
|
79
|
+
text_zh: "選擇 model override 前,可請 General 嘗試查詢模型清單;部分 CLI 不提供 catalog,因此空結果不代表沒有可用模型。" },
|
|
80
|
+
{ id: "tip-026", level: "beginner",
|
|
81
|
+
text_en: "AgEnD deduplicates shared-credential alerts. Depending on the backend and error, it may pause the affected instance until re-authentication; other cases only notify.",
|
|
82
|
+
text_zh: "AgEnD 會合併共用憑證的重複通知;是否暫停 instance 取決於 backend 與錯誤類型,其他情況只會通知。" },
|
|
83
|
+
{ id: "tip-027", level: "beginner",
|
|
84
|
+
text_en: "When an instance does not set `model`, it inherits the fleet default or leaves selection to the CLI. Kiro's explicit `auto` mode is a separate dynamic-selection option.",
|
|
85
|
+
text_zh: "Instance 未設定 `model` 時,會繼承 fleet default,或交由 CLI 選擇;Kiro 明確設定的 `auto` 則是另一種動態選擇模式。" },
|
|
86
|
+
{ id: "tip-028", level: "beginner",
|
|
87
|
+
text_en: "`/sysinfo` prints host and version details that are useful when reporting an environment-specific problem.",
|
|
88
|
+
text_zh: "`/sysinfo` 會顯示主機與版本資訊,適合附在與執行環境相關的問題回報中。" },
|
|
89
|
+
{ id: "tip-029", level: "beginner",
|
|
90
|
+
text_en: "Telegram presents fleet conversations as topics, while Discord uses channels or threads. A Telegram command suffix such as `/ctx@botname` selects the bot, not an instance name.",
|
|
91
|
+
text_zh: "Telegram 以 topic 呈現 fleet 對話,Discord 則使用 channel 或 thread;Telegram 的 `/ctx@botname` 後綴是在指定 bot,不是 instance 名稱。" },
|
|
92
|
+
{ id: "tip-030", level: "beginner",
|
|
93
|
+
text_en: "Separate instances can work in parallel with independent conversation contexts. If they share a working directory, coordinate file edits to avoid conflicts.",
|
|
94
|
+
text_zh: "不同 instance 可用獨立的對話 context 平行工作;若共用 working directory,仍需協調檔案修改以避免衝突。" },
|
|
95
|
+
// ── Intermediate (40) ─────────────────────────────────────────────────
|
|
96
|
+
{ id: "tip-031", level: "intermediate",
|
|
97
|
+
text_en: "`/steer <message>` can redirect an in-progress turn on Claude Code, Codex, and Grok. Other backends report that steering is unsupported.",
|
|
98
|
+
text_zh: "`/steer <訊息>` 可在 Claude Code、Codex 與 Grok 的工作途中調整方向;其他 backend 會回報不支援 steering。" },
|
|
99
|
+
{ id: "tip-032", level: "intermediate",
|
|
100
|
+
text_en: "Steering is pasted immediately when the supported TUI accepts busy input. If that cannot be confirmed, AgEnD can fall back to normal idle delivery instead of silently dropping the message.",
|
|
101
|
+
text_zh: "支援的 TUI 可接受 busy input 時,steering 會立即貼入;若無法確認,AgEnD 可退回一般的 idle 投遞,而不是靜默丟棄。" },
|
|
102
|
+
{ id: "tip-033", level: "intermediate",
|
|
103
|
+
text_en: "`/btw <message>` sends a labelled side question to Claude Code without asking it to abandon the current task. Other backends report it as unsupported.",
|
|
104
|
+
text_zh: "`/btw <訊息>` 會向 Claude Code 投遞標記過的附帶問題,並要求不要放棄目前任務;其他 backend 會回報不支援。" },
|
|
105
|
+
{ id: "tip-034", level: "intermediate",
|
|
106
|
+
text_en: "`/raw` is an admin-only escape hatch that forwards text without the usual message wrapper. It is intended for cases where the wrapper would change the desired CLI input.",
|
|
107
|
+
text_zh: "`/raw` 是限管理員使用的直接投遞方式,會省略一般訊息 wrapper;適合 wrapper 會改變預期 CLI 輸入的情況。" },
|
|
108
|
+
{ id: "tip-035", level: "intermediate",
|
|
109
|
+
text_en: "General can delegate independent parts of a request to different instances and combine their results in the original conversation.",
|
|
110
|
+
text_zh: "General 可將需求中的獨立部分交給不同 instance,再把結果整合回原本的對話。" },
|
|
111
|
+
{ id: "tip-036", level: "intermediate",
|
|
112
|
+
text_en: "Instances can exchange focused questions and results, but they do not automatically share conversation history or assume access to one another's workspace.",
|
|
113
|
+
text_zh: "Instance 之間可交換具體問題與結果,但不會自動共用對話歷程,也不應假設能存取彼此的 workspace。" },
|
|
114
|
+
{ id: "tip-037", level: "intermediate",
|
|
115
|
+
text_en: "For work with independent steps, ask General to coordinate several instances in parallel and return one consolidated answer.",
|
|
116
|
+
text_zh: "需求包含多個互不相依的步驟時,可請 General 協調多個 instance 平行處理,再回傳一份整合結果。" },
|
|
117
|
+
{ id: "tip-038", level: "intermediate",
|
|
118
|
+
text_en: "Descriptions and tags help General distinguish instances with similar names and route work by responsibility or capability.",
|
|
119
|
+
text_zh: "Description 與 tags 可協助 General 區分名稱相近的 instance,並依責任或能力安排工作。" },
|
|
120
|
+
{ id: "tip-039", level: "intermediate",
|
|
121
|
+
text_en: "Cross-instance delivery may be queued while the target is busy. A sender-side timeout does not prove non-delivery, so avoid resending solely because of that timeout.",
|
|
122
|
+
text_zh: "目標忙碌時,跨 instance 訊息可能先排隊;發送端 timeout 不代表沒有投遞,因此不應只因 timeout 就重送。" },
|
|
123
|
+
{ id: "tip-040", level: "intermediate",
|
|
124
|
+
text_en: "A General-managed team can send one coordinated request to a selected group of instances. Narrow groups reduce unnecessary wake-ups and duplicate work.",
|
|
125
|
+
text_zh: "General 管理的 team 可把同一需求交給選定的一組 instance;縮小群組範圍可減少不必要的喚醒與重複工作。" },
|
|
126
|
+
{ id: "tip-041", level: "intermediate",
|
|
127
|
+
text_en: "Before creating an instance, General can inspect the existing fleet and reuse a suitable one. A separate instance is most useful when an independent session or workspace is required.",
|
|
128
|
+
text_zh: "建立 instance 前,General 可先檢視既有 fleet 並重用合適的 instance;需要獨立 session 或 workspace 時,再建立新的較合適。" },
|
|
129
|
+
{ id: "tip-042", level: "intermediate",
|
|
130
|
+
text_en: "When General creates an instance without a working directory, AgEnD creates a workspace under `~/.agend/workspaces/<name>`.",
|
|
131
|
+
text_zh: "General 建立 instance 時若未指定 working directory,AgEnD 會在 `~/.agend/workspaces/<name>` 建立 workspace。" },
|
|
132
|
+
{ id: "tip-043", level: "intermediate",
|
|
133
|
+
text_en: "`~/.agend/fleet.yaml` is the fleet configuration source of truth. Changes applied through Settings are saved there and then reloaded.",
|
|
134
|
+
text_zh: "`~/.agend/fleet.yaml` 是 fleet 設定的來源;透過 Settings 套用的變更會寫入此檔案並重新載入。" },
|
|
135
|
+
{ id: "tip-044", level: "intermediate",
|
|
136
|
+
text_en: "After editing fleet.yaml by hand, run `agend validate` or ask General to validate the configuration before restarting the fleet.",
|
|
137
|
+
text_zh: "手動修改 fleet.yaml 後,可執行 `agend validate`,或請 General 在重啟 fleet 前檢查設定。" },
|
|
138
|
+
{ id: "tip-045", level: "intermediate",
|
|
139
|
+
text_en: "A schedule is either recurring (`cron`) or one-shot (`at` with an ISO timestamp). Ask General to use one form, not both, for the same schedule.",
|
|
140
|
+
text_zh: "排程可選週期性的 `cron`,或使用 ISO 時間的單次 `at`;同一排程只應使用其中一種。" },
|
|
141
|
+
{ id: "tip-046", level: "intermediate",
|
|
142
|
+
text_en: "A silent schedule sends its trigger directly to the target instance without posting the trigger text to the conversation. The agent may still reply if the task asks it to.",
|
|
143
|
+
text_zh: "靜默排程會把觸發內容直接送到目標 instance,不在對話中張貼觸發文字;若任務要求回覆,agent 仍可能發出結果。" },
|
|
144
|
+
{ id: "tip-047", level: "intermediate",
|
|
145
|
+
text_en: "Schedules default to Asia/Taipei. Set an IANA `timezone` when the intended schedule uses another time zone.",
|
|
146
|
+
text_zh: "排程預設使用 Asia/Taipei;若預期時間屬於其他時區,應設定對應的 IANA `timezone`。" },
|
|
147
|
+
{ id: "tip-048", level: "intermediate",
|
|
148
|
+
text_en: "Schedules can target a specific instance, allowing General to place recurring or one-shot work with the instance responsible for it.",
|
|
149
|
+
text_zh: "排程可指定特定 instance,讓 General 把週期或單次工作交給對應的負責者。" },
|
|
150
|
+
{ id: "tip-049", level: "intermediate",
|
|
151
|
+
text_en: "By default General can create, list, and delete schedules. Editing or disabling one requires coordination with an instance that has the full operations profile.",
|
|
152
|
+
text_zh: "General 預設可建立、列出與刪除排程;修改或停用排程時,需由 General 協調具備完整操作權限的 instance。" },
|
|
153
|
+
{ id: "tip-050", level: "intermediate",
|
|
154
|
+
text_en: "`/tips` shows another available tip. Administrators can use `/tips off` or `/tips on` to change daily delivery; dismissing a tip prevents that item from returning.",
|
|
155
|
+
text_zh: "`/tips` 可立即顯示另一則可用提示;管理員可用 `/tips off` 或 `/tips on` 調整每日投遞。將某則標記為已知後,它不會再次出現。" },
|
|
156
|
+
{ id: "tip-051", level: "intermediate",
|
|
157
|
+
text_en: "Teams provide reusable groups of instances for recurring collaboration patterns, such as implementation plus review.",
|
|
158
|
+
text_zh: "Teams 可保存經常一起合作的 instance 組合,例如實作與 review 的固定搭配。" },
|
|
159
|
+
{ id: "tip-052", level: "intermediate",
|
|
160
|
+
text_en: "Shared decisions let instances reuse an agreed architectural choice after restarts instead of independently rediscovering it.",
|
|
161
|
+
text_zh: "Shared decisions 可讓不同 instance 在重啟後沿用已確認的架構選擇,不必各自重新推導。" },
|
|
162
|
+
{ id: "tip-053", level: "intermediate",
|
|
163
|
+
text_en: "Collaboration messages exchange selected information; they do not merge the participants' full conversation histories or session memories.",
|
|
164
|
+
text_zh: "協作訊息只交換選定資訊,不會合併參與 instance 的完整對話歷程或 session memory。" },
|
|
165
|
+
{ id: "tip-054", level: "intermediate",
|
|
166
|
+
text_en: "A fleet restart preserves fleet.yaml and instance data. Whether a CLI resumes the same conversation session depends on that backend's resume support.",
|
|
167
|
+
text_zh: "Fleet restart 會保留 fleet.yaml 與 instance 資料;CLI 是否續接同一個對話 session,則取決於 backend 的 resume 支援。" },
|
|
168
|
+
{ id: "tip-055", level: "intermediate",
|
|
169
|
+
text_en: "The View page shows the live tmux pane for an instance and is useful when a prompt, installer, or TUI state needs visual inspection.",
|
|
170
|
+
text_zh: "View 頁面會顯示 instance 的即時 tmux pane,適合檢查互動提示、安裝流程或 TUI 狀態。" },
|
|
171
|
+
{ id: "tip-056", level: "intermediate",
|
|
172
|
+
text_en: "`agend ls` provides a terminal summary of running, idle, paused, stopped, and crashed instances, including available context estimates.",
|
|
173
|
+
text_zh: "`agend ls` 會在終端整理 running、idle、paused、stopped 與 crashed instance,並顯示可取得的 context 估計值。" },
|
|
174
|
+
{ id: "tip-057", level: "intermediate",
|
|
175
|
+
text_en: "`tool_progress` controls the tool list under a working bubble: \"standard\" for semantic labels, \"verbose\" to add command previews, \"off\" (the default) for none.",
|
|
176
|
+
text_zh: "`tool_progress` 控制工作泡泡下的工具清單:`standard` 顯示語意標籤、`verbose` 再加上指令預覽、`off`(預設)則完全不顯示。" },
|
|
177
|
+
{ id: "tip-058", level: "intermediate",
|
|
178
|
+
text_en: "`defaults.progress_min_elapsed` controls how long before the bubble starts showing elapsed time — raise it if short turns feel noisy.",
|
|
179
|
+
text_zh: "`defaults.progress_min_elapsed` 決定泡泡多久後才開始顯示已耗時;若短任務顯示過於頻繁,可調高此值。" },
|
|
180
|
+
{ id: "tip-059", level: "intermediate",
|
|
181
|
+
text_en: "`agend export-chat --from 09:00 --to 18:00 -o day.html` exports fleet activity to an HTML archive. Review it for sensitive content before sharing.",
|
|
182
|
+
text_zh: "`agend export-chat --from 09:00 --to 18:00 -o day.html` 可將 fleet 活動匯出為 HTML archive;分享前應先檢查敏感內容。" },
|
|
183
|
+
{ id: "tip-060", level: "intermediate",
|
|
184
|
+
text_en: "Run `/save <name>` in an instance conversation. Kiro receives `/chat save <name>` and Claude Code receives `/export <name>.md`; other backends return an unsupported message.",
|
|
185
|
+
text_zh: "在 instance 對話中執行 `/save <名稱>`;Kiro 會收到 `/chat save <名稱>`,Claude Code 會收到 `/export <名稱>.md`,其他 backend 則回覆不支援。" },
|
|
186
|
+
{ id: "tip-061", level: "intermediate",
|
|
187
|
+
text_en: "`auto_pause_after` is disabled by default (`0`). Enable or adjust it in Settings; it is a hot change that takes effect without restarting the instance.",
|
|
188
|
+
text_zh: "`auto_pause_after` 預設為停用(`0`);可在 Settings 啟用或調整,屬於 hot change,不需重啟 instance 即可生效。" },
|
|
189
|
+
{ id: "tip-062", level: "intermediate",
|
|
190
|
+
text_en: "`tool_set` limits the MCP tools exposed to an instance. Change it in the instance's Settings editor; applying this cold change restarts that instance.",
|
|
191
|
+
text_zh: "`tool_set` 可限制 instance 可見的 MCP tools;可在該 instance 的 Settings 編輯,套用此 cold change 時會重啟該 instance。" },
|
|
192
|
+
{ id: "tip-063", level: "intermediate",
|
|
193
|
+
text_en: "Run `/effort` in the instance conversation to view or change reasoning effort. The result states whether the change applied at runtime or required an instance restart.",
|
|
194
|
+
text_zh: "在 instance 對話中執行 `/effort` 可查看或調整推理強度;結果會說明變更是 runtime 生效,或需要重啟 instance。" },
|
|
195
|
+
{ id: "tip-064", level: "intermediate",
|
|
196
|
+
text_en: "An instance backend can be changed through Settings or fleet.yaml. This is a cold configuration change that restarts the instance, and conversation continuity across different CLIs is not guaranteed.",
|
|
197
|
+
text_zh: "可透過 Settings 或 fleet.yaml 變更 instance backend;這屬於 cold config,會重啟 instance,而且不同 CLI 之間不保證延續對話。" },
|
|
198
|
+
{ id: "tip-065", level: "intermediate",
|
|
199
|
+
text_en: "Set an instance's display name, description, and tags in Settings. These hot fields update routing context and labels without restarting the instance.",
|
|
200
|
+
text_zh: "可在 Settings 設定 instance 的 display name、description 與 tags;這些 hot fields 會更新 routing context 與標示,不需重啟 instance。" },
|
|
201
|
+
{ id: "tip-066", level: "intermediate",
|
|
202
|
+
text_en: "Ask General to coordinate replacement of an unhealthy instance. Replacement recreates it with the same configuration and workspace and passes recent handover context; backend session continuity is not guaranteed.",
|
|
203
|
+
text_zh: "Instance 異常時可請 General 協調 replacement;此操作會以相同設定與 workspace 重建 instance,並傳遞近期 handover context,但不保證 backend session 延續。" },
|
|
204
|
+
{ id: "tip-067", level: "intermediate",
|
|
205
|
+
text_en: "Use the Settings page to review a change's impact before applying it. Hot fields apply immediately; cold fields such as backend or working directory restart the affected instance.",
|
|
206
|
+
text_zh: "可在 Settings 套用前查看變更影響;hot fields 會即時生效,backend 或 working directory 等 cold fields 則會重啟受影響的 instance。" },
|
|
207
|
+
{ id: "tip-068", level: "intermediate",
|
|
208
|
+
text_en: "Instance settings inherit fleet defaults unless overridden. Edit defaults in Settings, or edit `defaults` in fleet.yaml when a field has no dedicated control.",
|
|
209
|
+
text_zh: "Instance 設定在未 override 時會繼承 fleet defaults;可在 Settings 修改 defaults,沒有專用控制項的欄位則修改 fleet.yaml 的 `defaults`。" },
|
|
210
|
+
{ id: "tip-069", level: "intermediate",
|
|
211
|
+
text_en: "In a multi-adapter fleet, choose an instance's Channel binding in Settings (or set `channel_id` in fleet.yaml). Applying the cold change restarts the instance on the selected persona.",
|
|
212
|
+
text_zh: "多 adapter fleet 可在 Settings 選擇 instance 的 Channel binding(或在 fleet.yaml 設定 `channel_id`);套用此 cold change 會重啟 instance 並綁定所選 persona。" },
|
|
213
|
+
{ id: "tip-070", level: "intermediate",
|
|
214
|
+
text_en: "ClassicBot treats ordinary messages as an ongoing conversation. In a shared collaboration channel, mention the intended bot; manage ClassicBot channels and defaults from Settings.",
|
|
215
|
+
text_zh: "ClassicBot 會把一般訊息視為持續對話;在多人協作頻道中應 mention 預期的 bot,ClassicBot channels 與 defaults 可在 Settings 管理。" },
|
|
216
|
+
// ── Advanced (30) ─────────────────────────────────────────────────────
|
|
217
|
+
{ id: "tip-071", level: "advanced",
|
|
218
|
+
text_en: "Set `backend_options.codex.provider` in fleet.yaml to select a custom provider. This cold change restarts the instance; provider definition and credentials remain in Codex's own config and environment.",
|
|
219
|
+
text_zh: "在 fleet.yaml 設定 `backend_options.codex.provider` 可選擇 custom provider;此 cold change 會重啟 instance,provider 定義與憑證仍放在 Codex 自己的 config 與 environment。" },
|
|
220
|
+
{ id: "tip-072", level: "advanced",
|
|
221
|
+
text_en: "Ask General to look up models for the specific custom-provider Codex instance. Instance-scoped lookup reads its isolated CODEX_HOME and can differ from the account-wide catalog.",
|
|
222
|
+
text_zh: "可請 General 查詢特定 custom-provider Codex instance 的 models;instance-scoped lookup 會讀取其隔離的 CODEX_HOME,結果可能不同於帳號層級 catalog。" },
|
|
223
|
+
{ id: "tip-073", level: "advanced",
|
|
224
|
+
text_en: "When General returns a model lookup, check whether its scope is `instance` or `global`. A global fallback may not describe a custom provider accurately.",
|
|
225
|
+
text_zh: "General 回傳 model lookup 後,應確認 scope 是 `instance` 或 `global`;global fallback 未必能準確描述 custom provider。" },
|
|
226
|
+
{ id: "tip-074", level: "advanced",
|
|
227
|
+
text_en: "Define reusable instance groups under `templates` in fleet.yaml, then ask General to coordinate deployment through an instance with the full operations profile.",
|
|
228
|
+
text_zh: "先在 fleet.yaml 的 `templates` 定義可重用的 instance 組合,再請 General 協調具備完整操作權限的 instance 進行部署。" },
|
|
229
|
+
{ id: "tip-075", level: "advanced",
|
|
230
|
+
text_en: "When a template should give each instance its own git worktree, specify the branch and ask General to coordinate deployment through an instance with the full operations profile.",
|
|
231
|
+
text_zh: "Template 需要讓每個 instance 取得獨立 git worktree 時,應指定 branch,並請 General 協調具備完整操作權限的 instance 進行部署。" },
|
|
232
|
+
{ id: "tip-076", level: "advanced",
|
|
233
|
+
text_en: "Ask General to coordinate inspection or teardown of a template deployment through an instance with the full operations profile.",
|
|
234
|
+
text_zh: "需要檢視或移除 template deployment 時,可請 General 協調具備完整操作權限的 instance 處理。" },
|
|
235
|
+
{ id: "tip-077", level: "advanced",
|
|
236
|
+
text_en: "Ask General to inspect an instance when its workspace origin is unclear. Managed worktrees expose their source repository as `worktree_source`.",
|
|
237
|
+
text_zh: "不確定 instance 的 workspace 來源時,可請 General 檢視;managed worktree 會以 `worktree_source` 顯示來源 repository。" },
|
|
238
|
+
{ id: "tip-078", level: "advanced",
|
|
239
|
+
text_en: "For read-only repository inspection, ask General to coordinate a checkout through an instance with the full operations profile. It creates a detached worktree, not a write lock or exclusivity guarantee.",
|
|
240
|
+
text_zh: "需要唯讀檢查 repository 時,可請 General 協調具備完整操作權限的 instance 建立 checkout;它會建立 detached worktree,不是 write lock,也不保證獨占。" },
|
|
241
|
+
{ id: "tip-079", level: "advanced",
|
|
242
|
+
text_en: "Set `defaults.warm_cap` through Settings' advanced YAML editor or fleet.yaml. It is hot-reloaded; over the cap, the least-recently-active idle instance is auto-paused.",
|
|
243
|
+
text_zh: "可透過 Settings 的 advanced YAML editor 或 fleet.yaml 設定 `defaults.warm_cap`;它會 hot-reload,超過上限時最久未活動的 idle instance 會自動暫停。" },
|
|
244
|
+
{ id: "tip-080", level: "advanced",
|
|
245
|
+
text_en: "Use Settings to tune time-based `auto_pause_after`; use its advanced YAML editor or fleet.yaml for count-based `warm_cap`. Both are hot settings and can be combined.",
|
|
246
|
+
text_zh: "可在 Settings 調整依時間判斷的 `auto_pause_after`,並透過 advanced YAML editor 或 fleet.yaml 設定依數量判斷的 `warm_cap`;兩者皆為 hot settings,可搭配使用。" },
|
|
247
|
+
{ id: "tip-081", level: "advanced",
|
|
248
|
+
text_en: "Configure `warm_cap` in Settings' advanced YAML editor or fleet.yaml. Its eviction excludes General instances, preserving coordinator availability.",
|
|
249
|
+
text_zh: "可在 Settings 的 advanced YAML editor 或 fleet.yaml 設定 `warm_cap`;eviction 會排除 General instance,以保留協調者可用性。" },
|
|
250
|
+
{ id: "tip-082", level: "advanced",
|
|
251
|
+
text_en: "Configure `context_guardian` in fleet.yaml; it is a cold instance setting. It monitors context but does not clear or recycle the CLI session, so backend-native compaction remains separate.",
|
|
252
|
+
text_zh: "`context_guardian` 需在 fleet.yaml 設定,屬於 cold instance setting;它只監控 context,不會清除或回收 CLI session,backend 原生 compaction 仍是另一套機制。" },
|
|
253
|
+
{ id: "tip-083", level: "advanced",
|
|
254
|
+
text_en: "Change `log_level` in Settings. It hot-reloads daemon logging without restarting the instance; use debug or trace only while the additional detail is needed.",
|
|
255
|
+
text_zh: "可在 Settings 調整 `log_level`;它會 hot-reload daemon logging,不需重啟 instance,debug 或 trace 適合只在需要額外細節時使用。" },
|
|
256
|
+
{ id: "tip-084", level: "advanced",
|
|
257
|
+
text_en: "Tune `hang_detector` in Settings' Detection section or fleet.yaml. It is a cold change; long silent tasks can resemble a hang, so choose `timeout_minutes` from observed workloads.",
|
|
258
|
+
text_zh: "可在 Settings 的 Detection section 或 fleet.yaml 調整 `hang_detector`;這是 cold change,長時間無輸出的任務可能類似 hang,因此應依實際 workload 設定 `timeout_minutes`。" },
|
|
259
|
+
{ id: "tip-085", level: "advanced",
|
|
260
|
+
text_en: "Edit `restart_policy` in fleet.yaml, then reload the config; this cold change restarts affected instances. Tune retry count, backoff, and reset timing for the selected CLI.",
|
|
261
|
+
text_zh: "在 fleet.yaml 修改 `restart_policy` 後重新載入設定;此 cold change 會重啟受影響的 instance。Retry 次數、backoff 與 reset timing 應配合所選 CLI。" },
|
|
262
|
+
{ id: "tip-086", level: "advanced",
|
|
263
|
+
text_en: "Configure `model_failover` in fleet.yaml as an ordered list containing a primary and at least one fallback model. Reloading this cold change restarts the instance; compatible five-hour usage telemetry controls later rotation.",
|
|
264
|
+
text_zh: "應在 fleet.yaml 將 `model_failover` 設為包含 primary 與至少一個 fallback model 的有序清單;重新載入此 cold change 會重啟 instance,後續 rotation 由相容的五小時用量 telemetry 控制。" },
|
|
265
|
+
{ id: "tip-087", level: "advanced",
|
|
266
|
+
text_en: "Configure `defaults.cost_guard` in fleet.yaml and restart the fleet for full effect. It can stop an instance at the fleet limit only when the backend supplies usable cost telemetry.",
|
|
267
|
+
text_zh: "在 fleet.yaml 設定 `defaults.cost_guard` 後需重啟 fleet 才能完整生效;只有 backend 提供可用 cost telemetry 時,它才能在 fleet 上限停止 instance。" },
|
|
268
|
+
{ id: "tip-088", level: "advanced",
|
|
269
|
+
text_en: "Set `pre_task_command` in fleet.yaml; changing it restarts the instance. Commands such as `/chat load ...` are Kiro-specific, so verify the selected CLI's syntax first.",
|
|
270
|
+
text_zh: "`pre_task_command` 需在 fleet.yaml 設定,變更時會重啟 instance;`/chat load ...` 等指令只適用 Kiro,應先確認所選 CLI 的語法。" },
|
|
271
|
+
{ id: "tip-089", level: "advanced",
|
|
272
|
+
text_en: "Set `kiro_ui` through Settings' advanced YAML editor or fleet.yaml. Changing `legacy`, `tui`, or `v3` restarts the instance, and pane-scraped signals can differ by mode.",
|
|
273
|
+
text_zh: "可透過 Settings 的 advanced YAML editor 或 fleet.yaml 設定 `kiro_ui`;變更 `legacy`、`tui` 或 `v3` 會重啟 instance,pane-scraped signals 也可能隨模式不同。" },
|
|
274
|
+
{ id: "tip-090", level: "advanced",
|
|
275
|
+
text_en: "Set `terminal.columns` and `terminal.rows` through Settings' advanced YAML editor or fleet.yaml. The cold change restarts the instance; larger dimensions show more content but can shrink View text.",
|
|
276
|
+
text_zh: "可透過 Settings 的 advanced YAML editor 或 fleet.yaml 設定 `terminal.columns` 與 `terminal.rows`;此 cold change 會重啟 instance,較大尺寸能顯示更多內容,但可能縮小 View 字體。" },
|
|
277
|
+
{ id: "tip-091", level: "advanced",
|
|
278
|
+
text_en: "Choose `agent_mode: cli` in Settings' Advanced section when a supported backend should use agend-agent HTTP instead of native MCP. Applying it restarts the instance.",
|
|
279
|
+
text_zh: "需要讓支援的 backend 改用 agend-agent HTTP 而非原生 MCP 時,可在 Settings 的 Advanced section 選擇 `agent_mode: cli`;套用後會重啟 instance。" },
|
|
280
|
+
{ id: "tip-092", level: "advanced",
|
|
281
|
+
text_en: "If an MCP tool connection stays unavailable, ask General to restart the affected instance. AgEnD cannot directly replace the CLI-owned stdio child mid-session.",
|
|
282
|
+
text_zh: "MCP tool connection 持續無法使用時,可請 General 重啟受影響的 instance;AgEnD 無法在 session 中途直接替換由 CLI 掌握的 stdio child。" },
|
|
283
|
+
{ id: "tip-093", level: "advanced",
|
|
284
|
+
text_en: "Enable `mcp_proxy_reply` through Settings' advanced YAML editor or fleet.yaml only when pane text is safe to relay. It is hot-reloaded and remains off by default.",
|
|
285
|
+
text_zh: "只有在 pane text 適合轉送時,才透過 Settings 的 advanced YAML editor 或 fleet.yaml 啟用 `mcp_proxy_reply`;它可 hot-reload,且預設為關閉。" },
|
|
286
|
+
{ id: "tip-094", level: "advanced",
|
|
287
|
+
text_en: "For a `general_topic` instance, leave Tool set inherited in Settings so AgEnD assigns the internal `general` profile. An explicit `standard` override omits coordinator tools and prevents normal dispatch workflows.",
|
|
288
|
+
text_zh: "對 `general_topic` instance,應在 Settings 讓 Tool set 保持繼承,由 AgEnD 自動配置內部 `general` profile;若明確 override 為 `standard`,會缺少協調工具並使一般分派流程無法運作。" },
|
|
289
|
+
{ id: "tip-095", level: "advanced",
|
|
290
|
+
text_en: "Manage `allowed_users` in Settings' Advanced & Access section, or edit channel access in fleet.yaml. Channel access changes require a fleet restart; an empty locked allowlist has no admin.",
|
|
291
|
+
text_zh: "可在 Settings 的 Advanced & Access section 管理 `allowed_users`,或修改 fleet.yaml 的 channel access;變更後需重啟 fleet,locked allowlist 為空時不會有管理員。" },
|
|
292
|
+
{ id: "tip-096", level: "advanced",
|
|
293
|
+
text_en: "Adjust `startup.concurrency` and `stagger_delay_ms` in Settings' Startup section or fleet.yaml. They take effect on the next fleet start.",
|
|
294
|
+
text_zh: "可在 Settings 的 Startup section 或 fleet.yaml 調整 `startup.concurrency` 與 `stagger_delay_ms`;設定會在下一次 fleet start 生效。" },
|
|
295
|
+
{ id: "tip-097", level: "advanced",
|
|
296
|
+
text_en: "Add tags such as `code-reviewer` or `researcher` in the instance's Settings editor. Tags hot-reload into General's routing context without restarting the instance.",
|
|
297
|
+
text_zh: "可在 instance 的 Settings editor 加入 `code-reviewer`、`researcher` 等 tags;tags 會 hot-reload 到 General 的 routing context,不需重啟 instance。" },
|
|
298
|
+
{ id: "tip-098", level: "advanced",
|
|
299
|
+
text_en: "Set fleet-level `project_roots` through Settings' advanced YAML editor or fleet.yaml. After reload, General can create instances only under those real-path boundaries.",
|
|
300
|
+
text_zh: "可透過 Settings 的 advanced YAML editor 或 fleet.yaml 設定 fleet-level `project_roots`;重新載入後,General 只能在這些 real-path boundaries 下建立 instance。" },
|
|
301
|
+
{ id: "tip-099", level: "advanced",
|
|
302
|
+
text_en: "Enable `lightweight` in the instance's Settings editor only when transcript, context, approval, and prompt monitors are unnecessary. Applying this cold change restarts the instance.",
|
|
303
|
+
text_zh: "只有在不需要 transcript、context、approval 與 prompt monitors 時,才於 instance 的 Settings editor 啟用 `lightweight`;套用此 cold change 會重啟 instance。" },
|
|
304
|
+
{ id: "tip-100", level: "advanced",
|
|
305
|
+
text_en: "Configure `mcp_auto_restart` in fleet.yaml; it defaults to enabled and changing it restarts the instance. Recovery normally waits for idle, with a bounded stale fallback.",
|
|
306
|
+
text_zh: "`mcp_auto_restart` 需在 fleet.yaml 設定,預設啟用,變更時會重啟 instance;recovery 通常等待 idle,並有 bounded stale fallback。" },
|
|
307
|
+
// ── Expanded Beginner (70) ─────────────────────────────────────────────
|
|
308
|
+
{ id: "tip-101", level: "beginner", text_en: "A fleet is the complete group of AgEnD-managed instances, channels, and defaults running under one manager.", text_zh: "Fleet 是由同一個 manager 管理的一組 instances、channels 與 defaults。" },
|
|
309
|
+
{ id: "tip-102", level: "beginner", text_en: "An instance is a single coding-agent CLI process, not a virtual machine or container.", text_zh: "Instance 是單一 coding-agent CLI process,不是虛擬機或 container。" },
|
|
310
|
+
{ id: "tip-103", level: "beginner", text_en: "A daemon supervises one instance, delivers messages, observes its pane, and connects AgEnD tools.", text_zh: "Daemon 會監督一個 instance、投遞訊息、觀察 pane,並連接 AgEnD tools。" },
|
|
311
|
+
{ id: "tip-104", level: "beginner", text_en: "A backend identifies the CLI implementation, such as Claude Code, Codex, Kiro CLI, Grok, Antigravity, or OpenCode.", text_zh: "Backend 代表所使用的 CLI,例如 Claude Code、Codex、Kiro CLI、Grok、Antigravity 或 OpenCode。" },
|
|
312
|
+
{ id: "tip-105", level: "beginner", text_en: "An adapter connects AgEnD to a messaging platform and bot account, such as one Discord or Telegram bot.", text_zh: "Adapter 連接 AgEnD 與訊息平台及 bot 帳號,例如一個 Discord 或 Telegram bot。" },
|
|
313
|
+
{ id: "tip-106", level: "beginner", text_en: "A persona is the visible bot identity used for a reply; `channel_id` can bind an instance to one persona.", text_zh: "Persona 是回覆時顯示的 bot 身分;`channel_id` 可將 instance 綁定到指定 persona。" },
|
|
314
|
+
{ id: "tip-107", level: "beginner", text_en: "Telegram calls a separated conversation a topic; Discord may use a channel or thread for the same role.", text_zh: "Telegram 將分隔的對話稱為 topic;Discord 的相同用途可能是 channel 或 thread。" },
|
|
315
|
+
{ id: "tip-108", level: "beginner", text_en: "General is the coordinator instance that helps route work and manage the fleet.", text_zh: "General 是協調 instance,負責協助路由工作與管理 fleet。" },
|
|
316
|
+
{ id: "tip-109", level: "beginner", text_en: "ClassicBot creates an ongoing agent conversation in an ordinary chat channel instead of a configured fleet topic.", text_zh: "ClassicBot 會在一般聊天 channel 建立持續的 agent 對話,而不是使用預先設定的 fleet topic。" },
|
|
317
|
+
{ id: "tip-110", level: "beginner", text_en: "MCP is a protocol that lets a CLI discover and call AgEnD tools through a structured interface.", text_zh: "MCP 是讓 CLI 透過結構化介面發現並呼叫 AgEnD tools 的協定。" },
|
|
318
|
+
{ id: "tip-111", level: "beginner", text_en: "A pane is the tmux terminal area where one instance's CLI is visible and accepts input.", text_zh: "Pane 是 tmux 中顯示單一 instance CLI 並接收輸入的 terminal 區域。" },
|
|
319
|
+
{ id: "tip-112", level: "beginner", text_en: "tmux keeps terminal programs running independently of the shell used to view them.", text_zh: "tmux 可讓 terminal 程式持續執行,不依賴用來查看它們的 shell。" },
|
|
320
|
+
{ id: "tip-113", level: "beginner", text_en: "A session is the conversation state maintained by the backend; resume behavior differs between CLIs.", text_zh: "Session 是 backend 維護的對話狀態;不同 CLI 的 resume 行為並不相同。" },
|
|
321
|
+
{ id: "tip-114", level: "beginner", text_en: "Context is the information available to the model for the current conversation, not permanent project storage.", text_zh: "Context 是 model 在目前對話可用的資訊,不是永久的專案儲存空間。" },
|
|
322
|
+
{ id: "tip-115", level: "beginner", text_en: "The working directory is the project folder a CLI reads and edits for that instance.", text_zh: "Working directory 是該 instance 的 CLI 讀取與修改專案檔案的位置。" },
|
|
323
|
+
{ id: "tip-116", level: "beginner", text_en: "Working means AgEnD sees evidence that the CLI is processing a turn or using tools.", text_zh: "Working 表示 AgEnD 偵測到 CLI 正在處理回合或使用 tools。" },
|
|
324
|
+
{ id: "tip-117", level: "beginner", text_en: "Idle means the CLI appears ready for input; it does not mean the instance has been stopped.", text_zh: "Idle 表示 CLI 看起來已可接受輸入,不代表 instance 已停止。" },
|
|
325
|
+
{ id: "tip-118", level: "beginner", text_en: "Paused means AgEnD intentionally stopped the CLI while keeping configuration and resume data.", text_zh: "Paused 表示 AgEnD 刻意停止 CLI,同時保留設定與 resume 資料。" },
|
|
326
|
+
{ id: "tip-119", level: "beginner", text_en: "Stopped is an orderly exit; crashed indicates an unexpected exit or repeated recovery failure.", text_zh: "Stopped 代表正常結束;crashed 則表示非預期退出或 recovery 多次失敗。" },
|
|
327
|
+
{ id: "tip-120", level: "beginner", text_en: "Fleet-topic instances are configured centrally; ClassicBot instances are created from ordinary messaging channels.", text_zh: "Fleet-topic instances 由中央設定管理;ClassicBot instances 則從一般訊息 channels 建立。" },
|
|
328
|
+
{ id: "tip-121", level: "beginner", text_en: "A CLI coding agent is an interactive terminal program that can inspect code, edit files, and run permitted commands.", text_zh: "CLI coding agent 是可在 terminal 互動、檢查程式碼、修改檔案及執行獲准指令的程式。" },
|
|
329
|
+
{ id: "tip-122", level: "beginner", text_en: "AgEnD sends text to the same TUI a person would use, while supervising delivery and replies around it.", text_zh: "AgEnD 會把文字送進人類也能操作的 TUI,並在外層監督投遞與回覆。" },
|
|
330
|
+
{ id: "tip-123", level: "beginner", text_en: "`agend attach <instance>` opens that instance's tmux window for direct observation or approved manual input.", text_zh: "`agend attach <instance>` 會開啟該 instance 的 tmux window,供直接觀察或進行獲准的人工輸入。" },
|
|
331
|
+
{ id: "tip-124", level: "beginner", text_en: "View mirrors pane output in a browser; its ordinary viewing route does not resize or control the terminal.", text_zh: "View 會在瀏覽器呈現 pane output;一般瀏覽路徑不會 resize 或控制 terminal。" },
|
|
332
|
+
{ id: "tip-125", level: "beginner", text_en: "The View sidebar selects an instance, while the terminal area shows that instance's current pane.", text_zh: "View 左側可選擇 instance,terminal 區域則顯示該 instance 目前的 pane。" },
|
|
333
|
+
{ id: "tip-126", level: "beginner", text_en: "Settings and editable-dashboard links contain a persistent bearer token. Obtain them through `/dashboard`, do not share them publicly, and rotate `~/.agend/web.token` when a link must be invalidated.", text_zh: "Settings 與可編輯 dashboard links 含有持久 bearer token;應透過 `/dashboard` 取得且不要公開分享,需要使連結失效時可輪替 `~/.agend/web.token`。" },
|
|
334
|
+
{ id: "tip-127", level: "beginner", text_en: "An inbound message travels from the platform adapter to the fleet manager, then through IPC into the instance daemon and pane.", text_zh: "Inbound message 會由平台 adapter 進入 fleet manager,再經 IPC 到 instance daemon 與 pane。" },
|
|
335
|
+
{ id: "tip-128", level: "beginner", text_en: "An agent reply travels through its AgEnD tool connection, which selects the bound adapter and conversation destination.", text_zh: "Agent reply 會經由 AgEnD tool connection,選擇綁定的 adapter 與對話目的地。" },
|
|
336
|
+
{ id: "tip-129", level: "beginner", text_en: "A queued delivery has been accepted by AgEnD but may still be waiting for a safe moment to enter the CLI.", text_zh: "Queued delivery 已被 AgEnD 接受,但可能仍在等待安全時機送進 CLI。" },
|
|
337
|
+
{ id: "tip-130", level: "beginner", text_en: "Cancel sends the backend's interrupt key and retires the active cancel control for that turn.", text_zh: "Cancel 會送出 backend 對應的 interrupt key,並收回該回合的 cancel control。" },
|
|
338
|
+
{ id: "tip-131", level: "beginner", text_en: "Cancel drops deliveries queued before the click; messages arriving afterward form a new queue and are kept.", text_zh: "Cancel 會丟棄按下前排隊的 deliveries;之後才到達的訊息會形成新 queue 並保留。" },
|
|
339
|
+
{ id: "tip-132", level: "beginner", text_en: "Pausing saves resources by stopping the CLI process; it does not delete the instance configuration.", text_zh: "Pause 會停止 CLI process 以節省資源,不會刪除 instance 設定。" },
|
|
340
|
+
{ id: "tip-133", level: "beginner", text_en: "Waking recreates the CLI process and asks the backend to resume when its session mechanism supports it.", text_zh: "Wake 會重建 CLI process,並在 backend 支援時使用其 session resume 機制。" },
|
|
341
|
+
{ id: "tip-134", level: "beginner", text_en: "A fleet restart restarts the manager and runnable instances; persisted paused instances remain paused.", text_zh: "Fleet restart 會重啟 manager 與可執行 instances;已持久化的 paused instances 仍保持 paused。" },
|
|
342
|
+
{ id: "tip-135", level: "beginner", text_en: "For one unhealthy instance, ask General for an instance restart instead of using the fleet-wide `/restart` command.", text_zh: "只有單一 instance 異常時,應請 General 重啟該 instance,而不是使用 fleet-wide `/restart`。" },
|
|
343
|
+
{ id: "tip-136", level: "beginner", text_en: "Permission prompts are deliberate safety boundaries; review the requested action before approving it.", text_zh: "Permission prompt 是刻意設置的安全邊界;核准前應先檢查所要求的操作。" },
|
|
344
|
+
{ id: "tip-137", level: "beginner", text_en: "In a channel shared by multiple bots, mention the intended bot so the correct ClassicBot receives the turn.", text_zh: "多個 bots 共用 channel 時,應 mention 預期的 bot,讓正確的 ClassicBot 收到該回合。" },
|
|
345
|
+
{ id: "tip-138", level: "beginner", text_en: "Attachments are copied to a local inbox path before delivery; the agent receives that path rather than the platform URL alone.", text_zh: "Attachments 會先複製到本機 inbox path,agent 收到的是該路徑,而不只是平台 URL。" },
|
|
346
|
+
{ id: "tip-139", level: "beginner", text_en: "On supported Discord replies, images in the referenced message are included so the agent can inspect the intended visual context.", text_zh: "在支援的 Discord reply 中,被引用訊息的圖片會一併投遞,讓 agent 能檢查預期的視覺 context。" },
|
|
347
|
+
{ id: "tip-140", level: "beginner", text_en: "A user reaction can be included as recent context, except for AgEnD delivery-status and intentionally ignored emoji.", text_zh: "使用者 reaction 可作為近期 context,但 AgEnD delivery-status 與明確忽略的 emoji 除外。" },
|
|
348
|
+
{ id: "tip-141", level: "beginner", text_en: "Delivery-status emoji describe transport progress, not whether the model's answer is correct.", text_zh: "Delivery-status emoji 表示 transport 進度,不代表 model 的答案是否正確。" },
|
|
349
|
+
{ id: "tip-142", level: "beginner", text_en: "Agent reactions should avoid 👀, ⏳, ✅, and ❌ because AgEnD reserves them for delivery status.", text_zh: "Agent reaction 應避免 👀、⏳、✅、❌,因為 AgEnD 將它們保留給 delivery status。" },
|
|
350
|
+
{ id: "tip-143", level: "beginner", text_en: "Separate instances are useful for unrelated work because each keeps an independent CLI conversation.", text_zh: "互不相關的工作適合使用不同 instances,因為各自保有獨立的 CLI conversation。" },
|
|
351
|
+
{ id: "tip-144", level: "beginner", text_en: "Two instances editing the same files can conflict even when their conversations are independent.", text_zh: "即使 conversations 彼此獨立,兩個 instances 同時修改相同檔案仍可能衝突。" },
|
|
352
|
+
{ id: "tip-145", level: "beginner", text_en: "Backend chooses the CLI; model chooses the model requested from that CLI or its provider.", text_zh: "Backend 決定使用哪個 CLI;model 則是向該 CLI 或其 provider 要求的模型。" },
|
|
353
|
+
{ id: "tip-146", level: "beginner", text_en: "Leaving `model` unset usually lets fleet defaults or the CLI account choose; this is often safer than guessing a name.", text_zh: "不設定 `model` 時通常由 fleet defaults 或 CLI 帳號選擇;這通常比猜測名稱更安全。" },
|
|
354
|
+
{ id: "tip-147", level: "beginner", text_en: "Reasoning effort changes how much thinking a supported model applies; it does not switch the backend.", text_zh: "Reasoning effort 會調整支援 model 的思考強度,不會切換 backend。" },
|
|
355
|
+
{ id: "tip-148", level: "beginner", text_en: "Context percentage is an estimate parsed from backend data or pane output and may be unavailable.", text_zh: "Context percentage 是由 backend 資料或 pane output 解析的估計值,也可能無法取得。" },
|
|
356
|
+
{ id: "tip-149", level: "beginner", text_en: "Compaction usually asks a backend to summarize or reduce context while aiming to continue the same task; Antigravity maps `/compact` to a full conversation clear.", text_zh: "Compaction 通常會要求 backend 摘要或縮減 context,以繼續同一項工作;Antigravity 則會把 `/compact` 對應為完整清除對話。" },
|
|
357
|
+
{ id: "tip-150", level: "beginner", text_en: "Clear removes conversation context on supported backends and therefore asks for confirmation before it runs.", text_zh: "Clear 會移除支援 backend 的 conversation context,因此執行前需要再次確認。" },
|
|
358
|
+
{ id: "tip-151", level: "beginner", text_en: "Daily tips are optional and appear in General; `/tips off` disables automatic delivery.", text_zh: "每日 tips 是可選功能,會出現在 General;`/tips off` 可關閉自動投遞。" },
|
|
359
|
+
{ id: "tip-152", level: "beginner", text_en: "The Got it button records a tip as dismissed so that item is excluded from later selection.", text_zh: "「我知道了」按鈕會將 tip 記為 dismissed,之後選取時會排除該項。" },
|
|
360
|
+
{ id: "tip-153", level: "beginner", text_en: "Beginner and intermediate tips are available immediately; advanced tips require a later explicit unlock.", text_zh: "入門與中階 tips 一開始即可使用;進階 tips 則需要之後明確解鎖。" },
|
|
361
|
+
{ id: "tip-154", level: "beginner", text_en: "Settings provides a browser editor for common fleet and instance configuration fields.", text_zh: "Settings 提供瀏覽器介面,可編輯常見的 fleet 與 instance 設定欄位。" },
|
|
362
|
+
{ id: "tip-155", level: "beginner", text_en: "A hot setting applies without restarting the instance; a cold setting changes startup behavior and requires a restart.", text_zh: "Hot setting 不需重啟 instance 即可生效;cold setting 會改變啟動行為,因此需要 restart。" },
|
|
363
|
+
{ id: "tip-156", level: "beginner", text_en: "fleet.yaml is the persistent fleet configuration file; keep a backup before large manual edits.", text_zh: "fleet.yaml 是持久化的 fleet 設定檔;大量手動修改前應保留備份。" },
|
|
364
|
+
{ id: "tip-157", level: "beginner", text_en: "Instance fields omitted from fleet.yaml inherit matching defaults, keeping the file smaller.", text_zh: "Instance 在 fleet.yaml 省略的欄位會繼承對應 defaults,讓檔案保持精簡。" },
|
|
365
|
+
{ id: "tip-158", level: "beginner", text_en: "Descriptions and tags help people and General understand an instance's intended responsibility.", text_zh: "Descriptions 與 tags 可協助使用者及 General 理解 instance 的預期責任。" },
|
|
366
|
+
{ id: "tip-159", level: "beginner", text_en: "For General and fleet-topic instances in a multi-bot fleet, set Channel binding in Settings to keep replies on the intended bot. ClassicBot collaboration replies follow the receiving adapter.", text_zh: "多 bot fleet 中,General 與 fleet-topic instances 可在 Settings 設定 Channel binding,讓回覆固定使用預期 bot;ClassicBot 協作回覆則會跟隨收到訊息的 adapter。" },
|
|
367
|
+
{ id: "tip-160", level: "beginner", text_en: "Logs record lifecycle and routing evidence; they are useful for diagnosis but may contain project details.", text_zh: "Logs 會記錄 lifecycle 與 routing 證據,適合診斷,但可能包含專案細節。" },
|
|
368
|
+
{ id: "tip-161", level: "beginner", text_en: "Use `/status` for a channel summary and `agend ls` for a terminal-oriented instance list.", text_zh: "可用 `/status` 查看 channel 摘要,或用 `agend ls` 查看 terminal 形式的 instance 清單。" },
|
|
369
|
+
{ id: "tip-162", level: "beginner", text_en: "Use `/doctor` to check the configured backend CLI; use `agend doctor` in a terminal for service, tmux, fleet PID, and IPC checks.", text_zh: "可用 `/doctor` 檢查目前設定的 backend CLI;service、tmux、fleet PID 與 IPC 則應在終端執行 `agend doctor` 檢查。" },
|
|
370
|
+
{ id: "tip-163", level: "beginner", text_en: "`/sysinfo` provides versions and host facts that help reproduce environment-specific issues.", text_zh: "`/sysinfo` 會提供版本與主機資訊,有助於重現特定環境的問題。" },
|
|
371
|
+
{ id: "tip-164", level: "beginner", text_en: "`/usage` reports provider data when available; no data can mean unsupported telemetry rather than zero usage.", text_zh: "`/usage` 會在可用時顯示 provider 資料;no data 可能代表不支援 telemetry,而不是用量為零。" },
|
|
372
|
+
{ id: "tip-165", level: "beginner", text_en: "`/dashboard` is the normal way to obtain authenticated browser links for fleet pages.", text_zh: "`/dashboard` 是取得 fleet 網頁 authenticated links 的一般方式。" },
|
|
373
|
+
{ id: "tip-166", level: "beginner", text_en: "`/update` changes the installed AgEnD version and restarts the fleet, so active work should be considered first.", text_zh: "`/update` 會變更已安裝的 AgEnD 版本並重啟 fleet,執行前應先考量進行中的工作。" },
|
|
374
|
+
{ id: "tip-167", level: "beginner", text_en: "Schedules deliver a message later or repeatedly; the target instance still processes it as a normal turn.", text_zh: "Schedules 可在之後或週期性投遞訊息;target instance 仍會把它當作一般回合處理。" },
|
|
375
|
+
{ id: "tip-168", level: "beginner", text_en: "Ask General for fleet-wide coordination, instance lifecycle actions, or help choosing the right worker.", text_zh: "需要 fleet-wide 協調、instance lifecycle 操作或選擇 worker 時,可詢問 General。" },
|
|
376
|
+
{ id: "tip-169", level: "beginner", text_en: "Do not send passwords or private tokens through chat; enter secrets directly in the trusted terminal when required.", text_zh: "不要透過 chat 傳送密碼或 private tokens;必要時應直接在可信任的 terminal 輸入。" },
|
|
377
|
+
{ id: "tip-170", level: "beginner", text_en: "Before changing paths, credentials, or access rules, preserve a recoverable copy of the current configuration.", text_zh: "變更 paths、credentials 或 access rules 前,應保留可復原的目前設定副本。" },
|
|
378
|
+
// ── Expanded Intermediate (60) ─────────────────────────────────────────
|
|
379
|
+
{ id: "tip-171", level: "intermediate", text_en: "Use `/steer <message>` to redirect an active turn on Claude Code, Codex, or Grok without waiting for idle.", text_zh: "可用 `/steer <訊息>` 在 Claude Code、Codex 或 Grok 工作途中調整方向,不必等待 idle。" },
|
|
380
|
+
{ id: "tip-172", level: "intermediate", text_en: "Use `/btw <message>` for a labelled follow-up on Claude Code. AgEnD sends it through the normal reply path so the answer reaches the channel and transcript; other backends report unsupported.", text_zh: "可用 `/btw <訊息>` 向 Claude Code 提出標記過的附帶問題;AgEnD 會透過一般回覆路徑投遞,讓答案進入 channel 與 transcript,其他 backends 則回報不支援。" },
|
|
381
|
+
{ id: "tip-173", level: "intermediate", text_en: "Use admin-only `/raw <text>` only when the normal inbound wrapper would change the intended CLI command.", text_zh: "只有一般 inbound wrapper 會改變預期 CLI command 時,才使用 admin-only `/raw <文字>`。" },
|
|
382
|
+
{ id: "tip-174", level: "intermediate", text_en: "Use `/compact` when context is becoming crowded but the current conversation should continue; backend behavior differs, and Antigravity performs a full clear instead.", text_zh: "Context 逐漸擁擠但仍要延續目前對話時,可用 `/compact`;實際行為依 backend 而異,Antigravity 會改為完整清除。" },
|
|
383
|
+
{ id: "tip-175", level: "intermediate", text_en: "Use `/clear` for a fresh conversation on supported backends; the confirmation exists because prior context is not retained.", text_zh: "支援的 backend 可用 `/clear` 開始新對話;由於先前 context 不會保留,因此需要確認。" },
|
|
384
|
+
{ id: "tip-176", level: "intermediate", text_en: "Use `/ctx` to verify the effective backend and model before attributing behavior to a particular CLI.", text_zh: "判斷某個行為屬於哪個 CLI 前,可先用 `/ctx` 確認 effective backend 與 model。" },
|
|
385
|
+
{ id: "tip-177", level: "intermediate", text_en: "Use `/model` without an argument to inspect choices; use `/model <name>` only after checking the target backend's catalog.", text_zh: "可先執行不帶參數的 `/model` 查看選項;確認 target backend catalog 後再用 `/model <名稱>`。" },
|
|
386
|
+
{ id: "tip-178", level: "intermediate", text_en: "Use `/effort` without an argument to inspect supported levels before applying an effort override.", text_zh: "套用 effort override 前,可先執行不帶參數的 `/effort` 查看支援等級。" },
|
|
387
|
+
{ id: "tip-179", level: "intermediate", text_en: "Use `/save <name>` only on Kiro CLI or Claude Code; the exported format and destination are backend-defined.", text_zh: "`/save <名稱>` 只支援 Kiro CLI 與 Claude Code;匯出格式與位置由 backend 決定。" },
|
|
388
|
+
{ id: "tip-180", level: "intermediate", text_en: "Use `/cancel` to interrupt the current turn and discard older pending deliveries; it does not delete conversation history.", text_zh: "可用 `/cancel` 中斷目前回合並丟棄較早的 pending deliveries;它不會刪除 conversation history。" },
|
|
389
|
+
{ id: "tip-181", level: "intermediate", text_en: "Use `/pause` only when an instance is idle; General cannot be paused because fleet coordination must remain available.", text_zh: "只有 instance idle 時才使用 `/pause`;General 不可 pause,以維持 fleet 協調能力。" },
|
|
390
|
+
{ id: "tip-182", level: "intermediate", text_en: "Use `/wake` to start a paused instance immediately; sending it a normal message can also trigger wake.", text_zh: "可用 `/wake` 立即啟動 paused instance;傳送一般訊息也能觸發 wake。" },
|
|
391
|
+
{ id: "tip-183", level: "intermediate", text_en: "Use `/restart` only when the whole fleet should restart; ask General for a single-instance restart.", text_zh: "只有整個 fleet 都需要 restart 時才使用 `/restart`;單一 instance 應請 General 重啟。" },
|
|
392
|
+
{ id: "tip-184", level: "intermediate", text_en: "Use `/update` after active work reaches a safe point because installation is followed by a fleet restart.", text_zh: "`/update` 安裝後會重啟 fleet,因此應等進行中的工作到達安全點再執行。" },
|
|
393
|
+
{ id: "tip-185", level: "intermediate", text_en: "Use `/usage` to compare available provider windows; telemetry labels and refresh timing differ by provider.", text_zh: "可用 `/usage` 比較可取得的 provider windows;telemetry labels 與 refresh timing 依 provider 而異。" },
|
|
394
|
+
{ id: "tip-186", level: "intermediate", text_en: "Use `/dashboard` to obtain current authenticated links rather than reusing a URL from another machine or fleet.", text_zh: "應用 `/dashboard` 取得目前 authenticated links,不要重用其他機器或 fleet 的 URL。" },
|
|
395
|
+
{ id: "tip-187", level: "intermediate", text_en: "Use `/doctor` for backend checks in chat and `agend doctor` for broader host, service, tmux, and IPC checks.", text_zh: "Chat 中可用 `/doctor` 檢查 backend;更完整的 host、service、tmux 與 IPC 檢查則用 `agend doctor`。" },
|
|
396
|
+
{ id: "tip-188", level: "intermediate", text_en: "Use `/sysinfo` when a report depends on operating system, architecture, Node, tmux, or AgEnD version.", text_zh: "問題與 OS、architecture、Node、tmux 或 AgEnD version 有關時,可使用 `/sysinfo`。" },
|
|
397
|
+
{ id: "tip-189", level: "intermediate", text_en: "Use `/tips` for an on-demand item, `/tips off` to stop daily delivery, and `/tips on` to restore it.", text_zh: "可用 `/tips` 主動查看、`/tips off` 停止每日投遞,或 `/tips on` 重新開啟。" },
|
|
398
|
+
{ id: "tip-190", level: "intermediate", text_en: "Use `/status` for a fleet overview; access is admin-gated because it includes cross-instance operational details.", text_zh: "可用 `/status` 查看 fleet overview;其中含跨 instance 營運資訊,因此限管理員使用。" },
|
|
399
|
+
{ id: "tip-191", level: "intermediate", text_en: "Claude Code supports specialized subagents; they are useful for independent research or review while the main agent coordinates results.", text_zh: "Claude Code 支援 specialized subagents,適合在 main agent 協調結果時進行獨立研究或 review。" },
|
|
400
|
+
{ id: "tip-192", level: "intermediate", text_en: "Claude Code discovers skills that package reusable instructions; availability depends on the installed CLI and workspace configuration.", text_zh: "Claude Code 可發現封裝重複 instructions 的 skills;實際可用性取決於已安裝 CLI 與 workspace 設定。" },
|
|
401
|
+
{ id: "tip-193", level: "intermediate", text_en: "Claude Code permission modes control whether file and command actions are allowed, denied, or require approval.", text_zh: "Claude Code permission modes 可控制檔案與 command actions 是允許、拒絕或需要核准。" },
|
|
402
|
+
{ id: "tip-194", level: "intermediate", text_en: "Claude Code can continue or resume sessions, but continuity still depends on the project path and available session data.", text_zh: "Claude Code 可 continue 或 resume sessions,但能否延續仍取決於 project path 與可用 session data。" },
|
|
403
|
+
{ id: "tip-195", level: "intermediate", text_en: "Codex applies a sandbox policy to model-generated shell commands; approval policy and sandbox scope are separate controls.", text_zh: "Codex 會對 model 產生的 shell commands 套用 sandbox policy;approval policy 與 sandbox scope 是不同控制。" },
|
|
404
|
+
{ id: "tip-196", level: "intermediate", text_en: "Codex can accept queued input while working, so AgEnD delivers follow-up messages without waiting for a false idle gap.", text_zh: "Codex 工作時可接受 queued input,因此 AgEnD 不需等待可能誤判的 idle gap 才投遞 follow-up。" },
|
|
405
|
+
{ id: "tip-197", level: "intermediate", text_en: "Codex skills keep reusable workflows discoverable and load detailed instructions when the task calls for them.", text_zh: "Codex skills 可讓重複 workflows 保持可發現,並在任務需要時載入詳細 instructions。" },
|
|
406
|
+
{ id: "tip-198", level: "intermediate", text_en: "Codex custom providers are selected by AgEnD, while provider URLs and credential environment variables remain in Codex configuration.", text_zh: "AgEnD 只負責選擇 Codex custom provider;provider URL 與 credential environment variables 仍由 Codex config 管理。" },
|
|
407
|
+
{ id: "tip-199", level: "intermediate", text_en: "Codex model metadata warnings can occur for custom models; the provider's actual response determines whether the model works.", text_zh: "Custom models 可能出現 Codex model metadata warning;model 是否可用仍以 provider 實際回應為準。" },
|
|
408
|
+
{ id: "tip-200", level: "intermediate", text_en: "Kiro Specs provide a requirements, design, tasks, and execution workflow stored under `.kiro/specs/`.", text_zh: "Kiro Specs 提供 requirements、design、tasks 與 execution workflow,內容存放於 `.kiro/specs/`。" },
|
|
409
|
+
{ id: "tip-201", level: "intermediate", text_en: "Kiro steering files provide persistent project guidance so conventions do not need to be repeated in every message.", text_zh: "Kiro steering files 可提供持久的專案指引,不需在每則訊息重複 conventions。" },
|
|
410
|
+
{ id: "tip-202", level: "intermediate", text_en: "Kiro skills use progressive disclosure: metadata is discovered first and detailed instructions are loaded when relevant.", text_zh: "Kiro skills 採 progressive disclosure:先發現 metadata,再於相關任務載入詳細 instructions。" },
|
|
411
|
+
{ id: "tip-203", level: "intermediate", text_en: "Kiro CLI distinguishes steer and queue follow-ups; its native Ctrl+S mode changes how busy-time input is handled.", text_zh: "Kiro CLI 區分 steer 與 queue follow-ups;原生 Ctrl+S mode 會改變 busy-time input 的處理方式。" },
|
|
412
|
+
{ id: "tip-204", level: "intermediate", text_en: "Kiro `auto` lets the CLI choose among available models dynamically. An unset instance model first inherits `defaults.model`; only when neither is set does Kiro use its CLI default, currently `auto`. Set `model: auto` explicitly to override a fleet model default.", text_zh: "Kiro `auto` 會讓 CLI 動態選擇可用 models。Instance 未設定 model 時會先繼承 `defaults.model`;兩者都未設定時,Kiro 才會使用目前為 `auto` 的 CLI default。若要覆寫 fleet 的 model default,應明確設定 `model: auto`。" },
|
|
413
|
+
{ id: "tip-205", level: "intermediate", text_en: "Grok includes web search and fetch capabilities when enabled; availability can depend on CLI policy and account access.", text_zh: "Grok 在啟用時可使用 web search 與 fetch;實際可用性可能取決於 CLI policy 與 account access。" },
|
|
414
|
+
{ id: "tip-206", level: "intermediate", text_en: "Grok supports subagents for parallel or specialized work; the CLI can also disable subagent spawning.", text_zh: "Grok 支援 subagents 進行平行或 specialized work;CLI 也能停用 subagent spawning。" },
|
|
415
|
+
{ id: "tip-207", level: "intermediate", text_en: "Grok exposes permission modes and sandbox profiles; choose them according to the repository's risk level.", text_zh: "Grok 提供 permission modes 與 sandbox profiles;應依 repository risk level 選擇。" },
|
|
416
|
+
{ id: "tip-208", level: "intermediate", text_en: "Grok's `models` command lists models visible to the current account; the list is more reliable than a static tip.", text_zh: "Grok 的 `models` command 會列出目前 account 可見 models;它比靜態 tip 更可靠。" },
|
|
417
|
+
{ id: "tip-209", level: "intermediate", text_en: "Antigravity CLI supports multi-step reasoning, multi-file edits, tool calls, and conversation history in a terminal TUI.", text_zh: "Antigravity CLI 在 terminal TUI 中支援 multi-step reasoning、multi-file edits、tool calls 與 conversation history。" },
|
|
418
|
+
{ id: "tip-210", level: "intermediate", text_en: "Antigravity can connect Google and third-party services through configured MCP servers; approvals still apply.", text_zh: "Antigravity 可透過 configured MCP servers 連接 Google 與第三方 services;操作仍受 approvals 控制。" },
|
|
419
|
+
{ id: "tip-211", level: "intermediate", text_en: "Antigravity skills provide reusable domain workflows, but skill discovery paths can differ between its desktop and CLI products.", text_zh: "Antigravity skills 可提供可重用的 domain workflows,但 desktop 與 CLI products 的 discovery paths 可能不同。" },
|
|
420
|
+
{ id: "tip-212", level: "intermediate", text_en: "Antigravity's model selector reflects the current Google account or project; check it before pinning a model in AgEnD.", text_zh: "Antigravity model selector 反映目前 Google account 或 project;在 AgEnD 固定 model 前應先確認。" },
|
|
421
|
+
{ id: "tip-213", level: "intermediate", text_en: "Antigravity is a CLI backend in AgEnD; Google service access still comes from the CLI's own authentication and tools.", text_zh: "Antigravity 在 AgEnD 中是 CLI backend;Google service access 仍由 CLI 自己的 authentication 與 tools 提供。" },
|
|
422
|
+
{ id: "tip-214", level: "intermediate", text_en: "OpenCode has primary agents for main work and subagents for focused tasks; configuration can be project-specific.", text_zh: "OpenCode 有處理主要工作的 primary agents 與專注任務的 subagents,設定可放在 project scope。" },
|
|
423
|
+
{ id: "tip-215", level: "intermediate", text_en: "OpenCode model identifiers commonly include a provider prefix; use its model list rather than assuming a bare model name.", text_zh: "OpenCode model identifiers 通常包含 provider prefix;應查看其 model list,不要假設 bare model name。" },
|
|
424
|
+
{ id: "tip-216", level: "intermediate", text_en: "OpenCode permissions can separately govern reading, editing, shell commands, external directories, and subagent tasks.", text_zh: "OpenCode permissions 可分別管理 reading、editing、shell commands、external directories 與 subagent tasks。" },
|
|
425
|
+
{ id: "tip-217", level: "intermediate", text_en: "OpenCode's Build and Plan agents have different permission intent; select the one matching the requested level of change.", text_zh: "OpenCode 的 Build 與 Plan agents 有不同 permission intent;應依需求的變更程度選擇。" },
|
|
426
|
+
{ id: "tip-218", level: "intermediate", text_en: "OpenCode provider definitions belong in `opencode.json`; AgEnD's model value selects from what OpenCode exposes.", text_zh: "OpenCode provider definitions 應放在 `opencode.json`;AgEnD model value 則從 OpenCode 提供的項目中選擇。" },
|
|
427
|
+
{ id: "tip-219", level: "intermediate", text_en: "Claude model families often trade capability, speed, and cost differently; use the account's current selector for exact availability.", text_zh: "Claude model families 通常在能力、速度與成本間有不同取捨;精確 availability 應以 account 當前 selector 為準。" },
|
|
428
|
+
{ id: "tip-220", level: "intermediate", text_en: "Opus is generally positioned for demanding work, Sonnet for balanced work, and Haiku for faster lighter work; current model docs remain authoritative.", text_zh: "Opus 通常定位於高難度工作、Sonnet 偏平衡、Haiku 偏快速輕量;仍應以最新 model docs 為準。" },
|
|
429
|
+
{ id: "tip-221", level: "intermediate", text_en: "GPT model variants can target different capability, latency, and cost points; names visible in the CLI are the source of truth.", text_zh: "GPT model variants 可能針對不同能力、latency 與成本;CLI 實際顯示的名稱才是 source of truth。" },
|
|
430
|
+
{ id: "tip-222", level: "intermediate", text_en: "When available, Sol targets frontier work, Terra balances capability and cost, and Luna targets cost-sensitive, high-volume work; verify current account access.", text_zh: "在可用時,Sol 偏向 frontier work、Terra 平衡能力與成本、Luna 適合重視成本的大量工作;仍需確認目前 account access。" },
|
|
431
|
+
{ id: "tip-223", level: "intermediate", text_en: "Automatic model selection can change models between turns, so pin a model only when repeatability matters more than flexibility.", text_zh: "Automatic model selection 可能在不同回合使用不同 models;只有 repeatability 比 flexibility 更重要時才固定 model。" },
|
|
432
|
+
{ id: "tip-224", level: "intermediate", text_en: "A model unavailable to one account may work on another; an AgEnD compatibility warning is not an entitlement check.", text_zh: "某 account 不可用的 model 可能在另一 account 可用;AgEnD compatibility warning 不是 entitlement check。" },
|
|
433
|
+
{ id: "tip-225", level: "intermediate", text_en: "For a complex request, specify the desired outcome and verification evidence rather than prescribing every implementation step.", text_zh: "複雜需求應說明預期結果與 verification evidence,不一定要指定每個 implementation step。" },
|
|
434
|
+
{ id: "tip-226", level: "intermediate", text_en: "When work is read-only, state that explicitly so the agent does not infer permission to modify files.", text_zh: "若工作只需 read-only,應明確說明,避免 agent 推定可修改檔案。" },
|
|
435
|
+
{ id: "tip-227", level: "intermediate", text_en: "When requesting a fix, include the observed symptom, a reproduction path, and the expected behavior.", text_zh: "要求修正時,應包含 observed symptom、reproduction path 與 expected behavior。" },
|
|
436
|
+
{ id: "tip-228", level: "intermediate", text_en: "A screenshot can show TUI state, but logs and timestamps are usually needed to identify routing or timing causes.", text_zh: "Screenshot 可呈現 TUI state,但 routing 或 timing 根因通常仍需要 logs 與 timestamps。" },
|
|
437
|
+
{ id: "tip-229", level: "intermediate", text_en: "For parallel work, separate file ownership or use distinct worktrees so successful edits do not overwrite one another.", text_zh: "平行工作時應分開 file ownership 或使用不同 worktrees,避免成功修改互相覆蓋。" },
|
|
438
|
+
{ id: "tip-230", level: "intermediate", text_en: "Before accepting a generated change, review the diff and the tests that exercise production code rather than copied logic.", text_zh: "接受 generated change 前,應檢查 diff 與真正覆蓋 production code 的 tests,而不是複製出的邏輯。" },
|
|
439
|
+
// ── Expanded Advanced (70) ─────────────────────────────────────────────
|
|
440
|
+
{ id: "tip-231", level: "advanced", text_en: "Keep the automatic fleet.yaml backup until the slimmed or migrated configuration has completed a successful restart.", text_zh: "Fleet.yaml 自動備份應保留到瘦身或 migration 後成功完成 restart。" },
|
|
441
|
+
{ id: "tip-232", level: "advanced", text_en: "AgEnD's lossless YAML patcher aims to preserve comments, but comments attached to removed redundant fields may not have a remaining node.", text_zh: "AgEnD lossless YAML patcher 會盡量保留 comments,但附著於被移除 redundant fields 的 comments 可能沒有可保留的節點。" },
|
|
442
|
+
{ id: "tip-233", level: "advanced", text_en: "Raw instance config can omit inherited values; inspect effective config when diagnosing what a daemon actually received.", text_zh: "Raw instance config 可省略 inherited values;診斷 daemon 實際收到什麼時,應查看 effective config。" },
|
|
443
|
+
{ id: "tip-234", level: "advanced", text_en: "A SIGHUP reload reconciles hot fields in place and sends daemon config updates without recreating the CLI process.", text_zh: "SIGHUP reload 會原地 reconcile hot fields,並傳送 daemon config updates,不會重建 CLI process。" },
|
|
444
|
+
{ id: "tip-235", level: "advanced", text_en: "Cold-field reconciliation restarts only affected instances; adapter-wide changes can still require a fleet restart.", text_zh: "Cold-field reconciliation 只會重啟受影響 instances;adapter-wide changes 仍可能需要 fleet restart。" },
|
|
445
|
+
{ id: "tip-236", level: "advanced", text_en: "Run `agend validate` before reload after manual YAML edits; a rejected reload leaves the prior running configuration intact.", text_zh: "手動修改 YAML 後,reload 前應先執行 `agend validate`;被拒絕的 reload 會保留先前 running config。" },
|
|
446
|
+
{ id: "tip-237", level: "advanced", text_en: "The fleet singleton lock prevents a second manager from racing for the same tmux session, sockets, and bot polling connections.", text_zh: "Fleet singleton lock 可防止第二個 manager 爭用相同 tmux session、sockets 與 bot polling connections。" },
|
|
447
|
+
{ id: "tip-238", level: "advanced", text_en: "A service-managed fleet should fail closed when the user service bus is unavailable instead of launching an untracked duplicate.", text_zh: "Service-managed fleet 在 user service bus 不可用時應 fail closed,而不是啟動未追蹤的 duplicate。" },
|
|
448
|
+
{ id: "tip-239", level: "advanced", text_en: "scheduler.db stores schedules, decisions, tasks, and tip state; back it up consistently before direct database maintenance.", text_zh: "scheduler.db 儲存 schedules、decisions、tasks 與 tip state;直接維護資料庫前應做一致性備份。" },
|
|
449
|
+
{ id: "tip-240", level: "advanced", text_en: "SQLite base files and their WAL, SHM, or journal sidecars must stay together; splitting them across homes can make a database unusable.", text_zh: "SQLite base file 與 WAL、SHM 或 journal sidecars 必須保持一致;分散到不同 homes 可能使資料庫無法使用。" },
|
|
450
|
+
{ id: "tip-241", level: "advanced", text_en: "Do not place provider secrets in fleet.yaml when a CLI supports environment-key references; configuration files are easier to expose accidentally.", text_zh: "CLI 支援 environment-key reference 時,不應把 provider secrets 放進 fleet.yaml;設定檔較容易被意外暴露。" },
|
|
451
|
+
{ id: "tip-242", level: "advanced", text_en: "Configure locked channel access in Settings' Advanced & Access section or fleet.yaml, and verify at least one administrator remains in `allowed_users` before restart.", text_zh: "受控 fleet 可在 Settings 的 Advanced & Access section 或 fleet.yaml 設定 locked channel access;restart 前應確認 `allowed_users` 至少保留一位管理員。" },
|
|
452
|
+
{ id: "tip-243", level: "advanced", text_en: "Treat bot tokens, dashboard tokens, provider keys, and session exports as secrets with different rotation procedures.", text_zh: "Bot tokens、dashboard tokens、provider keys 與 session exports 都應視為 secrets,但各自有不同 rotation procedures。" },
|
|
453
|
+
{ id: "tip-244", level: "advanced", text_en: "The persistent web token keeps dashboard URLs valid across fleet restarts. To invalidate them, remove or replace `~/.agend/web.token`, restart the fleet, then run `/dashboard` for a new link.", text_zh: "Persistent web token 可讓 dashboard URLs 跨 fleet restart 仍有效;需要使連結失效時,應移除或替換 `~/.agend/web.token`、重啟 fleet,再執行 `/dashboard` 取得新連結。" },
|
|
454
|
+
{ id: "tip-245", level: "advanced", text_en: "Sensitive token and state files should remain owner-readable only; avoid copying them into shared project directories.", text_zh: "敏感 token 與 state files 應只允許 owner 讀取,避免複製到 shared project directories。" },
|
|
455
|
+
{ id: "tip-246", level: "advanced", text_en: "Destructive and assistance confirmation prompts use nonce-bound callbacks tied to adapter, chat, thread, and message so copied callback data cannot authorize another context.", text_zh: "破壞性操作與協助確認提示會使用綁定 adapter、chat、thread 與 message 的 nonce callbacks,避免複製 callback data 後授權其他 context。" },
|
|
456
|
+
{ id: "tip-247", level: "advanced", text_en: "An allowlist is an authorization boundary, not merely a UI filter; test both permitted and rejected identities after changes.", text_zh: "Allowlist 是 authorization boundary,不只是 UI filter;變更後應同時測試允許與拒絕的 identities。" },
|
|
457
|
+
{ id: "tip-248", level: "advanced", text_en: "In multi-world fleets, bind General and fleet-topic instances explicitly so callbacks and replies remain in the intended adapter world.", text_zh: "Multi-world fleets 應明確綁定 General 與 fleet-topic instances,讓 callbacks 與 replies 留在預期 adapter world。" },
|
|
458
|
+
{ id: "tip-249", level: "advanced", text_en: "Set terminal columns and rows through Settings' advanced YAML editor or fleet.yaml. Geometry affects both TUI layout and captured line wrapping, so validate prompt detection after changes.", text_zh: "可透過 Settings 的 advanced YAML editor 或 fleet.yaml 設定 terminal columns 與 rows;geometry 同時影響 TUI layout 與 captured line wrapping,因此變更後應驗證 prompt detection。" },
|
|
459
|
+
{ id: "tip-250", level: "advanced", text_en: "AgEnD enables tmux mouse mode only for its own session, allowing scrollback after attach without changing unrelated sessions.", text_zh: "AgEnD 只在自己的 tmux session 啟用 mouse mode,attach 後可捲動 scrollback,不影響其他 sessions。" },
|
|
460
|
+
{ id: "tip-251", level: "advanced", text_en: "`capture-pane` without joined wrapping reflects the screen's physical lines, so width changes can alter parser input even when text is unchanged.", text_zh: "未 join wrapping 的 `capture-pane` 會反映畫面實際行,因此即使文字相同,width changes 也可能改變 parser input。" },
|
|
461
|
+
{ id: "tip-252", level: "advanced", text_en: "Ready, busy, and error patterns are heuristics over pane text; keep real CLI samples when adjusting them.", text_zh: "Ready、busy 與 error patterns 是對 pane text 的 heuristics;調整時應保留真實 CLI samples。" },
|
|
462
|
+
{ id: "tip-253", level: "advanced", text_en: "A false idle can retire controls or deliver too early; a false working can delay messages and trigger hang alerts.", text_zh: "False idle 可能提早收回 controls 或投遞;false working 則可能延遲訊息並觸發 hang alerts。" },
|
|
463
|
+
{ id: "tip-254", level: "advanced", text_en: "Tune hang detection in Settings' Detection section or fleet.yaml, keeping timeouts above normal silent work intervals; inspect pane evidence before forcing a restart.", text_zh: "可在 Settings 的 Detection section 或 fleet.yaml 調整 hang detection,timeout 應高於正常 silent work intervals;force restart 前先查看 pane evidence。" },
|
|
464
|
+
{ id: "tip-255", level: "advanced", text_en: "Interactive-prompt detection requires both a prompt pattern and stable output time, reducing alerts caused by ordinary discussion of password commands.", text_zh: "Interactive-prompt detection 同時要求 prompt pattern 與穩定 output 時間,可減少一般討論 password commands 所造成的 alerts。" },
|
|
465
|
+
{ id: "tip-256", level: "advanced", text_en: "Lightweight mode is an instance setting that reduces supervision overhead by omitting several monitors; change it in Settings only when those missing safeguards are understood.", text_zh: "Lightweight mode 是會省略多項 monitors 以降低 supervision overhead 的 instance setting;只有理解缺少哪些 safeguards 時才在 Settings 變更。" },
|
|
466
|
+
{ id: "tip-257", level: "advanced", text_en: "Set tool progress in Settings. Verbose mode can expose command previews in chat history, so use standard or off where operational details are sensitive.", text_zh: "可在 Settings 設定 tool progress;verbose mode 可能在 chat history 顯示 command previews,因此敏感環境應使用 standard 或 off。" },
|
|
467
|
+
{ id: "tip-258", level: "advanced", text_en: "Adjust log level in Settings only temporarily for diagnosis, then restore it to avoid noise and unnecessary exposure of operational details.", text_zh: "診斷時可在 Settings 暫時調整 log level,完成後應恢復,以避免噪音與不必要的營運細節暴露。" },
|
|
468
|
+
{ id: "tip-259", level: "advanced", text_en: "A listening health endpoint is required before dashboard links are considered ready; port conflicts should fail closed.", text_zh: "Health endpoint 必須成功 listening,dashboard links 才算 ready;port conflict 應 fail closed。" },
|
|
469
|
+
{ id: "tip-260", level: "advanced", text_en: "IPC disconnect, overflow, and reconnect events should be correlated by instance; repeated clients can otherwise duplicate outbound handling.", text_zh: "IPC disconnect、overflow 與 reconnect events 應依 instance 關聯;重複 clients 否則可能重複處理 outbound。" },
|
|
470
|
+
{ id: "tip-261", level: "advanced", text_en: "If two fleet processes appear, collect PID, parent PID, lock owner, service state, and command line before terminating either one.", text_zh: "若出現兩個 fleet processes,終止前應收集 PID、parent PID、lock owner、service state 與 command line。" },
|
|
471
|
+
{ id: "tip-262", level: "advanced", text_en: "Recovery paths should serialize per instance so health checks, MCP recovery, and manual restart cannot spawn competing replacements.", text_zh: "Recovery paths 應依 instance 序列化,避免 health checks、MCP recovery 與 manual restart 建立互相競爭的 replacements。" },
|
|
472
|
+
{ id: "tip-263", level: "advanced", text_en: "Crash-loop protection pauses repeated recovery after a bounded number of failures and reports crashed state instead of idle.", text_zh: "Crash-loop protection 會在有限次數失敗後暫停 repeated recovery,並顯示 crashed 而不是 idle。" },
|
|
473
|
+
{ id: "tip-264", level: "advanced", text_en: "Restart backoff prevents a broken CLI from consuming CPU and logs in a tight spawn-fail loop.", text_zh: "Restart backoff 可避免故障 CLI 在緊密 spawn-fail loop 中持續消耗 CPU 與 logs。" },
|
|
474
|
+
{ id: "tip-265", level: "advanced", text_en: "MCP auto-restart is idle-gated and deduplicated; it recreates the instance because the CLI owns the MCP child pipes.", text_zh: "MCP auto-restart 會進行 idle gate 與 deduplication;由於 CLI 掌握 MCP child pipes,因此需重建 instance。" },
|
|
475
|
+
{ id: "tip-266", level: "advanced", text_en: "Configure `mcp_proxy_reply` through Settings' advanced YAML editor or fleet.yaml. It is a last-resort transport that may include sanitized terminal remnants, so keep it disabled for secret-heavy panes.", text_zh: "可透過 Settings 的 advanced YAML editor 或 fleet.yaml 設定 `mcp_proxy_reply`;它是可能包含 sanitized terminal remnants 的最後手段 transport,因此含大量 secrets 的 pane 應保持停用。" },
|
|
476
|
+
{ id: "tip-267", level: "advanced", text_en: "Session resume is backend-owned; AgEnD can preserve identifiers and paths but cannot guarantee semantic continuity.", text_zh: "Session resume 由 backend 掌控;AgEnD 可保留 identifiers 與 paths,但無法保證語意 continuity。" },
|
|
477
|
+
{ id: "tip-268", level: "advanced", text_en: "OpenCode resume uses a recorded session identifier to avoid global `--continue` selecting an unrelated directory's latest session.", text_zh: "OpenCode resume 使用已記錄 session identifier,避免 global `--continue` 選到其他 directory 的最新 session。" },
|
|
478
|
+
{ id: "tip-269", level: "advanced", text_en: "Per-instance Codex homes isolate MCP servers and decisions so one instance cannot inherit another instance's tools or private context.", text_zh: "Per-instance Codex homes 會隔離 MCP servers 與 decisions,避免某 instance 繼承其他 instance 的 tools 或 private context。" },
|
|
479
|
+
{ id: "tip-270", level: "advanced", text_en: "Claude Code project-session lookup depends on its path encoding; changing workspace paths can make an existing session appear absent.", text_zh: "Claude Code project-session lookup 依賴 path encoding;變更 workspace paths 可能讓既有 session 看起來不存在。" },
|
|
480
|
+
{ id: "tip-271", level: "advanced", text_en: "Adjust startup concurrency in Settings' Startup section or fleet.yaml to reflect available memory and CLI startup cost; a higher number is not always faster.", text_zh: "可在 Settings 的 Startup section 或 fleet.yaml 調整 startup concurrency,使其配合可用 memory 與 CLI startup cost;數值更高不一定更快。" },
|
|
481
|
+
{ id: "tip-272", level: "advanced", text_en: "Adjust stagger delay in Settings' Startup section or fleet.yaml to spread process creation and authentication load, reducing simultaneous CPU, memory, and provider spikes.", text_zh: "可在 Settings 的 Startup section 或 fleet.yaml 調整 stagger delay,以分散 process creation 與 authentication load,降低同時發生的 CPU、memory 與 provider spikes。" },
|
|
482
|
+
{ id: "tip-273", level: "advanced", text_en: "Persisted paused instances are excluded before startup staggering, so they do not consume delay slots.", text_zh: "Persisted paused instances 會在 startup staggering 前排除,因此不會占用 delay slots。" },
|
|
483
|
+
{ id: "tip-274", level: "advanced", text_en: "Set warm cap in Settings or fleet.yaml. Its eviction considers idle recency and excludes General; it is a capacity control rather than a fixed timeout.", text_zh: "可在 Settings 或 fleet.yaml 設定 warm cap;其 eviction 會考量 idle recency 並排除 General,是 capacity control 而不是固定 timeout。" },
|
|
484
|
+
{ id: "tip-275", level: "advanced", text_en: "Set auto-pause in Settings or fleet.yaml. It is time-based and disabled at zero; combine it with warm cap only after observing workload patterns.", text_zh: "可在 Settings 或 fleet.yaml 設定 auto-pause;它是 time-based 且設為零時停用,應先觀察 workload patterns 再考慮與 warm cap 搭配。" },
|
|
485
|
+
{ id: "tip-276", level: "advanced", text_en: "Many warm CLIs can consume substantial resident memory even while idle, although idle alone does not spend model tokens.", text_zh: "大量 warm CLIs 即使 idle 也可能占用可觀的 resident memory,但 idle 本身不會消耗 model tokens。" },
|
|
486
|
+
{ id: "tip-277", level: "advanced", text_en: "Every exposed tool schema consumes model context; smaller tool sets can improve prompt efficiency when capabilities are not needed.", text_zh: "每個 exposed tool schema 都會占用 model context;不需要相關能力時,較小 tool set 可提高 prompt efficiency。" },
|
|
487
|
+
{ id: "tip-278", level: "advanced", text_en: "Choose an instance Tool set in Settings: minimal or standard for narrowly scoped workers, and full only when broader fleet operations are justified.", text_zh: "可在 Settings 選擇 instance 的 Tool set:範圍明確的 workers 使用 minimal 或 standard,只有確實需要更廣 fleet operations 時才使用 full。" },
|
|
488
|
+
{ id: "tip-279", level: "advanced", text_en: "General receives its internal coordinator tool profile when `tool_set` is inherited; explicitly selecting full, standard, or minimal in Settings overrides that profile, and standard or minimal omits coordinator tools.", text_zh: "General 在 `tool_set` 繼承時會取得內部 coordinator profile;若在 Settings 明確選擇 full、standard 或 minimal 會覆蓋該 profile,其中 standard 與 minimal 不含協調工具。" },
|
|
489
|
+
{ id: "tip-280", level: "advanced", text_en: "Bundled skills are distributed by role: General receives all eligible skills, workers receive shared skills, and ClassicBot is skipped.", text_zh: "Bundled skills 會依 role 分發:General 取得所有 eligible skills、workers 取得 shared skills,ClassicBot 則跳過。" },
|
|
490
|
+
{ id: "tip-281", level: "advanced", text_en: "The managed-skill manifest distinguishes AgEnD-owned copies from user skills so upgrades do not overwrite unrelated content.", text_zh: "Managed-skill manifest 可區分 AgEnD-owned copies 與 user skills,避免升級覆寫無關內容。" },
|
|
491
|
+
{ id: "tip-282", level: "advanced", text_en: "Use separate git worktrees for parallel write tasks; a detached inspection checkout should remain read-only.", text_zh: "平行 write tasks 應使用不同 git worktrees;detached inspection checkout 應保持 read-only。" },
|
|
492
|
+
{ id: "tip-283", level: "advanced", text_en: "Templates are defined in fleet.yaml for repeatable instance groups. Ask General to coordinate deployment through a full-operations instance after reviewing branch, workspace, and teardown expectations.", text_zh: "Templates 可在 fleet.yaml 定義可重複部署的 instance groups;檢查 branch、workspace 與 teardown expectations 後,應請 General 透過 full-operations instance 協調部署。" },
|
|
493
|
+
{ id: "tip-284", level: "advanced", text_en: "Teams are routing groups, not shared memory; each member still has an independent context and workspace boundary.", text_zh: "Teams 是 routing groups,不是 shared memory;每個 member 仍有獨立 context 與 workspace boundary。" },
|
|
494
|
+
{ id: "tip-285", level: "advanced", text_en: "A silent schedule injects work without requiring a channel reply; use it only when missing user-visible output is intentional.", text_zh: "Silent schedule 會注入工作但不要求 channel reply;只有確定不需 user-visible output 時才使用。" },
|
|
495
|
+
{ id: "tip-286", level: "advanced", text_en: "Schedule timezone is part of execution semantics; verify daylight-saving behavior when the chosen zone observes it.", text_zh: "Schedule timezone 是 execution semantics 的一部分;所選 zone 有 daylight-saving 時應確認其行為。" },
|
|
496
|
+
{ id: "tip-287", level: "advanced", text_en: "Fleet decisions preserve durable architectural context. Ask General to retire or supersede stale decisions so agents do not follow conflicting guidance.", text_zh: "Fleet decisions 可保存持久 architectural context;可請 General retire 或 supersede 過時 decisions,避免 agents 遵循衝突指引。" },
|
|
497
|
+
{ id: "tip-288", level: "advanced", text_en: "Event logs support operational diagnosis but are not a substitute for source-of-truth configuration or provider audit logs.", text_zh: "Event logs 可支援營運診斷,但不能取代 source-of-truth config 或 provider audit logs。" },
|
|
498
|
+
{ id: "tip-289", level: "advanced", text_en: "Chat exports can contain messages, tool summaries, names, and project details; review and redact before external sharing.", text_zh: "Chat exports 可能包含 messages、tool summaries、names 與 project details;對外分享前應 review 並 redact。" },
|
|
499
|
+
{ id: "tip-290", level: "advanced", text_en: "Model failover depends on compatible usage telemetry and applies on a later rotation; it is not an immediate mid-turn switch.", text_zh: "Model failover 依賴 compatible usage telemetry,並在之後 rotation 生效;不是立即 mid-turn switch。" },
|
|
500
|
+
{ id: "tip-291", level: "advanced", text_en: "Cost guards are only as accurate as backend telemetry; missing or delayed cost data limits enforcement precision.", text_zh: "Cost guards 的準確度取決於 backend telemetry;缺失或延遲的 cost data 會限制 enforcement precision。" },
|
|
501
|
+
{ id: "tip-292", level: "advanced", text_en: "Usage caches reduce provider calls. After token renewal, use the View usage panel's Refresh control for an immediate fetch; ordinary `/usage` continues to use the cache.", text_zh: "Usage caches 可減少 provider calls;token renewal 後,可用 View 用量面板的 Refresh 立即重新擷取,普通 `/usage` 仍會使用 cache。" },
|
|
502
|
+
{ id: "tip-293", level: "advanced", text_en: "Custom-provider credentials should be loaded before the fleet service starts because child CLIs inherit the manager environment.", text_zh: "Custom-provider credentials 應在 fleet service 啟動前載入,因為 child CLIs 會繼承 manager environment。" },
|
|
503
|
+
{ id: "tip-294", level: "advanced", text_en: "Installation prompts such as sudo passwords or confirmations require direct human review; AgEnD never enters them automatically.", text_zh: "安裝時的 sudo password 或 confirmation prompts 需要人類直接檢查;AgEnD 不會自動輸入。" },
|
|
504
|
+
{ id: "tip-295", level: "advanced", text_en: "Keep the previous package version and config backup available until update health checks and representative instance canaries pass.", text_zh: "Update health checks 與代表性 instance canaries 通過前,應保留先前 package version 與 config backup。" },
|
|
505
|
+
{ id: "tip-296", level: "advanced", text_en: "`agend doctor` can distinguish a missing service, an inactive service, an unreachable user bus, and an unhealthy fleet.", text_zh: "`agend doctor` 可區分 service 不存在、inactive、user bus 無法連線,以及 fleet unhealthy。" },
|
|
506
|
+
{ id: "tip-297", level: "advanced", text_en: "On Linux over SSH, a missing D-Bus session can make `systemctl --user` unavailable even when the service file exists.", text_zh: "Linux SSH session 缺少 D-Bus 時,即使 service file 存在,`systemctl --user` 仍可能無法使用。" },
|
|
507
|
+
{ id: "tip-298", level: "advanced", text_en: "A health-port conflict can indicate a stale manager or another service; identify the listener before choosing a new port or stopping it.", text_zh: "Health-port conflict 可能代表 stale manager 或其他 service;更換 port 或停止 process 前應先識別 listener。" },
|
|
508
|
+
{ id: "tip-299", level: "advanced", text_en: "A safe rollback restores both code and compatible configuration; reverting only one side can preserve the failure.", text_zh: "安全 rollback 應同時恢復 code 與 compatible config;只 revert 一側可能保留故障。" },
|
|
509
|
+
{ id: "tip-300", level: "advanced", text_en: "For difficult incidents, preserve timestamps, fleet logs, process trees, socket counts, and pane captures before restarting away the evidence.", text_zh: "困難 incident 應在 restart 清除證據前保留 timestamps、fleet logs、process trees、socket counts 與 pane captures。" },
|
|
510
|
+
];
|
|
511
|
+
export function canUnlockAdvancedTips(dismissedIds) {
|
|
512
|
+
let dismissedIntermediate = 0;
|
|
513
|
+
for (const tip of TIPS) {
|
|
514
|
+
if (tip.level === "intermediate" && dismissedIds.has(tip.id))
|
|
515
|
+
dismissedIntermediate++;
|
|
516
|
+
}
|
|
517
|
+
return dismissedIntermediate >= ADVANCED_TIP_UNLOCK_THRESHOLD;
|
|
518
|
+
}
|
|
519
|
+
export function visibleTipLevels(advancedUnlocked = false) {
|
|
520
|
+
return new Set(advancedUnlocked
|
|
521
|
+
? ["beginner", "intermediate", "advanced"]
|
|
522
|
+
: ["beginner", "intermediate"]);
|
|
523
|
+
}
|
|
524
|
+
export function selectTip(dismissedIds, random = Math.random, advancedUnlocked = false) {
|
|
525
|
+
const levels = visibleTipLevels(advancedUnlocked);
|
|
526
|
+
const candidates = TIPS.filter(tip => levels.has(tip.level) && !dismissedIds.has(tip.id));
|
|
527
|
+
if (candidates.length === 0)
|
|
528
|
+
return null;
|
|
529
|
+
const index = Math.min(candidates.length - 1, Math.max(0, Math.floor(random() * candidates.length)));
|
|
530
|
+
return candidates[index];
|
|
531
|
+
}
|
|
532
|
+
/** Fleet-internal daily trigger. It is intentionally not persisted in fleet.yaml. */
|
|
533
|
+
export class DailyTipScheduler {
|
|
534
|
+
config;
|
|
535
|
+
timezone;
|
|
536
|
+
onTip;
|
|
537
|
+
job = null;
|
|
538
|
+
constructor(config, timezone, onTip) {
|
|
539
|
+
this.config = config;
|
|
540
|
+
this.timezone = timezone;
|
|
541
|
+
this.onTip = onTip;
|
|
542
|
+
}
|
|
543
|
+
start() {
|
|
544
|
+
const cron = `${this.config.minute} ${this.config.hour} * * *`;
|
|
545
|
+
this.job = new Cron(cron, { timezone: this.timezone }, () => {
|
|
546
|
+
Promise.resolve(this.onTip()).catch(() => { });
|
|
547
|
+
});
|
|
548
|
+
}
|
|
549
|
+
stop() {
|
|
550
|
+
this.job?.stop();
|
|
551
|
+
this.job = null;
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
//# sourceMappingURL=tips.js.map
|