跳到主要内容

LOOP / 更新日志

Loop 0.2.0

已正式发布的功能、改进与修复。

← 全部更新日志
正式发布

Complete prompt execution, editable queues, steering and context management.

Breaking Changes

  • Agent workspace API: replace step() and the runAgentLoop singleTurn argument with complete prompt() / continue() execution and steering/follow-up callbacks. Use continue() to resume existing user history; move host scheduling into the loop boundary contracts. See Agent loop.

  • coding-agent and Web protocol: remove the obsolete execution-section timing APIs (SessionRunTiming, run_timing, state.runTimings, SessionManager.getRunTimings()) and Web draftPhase state. Update SessionManager.commit(messages, runTimings?, runtimeContexts?) calls to commit(messages, runtimeContexts?, promptTimings?) and remove timing/phase subscriptions. Existing version-2 sessions still open; old timing metadata is ignored and omitted on later saves. See session storage.

Added

  • coding-agent and Web: add FIFO message queues with editing, drag/keyboard reordering, deletion and safe-boundary steering after complete tool batches. Show compact single-line queue rows in a panel joined to the composer, with Steer, a delete icon and editing inside the more-options menu. Add dotted hover/focus drag grips, full-row drag previews, dimmed placeholders and animated neighbor movement with midpoint insertion, edge scrolling and cancellation on queue changes. Hold messages out of scheduling while editing and let later messages run first. Edit queued messages in the main composer with complete text, attachments and Skills, hiding the corresponding row while reserving its position. Use the ordinary input surface without an editing banner or Cancel control, and show only a black Send arrow while editing, including during generation or pause. Sending retains that position unless a later message was dispatched during editing, in which case it appends the edited item to the queue. Successful sends restore the prior composer draft; SDK cancellation retains its original-position contract. Failed saves keep the edit and scheduling hold. Keep the composer editable during generation. With existing queued inputs and a new draft containing text or attachments, show only Send; restore Stop after the draft is cleared or accepted. Stop retains queued inputs and replaces the composer Send arrow with a black Resume button containing a white triangle; Resume continues from completed history without duplicating user input, clearing drafts or replaying finished tools. Retain visible streamed text on Stop with a per-attempt stopped duration and divider, and append separate response segments on Resume without replacing prior output or timing. Save interrupted text as aborted history excluded from model replay; never execute unfinished streamed tools. Queue and pause state remain in memory and survive browser reconnection to a live server. Agent consumes steering and follow-ups inside a complete prompt/continue loop with one cancellation signal; coding-agent retains editable queue storage and refreshes Skills, system context and tools per dispatched input. Save completed model/tool batches before dispatching subsequent inputs and retain queue items when preparation or saving fails. See message queue.

  • coding-agent, CLI and Web: add manual and automatic context compaction without replacing original history. Before every main request, including tool continuations, summarize older complete turns at ninety percent of effective input capacity; retain the newest complete turn, remeasure the candidate and allow one bounded emergency pass when necessary. Atomically save incremental summaries, boundaries, Skill snapshots, system checkpoints and native summary usage, supporting cancellation, restart and pending-save recovery without repeating tools. Web and CLI expose /compact; Web provides a composer command menu with an estimated context/window percentage and matching progress ring, planner-backed availability, transient no-work feedback, conversation status and a persisted completion marker. Preserve drafts on failure, Stop cancellation, current prompt timing and locally refreshed context estimates. See compaction.

  • Agent and coding-agent: track model-input origins through normalization, including filtered failures and tool-result repairs. Map history indexes, runtime anchors, selected Skill revisions and compaction summaries through isolated AgentSession.modelInputProjection metadata. Preserve complete history and pairing while expanding Skills only in model input and retaining legacy snapshots. See model input projection.

  • coding-agent, SDK and Web: expose ready MCP tools through isolated codemode scripts instead of sending every schema in initial model declarations. Discover names and selected schemas on demand, execute nested calls sequentially through existing argument validation and approvals, and retain only emitted output with compact call statuses. Bound execution time, call count, heap and output; cancellation stops pending work and failures preserve partial output without retrying completed operations. Keep ordinary tools directly available. See Codemode.

  • coding-agent, CLI and Web UI: discover personal and project skills asynchronously, expose a budgeted metadata catalog and load full instructions on demand through load_skill or explicit selection. Add Settings → Integrations → Skills with GitHub/local/create previews, transactional installation, enable switches, update previews and confirmed managed uninstall; preserve failed inputs and scroll with cancellable stage overlays. Add a keyboard-operated $ skill picker, exact-source draft selections and durable loaded-instruction revisions in chat history. Render explicitly selected skills as blue icons and names aligned with the body text baseline and typography inside sent user message bubbles using saved metadata, preserving labels after reopening history and restoring exact skill selections when copied user messages are pasted into Loop, with readable plain-text clipboard fallback; remove the separate Loaded skill disclosure below user messages. Release unchanged submitted Skill tokens and composer text on delivery confirmation, preserving the next draft during generation, failure or cancellation. Keep composer skill tokens as static labels without click actions; Backspace at the text start removes the last selection. Use a hand cursor on skill labels and show theme-aware description tooltips on hover or keyboard focus, retaining descriptions in new loaded snapshots and resolving older labels by exact source on demand. Display the picker above the composer with compact single-line rows: an outline skill icon, name, truncated inline description and right-aligned Personal/Project source; keep full descriptions and duplicate-name source paths in tooltips. Use plain-text empty/search states, concise generic guidance, a loading spinner and an Escape hint; distinguish unavailable skills and discovery errors. References and scripts follow existing tool permissions; installation does not execute scripts. See skills.

  • Web UI and coding-agent: add background MCP discovery and tool calls over STDIO and Streamable HTTP, with persisted global connection configuration in a private file and write-only environment/header values in management views. Add Settings → Integrations → MCPs with searchable servers, enable switches, editing, deletion, retry, transport drafts, and compact inline forms. Overlay Save with connection status, preserve scroll and failed inputs, and return to the list on success. Allow two minutes for STDIO setup while keeping startup, enabling, Retry and HTTP discovery deadlines short. Refresh changed catalogs on the existing connection and snapshot ready tools per prompt without blocking startup or chat. MCP calls follow live session permissions: Full access allows automatically; restricted presets require approval or an exact memory-only tool/session grant. Configuration changes, reconnects, disablement and catalog refresh revoke stale calls and grants; display-name-only edits preserve grants. Submit only connection fields, ignore obsolete server/tool permission fields, and preserve readable server/tool labels in existing direct-call results. Server declarations never bypass approval; calls never automatically retry. See MCP integration.

  • coding-agent, CLI and Web: check the complete context budget before every main model request, including tool continuations and text attachments, reserve response capacity, and reject overflow with full history preserved. SDK sessions accept an optional per-request maxTokens; include native fixed-thinking adjustments without double counting, preserve desired reserves before context-based clamping, and retain the model ceiling for unknown or uncapped protocols. Inspect final payload caps before sending, reject invalid or unreserved limits, and expose an optional requestOutputTokenLimit separately from native usage. Summary checks reserve their own bounded output instead of the main model ceiling. Expose ContextBudgetExceededError, context_budget events and state.contextBudget; retain native provider usage in saved assistant messages. Web reports accepted over-budget attachment runs as settled errors and keeps request deduplication intact.

  • Web UI: show three dots waving in sequence in the Jump to latest button during connected generation. Show the down arrow on hover or keyboard focus and restore the animation when interaction ends. Restore the down arrow after generation or disconnection, preserve click-to-jump behavior, and use static dots for reduced motion.

  • coding-agent and Web UI: record independent prompt duration metadata and prompt_timing events. Show Working for below the user message during generation, then Worked for above the final response with a thin divider. Display seconds below one minute and minutes with remaining seconds thereafter, such as 2m 5s. Preserve completed durations across refresh, reconnect, reopening and save retries; stop on errors/cancellation and exclude saving or background title work.

  • Web UI: show a project-only capsule in an inset, rounded gray strip attached to the new-session composer, with a rounded folder outline, a neutral hover/focus capsule and centered 14px white cross in a compact 16px gray circular removal button, searchable registered-project selection and Add folder through Create project. Focus search when opening the menu, filter names without case sensitivity, and keep search and Add folder visible while the project list scrolls. Allow independent chats without a project; require accessibility for selected projects and preserve unsent input, attachments, model, effort and permissions when switching draft projects.

