@keyou007/agent-bot 0.1.20-alpha.1 → 0.1.21
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/CHANGELOG.md +21 -0
- package/README.md +27 -4
- package/README.zh.md +23 -4
- package/dist/cli/AgentPrerequisites.js +11 -47
- package/dist/cli/AgentPrerequisites.js.map +1 -1
- package/dist/cli/DefaultAgentSelection.js +1 -1
- package/dist/cli/DefaultAgentSelection.js.map +1 -1
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/codex/CodexEventMapper.js +21 -1
- package/dist/codex/CodexEventMapper.js.map +1 -1
- package/dist/codex/CodexLocalActivityDetector.js +32 -10
- package/dist/codex/CodexLocalActivityDetector.js.map +1 -1
- package/dist/codex/CodexProcessManager.js +56 -7
- package/dist/codex/CodexProcessManager.js.map +1 -1
- package/dist/codex/CodexRuntime.js +361 -168
- package/dist/codex/CodexRuntime.js.map +1 -1
- package/dist/codex/CodexVersion.js +18 -0
- package/dist/codex/CodexVersion.js.map +1 -0
- package/dist/codex/ProviderModels.js +159 -0
- package/dist/codex/ProviderModels.js.map +1 -0
- package/dist/codex/ProviderSwitch.js +32 -0
- package/dist/codex/ProviderSwitch.js.map +1 -0
- package/dist/commands/CommandRouter.js +8 -3
- package/dist/commands/CommandRouter.js.map +1 -1
- package/dist/console/ConsoleTurnPresenter.js +2 -1
- package/dist/console/ConsoleTurnPresenter.js.map +1 -1
- package/dist/feishu/CardRenderer.js +82 -27
- package/dist/feishu/CardRenderer.js.map +1 -1
- package/dist/feishu/FeishuConnector.js +17 -5
- package/dist/feishu/FeishuConnector.js.map +1 -1
- package/dist/feishu/FeishuTurnPresenter.js +34 -8
- package/dist/feishu/FeishuTurnPresenter.js.map +1 -1
- package/dist/feishu/InboundText.js +11 -0
- package/dist/feishu/InboundText.js.map +1 -1
- package/dist/feishu/MergedForwardMessage.js +17 -5
- package/dist/feishu/MergedForwardMessage.js.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/local-files/LocalFileViewerServer.js +164 -19
- package/dist/local-files/LocalFileViewerServer.js.map +1 -1
- package/dist/local-files/MarkdownFileLinks.js +65 -0
- package/dist/local-files/MarkdownFileLinks.js.map +1 -0
- package/dist/local-files/TurnPreviewPage.js +725 -0
- package/dist/local-files/TurnPreviewPage.js.map +1 -0
- package/dist/presentation/OutboundRouter.js +6 -1
- package/dist/presentation/OutboundRouter.js.map +1 -1
- package/dist/presentation/TurnStateReducer.js +142 -3
- package/dist/presentation/TurnStateReducer.js.map +1 -1
- package/dist/proxy/ProxySessionController.js +573 -325
- package/dist/proxy/ProxySessionController.js.map +1 -1
- package/dist/state/StateStore.js +65 -65
- package/dist/state/StateStore.js.map +1 -1
- package/dist/utils/formatStorageSize.js +15 -0
- package/dist/utils/formatStorageSize.js.map +1 -0
- package/dist/utils/semanticVersion.js +39 -0
- package/dist/utils/semanticVersion.js.map +1 -0
- package/docs/technical-reference.md +11 -3
- package/docs/technical-reference.zh.md +11 -3
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
- package/skills/agent-bot/SKILL.md +11 -1
- package/src/cli/AgentPrerequisites.ts +14 -40
- package/src/cli/DefaultAgentSelection.ts +1 -1
- package/src/cli.ts +13 -0
- package/src/codex/CodexEventMapper.ts +31 -1
- package/src/codex/CodexLocalActivityDetector.ts +41 -9
- package/src/codex/CodexProcessManager.ts +48 -7
- package/src/codex/CodexRuntime.ts +397 -204
- package/src/codex/CodexVersion.ts +18 -0
- package/src/codex/ProviderModels.ts +185 -0
- package/src/codex/ProviderSwitch.ts +36 -0
- package/src/commands/CommandRouter.ts +7 -2
- package/src/commands/commandTypes.ts +1 -1
- package/src/console/ConsoleTurnPresenter.ts +3 -0
- package/src/feishu/CardRenderer.ts +84 -43
- package/src/feishu/FeishuConnector.ts +15 -5
- package/src/feishu/FeishuTurnPresenter.ts +46 -4
- package/src/feishu/InboundText.ts +11 -0
- package/src/feishu/MergedForwardMessage.ts +15 -5
- package/src/index.ts +3 -1
- package/src/local-files/LocalFileViewerServer.ts +179 -20
- package/src/local-files/MarkdownFileLinks.ts +64 -0
- package/src/local-files/TurnPreviewPage.ts +792 -0
- package/src/presentation/OutboundRouter.ts +8 -0
- package/src/presentation/TurnStateReducer.ts +175 -2
- package/src/presentation/turnViewTypes.ts +13 -0
- package/src/proxy/ProxySessionController.ts +547 -297
- package/src/runtime/types.ts +33 -3
- package/src/state/StateStore.ts +86 -90
- package/src/utils/formatStorageSize.ts +13 -0
- package/src/utils/semanticVersion.ts +28 -0
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,27 @@ The project follows [Semantic Versioning](https://semver.org/).
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.1.21] - 2026-09-12
|
|
10
|
+
|
|
11
|
+
- Track Turn models, complete tool logs, and live context-compaction progress with timing and token changes; show task Turn counts and rollout disk usage through summary-only history and file metadata reads.
|
|
12
|
+
- Accept a Turn ID or one-based history index after `/turn` or `/turns` to show saved runtime details without changing task execution, using only necessary summary pages for missing records and respecting Fork ancestry.
|
|
13
|
+
- Include all Providers when listing and searching App Server tasks, fixing missing tasks after switching to a non-default Provider while preserving pagination and summary-only reads.
|
|
14
|
+
- Add a signed `Preview` page to progress cards with a compact persisted Turn timeline, commands expanded by default, collapsed and deduplicated output/error logs, tool timing, responsive desktop/mobile rendering, and live SSE updates that preserve disclosure and code-scroll state.
|
|
15
|
+
- Preview self-contained HTML files in an isolated frame with inline interactions, a source-code toggle, line anchors, and live updates, without enabling external resources or network access.
|
|
16
|
+
- Summarize each execution setting's scope and effective timing in a one-sentence blockquote at the end of the settings card, and remove redundant Agent and Provider display names while keeping their identifiers and state indicators.
|
|
17
|
+
- Discover models from the selected custom Provider's OpenAI-compatible `/models` endpoint, keep the previous model when supported, otherwise choose the Provider default or its first model, and keep Providers without a model-list endpoint usable through a current/configured model fallback.
|
|
18
|
+
|
|
19
|
+
## [0.1.20] - 2026-09-07
|
|
20
|
+
|
|
21
|
+
- Load only necessary Turn history on demand, keep Fork creation lightweight, and require Codex 0.153.4 or later during initialization and runtime startup.
|
|
22
|
+
- Open local file and directory links in rendered Markdown through the signed local viewer.
|
|
23
|
+
- Acknowledge messages arriving during Reset, then wait for the replacement thread binding before processing them.
|
|
24
|
+
- Align Turn history nodes and branch connectors in fixed-width lanes independent of sequence number width, while preserving the compact graph layout.
|
|
25
|
+
- Verify Provider and model changes before saving defaults, reject switches during active turns, and unload only the selected idle thread before resuming with the new Provider. Preserve fork history, handle known empty threads without missing-rollout failures, and restore the previous settings when a switch or persistence fails.
|
|
26
|
+
- Keep Codex's implicit built-in OpenAI Provider available in both Feishu cards and CLI settings after switching to a custom Provider.
|
|
27
|
+
- Preserve Feishu rich-text code blocks and Markdown in Agent Prompts, including quoted and merged-forwarded messages, instead of silently dropping the code.
|
|
28
|
+
- Announce long-running task, Provider, history, status, file, and group operations before their first remote or cross-process call.
|
|
29
|
+
|
|
9
30
|
## [0.1.20-alpha.1] - 2026-09-06
|
|
10
31
|
|
|
11
32
|
- Create missing per-Agent defaults as a YAML mapping when saving model, Provider, reasoning, or permission settings in older configurations.
|
package/README.md
CHANGED
|
@@ -27,6 +27,7 @@ Agent Bot runs on your computer and connects a Feishu bot to your local coding a
|
|
|
27
27
|
|
|
28
28
|
- Node.js 22 or later
|
|
29
29
|
- At least one supported App Server Agent: Codex or TraeX
|
|
30
|
+
- Codex 0.153.4 or later when using Codex (TraeX and ACP Agents have separate versions)
|
|
30
31
|
- A completed local login for the Agent you plan to use
|
|
31
32
|
|
|
32
33
|
Check the installed Agents and their login status:
|
|
@@ -61,6 +62,8 @@ agentbot init
|
|
|
61
62
|
|
|
62
63
|
Initialization detects Codex and TraeX and reports their installed versions. Missing or outdated Agents are listed with the appropriate install or upgrade commands. Agent Bot saves its configuration to `~/.agent-bot/config.yaml`.
|
|
63
64
|
|
|
65
|
+
Codex's minimum supported version is checked locally even when the npm registry is unavailable. An older Codex cannot be selected during fresh setup; existing Profiles using it must upgrade before initialization continues. The runtime also checks the actual App Server version at startup and reports an upgrade instruction instead of using legacy full-history fallbacks. Run `codex update` (or `npm install -g @openai/codex@latest`), then safely restart Agent Bot.
|
|
66
|
+
|
|
64
67
|
In an interactive terminal, initialization uses a guided flow for Agent selection, Lark bot creation, and permissions. After the ordinary one-click authorization is complete, the wizard asks how group messages should be handled. The final permission that requires manually publishing an app version appears only when receiving every group message is selected.
|
|
65
68
|
|
|
66
69
|
1. **Create the bot.** This creates a Feishu app with the standard basic messaging configuration and saves its App ID, App Secret, and authorizing user. This step cannot be skipped because Agent Bot cannot connect to Feishu without it. Permissions already provided during creation are not repeated below.
|
|
@@ -230,8 +233,8 @@ Send a message beginning with `/` to run a command. Use `/help` in Feishu for th
|
|
|
230
233
|
| `/dismiss` | Archive the current task and dissolve the group after confirmation |
|
|
231
234
|
| `/switch [task]` | Switch tasks or return to the previous task |
|
|
232
235
|
| `/fork [task]` | Branch a task |
|
|
233
|
-
| `/
|
|
234
|
-
| `/status [task]` | View task status
|
|
236
|
+
| `/turn [Turn ID or index]` | Browse turn history or view one turn's runtime details |
|
|
237
|
+
| `/status [task]` | View task status, Turn count, and disk usage |
|
|
235
238
|
| `/title <title>` | Rename the current task |
|
|
236
239
|
| `/stop` | Stop the current execution |
|
|
237
240
|
| `/queue <prompt>` | Run a Prompt after the current turn |
|
|
@@ -261,7 +264,15 @@ In a group, `/mute` and `/mute on` make the bot process only messages that menti
|
|
|
261
264
|
|
|
262
265
|
`/file` accepts relative paths, absolute paths, and paths beginning with `~`; relative paths resolve from the current task directory.
|
|
263
266
|
|
|
264
|
-
`/fork` and `/forkgroup` branch from completed work without interrupting a running turn. `/sessions` manages tasks across projects in pages of up to 10 tasks;
|
|
267
|
+
`/fork` and `/forkgroup` branch from completed work without interrupting a running turn. `/sessions` manages tasks across projects and Providers in pages of up to 10 tasks; switching Provider does not hide a task from the list or search. Use each project menu for `New` and `NewGroup`. Expanding a task directly shows the first 50 characters of its latest user Prompt, its update time, and task-specific actions. `/turns` restores conversation context without reverting local files.
|
|
268
|
+
|
|
269
|
+
`/turn` and `/turns` are equivalent. Without an argument they open the history card; `/turn 3` uses its one-based, newest-first index (including a running Turn at the top), and `/turn <Turn ID>` selects a Turn in the current task's history. Viewing details does not Reset, resume, stop, or switch tasks. Saved IDs are read directly; missing history is located through summary pages, stopping at the requested index or the page containing the ID. Fork lookups stay within inherited history. Details show the saved Prompt, status, timing, activities, and results, with Preview when configured; summary-only external Turns cannot show tool activity that Agent Bot never recorded.
|
|
270
|
+
|
|
271
|
+
Fork creation records the source task and branch Turn without synchronizing the local history list. Agent-side conversation inheritance is unchanged. Opening `/turns` reuses local history first and requests only the Turn-summary pages needed for the selected card page, bounded by the branch Turn. Older history is loaded only when needed for later pages; `agentbot task turns` loads the first page if necessary and returns the available local records. Failed history reads remain retryable, and Agents without summary pagination do not trigger a full-history fallback.
|
|
272
|
+
|
|
273
|
+
Ordinary tasks also load history as summary pages on demand. Task lists read only the latest Turn summary; metadata lookups do not request Turns. Status and recovery read at most the latest Turn's complete result and reuse the reconciliation result when available. Local Turn cards read the graph's IDs and timestamps, then only the visible page's Prompt summaries, without loading historical tool outputs. Codex activity detection caches unchanged rollout files and incrementally scans appended content.
|
|
274
|
+
|
|
275
|
+
Turn history uses fixed-width graph lanes with separate sequence numbers, keeping nodes and branch connectors aligned without adding blank continuation rows.
|
|
265
276
|
|
|
266
277
|
## Local Commands
|
|
267
278
|
|
|
@@ -285,10 +296,22 @@ Set `AGENT_BOT_HOME` to use another user-data directory. See [config.example.yam
|
|
|
285
296
|
|
|
286
297
|
Local non-image files and directories referenced in Agent replies become signed, read-only viewer links for source code, Markdown, logs, PDFs, common media files, or downward directory browsing. By default, links open only on the computer running Agent Bot. Setting `fileViewer.host` to `0.0.0.0` automatically selects a LAN address in wired, Wi-Fi, other physical, then VPN order. Use `fileViewer.publicBaseUrl` to override that address for a domain, HTTPS reverse proxy, or port mapping.
|
|
287
298
|
|
|
299
|
+
Progress cards include a `Preview` button that opens the saved Turn timeline in a compact, mobile-friendly browser view. Consecutive native reasoning entries share one collapsed section. Commands are shown in a code-style header, outputs are collapsed, and identical output/error logs appear once. Tool status, start time, and duration appear on the output row. Running Turns update live while preserving your expanded or collapsed steps. Click a file in the file changes or tool file list to preview its current contents in a new tab; deleted or unavailable files remain plain text. Turn previews use the same signed viewer address and access rules as local file links.
|
|
300
|
+
|
|
301
|
+
The compact Turn Preview header uses dot-separated values, keeps the duration label, and abbreviates token counts with K, M, and B units. It wraps to fit narrow screens. Commentary text is bold. Tool commands and outputs preserve line breaks and indentation; long lines scroll horizontally within the tool block without wrapping.
|
|
302
|
+
|
|
288
303
|
Markdown previews keep table cells at their content width. Wide tables scroll horizontally within the preview instead of squeezing columns on narrow screens, and live updates preserve each table's horizontal scroll position.
|
|
289
304
|
|
|
305
|
+
Local links in rendered Markdown open signed viewer pages for the referenced files or directories. Relative paths resolve from the Markdown file's directory; absolute paths, `file://` URLs, and line references are supported, and local images load through the same read-only service. Web links and the original code view are unchanged. Sharing a Markdown viewer link also gives its readers access to the local paths referenced in that document, so only share trusted documents.
|
|
306
|
+
|
|
307
|
+
HTML files (`.html` and `.htm`) open in preview mode with a code toggle, line anchors, and live updates. Self-contained HTML can use inline styles, inline scripts, and embedded media inside an isolated frame. External resources, relative local assets, network requests, forms, and access to the outer viewer are not enabled. The rendered document is complete; only the code view is limited to the first 2 MiB.
|
|
308
|
+
|
|
290
309
|
Provider, model, reasoning effort, and permission choices apply to the current task and are also saved under that Agent's `defaults`. If an older configuration has no `defaults` section for that Agent, it is created automatically on the first change. Future tasks that have no same-Agent settings to inherit start with those saved defaults; each configured Agent keeps its own values.
|
|
291
310
|
|
|
311
|
+
The execution settings card ends with a one-sentence Markdown blockquote for the selected tab's scope and timing. Agent selection changes only the default for new tasks in that conversation, without migrating the current task. Model, reasoning, and permission changes apply from the next turn. Agent and Provider options show their identifiers without duplicate display names, while retaining current/default indicators.
|
|
312
|
+
|
|
313
|
+
Provider changes require an idle task. Wait for an active turn to finish, or stop it before switching. For a custom Provider, Agent Bot uses its OpenAI-compatible `/models` endpoint when available and shows only that Provider's models. A switch keeps the previous model when the target supports it, otherwise selects the target's default model or its first returned model. Providers without a model-list endpoint remain usable: Agent Bot keeps the current or configured model as the single fallback candidate and lets Codex apply it. Agent Bot unloads only the selected idle thread, resumes it with the resolved Provider and model, and verifies both before saving settings or reporting success. A known fresh, empty thread may be replaced while keeping its task identity, title, and directory; forked or resumed tasks are not treated as empty merely because they have no new messages. If a switch fails, the previous settings are retained and remote recovery is attempted. If recovery also fails, further turns are blocked until a Provider switch succeeds.
|
|
314
|
+
|
|
292
315
|
`feishu.groupNameFormat` defines separate name templates for new Project and Projectless groups, with variables for the operating system, Agent, project, task name, and date. See the [technical reference](docs/technical-reference.md#configuration-model) for the complete format.
|
|
293
316
|
|
|
294
317
|
Agent processes inherit ordinary parent-process variables and their explicit `agents.<name>.env` settings. Before starting an Agent, Agent Bot removes inherited `FEISHU_*` credentials and internal `AGENT_BOT_*` state, then provides only namespaced, non-secret Profile and Lark identity context. `FEISHU_APP_SECRET` is never forwarded to an Agent process.
|
|
@@ -297,7 +320,7 @@ By default, `feishu.respondToOwnerOnly: true` accepts only messages and card act
|
|
|
297
320
|
|
|
298
321
|
Agent Bot responds to ordinary owner messages in groups containing the bot. Set `feishu.respondToAllGroupMessages` to `false` to additionally require the owner to @ the bot in groups; private chats are unchanged. Initialization requests the manually published all-group-message permission only when this option is enabled. After changing it from `false` to `true`, rerun `agentbot init` and complete the final permission step.
|
|
299
322
|
|
|
300
|
-
Thinking cards use the grouped layout by default: auxiliary Commentary and user steering remain visible, while each execution group shows only its latest native reasoning and expands to reveal complete tool commands and results. Common PowerShell, zsh, bash, and sh launcher prefixes are omitted from the displayed commands. A failed tool remains marked inside its own tool panel but does not turn the complete execution group red or give the group a failure icon. Execution groups start collapsed and keep stable component identities so a group manually opened in Feishu stays open across card updates. On long turns, pagination measures the fully rendered card content instead of using fixed message or tool counts. Set `feishu.thinkingCardLayout` to `timeline` to temporarily restore the original layout.
|
|
323
|
+
Thinking cards use the grouped layout by default: auxiliary Commentary and user steering remain visible, while each execution group shows only its latest native reasoning and expands to reveal complete tool commands and results. Common PowerShell, zsh, bash, and sh launcher prefixes are omitted from the displayed commands. A failed tool remains marked inside its own tool panel but does not turn the complete execution group red or give the group a failure icon. Execution groups start collapsed and keep stable component identities so a group manually opened in Feishu stays open across card updates. When Codex compacts its context, the card shows the live compaction state as a progress activity, including elapsed time, before/after context token counts, executed Turn count, and rollout disk usage when available. On long turns, pagination measures the fully rendered card content instead of using fixed message or tool counts. Set `feishu.thinkingCardLayout` to `timeline` to temporarily restore the original layout.
|
|
301
324
|
|
|
302
325
|
## Troubleshooting
|
|
303
326
|
|
package/README.zh.md
CHANGED
|
@@ -26,6 +26,7 @@ Agent Bot 运行在你的电脑上,把飞书机器人连接到本机编程 Age
|
|
|
26
26
|
### 使用前提
|
|
27
27
|
|
|
28
28
|
- Node.js 22 或更高版本
|
|
29
|
+
- 使用 Codex 时要求版本不低于 `0.153.4`;此版本限制不适用于 TraeX 和 ACP Agent
|
|
29
30
|
- 至少安装一个支持的 App Server Agent:Codex 或 TraeX
|
|
30
31
|
- 已完成准备使用的 Agent 的本机登录
|
|
31
32
|
|
|
@@ -61,6 +62,8 @@ agentbot init
|
|
|
61
62
|
|
|
62
63
|
初始化会检测 Codex 和 TraeX,并显示已安装的版本。未安装或版本较旧的 Agent 会汇总显示对应的安装或升级命令。Agent Bot 会把配置保存到 `~/.agent-bot/config.yaml` 中。
|
|
63
64
|
|
|
65
|
+
即使 npm registry 不可用,也会在本地检查 Codex 最低版本。首次初始化不能选择过旧的 Codex;已有配置使用过旧 Codex 时,需要先升级再继续初始化。运行时还会校验实际启动的 App Server 版本,版本过低会提示升级,不再回退到旧版全量历史协议。请执行 `codex update`(或 `npm install -g @openai/codex@latest`),然后安全重启 Agent Bot。
|
|
66
|
+
|
|
64
67
|
在交互式终端中,初始化会通过分步向导完成 Agent 选择、飞书机器人创建和权限配置。常规的一键授权完成后,向导才会询问群消息响应方式;只有选择“接收所有群消息”时,最后才会进入需要手动发布应用版本的额外权限步骤。
|
|
65
68
|
|
|
66
69
|
1. **创建机器人。** 创建带有标准基础消息配置的飞书应用,并保存 App ID、App Secret 和授权用户。该步骤不能跳过,否则 Agent Bot 无法连接飞书。创建时已经提供的权限不再在下方重复列出。
|
|
@@ -230,8 +233,8 @@ agentbot task dismiss [任务] --yes
|
|
|
230
233
|
| `/dismiss` | 确认后归档当前任务并解散群聊 |
|
|
231
234
|
| `/switch [任务]` | 切换任务,或返回上一个任务 |
|
|
232
235
|
| `/fork [任务]` | 创建任务分支 |
|
|
233
|
-
| `/
|
|
234
|
-
| `/status [任务]` |
|
|
236
|
+
| `/turn [Turn ID 或序号]` | 浏览历史轮次或查看指定轮次的运行信息 |
|
|
237
|
+
| `/status [任务]` | 查看任务状态、轮次和磁盘占用 |
|
|
235
238
|
| `/title <标题>` | 修改当前任务标题 |
|
|
236
239
|
| `/stop` | 停止当前执行 |
|
|
237
240
|
| `/queue <prompt>` | 在当前轮次结束后执行 Prompt |
|
|
@@ -253,13 +256,19 @@ agentbot task dismiss [任务] --yes
|
|
|
253
256
|
|
|
254
257
|
`/release` 会发送当前任务所属 Agent 共享 App Server 的释放卡片,以便在 Codex Desktop 中打开这些任务。卡片会列出并持续刷新阻塞释放的任务名。Agent Bot 不会自动释放:空闲时点击 **Release**,有活动任务时点击 **Release Now** 会中断执行并清除排队 Prompt;**Cancel** 会取消本次释放。释放不会归档或删除任务历史,但会影响该 App Server 已加载的所有任务。
|
|
255
258
|
|
|
259
|
+
Fork 只记录来源任务和分支轮次,不同步完整历史。普通任务和分支任务的 `/turns` 都按需要读取摘要分页,翻页才继续读取较早轮次;分支历史不会越过分支轮次。本地卡片只读取关系索引和当前页 Prompt 摘要,不加载历史工具输出。任务列表只读最近一轮摘要,目录等元数据查询不读轮次;状态与恢复只读最近一轮的完整结果,并复用状态校准结果。活跃检测复用未变化的日志,只增量扫描追加内容。
|
|
260
|
+
|
|
261
|
+
`/turn` 与 `/turns` 等价。不带参数时打开历史卡片;`/turn 3` 使用卡片中从 1 开始、由新到旧的序号(运行中的轮次排在最前),`/turn <Turn ID>` 查看当前任务历史中的指定轮次。查看详情不会 Reset、恢复执行、停止或切换任务。已有 ID 直接读取;缺失历史只按摘要分页查找,到达指定序号或找到 ID 所在页就停止,Fork 查询不会越过分支点。详情展示已保存的 Prompt、状态、耗时、活动和结果,并在已配置时提供 Preview;仅有摘要的外部轮次不会补拉未记录的工具过程。
|
|
262
|
+
|
|
263
|
+
历史轮次图使用固定宽度的分支列,序号单独排布,确保节点和分支连接线对齐,同时不为普通延续线增加空行。
|
|
264
|
+
|
|
256
265
|
在群聊中发送 `/mute` 或 `/mute on` 后,机器人只处理 @ 它的消息;@ 机器人并发送 `/mute off` 可恢复自动响应。该设置对群内所有话题生效。
|
|
257
266
|
|
|
258
267
|
`/new` 和 `/newgroup` 会继承当前 Agent、项目和运行设置。使用 `--dir` 指定其他目录,或使用 `--nodir` 创建无项目目录的任务;`~` 表示用户主目录。
|
|
259
268
|
|
|
260
269
|
`/file` 支持相对路径、绝对路径和以 `~` 开头的用户目录路径;相对路径以当前任务目录为基准。
|
|
261
270
|
|
|
262
|
-
`/fork` 和 `/forkgroup` 会从已完成的工作创建分支,不会中断正在执行的轮次。`/sessions`
|
|
271
|
+
`/fork` 和 `/forkgroup` 会从已完成的工作创建分支,不会中断正在执行的轮次。`/sessions` 用于跨项目、跨 Provider 管理任务,每页最多显示 10 个任务;切换 Provider 不会让任务从列表或搜索结果中消失。项目菜单提供 `New` 和 `NewGroup`。展开任务后会直接显示最后一个用户 Prompt 的前 50 个字符、更新时间以及任务级操作。`/turns` 用于恢复对话上下文,不会回退本地文件。
|
|
263
272
|
|
|
264
273
|
## 本地命令
|
|
265
274
|
|
|
@@ -283,8 +292,18 @@ Agent Bot 将用户相关文件保存在仓库之外:
|
|
|
283
292
|
|
|
284
293
|
回答中引用的本地非图片文件或目录会自动变成只读查看链接,可在浏览器中查看源码、Markdown、日志、PDF、常见媒体文件,或向下浏览目录内容。默认链接只在运行 Agent Bot 的电脑上打开;将 `fileViewer.host` 设为 `0.0.0.0` 后,会按有线、Wi-Fi、其他物理网卡、VPN 的顺序自动选择局域网地址。域名、HTTPS 反向代理或端口映射可通过 `fileViewer.publicBaseUrl` 覆盖自动地址。链接带有当前 Profile 独立的签名。
|
|
285
294
|
|
|
295
|
+
思考卡片底部操作区提供 `Preview` 按钮,可在浏览器中查看本轮已保存的执行时间线,采用紧凑布局并适配手机。连续的原生思考合并到同一个默认折叠的区域。命令以代码样式显示在 Header,输出默认折叠,相同的输出和错误日志只显示一次。工具状态、开始时间和耗时显示在输出行。执行中的 Turn 会自动实时更新,并保留你手动展开或折叠的步骤。点击文件变更列表或工具文件列表中的文件,可在新标签页预览其当前内容;已删除或不可用的文件保留为路径文字。Turn Preview 与本地文件链接共用相同的签名、访问地址和网络范围。
|
|
296
|
+
|
|
297
|
+
Turn Preview 顶部用点分隔各项信息,保留“耗时”标签,Token 数量使用 K、M、B 单位简写,窄屏下自动换行。Commentary 正文加粗显示。工具命令和输出保留换行与缩进,长行在工具块内横向滚动,不自动折行。
|
|
298
|
+
|
|
299
|
+
HTML 文件(`.html`、`.htm`)默认以预览模式打开,并支持切换代码、行号定位和实时更新。自包含 HTML 的内联样式、内联脚本和嵌入媒体可在隔离框架内运行;不开放外部资源、相对路径本地资源、网络请求、表单提交及对外层查看页的访问。预览会渲染完整文档,仅代码视图限制为开头 2 MiB。
|
|
300
|
+
|
|
286
301
|
Provider、模型、思考强度和权限设置会作用于当前任务,同时保存到对应 Agent 的 `defaults` 中。以后创建没有同 Agent 设置可继承的新任务时,会使用这些默认值;每个已配置 Agent 分别保存自己的设置。
|
|
287
302
|
|
|
303
|
+
运行设置卡片末尾以 Markdown 引用块显示当前选项页的一句重点提示,标明作用范围和生效时机。Agent 只改变本聊天或话题中新任务的默认 Agent,不迁移当前任务;模型、思考强度和权限从下一轮生效。Agent 和 Provider 选项只显示标识,去掉重复的展示名称,保留当前与默认状态标记。
|
|
304
|
+
|
|
305
|
+
切换 Provider 要求任务处于空闲状态;任务执行中请等待完成,或停止任务后再切换。对于自定义 Provider,Agent Bot 会在接口可用时读取其 OpenAI 兼容 `/models` 接口,并只展示该 Provider 返回的模型。切换时优先保留目标 Provider 也支持的原模型;否则选择目标 Provider 的默认模型,没有默认模型时选择返回列表中的第一个模型。未提供模型列表接口的 Provider 仍可使用:Agent Bot 会把当前或已配置模型作为唯一候选交给 Codex 应用。Agent Bot 只卸载选中的空闲任务,再使用解析出的 Provider 和模型恢复,校验两者后才保存设置并提示成功。确认由当前实例新建的空任务可以重建底层线程,但保留本地任务标识、标题和目录;Fork 或恢复的任务不会仅因尚未发送新消息而被当作空任务。切换失败时保留原设置并尝试恢复远端;如果恢复也失败,将阻止后续执行,直到重新切换 Provider 成功。
|
|
306
|
+
|
|
288
307
|
`feishu.groupNameFormat` 可分别设置 Project 与 Projectless 新群的名称模板,支持系统、Agent、项目、任务名和日期变量。完整格式说明见[技术参考](docs/technical-reference.zh.md#配置模型)。
|
|
289
308
|
|
|
290
309
|
Agent 进程会继承普通父进程变量及其显式配置的 `agents.<name>.env`。启动 Agent 前,Agent Bot 会移除继承的 `FEISHU_*` 凭据和内部 `AGENT_BOT_*` 状态,再仅提供带命名空间的非敏感 Profile 与 Lark 身份上下文;`FEISHU_APP_SECRET` 永远不会传入 Agent 进程。
|
|
@@ -293,7 +312,7 @@ Agent 进程会继承普通父进程变量及其显式配置的 `agents.<name>.e
|
|
|
293
312
|
|
|
294
313
|
Agent Bot 会响应机器人所在群内拥有者发送的普通消息。将 `feishu.respondToAllGroupMessages` 设为 `false` 后,还会要求拥有者在群消息中 @ 当前机器人;私聊不受这一项影响。只有开启该配置时,初始化才会申请需要手动发布的“接收所有群消息”权限。从 `false` 改为 `true` 后,需要重新运行 `agentbot init` 并完成最后的权限步骤。
|
|
295
314
|
|
|
296
|
-
思考卡片默认使用分组布局:辅助 Commentary 和用户追加消息保持直接显示,每个执行组只显示最新一段原生思考,点击后可展开完整的工具命令和结果。显示命令时会省略常见的 PowerShell、zsh、bash 和 sh
|
|
315
|
+
思考卡片默认使用分组布局:辅助 Commentary 和用户追加消息保持直接显示,每个执行组只显示最新一段原生思考,点击后可展开完整的工具命令和结果。显示命令时会省略常见的 PowerShell、zsh、bash 和 sh 启动包装前缀。失败工具仍会在自己的工具面板中标记,但不会让整个执行组显示失败图标或红色边框。执行组默认折叠,并使用稳定的组件标识,使用户在飞书中手动打开的面板在卡片更新后继续保持展开。Codex 压缩上下文时,卡片内部会把实时压缩状态显示为一条进度活动;协议提供数据时,还会显示耗时、压缩前后的上下文 token 数、已执行轮次和 rollout 磁盘占用。长任务会根据完整渲染后的卡片内容大小翻页,不再使用固定的消息数或工具数。将 `feishu.thinkingCardLayout` 设为 `timeline` 可临时恢复原版布局。
|
|
297
316
|
|
|
298
317
|
## 常见问题
|
|
299
318
|
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
|
+
import { codexVersionIssue, MINIMUM_CODEX_VERSION } from "../codex/CodexVersion.js";
|
|
3
|
+
import { compareSemanticVersions } from "../utils/semanticVersion.js";
|
|
4
|
+
export { compareSemanticVersions } from "../utils/semanticVersion.js";
|
|
2
5
|
const CODEX_PACKAGE = "@openai/codex";
|
|
3
6
|
const TRAEX_CHANNEL = "alpha";
|
|
4
7
|
const TRAEX_INSTALL_BASE_URL = "https://code.byted.org/api/tos-proxy/download";
|
|
@@ -37,6 +40,14 @@ async function inspectCodex(platform, env, run) {
|
|
|
37
40
|
const installedVersion = commandVersion(installed);
|
|
38
41
|
if (!installedVersion)
|
|
39
42
|
return missingInspection("codex", "Codex", platform, env);
|
|
43
|
+
const compatibilityIssue = codexVersionIssue(installedVersion);
|
|
44
|
+
if (compatibilityIssue) {
|
|
45
|
+
return {
|
|
46
|
+
id: "codex", name: "Codex", state: "outdated", installedVersion,
|
|
47
|
+
minimumVersion: MINIMUM_CODEX_VERSION, compatibilityIssue,
|
|
48
|
+
action: maintenanceAction("codex", "upgrade", platform, env),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
40
51
|
const latest = await run(capturedCommand("npm", ["view", CODEX_PACKAGE, "version", "--json"], platform, env, 15_000));
|
|
41
52
|
const latestVersion = npmVersion(latest);
|
|
42
53
|
if (!latestVersion) {
|
|
@@ -168,53 +179,6 @@ function commandOutput(result) {
|
|
|
168
179
|
function versionInText(value) {
|
|
169
180
|
return /\b(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)\b/u.exec(value)?.[1];
|
|
170
181
|
}
|
|
171
|
-
export function compareSemanticVersions(left, right) {
|
|
172
|
-
const leftVersion = parseSemanticVersion(left);
|
|
173
|
-
const rightVersion = parseSemanticVersion(right);
|
|
174
|
-
if (!leftVersion || !rightVersion)
|
|
175
|
-
return 0;
|
|
176
|
-
for (let index = 0; index < 3; index += 1) {
|
|
177
|
-
const difference = leftVersion.core[index] - rightVersion.core[index];
|
|
178
|
-
if (difference !== 0)
|
|
179
|
-
return difference;
|
|
180
|
-
}
|
|
181
|
-
if (!leftVersion.prerelease && !rightVersion.prerelease)
|
|
182
|
-
return 0;
|
|
183
|
-
if (!leftVersion.prerelease)
|
|
184
|
-
return 1;
|
|
185
|
-
if (!rightVersion.prerelease)
|
|
186
|
-
return -1;
|
|
187
|
-
const length = Math.max(leftVersion.prerelease.length, rightVersion.prerelease.length);
|
|
188
|
-
for (let index = 0; index < length; index += 1) {
|
|
189
|
-
const leftPart = leftVersion.prerelease[index];
|
|
190
|
-
const rightPart = rightVersion.prerelease[index];
|
|
191
|
-
if (leftPart === undefined)
|
|
192
|
-
return -1;
|
|
193
|
-
if (rightPart === undefined)
|
|
194
|
-
return 1;
|
|
195
|
-
if (leftPart === rightPart)
|
|
196
|
-
continue;
|
|
197
|
-
const leftNumber = /^\d+$/u.test(leftPart) ? Number(leftPart) : undefined;
|
|
198
|
-
const rightNumber = /^\d+$/u.test(rightPart) ? Number(rightPart) : undefined;
|
|
199
|
-
if (leftNumber !== undefined && rightNumber !== undefined)
|
|
200
|
-
return leftNumber - rightNumber;
|
|
201
|
-
if (leftNumber !== undefined)
|
|
202
|
-
return -1;
|
|
203
|
-
if (rightNumber !== undefined)
|
|
204
|
-
return 1;
|
|
205
|
-
return leftPart.localeCompare(rightPart);
|
|
206
|
-
}
|
|
207
|
-
return 0;
|
|
208
|
-
}
|
|
209
|
-
function parseSemanticVersion(value) {
|
|
210
|
-
const match = /^(\d+)\.(\d+)\.(\d+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/u.exec(value);
|
|
211
|
-
if (!match)
|
|
212
|
-
return undefined;
|
|
213
|
-
return {
|
|
214
|
-
core: [Number(match[1]), Number(match[2]), Number(match[3])],
|
|
215
|
-
...(match[4] ? { prerelease: match[4].split(".") } : {}),
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
182
|
export function runAgentCommand(command) {
|
|
219
183
|
return new Promise((resolve) => {
|
|
220
184
|
const invocation = resolveInvocation(command);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPrerequisites.js","sourceRoot":"","sources":["../../src/cli/AgentPrerequisites.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AgentPrerequisites.js","sourceRoot":"","sources":["../../src/cli/AgentPrerequisites.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ export function selectableDefaultAgents(configured, inspections) {
|
|
|
2
2
|
const supported = new Map(inspections.map((inspection) => [inspection.id, inspection]));
|
|
3
3
|
return configured.flatMap((agent) => {
|
|
4
4
|
const inspection = supported.get(agent.name);
|
|
5
|
-
if (!inspection?.installedVersion)
|
|
5
|
+
if (!inspection?.installedVersion || inspection.compatibilityIssue)
|
|
6
6
|
return [];
|
|
7
7
|
return [{
|
|
8
8
|
...agent,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DefaultAgentSelection.js","sourceRoot":"","sources":["../../src/cli/DefaultAgentSelection.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,uBAAuB,CACrC,UAAmC,EACnC,WAAuC;IAEvC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAClC,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAsC,CAAC,CAAC;QAC/E,IAAI,CAAC,UAAU,EAAE,gBAAgB;YAAE,OAAO,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"DefaultAgentSelection.js","sourceRoot":"","sources":["../../src/cli/DefaultAgentSelection.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -176,6 +176,10 @@ async function initCommand(input, configPath) {
|
|
|
176
176
|
const defaultAgent = await configureAgentsAndDefault(paths.config.path, inspectedAgents, options.json, shouldConfigureAgentsDuringInitialization(paths.config.status), ui);
|
|
177
177
|
const configuredAgents = readConfiguredAgentSelection(paths.config.path).agents.map((agent) => agent.name);
|
|
178
178
|
const configuredAgentNames = new Set(configuredAgents);
|
|
179
|
+
for (const agent of inspectedAgents) {
|
|
180
|
+
if (configuredAgentNames.has(agent.id) && agent.compatibilityIssue)
|
|
181
|
+
throw new Error(agent.compatibilityIssue);
|
|
182
|
+
}
|
|
179
183
|
const agents = inspectedAgents.map((agent) => ({
|
|
180
184
|
...agent,
|
|
181
185
|
configured: configuredAgentNames.has(agent.id),
|
|
@@ -351,6 +355,9 @@ async function configureAgentsAndDefault(configPath, inspections, json, configur
|
|
|
351
355
|
}
|
|
352
356
|
const choices = selectableDefaultAgents(configured.agents, inspections);
|
|
353
357
|
if (choices.length === 0) {
|
|
358
|
+
const issue = inspections.find((inspection) => inspection.compatibilityIssue)?.compatibilityIssue;
|
|
359
|
+
if (issue)
|
|
360
|
+
throw new Error(issue);
|
|
354
361
|
throw new Error(cliText("No installed supported Agent was detected. Install Codex or TraeX, then run agentbot init again.", "没有检测到已安装且受支持的 Agent。请安装 Codex 或 TraeX,然后重新运行 agentbot init。"));
|
|
355
362
|
}
|
|
356
363
|
let selectedAgents = choices;
|
|
@@ -441,6 +448,10 @@ async function configureGroupMessageResponse(configPath, json, configure, ui) {
|
|
|
441
448
|
return { mode, status: "selected" };
|
|
442
449
|
}
|
|
443
450
|
function printInteractiveAgentInspection(inspection, ui) {
|
|
451
|
+
if (inspection.compatibilityIssue) {
|
|
452
|
+
ui.warn(inspection.compatibilityIssue);
|
|
453
|
+
return;
|
|
454
|
+
}
|
|
444
455
|
if (inspection.state === "missing") {
|
|
445
456
|
ui.info(cliText(`${inspection.name}: not installed`, `${inspection.name}:未安装`));
|
|
446
457
|
return;
|
|
@@ -456,6 +467,10 @@ function printInteractiveAgentInspection(inspection, ui) {
|
|
|
456
467
|
ui.success(cliText(`${inspection.name}: ${inspection.installedVersion} (up to date)`, `${inspection.name}:${inspection.installedVersion}(已是最新)`));
|
|
457
468
|
}
|
|
458
469
|
function printAgentInspection(inspection, output) {
|
|
470
|
+
if (inspection.compatibilityIssue) {
|
|
471
|
+
output.write(` ${inspection.compatibilityIssue}\n`);
|
|
472
|
+
return;
|
|
473
|
+
}
|
|
459
474
|
if (inspection.state === "missing") {
|
|
460
475
|
output.write(cliText(` ${inspection.name}: not installed\n`, ` ${inspection.name}:未安装\n`));
|
|
461
476
|
return;
|