Chat
The chat page is OpenJellyfish's core interface for streaming conversations with the AI Agent.
4.1 Conversation List
- Located in the sidebar, shows all historical conversations
- Click + button to create a new conversation
- Click a conversation entry to switch to it
- Hover shows delete button
- Switching back to a conversation still streaming in background auto-restores display
4.2 Message Input
Bottom input area contains:
- Text input: multi-line input (Shift+Enter for newline, Enter to send)
- Capability switches: click to expand capability selection bar
- 🌐 Web: enable web search and fetching (always enabled for Admin by default)
- 🎨 Image: enable AI image generation
- 🔊 Voice: enable TTS voice generation
- 🎬 Video: enable AI video generation
- Plan Mode: enable planning mode, Agent plans first then executes (requires approval)
- Model selector: dropdown to select AI model for current conversation
- Image attachments: three ways to add images
- 📎 Click attachment button to select file
- Ctrl+V to paste clipboard image
- Drag image to input area
- Voice input: click microphone button to start recording → click again to stop → auto-transcribed into input field; press Esc during recording to cancel
- Workspace lock: toolbar lock icon — choose Auto / Manual paths / Agent self-declare (see §4.10); chat header also opens the lock status panel
- Send/Stop button:
- Normal state shows send button (paper plane icon)
- During streaming shows red Stop button — click to abort current reply
4.3 Message Queue (Query Queue)
While the Agent is streaming a reply, you can still type and send — messages enter the queue for the current conversation (shown above the input area) instead of being dropped.
| Behavior | Description |
|---|---|
| Default queue | New messages FIFO; after current turn done, the next item sends automatically |
| ↵ Run now | Return key button on a queued row: abort current stream (partial reply kept), continue on the same SSE connection with that message |
| Edit / reorder | Queued items are editable and can move up/down; queue is limited during HITL approval (queue-only mode) |
Queue applies only to the Admin chat page, not the Service consumer page.
4.4 Streaming Message Display
AI replies display in streaming mode, containing the following block types:
Text Blocks
- Markdown rendered with code highlighting (17 common languages)
- Code blocks use JetBrains Mono font
- Media embedding: auto-recognizes
<<FILE:/generated/xxx.png>>tags, displays images/audio/video/PDF/HTML
Thinking Blocks
- Shows AI's reasoning process (Thinking models only)
- Collapsible/expandable (click header bar)
- Shows three-dot bounce animation during streaming
- Identified by Brain icon
Tool Calls (Tool Indicator)
- Shows tool name and argument preview
- Shows spinning loader while executing
- Shows green checkmark when done
- Results are expandable
- Identified by Wrench icon
Subagent Cards
- Shows subagent task description
- Internal tool calls displayed in chronological order (text/tool/thinking timeline)
- Streams subagent replies in real time
- Identified by Robot icon
Approval Cards (HITL)
- File operation approval: git-style hunk diff for
edit_file; approve or reject - Plan approval: shows Agent's execution plan, can edit before approving or rejecting
- Approval buttons use Check (approve) and X (reject) icons
Streaming File Preview
write_file/edit_fileshow live code preview while LLM streams tool arguments (typewriter effect)- See pending content before HITL approval
Scheduled Task Result Card
- Scheduled task results use a dedicated blue card (distinct from tool calls)
- Task metadata (name, status, output snippet) is collapsible
4.5 History Messages
- User messages appear on the right (pink-purple gradient bubble)
- AI messages appear on the left (with jellyfish logo avatar)
- History messages replay in interleaved order (thinking → text → tool → text → subagent → text…)
- User attachments displayed as thumbnail gallery, click to enlarge
4.6 Smart Scroll
- New messages auto-scroll to bottom
- When user scrolls up to browse history, auto-scroll pauses
- Returns to bottom, auto-scroll resumes
4.7 Stream Recovery
- On backend crash / network interruption, already-generated partial content auto-persists (marked ⚠️ [Connection interrupted — saved generated content])
- Switching back to a conversation still streaming in background shows yellow banner with "Abort & Save" and "Refresh Status" buttons
- Cannot send new messages while streaming (prevents conflicts); use §4.3 queue to append follow-ups mid-stream
4.8 YOLO Mode (Auto-approve)
Enable YOLO mode in Settings → General to auto-approve HITL prompts (write_file / edit_file / propose_plan, etc.) in Admin chat.
- Admin only; Service consumer pages have no HITL flow
- State stored in browser
localStorageper device - After auto-approvals in a conversation, a minimal orange
yolotag appears at the bottom of the input area
4.9 @ File References
Type @ in the input to open a file picker (fuzzy search over docs/, scripts/, generated/, etc.). Selection inserts a [[FILE:/path]] chip.
- On send, backend expands to
<<FILE:/path>>for rendering and file panel navigation - Click file links in chat to reveal the path in the right file panel
4.10 Workspace Lock
Prevents multiple Agent processes (chat, scheduled tasks, subagents) from writing the same directories. Toolbar lock icon modes:
| Mode | Behavior |
|---|---|
| Auto | Prefer exclusive whole workspace; on conflict, lock idle top-level dirs |
| Manual | Lock only paths you select (files or directories) |
| Agent | No pre-lock; Agent calls acquire_workspace at runtime |
Chat header Lock button shows active processes, locked paths, and manual release (does not abort the Agent).
4.11 Left Query Navigation
Floating short bars on the left: one bar per user message. Scroll highlights the visible query; click to jump (works with virtualized long sessions).
4.12 Codex / Cursor chat (optional)
Purpose: use an existing Codex / Cursor account to read materials, edit files, research and produce outputs, then retain useful methods in documents. DeepAgents remains the default; existing chats do not automatically switch engines.
Connect for the first time
- The host operator installs the chosen CLI in a macOS / Linux backend, enables Runtime and runs one API worker. See 11.10 for environment settings. Docker needs the CLI inside the application container.
- Open
/superadmin. Use “View host key” in the launcher,python3 launcher.py --superadmin-keyfor source deployments, ordocker compose exec openjellyfish python launcher.py --superadmin-keyfor Docker. This is a host management credential, not an ordinary password or Service key. - Create a Codex or Cursor connection and complete supplier sign-in. Codex can use device-code login on a remote host. Probe available models and grant the required connection and models to an existing admin account.
- Return to the admin workspace, start a new chat and choose an authorized Codex / Cursor model in the composer. If no connection appears, ask the host operator to check Runtime, the CLI path, login and model grants.
Everyday work
- Put materials in your document workspace and specify the task and references. For example: “Review this announcement against our brand rules, explain each suggested edit and record open questions in the progress document.”
- The first message binds the engine and connection. Later turns may choose authorized models within that connection; changing engines or accounts requires a new chat and does not migrate native conversation context automatically.
- Inspect continuous tool progress, expand inputs/results, preview files and edit diffs, and navigate long chats from the question rail. Inline files retain their position after artifacts are archived.
- Write confirmed improvements back to rules, examples and progress, then validate them on another task. A Service needs an explicitly selected Prompt version and resource scope; admin memory and full permissions are not copied automatically.
- Streaming, attachments, stop and artifact preview/download are supported. Closing an admin browser does not cancel its run; reopen the chat to recover output and pending approvals. Use Stop to cancel deliberately.
Approvals, quota and scope
YOLO in General settings controls automatic approval for each admin turn. Turning it off restores manual approval on the next turn. Account authorization, workspace scope and supplier-supported decisions still apply; YOLO does not widen Service permissions.
One connection shares quota and runs one turn at a time. Queueing is not necessarily a stalled task. Revoked grants, expired login or exhausted quota fail explicitly without silently switching accounts or paid APIs.
Internal Service distribution is supported in v1.3.1; see 6.6.7. Admin personal WeChat keeps its existing engine path. Plan-backed Services currently exclude scheduled tasks, voice and video. Native search/image generation depends on client, model, account and enabled capabilities.