Changed

  • Web UI: replace the bottom Settings button with a text-only More entry opening an upward menu containing Settings and Feedback, without a logo, chevron or sign-in entry. Settings opens the existing panel; Feedback uses only a leading paper-plane icon sized to balance with the Settings icon and opens GitHub’s new-issue page with a pre-filled bug report. Add the matching repository issue template with reproduction steps, expected/actual behavior and environment fields.

  • Agent, coding-agent and Web: preserve tool argument validation and display metadata compatibility, and keep system messages out of the visible conversation. Existing session storage remains unchanged.

  • coding-agent and Web: place current permission guidance in <permissions> within the system prompt, save initial system sections and subsequent changed-section checkpoints, and expand selected Skill instructions as <skill> blocks in anchored model user messages. Preserve original user input, images, revisions and permission enforcement; replay legacy runtime snapshots. Optional version-2 header metadata records prompt changes and compaction checkpoints without native system transcript messages or a storage-version change.

  • coding-agent, CLI and Web: build system instructions from separate sections with XML labels for rules, cwd, project context, tool names, tool usage, MCP servers and Skills. Keep full direct-call declarations in the request's tools field, supply a compact canonical name array in <tools> and keep usage rules in <tool_usage>, without duplicating descriptions or schemas. Introduce ready MCP services separately in <mcp_servers> with codemode access and bounded initialization instructions, and put a budgeted Skill catalog with handles, names and scope in <skills> instead of new runtime messages. Add McpManager.snapshot() to capture service metadata and callable tools together without waiting for discovery. Refresh rules and catalogs on each user prompt and reuse them during tool continuations; discover MCP schemas on demand and load Skill bodies on demand. Preserve project instruction order and source paths, custom base replacement, permissions and existing stored runtime snapshots; escape wrapped text and paths and count rules, catalogs and declarations in the context budget. See context files.

  • Web UI: replace the Plugins section and its internal tabs with separate MCPs and Skills sections under Integrations, with their own headings and search, a plug outline for MCP navigation, using Manage Skills and Search Skills capitalization; replace the skill project dropdown with keyboard-operated Personal and named project tabs plus an icon Refresh control. Fit project tabs to the available width, collect overflow in a compact More projects dropdown behind an ellipsis button with keyboard navigation and outside-click dismissal, and promote the selected project when space permits. Add an Installed overview above scope tabs, aggregating unique personal and registered-project sources, showing at most six matching skills with Show more to expand all and Show less to collapse back to six. Search both lists and route overview actions to the source project. Show each scope separately, default installation to the selected scope and identify the target project in the form. Keep scope controls locked during installation and fall back to Personal when the selected project is removed. Align each integration title with its compact 32px search field and Add on the first row, with Manage MCPs/Skills on a separate row below; share search icon, typography and responsive sizing; position Skills Refresh between search and Add with a clearer circular arrow icon, and remove the MCP server-count badge, extra toolbar row and list footer hint. Align list controls, row insets, icon tiles, text hierarchy, blue enable switches and empty states across MCPs and Skills; default MCP and Skills lists to two columns with compact 56px rows, 32px icon tiles, 13px names, 12px secondary text and smaller row actions; use one column on narrow panels and tooltips for truncated names, descriptions and connection status, with source details available on opening a row. Open skill details in a separate modal above the preserved list, with rendered Markdown instructions in a scrollable area, a header enable switch, expandable source/files and fixed uninstall/update/chat actions. Keep failed operations in the modal and restore focus on close without closing Settings. Share Add menu styling while keeping actions within their section: MCPs offers only Add MCP server; Skills offers creation, GitHub installation and local folders. Use 16px outline icons, compact 32px rows, 12px labels and a narrower dropdown opening the selected form in place. Use a black Add button with white text in Light.

  • Web UI: keep the Full access composer permission trigger transparent like Read only and Workspace write, retaining its orange icon and text and the shared hover/focus behavior. Opening the permission menu by click keeps focus on the trigger instead of highlighting Read only; keyboard navigation remains available. Replace blue focus outlines on the permission trigger and Full access confirmation buttons with subtle background feedback while preserving modal focus containment and restoration.

  • Web UI: reduce the conversation header's minimum height from 64px to 48px and vertical padding from 10px to 5px on desktop and mobile.

  • coding-agent and Web UI: require a concise model-authored text plan before every tool batch in the same response, including continued work, retries and verification after earlier results; each plan covers its own batch. Display plans, collapsed tool batches and final replies in history order without relocating streamed text. During generation and execution, each batch shows its latest generated or currently running call with a soft light band sweeping left to right over stationary gray text in both themes, pausing briefly between passes; once all calls finish, show a localized completion summary with explicit failure counts. Expand batches to inspect calls and their parameters/results, preserving open disclosures across updates and reconnects. Batch summary and tool row labels use the primary text color on hover/focus and reveal a right-pointing chevron, which points down while the disclosure is open. Missing plans are not synthesized, and conversation messages are unchanged.

  • Web UI: replace the Projects add flow with a Create project dialog, an optional custom name, an Add button that opens the system folder picker, and a removable source-folder row. Default blank names to the folder name and preserve inputs after failed creation. Match existing dialogs with a compact 480px width, 18px title and 13px controls.

