@opencodex/cli 1.0.39 → 1.0.40
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/LICENSE.md +12 -0
- package/README.md +427 -31
- package/bin/stt/requirements.txt +32 -0
- package/bin/stt/stt_server.py +619 -0
- package/bin/tts/requirements.txt +21 -0
- package/bin/tts/tts_server.py +404 -0
- package/cli-wrapper.cjs +4 -0
- package/llms.txt +88 -0
- package/package.json +30 -11
- package/web/dist/assets/AssistantsView-BiUiWjhF.js +1 -0
- package/web/dist/assets/AutomationView-Dcf_yNaI.js +1 -0
- package/web/dist/assets/ChannelConfigView-BLnxsMGm.js +8 -0
- package/web/dist/assets/ConnectorsView-CX3E6X6c.js +1 -0
- package/web/dist/assets/DesignSystemView--x-P-lpD.js +1 -0
- package/web/dist/assets/Drawer-CjAgqH3B.js +1 -0
- package/web/dist/assets/{FileTreeView-hBtHBbAV.js → FileTreeView-Chb_fzTK.js} +3 -3
- package/web/dist/assets/HookConfigView-EafYlWdN.js +1 -0
- package/web/dist/assets/InputArea-BbHslX7b.js +50 -0
- package/web/dist/assets/ModelsView-CGN5Nljr.js +1 -0
- package/web/dist/assets/PluginsView-CDiJgvI8.js +2 -0
- package/web/dist/assets/ProjectsView-C5Usmwqy.js +1 -0
- package/web/dist/assets/SessionGrid-Drxg0r_u.js +4 -0
- package/web/dist/assets/SettingsModal-Cmts6aBG.js +10 -0
- package/web/dist/assets/Skeleton-Dsk6B0U3.js +1 -0
- package/web/dist/assets/SkillsView-TEDR_3XX.js +1 -0
- package/web/dist/assets/TemplatesTab-DtN5Kdgh.js +1 -0
- package/web/dist/assets/ToolsView-VukZnIt1.js +1 -0
- package/web/dist/assets/VizCardsSkeleton-C_GaEfXd.js +1 -0
- package/web/dist/assets/abnfDiagram-YUKMZFIV-BIFw6B_N.js +1 -0
- package/web/dist/assets/arc-BZQ951h9.js +1 -0
- package/web/dist/assets/architectureDiagram-47P4ROYG-BP5qiXzf.js +36 -0
- package/web/dist/assets/blockDiagram-E7TT5TSB-DtRpcE7F.js +140 -0
- package/web/dist/assets/c4Diagram-CRA5TL53-Gdzn8UBh.js +38 -0
- package/web/dist/assets/channel-BND6_KSH.js +1 -0
- package/web/dist/assets/chunk-2Q5K7J3B-3U6HMlsm.js +1 -0
- package/web/dist/assets/chunk-5VM5RSS4-CYl9mwa-.js +15 -0
- package/web/dist/assets/chunk-7TKQ45FW-Dn6ktcY5.js +1 -0
- package/web/dist/assets/chunk-AW2ZBBNX-De0QX6p1.js +88 -0
- package/web/dist/assets/chunk-FVRAUYC3-CpXDfvz4.js +2 -0
- package/web/dist/assets/chunk-HTAEGDNF-D1KDvcDd.js +1 -0
- package/web/dist/assets/chunk-JWPE2WC7-umm4A-fq.js +1 -0
- package/web/dist/assets/chunk-KQW6MTUR-JYH94hpE.js +1 -0
- package/web/dist/assets/chunk-XXDRQBXY-CSlCFByc.js +1 -0
- package/web/dist/assets/classDiagram-v2-K4WV4PDN-DnFwS0qN.js +217 -0
- package/web/dist/assets/cose-bilkent-JH36ORCC-BxUTUyep.js +1 -0
- package/web/dist/assets/cynefin-EF2NZ3EQ-CiMvulJr.js +141 -0
- package/web/dist/assets/cynefinDiagram-3GCD6N5R-DuXFORdW.js +62 -0
- package/web/dist/assets/cytoscape.esm-Ix0LnXOy.js +331 -0
- package/web/dist/assets/dagre-W4DXFKR2-DzMZHXci.js +4 -0
- package/web/dist/assets/defaultLocale-DX6XiGOO.js +1 -0
- package/web/dist/assets/diagram-2UJZ2QOL-B6tO5G1v.js +200 -0
- package/web/dist/assets/diagram-OVF4WLC6-DRZt8tGc.js +24 -0
- package/web/dist/assets/diagram-PFPMY2P6-DGh6IecR.js +30 -0
- package/web/dist/assets/diagram-UMYRVEAY-BLbnt0yT.js +24 -0
- package/web/dist/assets/diagram-YEKJPTXX-C-S5DVhj.js +41 -0
- package/web/dist/assets/diagram-ZIFT7M5P-JrGHTWbo.js +3 -0
- package/web/dist/assets/ebnfDiagram-VR2GEFS7-DPXA-YOi.js +1 -0
- package/web/dist/assets/elk-IJKZMXRS-CINeWt2W.js +27 -0
- package/web/dist/assets/erDiagram-O2IAPWRE-PPaHmqA1.js +99 -0
- package/web/dist/assets/flowDiagram-OXPTDLAJ-t-u0QXEA.js +213 -0
- package/web/dist/assets/ganttDiagram-R7TSEDQI-Bw49ZD_b.js +292 -0
- package/web/dist/assets/gitGraphDiagram-XJZIOB7I-BAfOqeeg.js +106 -0
- package/web/dist/assets/graph-Bn3Yngep.js +1 -0
- package/web/dist/assets/{icons-BxNxyk-c.js → icons-Bm_ZzSAy.js} +320 -160
- package/web/dist/assets/index-CeeLdENM.js +677 -0
- package/web/dist/assets/index-Ceez9lYk.css +1 -0
- package/web/dist/assets/infoDiagram-5W2HQ5XZ-Bv4RBxYW.js +2 -0
- package/web/dist/assets/init-Gi6I4Gst.js +1 -0
- package/web/dist/assets/ishikawaDiagram-K3B6WC7H-DEpj0bRp.js +70 -0
- package/web/dist/assets/journeyDiagram-COXZFDF6-MJu84Iiz.js +139 -0
- package/web/dist/assets/kanban-definition-P3RFRI5V-mlYSRALK.js +89 -0
- package/web/dist/assets/linear-5j9gt8MV.js +1 -0
- package/web/dist/assets/{markdown-B2L4Mq-x.js → markdown-BWXjRrSw.js} +8 -8
- package/web/dist/assets/mermaid.core-DLb6eAON.js +314 -0
- package/web/dist/assets/mindmap-definition-LZFPQGKD-C9v_57Ex.js +96 -0
- package/web/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/web/dist/assets/{panels-P_I7Q72_.js → panels-BQOvnbWH.js} +1 -1
- package/web/dist/assets/pegDiagram-BGZESJAR-KQP26s3-.js +1 -0
- package/web/dist/assets/pieDiagram-CAPJLFHJ-DN3RQ_ih.js +39 -0
- package/web/dist/assets/profileChange-B7TaQ18u.js +1 -0
- package/web/dist/assets/quadrantDiagram-GDMTTRAM-BpL_ZL76.js +7 -0
- package/web/dist/assets/railroadDiagram-SM67HX2B-DZ-fPU85.js +1 -0
- package/web/dist/assets/{react-vendor-B2V_5iSS.js → react-vendor-C0HIWSpf.js} +1 -1
- package/web/dist/assets/requirementDiagram-X7JNWC4A-mKPGj64L.js +84 -0
- package/web/dist/assets/sankeyDiagram-UM26HJRW-Bs4xfjQP.js +40 -0
- package/web/dist/assets/sequenceDiagram-ZO4K6R2Y-BjUmzZaO.js +169 -0
- package/web/dist/assets/sizeCapture-INFHLROL-BXBM3j_Q.js +1 -0
- package/web/dist/assets/{state-0T92JV0u.js → state-Kfon1nTr.js} +1 -1
- package/web/dist/assets/stateDiagram-v2-TBUQTH76-FGgFDGUU.js +291 -0
- package/web/dist/assets/sttLanguages-C7kVulzY.js +1 -0
- package/web/dist/assets/swimlanes-N4OXWK64-wkd_n4HU.js +1 -0
- package/web/dist/assets/swimlanesDiagram-K3J5GTZL-CKnwEuq_.js +8 -0
- package/web/dist/assets/timeline-definition-YOQAKGHF-DyBln1jw.js +120 -0
- package/web/dist/assets/usecaseDiagram-VIAY4XPW-Cqis3XHX.js +370 -0
- package/web/dist/assets/vennDiagram-BLWOH2XV-BaiFLOVS.js +34 -0
- package/web/dist/assets/wardleyDiagram-YMQ3BMBF-C4CzpJto.js +78 -0
- package/web/dist/assets/xychartDiagram-TAQBALBS-Dp1hfe3-.js +7 -0
- package/web/dist/figma-demo/product-1.jpg +0 -0
- package/web/dist/figma-demo/product-2.jpg +0 -0
- package/web/dist/figma-demo/trail-1.jpg +0 -0
- package/web/dist/figma-demo/trail-2.jpg +0 -0
- package/web/dist/figma-demo/trail-3.jpg +0 -0
- package/web/dist/index.html +8 -8
- package/web/dist/assets/AssistantsView-0aLB_cG6.js +0 -1
- package/web/dist/assets/AutomationView-CAMjPhJ2.js +0 -1
- package/web/dist/assets/ChannelConfigView-FcioeeYb.js +0 -8
- package/web/dist/assets/ConnectorsView-DERP7zAW.js +0 -1
- package/web/dist/assets/HookConfigView-NModtSB8.js +0 -1
- package/web/dist/assets/ModelsView-BPpO50C_.js +0 -1
- package/web/dist/assets/PluginsView-D0NE7zrt.js +0 -1
- package/web/dist/assets/ProjectsView-PIv7Gx4q.js +0 -1
- package/web/dist/assets/SessionGrid-BsDL3lov.js +0 -47
- package/web/dist/assets/SettingsModal-DdebvEmv.js +0 -10
- package/web/dist/assets/SkillsView-BNoigImJ.js +0 -1
- package/web/dist/assets/TemplatesTab-D8Pa68fj.js +0 -1
- package/web/dist/assets/ToolsView-NY-yk5YX.js +0 -1
- package/web/dist/assets/WorkspaceDirPicker-C5knnArH.js +0 -6
- package/web/dist/assets/index-DaiVo1RY.css +0 -1
- package/web/dist/assets/index-RB5ffy32.js +0 -620
- package/web/dist/assets/profileChange-C7Jg9C61.js +0 -1
package/LICENSE.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
DeepSeekCode
|
|
2
|
+
|
|
3
|
+
© 2026 DeepSeekCode. All rights reserved.
|
|
4
|
+
|
|
5
|
+
本软件为专有软件,源代码不公开。保留所有权利。
|
|
6
|
+
|
|
7
|
+
This software is proprietary and closed source. All rights reserved.
|
|
8
|
+
No part of this software may be copied, modified, distributed, sublicensed,
|
|
9
|
+
sold, or otherwise used without the prior written permission of the
|
|
10
|
+
copyright holder.
|
|
11
|
+
|
|
12
|
+
Use is subject to a separate written license agreement with the copyright holder.
|
package/README.md
CHANGED
|
@@ -1,20 +1,74 @@
|
|
|
1
|
-
#
|
|
1
|
+
# DeepSeekCode CLI
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@deepseekcode/cli)
|
|
4
4
|
[](#license)
|
|
5
5
|
[](https://nodejs.org)
|
|
6
6
|
|
|
7
|
-
**DeepSeekCode
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
7
|
+
**DeepSeekCode is a local-first AI coding agent that runs in your terminal.** One runtime on
|
|
8
|
+
your own machine serves three surfaces — an interactive terminal UI (TUI), a web UI, and an
|
|
9
|
+
HTTP/WebSocket API — and drives it with any OpenAI-compatible model. It is built around a real
|
|
10
|
+
permission/approval layer, a strictly read-only plan mode, and runtime-switchable act / goal /
|
|
11
|
+
chat modes.
|
|
12
|
+
|
|
13
|
+
Install it, run `dscode`, and you have an agent that reads and edits your files, runs commands,
|
|
14
|
+
reviews code, and can work unattended in CI.
|
|
15
|
+
|
|
16
|
+
Languages: **English** · [简体中文](#zh-cn) · [日本語](#ja) · [Español](#es)
|
|
17
|
+
|
|
18
|
+
## At a glance
|
|
19
|
+
|
|
20
|
+
| | |
|
|
21
|
+
|---|---|
|
|
22
|
+
| **What it is** | A local-first AI coding agent — terminal-first, with an optional web UI |
|
|
23
|
+
| **Project page** | https://deepseekcode.github.io/deepseekwork/ |
|
|
24
|
+
| **Install** | `npm install -g @deepseekcode/cli` |
|
|
25
|
+
| **Run** | `dscode` (interactive) · `dscode exec "..."` (non-interactive) |
|
|
26
|
+
| **Requires** | Node.js >= 18 |
|
|
27
|
+
| **Platforms** | Prebuilt native binaries: Windows x64 / ARM64, macOS Intel / Apple Silicon, Linux glibc & musl, x64 / ARM64 |
|
|
28
|
+
| **Interfaces** | Terminal TUI · Web UI at `http://localhost:8080` · HTTP + WebSocket API · JSONL batch mode |
|
|
29
|
+
| **Modes** | `act` · `auto-act` · `goal` · `auto-goal` · `chat` (`Shift+Tab`), plus a read-only plan toggle (`/plan`) |
|
|
30
|
+
| **Models** | Any OpenAI-compatible endpoint (hosted or local) — no vendor lock-in |
|
|
31
|
+
| **Built-in tools** | ~70: files, search, git, LSP, code intelligence, browser, sub-agents, plans, memory, MCP |
|
|
32
|
+
| **License** | Proprietary (see [License](#license)) |
|
|
33
|
+
|
|
34
|
+
## What you get
|
|
35
|
+
|
|
36
|
+
- **Terminal TUI** — a keyboard-first coding agent rendered with React through a vendored Ink
|
|
37
|
+
kernel. Fullscreen (alt-screen) by default; `--inline` opts back into main-screen mode.
|
|
38
|
+
- **Local runtime, started for you** — `dscode` starts the agent core plus an HTTP/WebSocket
|
|
39
|
+
server in the same process. There is no separate backend to install or connect.
|
|
40
|
+
- **Web UI** — sessions, tasks, models, themes and settings at `http://localhost:8080`
|
|
41
|
+
(provider setup lives at `http://localhost:8080/#models`).
|
|
42
|
+
- **Non-interactive modes** — `exec` (JSONL output), `codeview` (AI code review), and `test-fix`
|
|
43
|
+
(auto-fix test loop) for scripts, hooks and CI.
|
|
44
|
+
- **A permission layer on every tool call** — scopes `system > project > user > local > session`
|
|
45
|
+
(narrowest wins), `auto` / `ask` / `deny` policies, an optional AI classifier for the grey zone,
|
|
46
|
+
and timeout-means-deny.
|
|
47
|
+
- **Plan mode that is genuinely read-only** — `/plan` shows a checklist you approve before
|
|
48
|
+
anything executes; the running loop picks the checklist up instead of switching engines.
|
|
49
|
+
- **Sub-agents, background work and workflows** — delegate isolated jobs to sub-agents, detach
|
|
50
|
+
long-running work, and orchestrate multi-step tasks with an explicit plan.
|
|
51
|
+
- **Memory and skills** — durable notes that survive across sessions, plus reusable skills
|
|
52
|
+
inserted with `/skills`.
|
|
53
|
+
- **MCP support** — connect Model Context Protocol servers with `/mcp`.
|
|
54
|
+
- **IM channels** — LINE, Slack, WhatsApp, QQ, DingTalk and Feishu (with inbound
|
|
55
|
+
request-signature verification), so a session can also be driven from a chat app.
|
|
56
|
+
- **Sandboxed shell tools** — a local command sandbox (bwrap on Linux, SBPL on macOS,
|
|
57
|
+
MXC / Docker on Windows) that refuses to run rather than fall back to an unsandboxed host
|
|
58
|
+
shell when no policy is available.
|
|
59
|
+
- **Themes** — dark, light, nord, dracula, monokai, one-dark, tokyo-night.
|
|
60
|
+
- **Bilingual by design** — most interactive commands have Chinese aliases, and the interface
|
|
61
|
+
text is localized.
|
|
62
|
+
|
|
63
|
+
## Who it's for
|
|
64
|
+
|
|
65
|
+
- You want the agent to run on your machine against your own provider credentials, not behind
|
|
66
|
+
someone else's cloud service.
|
|
67
|
+
- You care about controlling what the agent may touch — approvals, scope policies, a read-only
|
|
68
|
+
plan pass, and a command sandbox.
|
|
69
|
+
- You want one tool for interactive work **and** for CI (`dscode exec` emits JSONL).
|
|
70
|
+
- You live in a terminal but occasionally want a bigger view (the web UI shares the same runtime).
|
|
71
|
+
- You work in Chinese and/or English.
|
|
18
72
|
|
|
19
73
|
## Install
|
|
20
74
|
|
|
@@ -35,7 +89,11 @@ yarn global add @deepseekcode/cli
|
|
|
35
89
|
bun add -g @deepseekcode/cli
|
|
36
90
|
```
|
|
37
91
|
|
|
38
|
-
This installs two commands: **`dscode`** (short) and **`deepseekcode`** (full name).
|
|
92
|
+
This installs two commands: **`dscode`** (short) and **`deepseekcode`** (full name). Installation
|
|
93
|
+
detects your platform and links the matching prebuilt native binary into place — after that
|
|
94
|
+
`dscode` execs the native binary directly, with no Node process left resident. If the optional
|
|
95
|
+
platform package is unavailable (for example `--omit=optional`), the installer prints instructions
|
|
96
|
+
instead and `cli-wrapper.cjs` remains available as the JavaScript fallback.
|
|
39
97
|
|
|
40
98
|
## Quick Start
|
|
41
99
|
|
|
@@ -43,14 +101,17 @@ This installs two commands: **`dscode`** (short) and **`deepseekcode`** (full na
|
|
|
43
101
|
dscode
|
|
44
102
|
```
|
|
45
103
|
|
|
46
|
-
That's it. The CLI starts the local agent runtime and opens the interactive terminal. On first run
|
|
104
|
+
That's it. The CLI starts the local agent runtime and opens the interactive terminal. On first run
|
|
105
|
+
(no provider configured) it prints a link to the web UI where you can set up your LLM provider and
|
|
106
|
+
model:
|
|
47
107
|
|
|
48
108
|
```bash
|
|
49
109
|
# model/provider setup page (also served by the CLI)
|
|
50
|
-
#
|
|
110
|
+
# -> http://localhost:8080/#models
|
|
51
111
|
```
|
|
52
112
|
|
|
53
|
-
If your terminal's stdin isn't a TTY (e.g. a script or CI pipeline), the CLI skips the TUI and runs
|
|
113
|
+
If your terminal's stdin isn't a TTY (e.g. a script or CI pipeline), the CLI skips the TUI and runs
|
|
114
|
+
**headless** — the web UI stays available at the printed URL.
|
|
54
115
|
|
|
55
116
|
Connect to an **existing** backend instead of starting a local one:
|
|
56
117
|
|
|
@@ -109,7 +170,7 @@ Inside the TUI, use `/help` for the full list (most commands have Chinese aliase
|
|
|
109
170
|
| `/theme [name]` | Show or change terminal theme |
|
|
110
171
|
| `/plan` | Toggle plan mode (review before executing) |
|
|
111
172
|
| `/auto` | Toggle auto-approval mode |
|
|
112
|
-
|
|
|
173
|
+
| `Shift+Tab` | Cycle modes: act · auto-act · goal · auto-goal · chat |
|
|
113
174
|
| `/goal` | Set goal-directed mode |
|
|
114
175
|
| `/thinking` | Toggle think mode on/off |
|
|
115
176
|
| `/context` | Show current conversation state |
|
|
@@ -121,6 +182,7 @@ Inside the TUI, use `/help` for the full list (most commands have Chinese aliase
|
|
|
121
182
|
| `/skills` | Insert a skill |
|
|
122
183
|
| `/trace <traceId>` | Query a trace by id |
|
|
123
184
|
| `/stop` `/pause` `/continue` | Control AI generation |
|
|
185
|
+
| `Ctrl+S` / `Ctrl+G` | Stash the current draft / restore the most recent one |
|
|
124
186
|
| `/exit` | Exit |
|
|
125
187
|
|
|
126
188
|
## Options
|
|
@@ -142,6 +204,28 @@ Inside the TUI, use `/help` for the full list (most commands have Chinese aliase
|
|
|
142
204
|
| `--no-update-check` | Disable the startup new-version notice |
|
|
143
205
|
| `--no-auto-update` | Disable background auto-update (notice still shown) |
|
|
144
206
|
|
|
207
|
+
## Permissions and safety
|
|
208
|
+
|
|
209
|
+
Every tool call goes through the permission layer before it executes:
|
|
210
|
+
|
|
211
|
+
- **Scopes** — `system > project > user > local > session`; the narrowest matching rule wins, so a
|
|
212
|
+
session-level decision can grant what a project-level rule would ask about.
|
|
213
|
+
- **Policies** — `auto` (allow), `ask` (prompt), `deny`. High-risk operations ask even when a
|
|
214
|
+
broader rule would allow them, unless you are in auto-approval mode.
|
|
215
|
+
- **AI classifier** — optional review of risky calls that a static rule does not cover.
|
|
216
|
+
- **Timeout means deny** — an unanswered approval is a refusal, not an implicit yes.
|
|
217
|
+
- **Read-only modes** — plan mode and reviewer/coordinator sessions cannot write at all.
|
|
218
|
+
- **Command sandbox** — shell tools run inside a sandbox when a policy exists, and fail closed when
|
|
219
|
+
it does not.
|
|
220
|
+
|
|
221
|
+
`/stop` and `/pause` always win over anything the runtime would otherwise do on its own.
|
|
222
|
+
|
|
223
|
+
## Providers and models
|
|
224
|
+
|
|
225
|
+
DeepSeekCode is provider-neutral: point it at any OpenAI-compatible endpoint, hosted or local, and
|
|
226
|
+
switch models per session (or per mode). Provider and model settings are managed in the web UI at
|
|
227
|
+
`http://localhost:8080/#models`, and stored under `~/.agent/`.
|
|
228
|
+
|
|
145
229
|
## Configuration
|
|
146
230
|
|
|
147
231
|
The CLI reads `~/.agent/config.yaml`:
|
|
@@ -154,6 +238,42 @@ workspace_dir: /path/to/workspace
|
|
|
154
238
|
|
|
155
239
|
Provider / model settings are managed through the web UI at `http://localhost:8080/#models`.
|
|
156
240
|
|
|
241
|
+
### Attention (notifications & bell)
|
|
242
|
+
|
|
243
|
+
The TUI can notify you when a turn ends, errors, asks a question, needs a tool approval, or a
|
|
244
|
+
subagent finishes. It is focus-aware — by default it only fires while the terminal is in the
|
|
245
|
+
background. Add an `attention:` block to `~/.agent/config.yaml`:
|
|
246
|
+
|
|
247
|
+
```yaml
|
|
248
|
+
attention:
|
|
249
|
+
notifications: true # OSC 9 / OSC 777 desktop notification
|
|
250
|
+
sound: true # terminal bell (BEL) — on by default
|
|
251
|
+
volume: 0.4 # reserved (parity with opencode); BEL has no volume
|
|
252
|
+
when: blurred # always | blurred | focused
|
|
253
|
+
sound_when: always
|
|
254
|
+
events: { done: true, error: true, question: true, permission: true, subagent_done: true }
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
The completion sound is on by default. Toggle it in the web UI under
|
|
258
|
+
**Settings → Notifications** (writes `attention.sound` back to `config.yaml`); the CLI reads it at
|
|
259
|
+
startup, so the change applies on the next CLI launch.
|
|
260
|
+
|
|
261
|
+
`DEEPSEEKCODE_ATTENTION` overrides the file (`off` / `on`, or `notify,bell`). Terminals that don't
|
|
262
|
+
support the OSC sequences drop them silently.
|
|
263
|
+
|
|
264
|
+
<a name="local-state"></a>
|
|
265
|
+
|
|
266
|
+
### Local state
|
|
267
|
+
|
|
268
|
+
| File | Purpose |
|
|
269
|
+
|------|---------|
|
|
270
|
+
| `~/.agent/config.yaml` | Runtime, provider and attention configuration |
|
|
271
|
+
| `~/.agent/sessions/` | Persisted sessions (resumable, format-versioned) |
|
|
272
|
+
| `~/.agent/skills/` | User skills available via `/skills` |
|
|
273
|
+
| `~/.agent/logs/` | Runtime logs |
|
|
274
|
+
| `~/.agent/prompt-stash.json` | Draft stash pushed by `Ctrl+S` (LIFO) |
|
|
275
|
+
| `~/.agent/frecency.json` | `@` file-mention ranking (`count · 0.5^(ageDays/30)`) |
|
|
276
|
+
|
|
157
277
|
## Themes
|
|
158
278
|
|
|
159
279
|
Set the theme at startup via the `DEEPSEEKCODE_THEME` env var (or `--theme`):
|
|
@@ -180,7 +300,9 @@ Switch themes at runtime with `/theme [name]`.
|
|
|
180
300
|
|
|
181
301
|
## Auto-Update
|
|
182
302
|
|
|
183
|
-
On startup, `dscode` checks npm for the latest version asynchronously (non-blocking). When a newer
|
|
303
|
+
On startup, `dscode` checks npm for the latest version asynchronously (non-blocking). When a newer
|
|
304
|
+
version is found, the CLI **automatically reinstalls the global package** in the background
|
|
305
|
+
(`npm install -g @deepseekcode/cli@latest`); the new version takes effect on the next launch.
|
|
184
306
|
|
|
185
307
|
- Only affects **global npm installs** — source builds and `npx`/`bunx` caches are never touched.
|
|
186
308
|
- Disable auto-install (keep the version notice): `DEEPSEEKCODE_NO_AUTO_UPDATE=1` or `--no-auto-update`
|
|
@@ -192,6 +314,7 @@ On startup, `dscode` checks npm for the latest version asynchronously (non-block
|
|
|
192
314
|
|----------|-------------|
|
|
193
315
|
| `DEEPSEEKCODE_THEME` | Theme name or JSON theme file |
|
|
194
316
|
| `DEEPSEEKCODE_THEME_COLORS` | JSON partial color overrides |
|
|
317
|
+
| `DEEPSEEKCODE_ATTENTION` | Attention layer override: `off` / `on` / `notify,bell` |
|
|
195
318
|
| `DEEPSEEKCODE_HTTP_PORT` / `DEEPSEEKCODE_WS_PORT` | Default HTTP / WebSocket ports |
|
|
196
319
|
| `DEEPSEEKCODE_QUIET=1` | Suppress non-fatal startup warnings |
|
|
197
320
|
| `DEEPSEEKCODE_NO_AUTO_UPDATE=1` | Disable background auto-update |
|
|
@@ -199,25 +322,298 @@ On startup, `dscode` checks npm for the latest version asynchronously (non-block
|
|
|
199
322
|
| `DEEPSEEKCODE_FORCE_UTF8=0` | Skip forcing the Windows console to UTF-8 |
|
|
200
323
|
| `DSC_HEAP_LIMIT_MB` | Node heap limit hint for large sessions (default: 8192) |
|
|
201
324
|
|
|
202
|
-
##
|
|
325
|
+
## FAQ
|
|
326
|
+
|
|
327
|
+
**Is DeepSeekCode open source?**
|
|
328
|
+
No. It is proprietary, closed-source software. `LICENSE.md` holds the terms: copying, modifying,
|
|
329
|
+
distributing, sublicensing or selling it requires the prior written permission of the copyright
|
|
330
|
+
holder.
|
|
331
|
+
|
|
332
|
+
**Is DeepSeekCode a model?**
|
|
333
|
+
No. It is an agent runtime — a program you run — and it ships no model of its own. It drives
|
|
334
|
+
whichever OpenAI-compatible endpoint you configure; DeepSeek's models are one option among many,
|
|
335
|
+
and a local server works just as well.
|
|
336
|
+
|
|
337
|
+
**Which package is the official one?**
|
|
338
|
+
`@deepseekcode/cli` on npm — it installs the commands `dscode` and `deepseekcode`. The same build
|
|
339
|
+
is also published under additional brand scopes for distribution; `@deepseekcode` is the canonical
|
|
340
|
+
one, and the project page is https://deepseekcode.github.io/deepseekwork/.
|
|
341
|
+
|
|
342
|
+
**Is this affiliated with DeepSeek?**
|
|
343
|
+
No. DeepSeekCode is an independent project, not made, sponsored or endorsed by DeepSeek (深度求索)
|
|
344
|
+
or any other model vendor. The name refers to a runtime that drives models — not to a model family.
|
|
345
|
+
|
|
346
|
+
**Does it need an API key?**
|
|
347
|
+
Yes — it talks to an OpenAI-compatible endpoint you configure. The first run walks you through
|
|
348
|
+
provider setup; a local server (for example an OpenAI-compatible runtime on `localhost`) works too.
|
|
349
|
+
|
|
350
|
+
**Does my code leave my machine?**
|
|
351
|
+
The runtime, the UI, the file operations and the shell tools all run locally, and no DeepSeekCode
|
|
352
|
+
cloud service sits in the path. Prompts and tool results are sent to the model endpoint you
|
|
353
|
+
configured — that is the only outbound traffic the agent needs.
|
|
354
|
+
|
|
355
|
+
**Which models and providers are supported?**
|
|
356
|
+
Any endpoint that speaks the OpenAI-compatible API. Nothing is hardwired to a single vendor, and
|
|
357
|
+
you can switch models at runtime with `/model`.
|
|
358
|
+
|
|
359
|
+
**Does it run on Windows?**
|
|
360
|
+
Yes. Prebuilt native binaries cover Windows x64 and ARM64 (as well as macOS Intel/Apple Silicon and
|
|
361
|
+
Linux glibc/musl on x64/ARM64), and an offline package with bundled portable git is published for
|
|
362
|
+
machines without network access.
|
|
363
|
+
|
|
364
|
+
**Can it run unattended, or in CI?**
|
|
365
|
+
Yes. `dscode exec "..."` runs a command non-interactively and emits JSONL, and a non-TTY stdin
|
|
366
|
+
makes the CLI skip the TUI entirely. `dscode codeview` and `dscode test-fix` are built for the same
|
|
367
|
+
purpose.
|
|
368
|
+
|
|
369
|
+
**How do I stop it doing something I don't want?**
|
|
370
|
+
Use the permission layer (scopes plus auto/ask/deny policies), start with `/plan` so nothing
|
|
371
|
+
executes before you approve the checklist, rely on the command sandbox for shell tools, and press
|
|
372
|
+
`/pause` or `/stop` at any time. Reviewer and plan sessions are read-only by construction.
|
|
373
|
+
|
|
374
|
+
**Can I drive it from chat apps, MCP servers or my own tools?**
|
|
375
|
+
Yes — `/mcp` connects Model Context Protocol servers, plugins extend the runtime, and channel
|
|
376
|
+
plugins (LINE, Slack, WhatsApp, QQ, DingTalk, Feishu) let a chat message drive a session.
|
|
377
|
+
|
|
378
|
+
**Where is my data and configuration kept?**
|
|
379
|
+
Under `~/.agent/` (`config.yaml`, `sessions/`, `skills/`, `logs/`). See
|
|
380
|
+
[Local state](#local-state).
|
|
381
|
+
|
|
382
|
+
**How do I update it?**
|
|
383
|
+
It updates itself: on startup a global npm install is upgraded in the background to the latest
|
|
384
|
+
version. Disable that with `DEEPSEEKCODE_NO_AUTO_UPDATE=1` (or disable the check with
|
|
385
|
+
`DEEPSEEKCODE_NO_UPDATE_CHECK=1`).
|
|
386
|
+
|
|
387
|
+
## How it differs
|
|
388
|
+
|
|
389
|
+
- **Local-first, single runtime.** The TUI, the web UI and the API come from one process you
|
|
390
|
+
start — not a hosted service, and not three things to install and wire together.
|
|
391
|
+
- **Permissions are a first-class layer, not a toggle.** Scopes, policies, an optional AI
|
|
392
|
+
classifier, and fail-closed behaviour for approvals and sandboxed commands.
|
|
393
|
+
- **Plan mode is read-only and live.** The plan is a checklist the running loop adopts, so what you
|
|
394
|
+
approve is what executes.
|
|
395
|
+
- **Provider-neutral by construction.** Any OpenAI-compatible endpoint; nothing is tied to one
|
|
396
|
+
vendor's API surface.
|
|
397
|
+
- **Built for both the interactive and the unattended case.** The same agent drives the TUI and
|
|
398
|
+
emits JSONL for scripts and CI.
|
|
399
|
+
- **Extensible at the edges.** MCP servers, skills, plugins, sub-agents, workflows and chat
|
|
400
|
+
channels all attach to the same core loop.
|
|
401
|
+
|
|
402
|
+
## Terminal rendering internals
|
|
403
|
+
|
|
404
|
+
The TUI is a fork-free React renderer: a vendored Ink kernel plus a pure-TypeScript yoga port live
|
|
405
|
+
under `src/ink/` and `src/ink-yoga/`. If you change them, the layout-cache generations, the
|
|
406
|
+
alt-screen trailing newline and the fd-write ban are hard invariants — they are documented in
|
|
407
|
+
`docs/terminal-rendering-invariants.md` in the repository, together with the regression test that
|
|
408
|
+
guards each one.
|
|
409
|
+
|
|
410
|
+
The `terminal_figure` tool (capture → xterm.js replay → PNG composition) is an internal
|
|
411
|
+
verification path rather than a user-facing feature. Running it needs a Python interpreter with
|
|
412
|
+
Pillow installed and a Playwright Chromium browser; without them the tool returns an actionable
|
|
413
|
+
setup error instead of writing anything outside the workspace.
|
|
414
|
+
|
|
415
|
+
<a name="zh-cn"></a>
|
|
416
|
+
|
|
417
|
+
## 简体中文
|
|
418
|
+
|
|
419
|
+
**DeepSeekCode 是一个本地运行的 AI 编程智能体:一条命令在终端里跑起来,同时提供终端 TUI、Web UI 和本地 HTTP/WebSocket API 三个界面**,可接任意 OpenAI 兼容模型。它的核心是权限审批层、严格只读的方案模式(plan),以及可在运行时切换的 act / goal / chat 三种工作模式。
|
|
420
|
+
|
|
421
|
+
安装后运行 `dscode`,它就能读改文件、执行命令、审查代码,也能在 CI 里无人值守地跑。
|
|
422
|
+
|
|
423
|
+
### 安装与启动
|
|
424
|
+
|
|
425
|
+
```bash
|
|
426
|
+
npm install -g @deepseekcode/cli
|
|
427
|
+
dscode # 启动本地运行时 + 终端界面
|
|
428
|
+
dscode exec "修复 src/utils 里失败的测试" # 非交互,输出 JSONL
|
|
429
|
+
dscode codeview --focus security # AI 代码审查
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
需要 Node.js 18+。首次启动会引导你配置模型;Web UI 在 `http://localhost:8080`(模型配置页 `/#models`)。
|
|
433
|
+
|
|
434
|
+
### 核心能力
|
|
435
|
+
|
|
436
|
+
- **终端 TUI**:键盘优先的交互界面;默认全屏(alt-screen),`--inline` 回到主屏模式。
|
|
437
|
+
- **本地运行时**:`dscode` 在同进程内启动智能体内核与 HTTP/WebSocket 服务,不用另装后端。
|
|
438
|
+
- **权限审批层**:每次工具调用都过权限层 —— 作用域 `system > project > user > local > session`(越窄越优先)、`auto` / `ask` / `deny` 策略、高风险调用可交给 AI 分类器,审批超时按拒绝处理。
|
|
439
|
+
- **只读方案模式**:`/plan` 先给一份清单,你确认后才动手;执行中的回合会直接采纳这份清单。
|
|
440
|
+
- **模式可运行时切换**:`Shift+Tab` 在 act · auto-act · goal · auto-goal · chat 之间切换。
|
|
441
|
+
- **子智能体 / 后台任务 / 工作流**:把独立任务派给子智能体,长任务可脱离当前回合继续跑。
|
|
442
|
+
- **记忆与技能**:跨会话的持久记忆,`/skills` 插入可复用技能。
|
|
443
|
+
- **扩展**:`/mcp` 接 MCP 服务、插件、以及 LINE / Slack / WhatsApp / QQ / 钉钉 / 飞书等 IM 频道(入站请求带签名校验)。
|
|
444
|
+
- **命令沙箱**:Shell 工具走本地沙箱(Linux bwrap、macOS SBPL、Windows MXC / Docker),没有策略时拒绝执行而不是退回宿主机。
|
|
445
|
+
- **主题**:dark / light / nord / dracula / monokai / one-dark / tokyo-night。
|
|
446
|
+
- **中文友好**:界面文案本地化,多数交互命令有中文别名。
|
|
447
|
+
|
|
448
|
+
### 常用命令
|
|
449
|
+
|
|
450
|
+
| 命令 | 作用 |
|
|
451
|
+
|------|------|
|
|
452
|
+
| `dscode` | 启动本地运行时 + 交互 TUI(同时提供 Web UI 与 API) |
|
|
453
|
+
| `dscode exec "<任务>"` | 非交互执行,输出 JSONL(适合脚本与 CI) |
|
|
454
|
+
| `dscode exec --file ./task.txt --text` | 从文件读任务,输出纯文本 |
|
|
455
|
+
| `dscode codeview --focus security` | AI 代码审查(可指定关注点并落盘报告) |
|
|
456
|
+
| `dscode test-fix --retries 5` | 自动修复测试循环 |
|
|
457
|
+
| `dscode --resume [id]` | 恢复上一次(或指定)会话 |
|
|
458
|
+
|
|
459
|
+
### 常见问题
|
|
460
|
+
|
|
461
|
+
**是开源的吗?** 不是。本项目是闭源专有软件,条款见仓库内 `LICENSE.md`;复制、修改、分发、再授权或销售均需事先获得著作权人的书面许可。
|
|
462
|
+
|
|
463
|
+
**它是模型吗?** 不是。它是跑在你机器上的智能体程序(runtime),自身不带模型 —— 模型由你配置:任何 OpenAI 兼容端点都行,DeepSeek 的模型只是其中一种,本地起一个服务也同样可用。
|
|
464
|
+
|
|
465
|
+
**哪个包才是官方的?** npm 上的 `@deepseekcode/cli`,安装后得到 `dscode` 与 `deepseekcode` 两个命令。同一份构建也会以其他品牌 scope 分发;`@deepseekcode` 是规范名称,项目主页是 https://deepseekcode.github.io/deepseekwork/。
|
|
466
|
+
|
|
467
|
+
**它和 DeepSeek 官方有关系吗?** 没有。DeepSeekCode 是独立项目,与 DeepSeek(深度求索)及任何模型厂商没有隶属、赞助或背书关系;名字指的是驱动模型的运行时,不指代任何模型家族。
|
|
468
|
+
|
|
469
|
+
**代码会上传到哪里?** 运行时、界面、文件操作与 Shell 工具全部在本机执行,中间没有 DeepSeekCode 的云服务;只有到你配置的模型端点的请求会离开本机。
|
|
470
|
+
|
|
471
|
+
**必须联网吗?** 需要能访问一个 OpenAI 兼容端点(可以是本机的兼容服务)。
|
|
472
|
+
|
|
473
|
+
**怎么防止它乱动我的项目?** 三层:权限层(作用域 + auto/ask/deny,超时即拒绝)、`/plan` 只读方案模式、命令沙箱;随时可以 `/pause` 或 `/stop`。
|
|
474
|
+
|
|
475
|
+
**支持 Windows 吗?** 支持,提供 Windows x64 / ARM64 原生二进制(另含 macOS、Linux glibc/musl 的 x64/ARM64);还发布了内置便携 git 的离线包。
|
|
476
|
+
|
|
477
|
+
**配置放在哪?** `~/.agent/` 下(`config.yaml`、`sessions/`、`skills/`、`logs/`)。
|
|
478
|
+
|
|
479
|
+
更新日志(中英对照)见下方 [What's New](#whats-new)。
|
|
480
|
+
|
|
481
|
+
<a name="for-ai-assistants"></a>
|
|
482
|
+
|
|
483
|
+
## For AI assistants and LLM crawlers
|
|
484
|
+
|
|
485
|
+
A machine-readable summary of this project ships inside this package:
|
|
486
|
+
`https://unpkg.com/@deepseekcode/cli/llms.txt` (the same file lives at `llms.txt` in the
|
|
487
|
+
repository). It states what DeepSeekCode is and is not, the official npm coordinates, and the
|
|
488
|
+
platform matrix — so an assistant can describe or cite this package without guessing. The project
|
|
489
|
+
page is https://deepseekcode.github.io/deepseekwork/.
|
|
490
|
+
|
|
491
|
+
<a name="ja"></a>
|
|
492
|
+
|
|
493
|
+
## 日本語
|
|
494
|
+
|
|
495
|
+
**DeepSeekCode はローカルで動く AI コーディングエージェントです。** 1 つのランタイムがターミナル TUI、Web UI、HTTP/WebSocket API の 3 つの画面を提供し、任意の OpenAI 互換モデルで動作します。権限承認レイヤー、読み取り専用のプランモード、実行中に切り替えられる act / goal / chat モードを中心に設計されています。
|
|
496
|
+
|
|
497
|
+
```bash
|
|
498
|
+
npm install -g @deepseekcode/cli
|
|
499
|
+
dscode # ローカルランタイム + ターミナル UI
|
|
500
|
+
dscode exec "src/utils の失敗テストを修正" # 非対話、JSONL 出力
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
Node.js 18 以上が必要です。初回起動時にモデルの設定を案内します。Web UI は `http://localhost:8080`(モデル設定は `/#models`)。
|
|
504
|
+
|
|
505
|
+
主な特徴:
|
|
506
|
+
|
|
507
|
+
- **ターミナル TUI** — キーボード中心の操作。既定は全画面(alt-screen)、`--inline` で通常画面に戻せます。
|
|
508
|
+
- **ローカルランタイム** — `dscode` がエージェント本体と HTTP/WebSocket サーバーを同一プロセスで起動します。別途バックエンドを用意する必要はありません。
|
|
509
|
+
- **権限承認レイヤー** — すべてのツール呼び出しが権限レイヤーを通ります。スコープは `system > project > user > local > session`(狭い方が優先)、ポリシーは `auto` / `ask` / `deny`、リスクの高い呼び出しは AI 分類器に委ねられ、承認のタイムアウトは拒否として扱われます。
|
|
510
|
+
- **読み取り専用のプランモード** — `/plan` で実行前に対象のチェックリストを確認できます。
|
|
511
|
+
- **モード切り替え** — `Shift+Tab` で act · auto-act · goal · auto-goal · chat を切り替え。
|
|
512
|
+
- **サブエージェント / バックグラウンド作業 / ワークフロー** — 独立した作業を委譲し、長時間の処理を切り離して実行できます。
|
|
513
|
+
- **メモリとスキル** — セッションをまたぐ記憶と、`/skills` で挿入できる再利用可能なスキル。
|
|
514
|
+
- **拡張性** — `/mcp` で MCP サーバー、プラグイン、LINE / Slack / WhatsApp / QQ / DingTalk / Feishu の各チャネル。
|
|
515
|
+
- **コマンドサンドボックス** — シェルツールはサンドボックス内で実行され、ポリシーがない場合は実行を拒否します(ホスト側にフォールバックしません)。
|
|
516
|
+
- **テーマ** — dark / light / nord / dracula / monokai / one-dark / tokyo-night。
|
|
517
|
+
|
|
518
|
+
よくある質問:
|
|
519
|
+
|
|
520
|
+
**オープンソースですか?** いいえ。本ソフトウェアはプロプライエタリ(非公開ソース)です。条件は `LICENSE.md` に記載されており、複製・改変・配布・再許諾・販売には著作権者の事前の書面による許可が必要です。
|
|
521
|
+
|
|
522
|
+
**コードはどこかに送られますか?** ランタイム、UI、ファイル操作、シェルツールはすべてローカルで動作します。DeepSeekCode のクラウドサービスは介在せず、設定したモデルエンドポイントへのリクエストのみが外部に出ます。
|
|
523
|
+
|
|
524
|
+
**Windows でも使えますか?** はい。Windows x64 / ARM64 向けのネイティブバイナリを提供しています(macOS、Linux の glibc/musl・x64/ARM64 も同様)。
|
|
525
|
+
|
|
526
|
+
**設定はどこに保存されますか?** `~/.agent/`(`config.yaml`、`sessions/`、`skills/`、`logs/`)。
|
|
527
|
+
|
|
528
|
+
リリースノート(英語・中文)は下の [What's New](#whats-new) を参照してください。
|
|
529
|
+
|
|
530
|
+
<a name="es"></a>
|
|
531
|
+
|
|
532
|
+
## Español
|
|
533
|
+
|
|
534
|
+
**DeepSeekCode es un agente de programación con IA que se ejecuta localmente.** Un único runtime ofrece tres superficies —una interfaz de terminal (TUI), una interfaz web y una API HTTP/WebSocket— y funciona con cualquier modelo compatible con la API de OpenAI. Está construido alrededor de una capa real de permisos y aprobaciones, un modo de plan estrictamente de solo lectura y modos act / goal / chat conmutables en caliente.
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
npm install -g @deepseekcode/cli
|
|
538
|
+
dscode # runtime local + interfaz de terminal
|
|
539
|
+
dscode exec "arregla el test que falla en src/utils" # no interactivo, salida JSONL
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
Requiere Node.js 18 o superior. La primera ejecución te guía en la configuración del modelo. La interfaz web está en `http://localhost:8080` (modelos en `/#models`).
|
|
543
|
+
|
|
544
|
+
Qué incluye:
|
|
545
|
+
|
|
546
|
+
- **TUI de terminal** — interfaz pensada para el teclado. Pantalla completa (alt-screen) por defecto; `--inline` vuelve al modo normal.
|
|
547
|
+
- **Runtime local** — `dscode` inicia el núcleo del agente y el servidor HTTP/WebSocket en el mismo proceso: no hay un backend aparte que instalar.
|
|
548
|
+
- **Capa de permisos** — cada llamada a una herramienta pasa por ella: ámbitos `system > project > user > local > session` (gana el más específico), políticas `auto` / `ask` / `deny`, clasificador de IA opcional para llamadas de riesgo y tiempo de espera que equivale a denegación.
|
|
549
|
+
- **Modo de plan de solo lectura** — `/plan` te muestra una lista de comprobación antes de ejecutar nada.
|
|
550
|
+
- **Modos conmutables** — `Shift+Tab` alterna act · auto-act · goal · auto-goal · chat.
|
|
551
|
+
- **Subagentes, trabajo en segundo plano y flujos de trabajo** — delega tareas aisladas y deja correr trabajos largos sin bloquear el turno.
|
|
552
|
+
- **Memoria y skills** — memoria persistente entre sesiones y skills reutilizables con `/skills`.
|
|
553
|
+
- **Extensible** — servidores MCP con `/mcp`, plugins y canales de mensajería (LINE, Slack, WhatsApp, QQ, DingTalk, Feishu).
|
|
554
|
+
- **Sandbox de comandos** — las herramientas de shell se ejecutan en un sandbox (bwrap en Linux, SBPL en macOS, MXC/Docker en Windows) y se niegan a ejecutar si no hay política, en lugar de recurrir al host.
|
|
555
|
+
- **Temas** — dark, light, nord, dracula, monokai, one-dark, tokyo-night.
|
|
556
|
+
|
|
557
|
+
Preguntas frecuentes:
|
|
558
|
+
|
|
559
|
+
**¿Es código abierto?** No. Es software propietario y de código cerrado; las condiciones están en `LICENSE.md`. Copiarlo, modificarlo, distribuirlo, sublicenciarlo o venderlo requiere autorización previa por escrito del titular de los derechos.
|
|
560
|
+
|
|
561
|
+
**¿Sale mi código de mi máquina?** El runtime, la interfaz, las operaciones de archivos y las herramientas de shell se ejecutan en local; no hay ningún servicio en la nube de DeepSeekCode en medio. Solo salen las peticiones al endpoint de modelo que hayas configurado.
|
|
562
|
+
|
|
563
|
+
**¿Funciona en Windows?** Sí: hay binarios nativos para Windows x64 / ARM64 (además de macOS y Linux glibc/musl en x64/ARM64) y un paquete offline con git portátil.
|
|
564
|
+
|
|
565
|
+
**¿Dónde se guarda la configuración?** En `~/.agent/` (`config.yaml`, `sessions/`, `skills/`, `logs/`).
|
|
566
|
+
|
|
567
|
+
Notas de la versión (inglés y chino) en [What's New](#whats-new).
|
|
568
|
+
|
|
569
|
+
<a name="whats-new"></a>
|
|
570
|
+
|
|
571
|
+
<!-- whatsnew:start -->
|
|
572
|
+
<!-- 由 scripts/generate-changelog.mjs 从 packages/shared/src/changelog.ts 生成,请勿手动编辑;改源后运行 `bun run changelog`。 -->
|
|
573
|
+
|
|
574
|
+
## What's New · 更新日志
|
|
575
|
+
|
|
576
|
+
### 1.0.40 — 2026-10-15
|
|
577
|
+
|
|
578
|
+
可视化产物分层渲染 + 线程与值守 + 记忆/技能收敛
|
|
579
|
+
|
|
580
|
+
Layered visual artifacts, threads & on-duty coverage, memory and skills consolidation
|
|
581
|
+
|
|
582
|
+
**English**
|
|
203
583
|
|
|
204
|
-
|
|
584
|
+
- Layered visual artifacts: flowcharts become indented outlines (character grids are gone), tool results render as inline cards in the transcript, and two new self-contained HTML snapshot kinds — dashboard and analysis — ship with charts and metric cards.
|
|
585
|
+
- Threads & on-duty coverage: project/task threads and session kinds are separated, IM notifications group by project → task instead of collapsing into one line, and a project-manager roster plus a global on-duty seat let a goal reach its own project manager with an honest delivery report.
|
|
586
|
+
- Memory & skills: the memory write/retrieve path is in place (extractor, write agent, search tool) and Chinese-query recall is fixed; skill ids are normalized with a one-off migration of existing data.
|
|
587
|
+
- Dynamic workflows now declare themselves explicitly: `declare_workflow` replaces the filename convention, goal mode blocks agent primitives until a workflow is declared, and the plan syncs with execution through update_plan.
|
|
588
|
+
- Sandbox: the P0 local command sandbox is wired into BashTool (bwrap on Linux, SBPL on macOS, fail-closed when the policy is missing or invalid), with Windows MXC / docker backends added.
|
|
589
|
+
- Channels & connectors: inbound request-signature verification lands for line / slack / whatsapp / qqbot / dingtalk / feishu; the connector catalog gains REA and connector env vars can be declared optional, so a missing engine path no longer blocks the connector.
|
|
590
|
+
- Session persistence hardening: the on-disk format is version-gated with an adjacent migration chain, compaction cut points pair up correctly and orphaned tool results are repairable — a session can no longer be permanently bricked.
|
|
591
|
+
- CLI: a `/skill` category bar, an `/agents` picker, full-depth `@` file indexing and `/btw` side conversations arrive, backed by a static audit and a three-layer dispatch scan of command wiring.
|
|
592
|
+
- Web: the Projects front door is rebuilt with a consistent warm theme and overlay layer, a design-system view arrives with a design-token gate, the right rail gains collapsible session groups and an assistant workbench, and HTML snapshots support charts and metrics.
|
|
593
|
+
- Distribution & install: a one-line installer with mirror racing and an embedded hash, bundled portable git in the offline package, and speech dependencies installed into a dedicated venv (which also works on PEP 668 machines).
|
|
594
|
+
- Release-audit closure: the dead-export checker no longer counts test files as consumers, so "shipped implementation + thorough unit tests + zero production wiring" is finally caught (exposed legacy cases are frozen in a shrink-only ratchet baseline). The first real gap it uncovered is closed: the session secret vault had zero production callers and is now wired to runtime dispose, so rebuilding a runtime in-process no longer leaves session secrets from the previous instance behind.
|
|
595
|
+
- Web: the Tools and Connectors pages now spell out how they divide the work (tools = what the model can call; connectors = whether an external process is installed and connected) and link to each other, so "I turned the connector off, why does it still work?" no longer happens.
|
|
205
596
|
|
|
206
|
-
|
|
597
|
+
**中文**
|
|
207
598
|
|
|
208
|
-
-
|
|
209
|
-
-
|
|
599
|
+
- 可视化产物分层渲染:流程图改为缩进大纲(去掉字符网格),工具结果在会话里内联成卡片;新增 dashboard / analysis 两类自包含 HTML 快照,自带图表与数字卡片。
|
|
600
|
+
- 线程与值守:项目 / 任务线程与 session kind 分流,IM 通知改按「项目 → 任务」分组归并,多线程进度不再糊成一条;项目经理名册与全局值守席位落地,目标可投递到所属项目的经理并如实回报投递结果。
|
|
601
|
+
- 记忆与技能:记忆写入 / 检索链路成型(抽取器、写入 agent、搜索工具),修掉中文提问召回;技能 id 规范化并对旧数据做一次性迁移。
|
|
602
|
+
- 动态工作流改为显式声明:`declare_workflow` 取代文件名约定,goal 模式下未声明即拦截 agent 原语,计划经 update_plan 与执行态同步。
|
|
603
|
+
- 沙箱:本地命令沙箱 P0 接入 BashTool(Linux bwrap / macOS SBPL,策略缺失即拒绝启动),并补上 Windows 的 MXC / docker 后端。
|
|
604
|
+
- 频道与连接器:频道入站请求签名校验落地(line / slack / whatsapp / qqbot / dingtalk / feishu);连接器目录加入 REA,环境变量支持「可选」声明,缺引擎路径不再锁死连接器。
|
|
605
|
+
- 会话持久化加固:落盘格式版本强制 + 相邻迁移链,压缩切点配对对齐、孤儿工具结果可修复,会话不再被永久写死。
|
|
606
|
+
- CLI:新增 `/skill` 分类条、`/agents` 选择器、`@` 文件索引全深度化与 `/btw` 旁问侧会话;命令接线加了静态审计与三层派发扫描。
|
|
607
|
+
- Web:Projects 正门重做并统一暖调主题与遮罩层,新增设计系统视图与设计令牌闸门;右栏可折叠会话区与助手工作台,html 快照支持图表与数字。
|
|
608
|
+
- 分发与安装:新增一键安装脚本(镜像竞速 + 内嵌 hash)、便携 git 内置进离线包,语音依赖改用独立 venv(PEP 668 的机器也能装)。
|
|
609
|
+
- 发布审计收口:死导出检查器不再把测试文件算作「有人用」,于是「实现 + 齐全单测 + 零生产接线」这个最坏组合终于判得死(暴露的存量以只缩不涨的棘轮基线固化);由此揪出的第一个真实缺口已补——会话密钥保管箱原先生产调用点为 0,现已接到 runtime 的 dispose,进程内重建 runtime 不再残留上个实例的会话明文。
|
|
610
|
+
- Web:工具页与连接器页互相说明分工(前者管模型能调用哪些工具,后者管外部进程装没装 / 连没连)并各给一个当场跳过去的入口,不再出现「关掉连接器为什么还能用」这类误判。
|
|
210
611
|
|
|
211
|
-
|
|
612
|
+
_Earlier releases: see the version list on this package page, or `CHANGELOG.md` in the repository (generated from the same source)._
|
|
212
613
|
|
|
213
|
-
|
|
614
|
+
<!-- whatsnew:end -->
|
|
214
615
|
|
|
215
|
-
|
|
216
|
-
into main-screen mode. Before changing anything under `src/ink/` or `src/ink-yoga/`,
|
|
217
|
-
read [`docs/terminal-rendering-invariants.md`](../../docs/terminal-rendering-invariants.md)
|
|
218
|
-
— it lists the hard invariants (layout-cache generations, the alt-screen trailing
|
|
219
|
-
newline, the fd-write ban), the bug behind each one, and the regression test that
|
|
220
|
-
guards it.
|
|
616
|
+
<a name="license"></a>
|
|
221
617
|
|
|
222
618
|
## License
|
|
223
619
|
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# DeepSeekCode 语音转文字(STT)依赖 — 英语 whisper / 中文 FunASR
|
|
2
|
+
#
|
|
3
|
+
# 安装(任选其一):
|
|
4
|
+
# pip install -r packages/stt/requirements.txt
|
|
5
|
+
# 或分别安装:pip install faster-whisper (英语)
|
|
6
|
+
# pip install -U "funasr>=1.1.0,<1.5" modelscope torch (中文)
|
|
7
|
+
#
|
|
8
|
+
# 说明:
|
|
9
|
+
# - torch 体积较大(CPU 版约 200MB+,CUDA 版数 GB)。只有中文后端需要;
|
|
10
|
+
# 如果只使用英语,可以只装 faster-whisper。
|
|
11
|
+
# - funasr 会顺带安装 modelscope(模型下载);但**不会**装 torchaudio
|
|
12
|
+
# (1.4.x 的 Requires-Dist 里没有它,1.4.3 的 wav_frontend 却无条件 import,
|
|
13
|
+
# 1.4.16 起改用内置 funasr.utils.fbank,装了 torchaudio 时仍转发给它)。
|
|
14
|
+
# 所以别指望 pip 帮你补 torchaudio。
|
|
15
|
+
# - Python 3.10+(stt_server.py 用了 PEP 604 的 `X | None` 注解),推荐 3.10~3.12。
|
|
16
|
+
|
|
17
|
+
# 音频容器解码(两个后端共用):PyAV —— OGG/Opus、MP3、M4A 等平台原生格式
|
|
18
|
+
# 给 stt_server.decode_with_av 用;WAV / 裸 f32 走标准库,不需要它。
|
|
19
|
+
# **不需要系统 ffmpeg**:PyAV 的 wheel 自带 FFmpeg 库(av.library_versions 可验),
|
|
20
|
+
# 这正是选 PyAV 而不是 subprocess 调 ffmpeg 的全部理由。
|
|
21
|
+
av>=11
|
|
22
|
+
|
|
23
|
+
# 英语后端:faster-whisper(whisper.cpp 的 Python 绑定,CPU 上快且省内存)
|
|
24
|
+
faster-whisper>=1.0.0
|
|
25
|
+
|
|
26
|
+
# 中文后端:FunASR(阿里达摩院,paraformer-zh 模型)
|
|
27
|
+
# 上限 <1.5 是为了挡住 funasr 大版本的行为漂移:AutoModel 的参数契约
|
|
28
|
+
# (model 只收字符串、标点模型走 punc_model)与 fbank 实现都在小版本间变过。
|
|
29
|
+
# 同时与 sttDownload.ts#sttPackagesFor 保持一致(那份清单是「一键安装」真正执行的东西)。
|
|
30
|
+
funasr>=1.1.0,<1.5
|
|
31
|
+
modelscope>=1.15.0
|
|
32
|
+
torch>=2.0.0
|