Deep Copilot — AI coding agent embedded in VS Code. Powered by DeepSeek V4, with file editing, terminal, search, and plan/todos. Standalone, no backend required.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
基于 DeepSeek API 的 VS Code 对话式 AI 编程助手扩展 A VS Code extension for conversational AI-assisted coding via the DeepSeek API
Deep Copilot 是一个 VS Code 扩展,在侧边栏提供基于大语言模型的对话式编程辅助。它通过 DeepSeek API(兼容 OpenAI 协议)与模型交互,支持文件读写、代码搜索、Shell 命令执行等工具调用,结果以流式方式实时渲染。扩展无运行时 npm 依赖,基于 VS Code Extension API 与 Node.js 内置模块实现,无需在宿主机额外部署任何服务。
Deep Copilot is a VS Code extension that provides LLM-based conversational coding assistance through the sidebar. It interacts with models via the DeepSeek API (OpenAI-compatible protocol), supporting tool calls for file read/write, code search, and shell command execution — all streamed in real time. The extension has no runtime npm dependencies and is built on the VS Code Extension API and Node.js built-ins; no additional service deployment is required.
🔑 API Keys Required · 需要配置的 API Key
开始使用前只需准备以下 Key(最少只需第一个):
You only need the following keys to get started — at minimum just the first one:
#
API Key
用途 · Purpose
获取地址 · Get it here
是否必须 · Required
1
DeepSeek API Key
驱动 AI 对话与 Agent 工具调用 · Powers all AI chat & agent tool calls
After installing, click the 🐋 icon in the activity bar to open the Deep Copilot panel
Click the 🔑 button in the bottom-right of the panel → paste your DeepSeek API Key → save
For web search, fill in your Tavily API Key in the same dialog
国内用户:若 api.deepseek.com 连接不稳定,在 🔑 弹窗中将 Base URL 改为 https://api.deepseeki.com。
China users: if api.deepseek.com is slow, set Base URL to https://api.deepseeki.com in the 🔑 dialog.
Smart code-block actions: Run in terminal · Insert · Copy · Fold long blocks
代码块操作:在终端运行 / 插入 / 复制 / 长代码折叠
Bilingual UI + locale-aware fonts: auto follows VS Code locale (zh-cn / en) — Chinese font stack for CJK, Latin font stack for EN
中英双语 UI + 语言感知字体:跟随 VS Code 语言自动切换界面文案与字体(中文环境使用微软雅黑/苹方,英文环境使用 Segoe UI/Inter)
Skills system — define reusable SKILL.md packs in ~/.deepcopilot/skills (or ~/.claude/skills, ~/.copilot/skills); YAML frontmatter for workspace gating, invoke via /skill or the model's skill_invoke tool
项目规则自动发现:自动注入工作区下的主流 AI 规则文件(GitHub Copilot / Cursor / Claude 等),让模型了解项目约定
Context window management(new in 0.41.0) — structure-aware truncation, per-file dedup, rolling summary; /compact [focus] force-compacts, /context opens a token breakdown, /fork [name] branches a new session from any message
Footer context ring(new in 0.41.0) — ring indicator next to the footer ramps green → yellow → orange → red across 60 / 85 / 100% thresholds; click to open the same breakdown as /context
Archive = pure export(updated in 0.41.6) — "Archive" now writes a Markdown snapshot under .deep-copilot/archives/ and leaves the session alone; old soft-hidden sessions are auto-unarchived on first launch
Watchdog turns stay on duty(new in 0.41.6) — when the agent monitors a long-running background job (training, build, dev server) via read_terminal, the turn refuses to end until the job finishes or the 4 h per-turn budget elapses
# 1. Clone the repo · 克隆仓库
git clone https://github.com/ZhouChaunge/DeepCopilot.git
cd DeepCopilot
# 2. Install dependencies · 安装依赖
# (only devDependencies: esbuild + vsce + @types — runtime is pure VS Code API)
# (只有开发依赖;运行时仅用 VS Code API,无运行时 npm 依赖)
npm install
# 3. Build the bundle · 编译为单文件
npm run build
# -> outputs out/extension.js (~105 KB minified)
# -> 产出 out/extension.js(约 105 KB,已压缩)
# 4. Package as VSIX · 打包 VSIX
npm run package
# -> outputs deep-copilot-0.41.6.vsix
# -> 产出 deep-copilot-0.41.6.vsix
# 5. Install locally · 本地安装
code --install-extension deep-copilot-0.41.6.vsix --force
Watch mode · 监听模式(开发期)
npm run watch
# Rebuilds out/extension.js on every src/ change.
# 修改 src/ 任何文件即增量重建 out/extension.js。
# Then: F5 in VS Code (with the repo opened) launches the Extension Development Host.
# 然后在 VS Code 里按 F5 启动“扩展开发宿主”加载本地构建。
🇬🇧 No backend. Everything runs inside the VS Code extension host. The single bundle out/extension.js is approx 94 KB.
🇨🇳 无后端。 全部跑在 VS Code 扩展主机里,单文件构建产物 out/extension.js 仅约94KB。
🇬🇧 Per-session run map.provider._runs: Map<sessionId, Run> lets you switch sessions while a task is running; the run keeps producing events that get buffered and replayed when you return.
🇨🇳 按会话隔离的 run 表。provider._runs 让你在任务跑着时切到别的会话,事件继续缓冲,切回来自动回放。
🇬🇧 Streaming via SSE.src/api/deepseek.js parses data: frames and forwards delta, reasoning, tool_calls, usage to the provider.
🇨🇳 SSE 流式。src/api/deepseek.js 解析 data: 帧,把 delta / reasoning / tool_calls / usage 转发给 provider。
🇬🇧 Auto-compaction. Once estimated tokens exceed compactBudgetTokens, older tool results are dropped before the next round.
🇨🇳 自动压缩。 估算 token 超过 compactBudgetTokens 时,下一轮前丢弃较老的工具结果。
🇬🇧 Approval is enforced server-side (in the extension), not just UI. A model-issued write_file will not execute unless the policy or user explicitly allows it.
🇨🇳 审批在扩展端强制执行(不仅是 UI 层):模型发出的 write_file 必须经策略或用户放行才会真的写盘。
🇨🇳 编译入口:src/extension.js → esbuild → out/extension.js(package.json 中 main 字段指向 out/extension.js)。
🇬🇧 Build entry: src/extension.js → esbuild → out/extension.js (referenced by main in package.json).
💻 Development · 开发
Run the dev host · 启动扩展开发宿主
git clone https://github.com/ZhouChaunge/DeepCopilot.git
cd DeepCopilot
npm install
code .
# Press F5 inside VS Code → Extension Development Host opens
# 在 VS Code 里按 F5 → 弹出扩展开发宿主窗口
Live edit cycle · 改一改试一试
npm run watch # esbuild watch — rebuilds on save · 保存即重建
# In the dev host: Ctrl+R / Cmd+R reloads the window after a rebuild
# 在宿主窗口里按 Ctrl+R / Cmd+R 重载即可看到效果
Debug logs · 调试日志
Output panel → Deep Copilot channel
Output 面板 → 选择 Deep Copilot 频道
Or open via command palette: Deep Copilot: Open Debug Log
或命令面板:Deep Copilot: Open Debug Log
Create a DEEPCOPILOT.md at the workspace root and Deep Copilot will inject its content into the system prompt for every request in this workspace — useful for project conventions, build commands, "do/don't" lists.
Create ~/.deepcopilot/memory.md for cross-project preferences that apply everywhere — preferred coding style, always/never rules, personal shortcuts. It is injected (capped at 4 KB) into every system prompt.
English: ①Issue #169 — Archive becomes pure export: clicking "Archive" only writes a Markdown snapshot under .deep-copilot/archives/ and leaves the session completely untouched (no more soft-hide, no more current-session-swap, clicking twice on the same session simply produces two snapshots); failure paths and save-dialog cancellation no longer mutate archived state. A one-shot idempotent migration _migrateArchivedFlagIfNeeded (guarded by globalState['deepseekAgent.archiveSemanticsV2Migrated']) flips every legacy archived: true session back to false on first launch so previously-hidden sessions reappear in the sidebar. Failure routes through Logger.info('ARCHIVE_V2_MIGRATION_FAILED', ...) instead of blocking activation. ②Watchdog turn stays on duty: when a background job (training, build, dev server) was started in an earlier turn, run._sessionStartedBgJobs is empty in the current turn, so the BG_WAIT_SKIPPED_MODEL_DONE guard used to terminate the conversation right after the model promised to keep monitoring. The agent now tracks every deepseek-job-* terminal the model inspects via read_terminal in run._monitoredBgJobs; the agent-loop guard refuses to end the turn while any such monitored job is still alive, so the loop keeps polling and emitting 4-minute snapshots until the job finishes or the 4 h per-turn budget elapses. ③Routes migration failures through Logger (replacing console.warn) so diagnostics respect deepseekAgent.enableDebugLog and surface in the "Deep Copilot Debug" output channel. ④.vscodeignore now filters .tmp-*.json/.txt/.md, preventing local PR-review scratch caches from accidentally leaking into the shipped VSIX.
English: ①Issue #142 — context-window overhaul: structure-aware truncation (latest tool results kept verbatim, older turns collapsed to summary skeletons); per-file dedup (multiple reads of the same path keep only the latest payload; earlier ones become <file path=... read-collapsed='true'/> placeholders); rolling-summary fallback that compresses older history into structured summary nodes when thresholds are crossed; MCP tools support per-server explicit opt-out; large-file reads now ship a read-large-file hint nudging the model to grep first. ②Three new slash commands: /compact [focus] force-compacts the active session (focus biases the summarisation; merges project-level .deepcopilot/compact.md / CLAUDE.md hints); /context opens a breakdown popover (system / messages / tools / files / hints); /fork [name] forks the current session from a message into a brand-new one with that context as origin. ③Footer context ring: replaces the legacy status dot with a ring indicator (#ft-ctx) whose colour ramps green → yellow → orange → red across 60/85/100% thresholds; click opens the same breakdown shown by /context. ④Issue #143 — session-switch flash / scrollbar jitter: switching away from and back to a running session previously replayed buffered events in a tight loop, each one scheduling its own RAF scroll-to-bottom. Fix: _loadSession defers replay via setTimeout(..., 0) and wraps the burst with replayStart / replayEnd envelopes; the webview adds a _replaying flag that silences ascroll() during the burst and performs a single final scroll on replayEnd. ⑤Minor cleanups in the Anthropic / OpenAI clients, errors.js copy tweaks, file-read.js large-file notice, and session-store.js adapts to persist / replay rolling-summary nodes correctly.
English: ①New "Pending edits" panel: inspired by GitHub Copilot in VS Code. A popover sits above the composer and lists every file the agent just wrote/patched/replaced, with per-file +lines / -lines stats and new / deleted / binary tags. ②Click → native diff editor: clicking any row opens the real VS Code diff editor — left side is the pre-edit snapshot served by a deepcopilot-before:TextDocumentContentProvider, right side is the current on-disk content. URIs carry a cache-busting timestamp and the provider fires onDidChange, so repeat clicks always re-open. ③Per-row & bulk actions: hover reveals ✓ (Keep) and ✕ (Discard); the header offers "Keep all / Discard all". Discard restores from snapshot; Keep simply removes the row. ④Survives turn end: pendingEdits is now keyed by session rather than by run, so even after AgentLoop reaps the run at end-of-reply, the panel rows remain clickable until you Keep/Discard them — matching the Copilot UX. ⑤Lightweight line diff: new src/chat/diff-utils.js computes +N/-M via LCS, with a graceful fallback for files >10k lines or >100k chars and a binary-safety guard so PNGs etc. just get a binary tag instead of garbled counts. ⑥Aligned with existing Undo: revert_last_turn and the status-bar revert button also clear the pending-edits panel, so there are no orphan entries. ⑦CSP / safety: webview CSP unchanged; the content provider only returns in-memory snapshots and never touches paths outside what was already captured.
English: ①Chat UI visual refresh: introduced design tokens --dc-indent / --dc-fg-* / --dc-accent / --dc-rule; eight container types now share one "2px left rule + 16px indent" rhythm — .tool card headers, .tl tool rows, .tl-detail panels and .tool .b body are visually aligned, dramatically reducing noise. ②Tool-type color rails: new k-read / k-write / k-search / k-shell / k-agent / k-plan / k-other accent classes so different tools are distinguishable at a glance; .tl-group .tl-summary adopts the same 2px rail. ③Thinking-block UX: as soon as the model starts streaming the reply, the thought block auto-collapses with a Thought for Ns summary while keeping the header visible for on-demand review. ④Chip semantics: tool-name chip changed from <span> to <code> to align with monospace body text. ⑤Output style contract: system prompt gains a new "Output style contract" section governing monospace usage, list semantics, paragraph control, and banning decorative emoji — markdown output is far more consistent. ⑥Terminal early-exit window: run_shell_bg now races the spawn against a 2.5s capture window — if the command crashes/exits inside the window, the real exit_code + output are returned synchronously, so the model sees failures immediately instead of "giving up" after a fire-and-forget submission; on timeout, the original async running path takes over. terminal-monitor exposes markSyncReturnedJob/wasSyncReturned to deduplicate the late bg-job-end event so the agent loop never re-injects what was already returned synchronously. ⑦**.vscodeignore cleanup**: removed 14 stale rules (deleted test/data/models/runs/ directories and a batch of .pt weights), added .github/**.eslintrc.json.gitleaksignore, and grouped/commented the file by purpose — vsix payload is leaner.
English: ①Explorer context-menu attach: right-click any file or folder in VS Code Explorer → "Attach to Deep Copilot" injects its content or directory tree as a chip into the chat input. Files auto-truncated at 64 KB; folders walked recursively (max depth 3, max 200 entries; node_modules / .git / dist etc. skipped). ②**read_terminal tool**: the model can proactively read the latest output of the VS Code integrated terminal without the user manually copy-pasting; supports filtering by terminal name; output auto-truncated with sensitive paths sanitised. ③Agent proactive verification loop: after critical writes or shell commands, the agent automatically emits a follow-up tool call to verify the result (e.g. re-read a file to confirm content, or run tests); run_shell result is structured as {exit_code, stdout, stderr} so the model can branch on success/failure. ④**save_plan tool**: at the end of a Plan-mode investigation, the structured plan (title, goal, steps, files, risks) is persisted to .deep-copilot/plans/ as a timestamped Markdown file. ⑤Context-chip auto-attach current file: when an editor file is focused, its path appears as a chip in the input bar; chip updates live as the active file changes; chip is preserved (no longer cleared) when focus moves to the chat panel. ⑥Fixes: skill SKILL.md path resolution across home / workspace directories; tool-card borders replaced with theme-aware var(--vscode-panel-border); tool header status bar restored; Composer top separator removed.
v0.35.0 — Skills · FIM 行内补全 · Plan 模式 · 项目规则发现
中文:①技能系统升级:三目录扫描(~/.deepcopilot/skills / ~/.claude/skills / ~/.copilot/skills),YAML 元数据解析(name/description/applies_to 工作区门控),稳定字母排序,新增 skill_invoke 工具让模型按需加载技能,斜杠命令 /skill <name> 手动唤起。②DeepSeek FIM 行内补全:在编辑器停止输入约 350ms 后,以前缀/后缀上下文调用 DeepSeek FIM 接口,建议以幽灵文字呈现,Tab 接受;默认关闭(deepCopilot.inlineCompletion.enable),静默失败,请求自动取消,日志脱敏。③Plan 只读交互模式:新增 Plan 模式,系统提示词追加只读约束,模型只可读文件/搜索,任何写操作或 shell 执行均被工具层拦截,适合先调查后动手。④项目级 AI 规则自动发现:启动时扫描 DEEPCOPILOT.md、.github/copilot-instructions.md、AGENTS.md、.cursor/rules/*.mdc、CLAUDE.md,全量注入系统提示词(总量不超过 8 KB)。⑤AUTOCOMPACT 持久通知:上下文自动压缩时在聊天界面插入持久通知卡片。⑥修复:autopilot 模式下危险命令弹窗跳过 + 每会话缓存;Shell 心跳超时 + SIGKILL 兜底;孤立工具消息 HTTP 400 自愈;IME 输入法 Enter 防误触。
English: ①Skills upgrade: three-directory scan, YAML frontmatter (name/description/applies_to workspace gating), stable alpha sort, new skill_invoke tool for on-demand model-side loading, /skill <name> slash command for manual invocation. ②DeepSeek FIM inline completions: ghost-text suggestions using surrounding context (4 000 chars prefix / 2 000 chars suffix) after ~350 ms idle; Tab to accept; off by default (deepCopilot.inlineCompletion.enable); silent failure; auto-cancel on next keystroke; sanitised error logs. ③Plan read-only mode: new Plan option in the mode selector; system prompt gains a read-only constraint — only read/search tools permitted; any write/shell call returns a tool error; ideal for investigation before editing. ④Ecosystem AI-rule discovery: on startup, scans DEEPCOPILOT.md, .github/copilot-instructions.md, AGENTS.md, .cursor/rules/*.mdc, CLAUDE.md and injects all found content into the system prompt (capped at 8 KB). ⑤AUTOCOMPACT persistent notice: when auto-compaction fires, a permanent in-chat card is inserted so users understand why older tool outputs may be gone. ⑥Fixes: autopilot skips danger-cmd modal with per-session cache; shell heartbeat + SIGKILL fallback; orphan tool-message HTTP 400 self-heal; IME composition Enter guard.
English: Typing # in the chat input opens a context-reference picker. One-click attach: #file (any workspace file), #selection (active selection), #editor (active file), #problems (diagnostics), #changes (unstaged git diff), #terminal (selected terminal text), #symbol:Foo (workspace symbols), #fetch:URL (web fetch). All refs ride as <attachment path="…"> blocks with synthetic paths (<problems>, <git-changes>, <symbol:Foo>, <fetch:URL>) so the model can tell them apart from real files. Inline #ref:arg tokens are resolved race-free on the extension side before the agent loop runs. SSRF blocklist enforced for #fetch; workspace-containment check for #file / #editor.
English: Heavily simplified tool-call display — icons, chevrons, and column layout removed in favour of a single-line grey text row with faded file paths and click-to-expand detail. Removed elapsed-time labels from all intermediate "Thinking" chips. Completely redesigned the bottom progress indicator: keeps the blue sonar dot, removes background / border / shimmer, adds a 20-word English verb carousel (randomised every 3 s with a fade-in animation) and a live elapsed timer. Fixed the spinner being obscured by the input box during long streaming responses via requestAnimationFrame-deferred scrolling and a per-second scroll safety net.
v0.32.9 — Autopilot 静默放行工作区外路径 · Silent pass-through for out-of-workspace paths
English: ensurePathAllowed() in src/tools/utils.js now checks the approval mode. In autopilot, paths outside the workspace (e.g. ~/.deepcopilot/memory.md) are silently allowed and cached for the session, eliminating the previously dialog. manual / auto-edit behaviour is unchanged.
中文:在系统提示词的 Using tools 章节尊明确声明 run_shell 拥有完整的操作系统访问能力,并给出 Windows Start-Process / macOS open / Linux xdg-open 的调起范例,禁止 Agent 以“无法启动桌面应用”为由拒绝任务;修复 autopilot 下“打开某某软件”请求被静默拒绝的问题。
English: Added an explicit positive clause to the Using-tools section of the system prompt that declares run_shell has full OS-level access, with platform-specific launchers (Start-Process, open, xdg-open). Fixes the regression where the agent refused to attempt launching desktop apps in autopilot mode (tool_calls=0).
v0.32.7 — Locale-Aware Fonts & Full Webview i18n · 语言感知字体与界面全面本地化
🇬🇧 Locale-aware font switching: on startup, reads vscode.env.language; zh-* locales use a CJK-optimised font stack (Microsoft YaHei UI / PingFang SC / Noto Sans CJK SC, with Linux fallback), all other locales use a Latin-optimised stack (Segoe UI / Inter / system-ui). Implemented via html[data-locale] CSS attribute selectors — zero bundle-size increase.
🇨🇳 语言感知字体切换:启动时读取 vscode.env.language,zh-* 语言使用中文优化字体栈(微软雅黑 UI / 苹方 / Noto Sans CJK / WenQuanYi,覆盖 Win/Mac/Linux),其他语言切换为 Latin 优化字体栈(Segoe UI / Inter / system-ui)。通过 html[data-locale] CSS 属性选择器实现,零打包体积增加。
🇬🇧 Full webview i18n: all 20 hardcoded Chinese strings in the webview HTML template (welcome subtitle, input placeholder, session panel labels & buttons, empty-state text, thinking indicator, all tooltips) now route through the existing t() i18n system. English VS Code users see a fully English interface.
🇨🇳 Webview 界面全面本地化:src/webview/html.js 中 20 处硬编码中文字符串全部接入现有 t() 国际化系统(欢迎页副标题、输入框提示、会话面板标签与按钮、空状态文本、思考中指示器、所有工具提示)。英文 VS Code 用户现在看到完整的英文界面。
v0.32.0 — Unified API Settings UI · API 设置一站式面板
🇬🇧 One-click access to all API keys: clicking the 🔑 button now opens a unified QuickPick panel with three items — DeepSeek API Key (required), Tavily API Key (optional), and Base URL — each showing live status, masked key preview, and inline help. The Tavily key, previously only accessible via the command palette, is now visible in the UI.
🇨🇳 一键访问所有 API 配置:点击 🔑 按钮现会弹出统一的 QuickPick 面板,包含三项设置——DeepSeek API Key(必填)、Tavily API Key(可选)、Base URL,每项都显示实时状态、脱敏后的 Key 预览与说明。Tavily Key 之前只能通过命令面板访问,现在在 UI 中可见。
🇬🇧 Status indicators: codicon icons (pass-filled / circle-large-outline) show at a glance which keys are configured.
🇨🇳 状态图标:使用 codicon 图标(pass-filled / circle-large-outline)一眼看出哪些 Key 已配置。
🇬🇧 Looped UI: after configuring one item, the panel returns automatically so users can set multiple keys without reopening.
🇨🇳 循环面板:设置完一项后面板自动返回列表,可连续配置多项无需重新点击。
🇬🇧 README: added a “API Keys Required” section near the top to help new users get set up faster.
🇨🇳 README 更新:顶部新增「API Keys Required」章节,帮助新用户更快上手。
v0.31.6 — HTML Rendering Fixes · 1M Context Window · HTML 渲染全面修复与上下文扩容
🇬🇧 HTML inline tag whitelist expanded: SAFE_HTML_TAGS now covers all common inline HTML elements — strong, em, b, i, span, code, a, p, time, data, wbr, bdi, bdo, ruby/rt/rp/rb and all previous tags. Model-output HTML inline tags no longer appear as escaped text.
🇨🇳 内联标签白名单全面扩充:新增 strong、em、b、i、span、code、a、p、time、data、wbr、bdi/bdo、ruby/rt/rp/rb 等标签,模型输出的内联 HTML 不再显示为转义文本。
🇬🇧 Block-level heading tags (h1–h6) added to the HB_TAGS extractor and DOMPurify ADD_TAGS — headings now render correctly instead of showing as raw HTML.
🇨🇳 块级标题标签(h1–h6)加入 HB_TAGS 提取器与 DOMPurify ADD_TAGS,标题不再显示为原始 HTML。
🇬🇧 Fixed placeholder token ordering bug: HBRAW blocks are now restored before HTML inline tokens, fixing the HTML12ρHTML13 artefact that appeared when inline tags (<var>, <sub> etc.) were nested inside block elements (<ul>, <div> etc.).
🇨🇳 修复占位符还原顺序 Bug:将 HBRAW 块的还原调整到 HTML 内联 token 之前,修复 <var> 等标签嵌套在 <ul> 内时出现 HTML12ρHTML13 乱码的问题。
🇬🇧 1M context window support: COMPACT_BUDGET raised to 600K, MODEL_CTX_HARD_LIMIT raised to 900K, and max_tokens raised to 32 768 — matching DeepSeek's actual 1M input / 384K output limits. Long conversations no longer hit the 60K hard cap that previously caused premature compaction.
🇨🇳 支持 1M 上下文:COMPACT_BUDGET 提升至 60 万,MODEL_CTX_HARD_LIMIT 提升至 90 万,max_tokens 提升至 32 768,完全匹配 DeepSeek 1M 输入 / 384K 输出的实际规格,彻底解决长对话过早触发压缩或报错的问题。
🇬🇧 System prompt updated: h1–h6 tags added to the safe HTML tag list; model instructed not to use inline style= attributes.
🇨🇳 系统提示词更新:新增 h1–h6 进安全标签列表,并明确告知模型不要使用内联 style= 属性。
🇬🇧 spawn_agent: launch isolated sub-agents with their own context; multiple sub-agent calls in the same turn now execute in parallel (Phase 1), matching read_file / grep_search behaviour.
🇨🇳 spawn_agent:启动独立上下文的子 Agent;同一轮次的多个子 Agent 调用现在并行执行,与 read_file / grep_search 行为一致。
🇬🇧 Streaming terminal cards: run_shell, web_search, spawn_agent outputs now render in expandable cards with live-streaming content.
🇨🇳 流式终端卡片:run_shell、web_search、spawn_agent 输出以可展开卡片实时渲染。
🇬🇧 Skill notice bar: /skill chip is now displayed as a dedicated blue pill inside the input row (outside the file-chip area), making the active skill always visible alongside the textarea.
🇨🇳 Skill 提示栏:激活的 /skill 现以独立蓝色胶囊显示在输入行内(与文件附件 chip 区分),一眼即可看到当前挂载的 Skill。
🇬🇧 File attachment chips and skill chip are now rendered in separate DOM elements — no z-index conflicts, no invisible chips.
🇨🇳 文件附件 chip 与 Skill chip 分离为独立 DOM 元素,彻底消除层叠冲突与不可见 chip 问题。
🇬🇧 Input row (#inp-row) wraps the skill notice and textarea as a flex row so both are always in view.
🇨🇳 输入行(#inp-row)以 flex 布局将提示栏与输入框并排,互不遮挡。
🇬🇧 Stability fixes: activation crash from unescaped backtick in system prompt; JS null reference from removed DOM element.
🇨🇳 稳定性修复:系统提示词反引号导致的激活崩溃;DOM 元素删除后 JS 空引用。
v0.28.3 — HTML Rendering · Account Balance · v0.28.3
🇬🇧 HTML rendering in chat: model responses render full Markdown + HTML + KaTeX math.🇨🇳 HTML 渲染:响应支持完整 Markdown + HTML + KaTeX 数学公式。
🇬🇧 Account balance widget in footer: shows remaining DeepSeek credit, click to refresh.🇨🇳 账户余额:底栏实时显示 DeepSeek 余额,点击刷新。
🇬🇧 Revert last turn: revert_last_turn tool + deepseekAgent.revertLastTurn command — roll back all file changes from the current agent turn in one click.
🇬🇧 Multiple independent tool calls in one model turn (parallel execution). @filename attachment. apply_patch for multi-hunk edits. Tool result caching.