Fixed

  • coding-agent and Web: keep saved history readable when its provider has been removed. Omit idle context estimates for unavailable-model placeholders until a configured model is selected.

  • Web UI: keep the latest sent user message aligned at the top through tool execution and approval/composer resizing, recovering browser-clamped scroll positions while respecting manual scrolling and Jump to latest.

  • Web development: use a separate tsx watch process to restart the backend when its loaded source files change without Node watch mode, preventing dependency-tracking messages from breaking the Codemode worker protocol. Keep frontend Vite HMR and exclude frontend source from backend restarts.

  • Web UI: mount tool parameters and results only while both their row and containing batch are expanded, and release detail DOM on collapse. Preserve expanded rows and live execution status across streaming updates and reconnects without truncating saved output.

  • coding-agent, CLI and Web: keep quotes literal in system-prompt section bodies, including the canonical tool-name array and usage rules, while escaping XML delimiters and source-path attribute quotes.

  • Agent and coding-agent: use literal current tools[].name values for capability reports and direct calls without inventing or stripping namespace prefixes, explicitly identify an unregistered parallel wrapper despite stale assistant claims, and describe sequential execution. Availability replies are instructed to omit unavailable tools; saved messages and response text remain unchanged. Unknown calls return bounded current-tool guidance without dispatching nested arguments; provider request tests cover exact declarations across Chat Completions, Responses and Messages.

  • Web UI: keep Settings at a consistent width and background across all sections, including MCPs, Skills and configuration forms, with shared compact navigation on narrow screens.

  • Web UI: remove stacked message and tool-group margins between consecutive tool batches in the flat conversation, keeping a compact gap without reserving space for hidden thinking.

  • Web UI: keep the Create project dialog and source-folder area at stable dimensions during folder selection, removal, saving and errors, with overflowing content scrolling inside the dialog.

Removed

  • Web UI: remove resolved approval outcome labels above the chat input, including Allowed once; show approval cards only while requests are pending.

  • Web UI: remove the reasoning disclosure, nested execution timeline, elapsed-work header and internal reasoning scroll area, including their draft-phase tracking, timing events, persistence and shared status logic. Hide thinking in the conversation while retaining native events, stored messages and model replay; reopened history shows phase updates and collapsed tool completion summaries.

  • Web UI: remove typed project paths, browser directory navigation, picker capability discovery, and directory listing endpoints. Folder selection uses the local macOS system picker; unavailable pickers show a retryable error.