diff --git a/.deepagent-code/command/ai-deps.md b/.deepagent-code/command/ai-deps.md
deleted file mode 100644
index 7578a57ae..000000000
--- a/.deepagent-code/command/ai-deps.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-description: "Bump AI sdk dependencies minor / patch versions only"
----
-
-Please read @package.json and @packages/deepagent-code/package.json.
-
-Your job is to look into AI SDK dependencies, figure out if they have versions that can be upgraded (minor or patch versions ONLY no major ignore major changes).
-
-I want a report of every dependency and the version that can be upgraded to.
-What would be even better is if you can give me brief summary of the changes for each dep and a link to the changelog for each dependency, or at least some reference info so I can see what bugs were fixed or new features were added.
-
-Consider using subagents for each dep to save your context window.
-
-Here is a short list of some deps (please be comprehensive tho):
-
-- "ai"
-- "@ai-sdk/openai"
-- "@ai-sdk/anthropic"
-- "@openrouter/ai-sdk-provider"
-- etc, etc
-
-DO NOT upgrade the dependencies yet, just make a list of all dependencies and their versions that can be upgraded to minor or patch versions only.
-
-Write up your findings to ai-sdk-updates.md
diff --git a/.deepagent-code/command/changelog.md b/.deepagent-code/command/changelog.md
deleted file mode 100644
index 739401403..000000000
--- a/.deepagent-code/command/changelog.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-model: deepagent-code/gpt-5.4
----
-
-Create `UPCOMING_CHANGELOG.md` from the structured changelog input below.
-If `UPCOMING_CHANGELOG.md` already exists, ignore its current contents completely.
-Do not preserve, merge, or reuse text from the existing file.
-
-The input already contains the exact commit range since the last non-draft release.
-The commits are already filtered to the release-relevant packages and grouped into
-the release sections. Do not fetch GitHub releases, PRs, or build your own commit list.
-The input may also include a `## Community Contributors Input` section.
-
-Before writing any entry you keep, inspect the real diff with
-`git show --stat --format=''
The AI coding agent that remembers, plans, collaborates, and finishes
+The AI coding agent that remembers, plans, collaborates — and finishes the job
+ +DeepAgent Code 2.0: a durable, crash-safe agent core that completes real work with fewer tokens
English | @@ -16,20 +18,36 @@ --- -DeepAgent Code is an AI coding workspace for work that lasts longer than one prompt. You can ask for a small edit, guide a running task without interrupting it, hand over a migration with objective completion criteria, or bring several specialist agents into a decision — and the work stays coherent across turns, restarts, tools, people, and projects. +DeepAgent Code is an AI coding workspace for work that lasts longer than one prompt. Ask for a small edit, guide a running task without interrupting it, hand over a migration with objective completion criteria, or bring several specialist agents into a decision — the work stays coherent across turns, restarts, tools, people, and projects. -## What makes it different +## What Makes It Different | A typical coding agent | DeepAgent Code | |---|---| -| Understands only what's in the current prompt | **Remembers your project** — sessions survive restarts, and what you taught it is still there tomorrow | -| Searches for files when it needs context | **Understands the project** — code, knowledge, project memory and documents are connected, so it works from what your project actually is | -| Does one task at a time | **Plans and finishes real work** — define a goal once, and it advances through plan → execute → verify → iterate | -| Works alone | **Collaborates with specialists** — bounded subagents, worktree isolation, and an Expert Panel for high-risk decisions | -| Runs only in one place, one model | **Fits your setup** — desktop or terminal, and 75+ model providers with your own API keys | -| Keeps its memory a black box | **Memory you can see and govern** — inspect what it learned, reject what it shouldn't repeat | +| Forgets everything when the process exits | **Durable by construction**: every prompt, tool call, and event is recorded before it runs; crash, restart, resume | +| Only understands the current prompt | **Remembers your project**: what you taught it is still there tomorrow, and you can inspect and govern it | +| Burns tokens narrating bash loops | **Spends tokens on the work**: structured tool calls instead of narrating shell output, with about a third of the baseline's output tokens (details below) | +| Does one task at a time, alone | **Plans and collaborates**: goal loops, isolated worktrees, per-SHA review before anything merges | +| Runs in one place, one model | **Fits your setup**: desktop or terminal, 75+ model providers with your own API keys | + +## What's New in 2.0: The Durable Core + +Version 2.0 rebuilds the runtime around one principle: **record first, then act**. Every prompt, tool call, and event is written to the durable log before it happens. + +- **Durable sessions.** A prompt is saved as a durable record before execution starts. If the process dies mid-run, the session resumes exactly where it stopped, and a retry picks up the same work instead of silently starting a second copy. +- **Event-sourced history.** Session activity is an append-only event log written in the same transaction as the state it describes, so replay, audit, and recovery always agree on what actually happened. +- **Durable multi-agent collaboration.** Delegated work is itself a durable record: every write-capable agent works in an isolated git worktree, commits only its own scoped changes, and is reviewed against the exact commit before anything merges. An out-of-date worker can never overwrite newer work. +- **Write isolation.** A strict plan gate is on by default: writes outside the approved plan are rejected with an explicit error instead of silently landing in your tree. +- **Context that stays small.** Four connected project graphs feed one budgeted context window. Stable instructions stay unchanged from turn to turn while changing state is appended at the end; sent history is byte-stable and shrinks only in one batched pass when the budget is crossed, so provider-side prompt caching stays effective. -Everything below is what this means day to day. +## Fewer Tokens, Fewer Steps, Better Fixes + +On DeepSWE tasks, against the mini-swe-agent baseline with the same model: + +- Output tokens drop to roughly a third of the baseline: structured tool calls replace long stretches of shell-output reasoning, and generated tokens are the most expensive part of the bill. +- On the harder tasks, the average fix-to-pass rate rises from 71.8% to 98.4%. +- About 10% fewer steps on average, with end-to-end wall time on par with the baseline. +- Lower total input tokens: total input runs at roughly 40-80% of the baseline on DeepSWE. Old tool outputs are trimmed by fixed rules and past reasoning is never replayed, so the prompt prefix stays byte-stable, with measured prefix-cache hit rates above 96%. ## One Workspace, Three Ways to Work @@ -38,7 +56,7 @@ Choose the collaboration style that fits the task: | Mode | You provide | DeepAgent does | |---|---|---| | **Auto** | A request | Defines the objective, designs and plans as needed, then executes end to end | -| **Loop** | A goal | Writes an editable `goal+plan.md` and advances it through plan, execute, verify, and iterate ticks | +| **Loop** | A goal | Writes an editable `goal+plan.md` and advances it through plan, execute, verify, and iterate cycles | | **Design** | Your `goal+plan.md` | Executes your design faithfully without redefining its objective or completion criteria | Autonomy and permission are independent. Use **Read-only**, **Request approval**, or **Full access** without changing the collaboration mode. @@ -47,10 +65,10 @@ Autonomy and permission are independent. Use **Read-only**, **Request approval** DeepAgent is built for active collaboration, not fire-and-forget automation. -- **Live steering:** send new guidance while a model turn or tool is running. The message is durably admitted and absorbed at the next safe provider-turn boundary without aborting in-flight work. -- **Goal steering:** guidance sent to an active goal is folded into the next tick, preserving the current tool and plan state. -- **Hot plan editing:** edit a running or paused goal. Stable step IDs, evidence, completed work, and the new plan version carry into the next tick. -- **Explicit queueing:** queue a future activity when the instruction should begin after the current activity instead of changing it. +- **Live steering:** send new guidance while a model turn or tool is running. Your message is saved to the log first, then applied at the next safe pause between model calls. Work in progress is never aborted. +- **Goal steering:** guidance sent to an active goal is folded into the next cycle, preserving the current tool and plan state. +- **Hot plan editing:** edit a running or paused goal. Stable step IDs, evidence, completed work, and the new plan version carry into the next cycle. +- **Explicit queueing:** queue a future task when the instruction should begin after the current one instead of changing it. - **Pause, resume, take over, or roll back:** every long-running workflow has a human control path and a durable audit trail. ## Memory You Can Inspect and Govern @@ -76,7 +94,7 @@ DeepAgent connects four views of the project: 3. **Project memory:** decisions, constraints, environment facts, and learned conventions. 4. **Document graph:** plans, designs, worklogs, evaluations, run context, and evidence. -The Session V2 runner assembles context from explicit sources under a durable Context Epoch. It selects linked evidence within budget, records why each reference was admitted or rejected, and preserves the current goal, constraints, decisions, open questions, next steps, and relevant files during compaction. +The session runtime assembles context only from explicit, recorded sources. It selects linked evidence within budget, records why each reference was kept or dropped, and preserves the current goal, constraints, decisions, open questions, next steps, and relevant files during compaction. Prompt caching remains effective across long runs: stable system instructions stay byte-stable, while plans, steering, budgets, round results, and other volatile state are appended in a dedicated tail block. @@ -92,11 +110,11 @@ Composable domain packs add language, framework, platform, hardware, business, a ### Specialist agents and Expert Panel -DeepAgent can partition independent work across bounded, isolated workers. Delegated runs persist their identity, generation, owner, lease, phase, terminal state, result, and parent delivery, so an exact retry resumes the same work instead of silently starting another worker. Write-capable subagents receive dedicated worktrees, return compact summaries and artifact references, and leave their full transcripts available for inspection. +DeepAgent can partition independent work across bounded, isolated workers. Every delegated run is a durable record of who owns it, what stage it is in, its outcome, and which parent task it reports back to, so a retry resumes that same run instead of silently spawning a duplicate. Write-capable subagents receive dedicated worktrees, return compact summaries and artifact references, and leave their full transcripts available for inspection. -Automatic write collaboration follows a durable Git/PR path. Workers commit only their scoped changes; one Reviewer session checks each exact worker SHA, the coordinator performs serial `--no-ff` merges on the Session branch, and one Senior Reviewer examines the merged batch. Resume, timeout, cancellation, takeover, review feedback, and cleanup are generation-fenced so a stale worker cannot settle or overwrite newer work. +Automatic write collaboration follows a durable Git/PR path. Workers commit only their scoped changes; one Reviewer session checks each exact worker SHA, the coordinator performs serial `--no-ff` merges on the Session branch, and one Senior Reviewer examines the merged batch. Resume, timeout, cancellation, takeover, review feedback, and cleanup are versioned with the work itself, so a stale worker can never finalize or overwrite newer work. -For high-risk decisions, convene an **Expert Panel**. Correctness, security, performance, architecture, and reproducibility lenses review the same frozen question, debate anonymously for up to three rounds, and feed a deterministic arbiter that preserves minority opinions and fails closed to human review. +For high-risk decisions, convene an **Expert Panel**. Correctness, security, performance, architecture, and reproducibility lenses review the same frozen question, debate anonymously for up to three rounds, and feed a deterministic arbiter that preserves minority opinions and defers to human review when it cannot reach a safe verdict. ### Team and agent messaging @@ -109,7 +127,7 @@ Project IM brings people and agents into the same thread. Mention an agent to st ```bash # Install script (macOS / Linux) -curl -fsSL https://deepagent.ltd/install | bash +curl -fsSL https://ai.deepagent.ltd/download/install | bash ``` Then run: @@ -122,10 +140,10 @@ deepagent ## Adding a Model Provider -### DeepAgent API — our own platform (recommended) +### DeepAgent API: the official platform (recommended) If you want the experience DeepAgent Code is tuned around, use the official -**DeepAgent API Platform** ([api.deepagent.ltd](https://api.deepagent.ltd)) — a +**DeepAgent API Platform** ([api.deepagent.ltd](https://api.deepagent.ltd)), a secure model API service for DeepAgent applications with GPT and DeepSeek families over Chat Completions and Responses, plus Anthropic-compatible endpoints. Get a key from the platform console, check plan prices on @@ -135,7 +153,7 @@ endpoints. Get a key from the platform console, check plan prices on ### Any other provider DeepAgent Code is provider-agnostic. It supports 75+ providers through the -[AI SDK](https://ai-sdk.dev/) and [models.dev](https://models.dev), plus any +[AI SDK](https://ai-sdk.dev/) and models.dev, plus any OpenAI- or Anthropic-compatible endpoint. ### Desktop app (recommended) @@ -145,9 +163,9 @@ Open **Settings → Providers**: - **Official providers** (DeepAgent, OpenAI, Anthropic, DeepSeek, Google, xAI, ZhipuAI/GLM): click **Connect**, paste your API key. - **Any other provider or gateway**: click **Connect** on *Custom provider*, paste - the **Base URL** and **API key**. DeepAgent Code auto-detects the protocol - (OpenAI-compatible or Anthropic) and discovers the available models from the - endpoint's `/models` list — you don't have to fill anything else. + the **Base URL** and **API key**. DeepAgent Code infers the API protocol family + (OpenAI-compatible or Anthropic) from the provider's SDK package and discovers + the available models from the endpoint's `/models` list — nothing else to fill in. Model specs (context window, reasoning) are auto-filled by matching each model against the models.dev catalog. You can reopen a custom provider to override a @@ -166,9 +184,7 @@ deepagent auth list ### Config file -Providers also live in `~/.deepagent/code/config.jsonc`. A custom -OpenAI-compatible endpoint looks like this — set `discovery: true` to have models -refreshed from the endpoint at runtime, or list them explicitly under `models`: +Providers also live in `~/.deepagent/code/config.jsonc`. A custom OpenAI-compatible endpoint looks like this: set `discovery: true` to have models refreshed from the endpoint at runtime, or list them explicitly under `models`: ```jsonc { @@ -190,10 +206,10 @@ refreshed from the endpoint at runtime, or list them explicitly under `models`: Official-provider keys added via the app/CLI are stored separately in `~/.deepagent/code/auth.json`, not in the config file. Full reference (base URL overrides, headers, per-model config, gateways) lives in the -[DeepAgent API Platform docs](https://api.deepagent.ltd/) — or explore +[DeepAgent API Platform docs](https://api.deepagent.ltd/), or explore supported models and plans on [Model Square pricing](https://api.deepagent.ltd/pricing). -All DeepAgent Code private filesystem data lives under `~/.deepagent/code/`, including configuration, credential references, databases, Desktop state, logs, caches, and temporary files. Native secret values remain in the operating system's credential store. Tests use explicit isolated roots and cannot redirect production storage through ordinary environment variables. +All DeepAgent Code private filesystem data lives under `~/.deepagent/code/`, including configuration, credential references, databases, Desktop state, logs, caches, and temporary files. Native secret values remain in the operating system's credential store. Tests run against explicitly isolated directories; even environment variables cannot redirect where production data is stored. ## Quick Example @@ -213,17 +229,21 @@ The agent will: On your next session, when you ask to add rate limiting elsewhere, the agent already knows the pattern. -## How It Works (under the hood) +## How It Works (Under the Hood) + +**Durable session core**: Prompts become durable records before execution; a single serialized runner turns them into visible messages at safe points. Steering messages merge into the running task, queued instructions start one at a time after it, and interrupts land precisely on the work that is actually running. + +**Event graph**: Session activity, task runs, and evidence are event-sourced, written in the same transaction as the state they describe, so replay and recovery agree with what actually happened. -**Document graph** — All persistent state lives in typed documents: `knowledge`, `strategy`, `methodology`, `skill`, `memory`, `design`, `worklog`, `diagnosis`, `eval`. Documents link to each other (supports/blocks/conflicts/validates), forming a graph you can traverse. +**Document graph**: All persistent state lives in typed documents: `knowledge`, `strategy`, `methodology`, `skill`, `memory`, `design`, `worklog`, `diagnosis`, `eval`. Documents link to each other (supports/blocks/conflicts/validates), forming a graph you can traverse. -**Scope layers** — `session-private` (current conversation), `project-shared` (all sessions in this project), `user-global` (cross-project preferences), `public-system` (built-in skills), `sealed` (audit-only, never enters context). +**Scope layers**: `session-private` (current conversation), `project-shared` (all sessions in this project), `user-global` (cross-project preferences), `public-system` (built-in skills), `sealed` (audit-only, never enters context). -**Context admission** — Retrieval hits pass through admission gates. Full tool output (raw LSP dumps, diagnostics, capability indexes) is written to evidence artifacts, ref-linked and tool-only; only summaries and `file:line` snippets enter the model context. Sensitive values (SSH hosts, tokens, internal paths) are suggested, never auto-expanded. +**Context admission**: Retrieval hits pass through admission gates. Full tool output (raw LSP dumps, diagnostics, capability indexes) is written to evidence artifacts, ref-linked and tool-only; only summaries and `file:line` snippets enter the model context. The agent may point at sensitive values (SSH hosts, tokens, internal paths) but never pastes the raw value into context. -**AI IDE microservice** — Query code by symbol name and intent (e.g. `code_intel({ symbol: "AgentGateway.open", intent: "overview" })`), not file:line coordinates. Get definitions, references, call chains, type hierarchies, and diagnostics in one call. Built on LSP with 38+ language servers; degrades gracefully to grep/read when no server is configured. +**AI IDE microservice**: Query code by symbol name and intent (e.g. `code_intel({ symbol: "AgentGateway.open", intent: "overview" })`), not file:line coordinates. Get definitions, references, call chains, type hierarchies, and diagnostics in one call. Built on LSP with 38+ language servers; degrades gracefully to grep/read when no server is configured. -**Preset MCP catalog** — Curated MCP servers for Git platforms, file search, read-only databases, and browser automation. Risk tiers are derived at load time from the catalog template (not user config, so they can't be injected), and servers default to not-connected with write and external-fetch operations behind approval gates. +**Preset MCP catalog**: Curated MCP servers for Git platforms, file search, read-only databases, and browser automation. Risk tiers are derived at load time from the catalog template (not user config, so they can't be injected), and servers default to not-connected with write and external-fetch operations behind approval gates. The full architecture and its invariants are documented in [Architecture & Design](design/README.md). @@ -269,6 +289,7 @@ bun run --cwd packages/deepagent-code dev import-history --from codex --dry-run - [Security Policy](SECURITY.md) - [Privacy Policy](PRIVACY.md) - [Contributing](CONTRIBUTING.md) +- [Code of Conduct](CODE_OF_CONDUCT.md) - [Changelog](CHANGELOG.md) ## License & Attribution diff --git a/README.zh.md b/README.zh.md index 86ad65d9a..f7ce78ba4 100644 --- a/README.zh.md +++ b/README.zh.md @@ -8,6 +8,8 @@
会记忆、会规划、会协作,也能把工作真正做完的 AI 编程智能体
+DeepAgent Code 2.0:持久化、崩溃可恢复的智能体内核,用更少的 token 完成真实工作
+
English |
简体中文 |
@@ -16,20 +18,36 @@
---
-DeepAgent Code 是一套面向长期工作的 AI 编程工作区。你可以让它完成一次小改动,在任务运行中继续补充指令,把一场迁移交给带客观完成判据的目标回路,或者召集多位专家共同审阅一项决策——工作会在多轮对话、进程重启、工具调用、团队成员和不同项目之间保持连贯。
+DeepAgent Code 是一个面向长期任务的 AI 编程工作区。你可以让它改一个小地方,在任务运行中随时补充指令,把一场迁移交给带客观完成判据的目标回路,或者召集多位专家共同审阅一项决策——无论哪种,工作都会在多轮对话、进程重启、工具调用、团队成员和不同项目之间保持连贯。
## 它和其他编程智能体有什么区别
| 常见的编程智能体 | DeepAgent Code |
|---|---|
-| 只理解当前 prompt 里的内容 | **记得你的项目**——会话跨重启存活,你教过它的东西第二天还在 |
-| 需要临时搜索文件才能拿到上下文 | **理解项目本身**——代码、知识、项目记忆与文档相互连接,它基于项目「实际是什么」工作 |
-| 一次只能做一个任务 | **规划并把真实工作做完**——定一个目标,自动推进计划 → 执行 → 校验 → 迭代 |
-| 单打独斗 | **与专家协作**——有界子智能体、独立 worktree,高风险决策交给 Expert Panel |
-| 只能在一种环境、一个模型上运行 | **适配你的环境**——桌面或终端,75+ 模型供应商、使用你自己的 API Key |
-| 记忆是黑盒 | **记忆看得见、管得住**——可以检查它学到了什么,也能拒绝它不该重复的东西 |
+| 进程退出就忘掉一切 | **天然持久**:每条 prompt、每次工具调用、每个事件都先落盘再执行;崩溃重启后精确续跑 |
+| 只理解当前 prompt 里的内容 | **记得你的项目**:你教过它的东西第二天还在,而且看得见、管得住 |
+| 用大段 shell 叙述烧 token | **把 token 花在工作上**:结构化工具调用取代一遍遍转述的 shell 输出,输出 token 约为基线的三分之一(见下文) |
+| 一次一个任务、单打独斗 | **规划并协作**:目标回路、独立 worktree、逐 SHA 审阅之后才合并 |
+| 只能在一种环境、一个模型上运行 | **适配你的环境**:桌面或终端,75+ 模型供应商,用你自己的 API Key |
+
+## 2.0 新特性:持久化内核
+
+2.0 版本围绕一条原则重建了运行时:**先记录,再执行**。每条 prompt、每次工具调用、每个事件,都会在真正发生之前先写入本地持久日志。
+
+- **持久会话。** prompt 在执行开始前先保存为持久记录。进程中途崩溃,会话从断点精确恢复;重试接起的是同一项工作,而不是悄悄另起一份。
+- **事件溯源的历史。** 会话活动是一份只追加的事件日志,与它所描述的状态在同一事务中写入,回放、审计与恢复读到的永远是同一份事实。
+- **持久化多智能体协作。** 委派工作本身就是一条持久记录:每个可写智能体在独立 git worktree 中工作,只提交自己作用域内的改动,并且要经过绑定精确提交的审阅才会合并。过期的 Worker 永远无法覆盖较新的工作。
+- **写隔离。** 严格计划门默认开启:越出已批准计划的写入会被显式拒绝并报错,而不是静默落进你的代码树。
+- **上下文保持精简。** 四张相互关联的项目图汇入同一个有预算约束的上下文窗口:稳定指令逐轮保持不变,易变状态只追加在末尾;已发送的历史逐字节稳定,只在跨过预算线时一次性批量收缩,让供应商的前缀缓存持续命中。
-下面这些内容就是这些能力在日常中的样子。
+## 更少的 token,更少的步骤,更好的解决
+
+在 DeepSWE 任务上,以相同模型对照 mini-swe-agent 基线:
+
+- 输出 token 降至基线的约三分之一:结构化工具调用取代大段 shell 推理转述,而生成 token 恰恰是账单里最贵的部分。
+- 较难的任务上修复通过率平均从 71.8% 提升到 98.4%。
+- 平均步数少约 10%,端到端耗时与基线持平。
+- 输入 token 总量更低:DeepSWE 上总输入约为基线的四到八成。旧工具输出按固定规则截断,既往思考不回放,提示词前缀逐字节稳定,实测前缀缓存命中率在 96% 以上。
## 一个工作区,三种协作方式
@@ -38,19 +56,19 @@ DeepAgent Code 是一套面向长期工作的 AI 编程工作区。你可以让
| 模式 | 你提供 | DeepAgent 负责 |
|---|---|---|
| **自动(Auto)** | 一项需求 | 自行明确目标,按需设计和规划,再端到端执行 |
-| **循环(Loop)** | 一个目标 | 生成可编辑的 `goal+plan.md`,按计划、执行、校验、迭代逐 tick 推进 |
+| **循环(Loop)** | 一个目标 | 生成可编辑的 `goal+plan.md`,按计划、执行、校验、迭代逐轮推进 |
| **设计(Design)** | 你编写的 `goal+plan.md` | 忠实执行你的设计,不重新定义目标或完成判据 |
自主程度和权限相互独立。你可以在不改变协作模式的情况下选择**只读**、**请求批准**或**完全访问**。
## 它在工作,你仍然掌控全局
-DeepAgent 为持续协作而设计,不是一个发出指令后只能等待的黑盒。
+DeepAgent 为持续协作而设计,不是一个发出指令后只能干等的黑盒。
-- **实时 Steering:** 模型或工具仍在运行时继续发送指导。消息会先持久化,再在下一个安全的供应商轮次边界被吸收,不会中断在飞工作。
-- **Goal Steering:** 发给活跃目标的指导会进入下一个 tick,同时保留当前工具状态和计划状态。
-- **运行中计划热编辑:** 编辑正在运行或已暂停的目标。稳定的步骤 ID、证据、已完成工作和新计划版本会一起进入下一 tick。
-- **显式排队:** 当一条指令应该在当前 activity 结束后独立开始时,把它放入未来队列,而不是改变当前工作。
+- **实时引导(Live Steering):** 模型或工具还在运行时,你可以继续发指令。消息先写入日志,再在模型调用之间的下一个安全时机并入,绝不中断正在执行的工作。
+- **目标引导(Goal Steering):** 发给活跃目标的指导会进入下一轮,同时保留当前工具和计划状态。
+- **运行中计划热编辑:** 编辑正在运行或已暂停的目标。稳定的步骤 ID、证据、已完成工作和新计划版本会一起进入下一轮。
+- **显式排队:** 当一条指令应该在当前任务结束后独立开始时,把它放入未来队列,而不是改变当前工作。
- **暂停、恢复、接管或回滚:** 每个长跑流程都有清晰的人类控制路径和持久审计记录。
## 看得见、管得住的记忆
@@ -63,7 +81,7 @@ DeepAgent 不会把记忆藏在不可见的提示词里。项目状态保存在
- 内置技能与领域包保持系统级版本管理。
- 封存的评测材料仅用于审计,永不进入模型上下文。
-学习遵循可治理的生命周期:证据生成候选,隔离审阅或人工决策改变候选状态,回归与消融门发布可复现的知识快照。拒绝理由会持久保存,因此被淘汰的模式不会在后台被悄悄重新学习。
+学习遵循可治理的生命周期:证据产生候选,隔离审阅或人工决策改变候选状态,回归与消融门禁发布可复现的知识快照。被拒绝的理由会持久保存,被淘汰的模式不会在后台悄悄复活。
**仓库与百科(Repo & Wiki)** 让这套系统对人可读。你可以浏览知识与执行档案、搜索整个仓库、沿文档到代码的链接探索上下文、检查来源链,并把有价值的运行证据升格为受治理知识。
@@ -76,11 +94,11 @@ DeepAgent 把项目的四个视图连接在一起:
3. **项目记忆:** 决策、约束、环境事实与已学习的项目约定。
4. **文档图:** 计划、设计、工作日志、评测、运行上下文与证据。
-Session V2 运行器在持久 Context Epoch 下从明确的 Context Source 装配上下文。它在预算内选择相互关联的证据,记录每条引用为什么被准入或拒绝,并在压缩时保留当前目标、约束、决策、开放问题、后续步骤与相关文件。
+会话运行时只从明确记录的来源装配上下文:在预算内选择相互关联的证据,记录每条引用为什么被保留或舍弃,并在压缩时保留当前目标、约束、决策、开放问题、后续步骤与相关文件。
-长跑任务也能持续命中提示词缓存:稳定 system 指令保持字节级稳定,计划、Steering、预算、轮次结果等易变状态只追加到独立的尾部区块。
+长跑任务也能持续命中提示词缓存:system 指令保持字节级不变,计划、引导、预算、轮次结果等易变状态只追加到独立的尾部区块。
-## 为困难工作而生
+## 为复杂任务而生
### AI IDE
@@ -92,15 +110,15 @@ Session V2 运行器在持久 Context Epoch 下从明确的 Context Source 装
### 专业子智能体与 Expert Panel
-DeepAgent 可以把独立工作拆分给数量有界、相互隔离的 Worker。委派运行会持久化自己的身份、generation、owner、lease、阶段、终态、结果和父会话投递,因此 exact retry 会恢复同一项工作,而不是静默启动另一个 Worker。具备写权限的子智能体获得独立 worktree,只向父会话返回紧凑摘要和工件引用,完整执行记录仍可随时查看。
+DeepAgent 可以把独立工作拆分给数量有界、相互隔离的 Worker。每次委派运行都是一条持久记录,记下它归属于谁、处于哪个阶段、结果如何、向哪个父任务回报,因此重试会恢复同一次运行,而不是静默再起一个重复的 Worker。具备写权限的子智能体获得独立 worktree,只向父会话返回紧凑摘要和工件引用,完整执行记录仍可随时查看。
-自动写协作走一条持久 Git/PR 路径。Worker 只提交其作用域内的改动;同一个普通 Reviewer Session 按精确 Worker SHA 逐项审阅,协调器在 Session 分支上串行执行 `--no-ff` merge,再由同一个 Senior Reviewer Session 审阅合并后的完整批次。恢复、超时、取消、接管、审阅反馈和清理都受 generation fence 保护,过期 Worker 无法结算或覆盖较新的工作。
+自动写协作走一条持久 Git/PR 路径。Worker 只提交其作用域内的改动;一个 Reviewer Session 按精确 Worker SHA 逐项审阅,协调器在 Session 分支上串行执行 `--no-ff` merge,再由同一个 Senior Reviewer Session 审阅合并后的完整批次。恢复、超时、取消、接管、审阅反馈和清理都与工作版本绑定,过期的 Worker 无法敲定或覆盖较新的工作。
-高风险决策可以召集 **Expert Panel**。正确性、安全、性能、架构与可复现性等专家视角审阅同一个冻结问题,进行最多三轮匿名辩论,再由确定性仲裁器生成裁定。少数派意见会被保留,无法安全达成一致时会失败关闭并交给人类。
+高风险决策可以召集 **Expert Panel**。正确性、安全、性能、架构与可复现性等专家视角审阅同一个冻结问题,进行最多三轮匿名辩论,再由确定性仲裁器生成裁定。少数派意见会被保留;无法安全达成一致时,交由人工裁决。
### 团队与智能体消息
-项目 IM 把团队成员和智能体放进同一条讨论。@ 某个智能体即可启动有明确作用域的运行,使用项目上下文、流式展示进度、关联执行工件,并把答案留在发起任务的对话里。
+项目内即时消息(IM)把团队成员和智能体拉进同一条讨论。@ 某个智能体即可启动一次有明确作用域的运行:它会带上项目上下文、流式展示进度、关联执行工件,并把答案留在发起任务的对话里。
## 安装
@@ -109,7 +127,7 @@ DeepAgent 可以把独立工作拆分给数量有界、相互隔离的 Worker。
```bash
# 安装脚本(macOS / Linux)
-curl -fsSL https://deepagent.ltd/install | bash
+curl -fsSL https://ai.deepagent.ltd/download/install | bash
```
然后运行:
@@ -122,10 +140,10 @@ deepagent
## 添加供应商
-### DeepAgent API —— 我们自己的平台(推荐)
+### DeepAgent API:官方平台(推荐)
-如果你想要 DeepAgent Code 最顺畅的体验,请使用官方 **DeepAgent API 平台**
-([api.deepagent.ltd](https://api.deepagent.ltd))——为 DeepAgent 应用提供安全模型 API 的官方服务,
+DeepAgent Code 默认针对 DeepAgent API 调优。如需最契合的体验,请使用官方 **DeepAgent API 平台**
+([api.deepagent.ltd](https://api.deepagent.ltd)),为 DeepAgent 应用提供安全模型 API 的官方服务,
覆盖 GPT 与 DeepSeek 家族的 Chat Completions 与 Responses 协议,并提供 Anthropic 兼容端点。
在平台控制台获取 API Key,在 [Model Square 定价页](https://api.deepagent.ltd/pricing)查看套餐价格,
然后打开 **设置 → 供应商 → DeepAgent → 连接**,粘贴 Key 即可开始。
@@ -133,7 +151,7 @@ deepagent
### 其他任何供应商
DeepAgent Code 不绑定供应商。它通过
-[AI SDK](https://ai-sdk.dev/) 和 [models.dev](https://models.dev) 支持 75+ 家供应商,
+[AI SDK](https://ai-sdk.dev/) 和 models.dev 支持 75+ 家供应商,
以及任意 OpenAI 或 Anthropic 兼容的接口。
### 桌面应用(推荐)
@@ -143,8 +161,8 @@ DeepAgent Code 不绑定供应商。它通过
- **官方供应商**(DeepAgent、OpenAI、Anthropic、DeepSeek、Google、xAI、智谱/GLM):点击
**连接**,粘贴你的 API Key。
- **其他供应商或网关**:在「自定义供应商」上点击 **连接**,填入 **Base URL** 和
- **API Key**。DeepAgent Code 会自动探测协议(OpenAI 兼容或 Anthropic),并从接口的
- `/models` 列表自动发现可用模型——其余字段无需填写。
+ **API Key**。DeepAgent Code 按供应商 SDK 包判定 API 协议族(OpenAI 兼容或 Anthropic),并从接口的
+ `/models` 列表自动发现可用模型,其余字段无需填写。
模型规格(上下文窗口、推理能力)会通过与 models.dev 目录按模型 id 匹配来自动补全。
你可以再次打开自定义供应商,覆盖某个模型的上下文/推理/温度;这些覆盖为尽力而为的默认值,
@@ -162,8 +180,8 @@ deepagent auth list
### 配置文件
-供应商也保存在 `~/.deepagent/code/config.jsonc` 中。一个自定义 OpenAI 兼容接口如下——
-设 `discovery: true` 让模型在运行时从接口刷新,或在 `models` 下显式列出:
+供应商也保存在 `~/.deepagent/code/config.jsonc` 中。一个自定义 OpenAI 兼容接口的配置如下:
+设 `discovery: true` 让模型列表在运行时从接口刷新,或在 `models` 下显式列出:
```jsonc
{
@@ -187,7 +205,7 @@ deepagent auth list
[DeepAgent API 平台文档](https://api.deepagent.ltd/);支持的模型与套餐见
[Model Square 定价](https://api.deepagent.ltd/pricing)。
-DeepAgent Code 的所有私有文件数据都位于 `~/.deepagent/code/`,包括配置、凭据引用、数据库、桌面状态、日志、缓存和临时文件;原生 secret 值仍由操作系统凭据存储保管。测试使用显式隔离的数据根,普通环境变量不能重定向生产存储。
+DeepAgent Code 的所有私有文件数据都位于 `~/.deepagent/code/`,包括配置、凭据引用、数据库、桌面状态、日志、缓存和临时文件;原生 secret 值仍由操作系统凭据存储保管。测试使用显式隔离的独立目录;即使通过环境变量也无法重定向生产数据的存储位置。
## 快速示例
@@ -209,15 +227,19 @@ deepagent-code run "为 /api/users 端点添加限流"
## 工作原理(技术内幕)
-**文档图** — 所有持久状态都存放在带类型的文档里:`knowledge`、`strategy`、`methodology`、`skill`、`memory`、`design`、`worklog`、`diagnosis`、`eval`。文档之间相互链接(支持/阻断/冲突/校验),构成一张可遍历的图。
+**持久会话内核**:prompt 先成为持久记录,再由单一串行执行器在安全点转为可见消息。Steering 消息并入正在运行的任务,排队指令在其结束后逐个开启,中断精确命中真正在运行的那份工作。
+
+**事件图**:会话活动、任务运行与证据全部事件溯源化,与它们所描述的状态在同一事务中写入,回放与恢复始终和事实一致。
+
+**文档图**:所有持久状态都存放在带类型的文档里:`knowledge`、`strategy`、`methodology`、`skill`、`memory`、`design`、`worklog`、`diagnosis`、`eval`。文档之间相互链接(支持/阻断/冲突/校验),构成一张可遍历的图。
-**作用域分层** — `session-private`(当前对话)、`project-shared`(本项目所有会话)、`user-global`(跨项目偏好)、`public-system`(内置技能)、`sealed`(仅供审计,永不进入上下文)。
+**作用域分层**:`session-private`(当前对话)、`project-shared`(本项目所有会话)、`user-global`(跨项目偏好)、`public-system`(内置技能)、`sealed`(仅供审计,永不进入上下文)。
-**上下文准入** — 检索命中要经过准入门。完整的工具输出(原始 LSP 转储、诊断、能力索引)被写入证据工件,带引用链接、仅工具可见;只有摘要与 `file:line` 片段进入模型上下文。敏感值(SSH 主机、令牌、内部路径)只被建议、绝不自动展开。
+**上下文准入**:检索命中要经过准入门。完整的工具输出(原始 LSP 转储、诊断、能力索引)被写入证据工件,带引用链接、仅工具可见;只有摘要与 `file:line` 片段进入模型上下文。对于敏感值(SSH 主机、令牌、内部路径),智能体只会指出位置,绝不把原始值贴进上下文。
-**AI IDE 微服务** — 按符号名与意图查询代码(例如 `code_intel({ symbol: "AgentGateway.open", intent: "overview" })`),而非按 file:line 坐标。一次调用即可拿到定义、引用、调用链、类型层级与诊断。基于 LSP、支持 38+ 种语言服务器;当某文件类型未配置服务器时,优雅降级到 grep/read。
+**AI IDE 微服务**:按符号名与意图查询代码(例如 `code_intel({ symbol: "AgentGateway.open", intent: "overview" })`),而非按 file:line 坐标。一次调用即可拿到定义、引用、调用链、类型层级与诊断。基于 LSP,支持 38+ 种语言服务器;没有配置语言服务器的文件类型会自动回退到 grep/read。
-**预置 MCP 目录** — 面向 Git 平台、文件搜索、只读数据库与浏览器自动化的精选 MCP 服务器。风险等级在加载时由目录模板推导(不来自用户配置,因而无法被注入),服务器默认不连接,写操作与外部请求置于审批门之后。
+**预置 MCP 目录**:面向 Git 平台、文件搜索、只读数据库与浏览器自动化的精选 MCP 服务器。风险等级在加载时由目录模板推导(不来自用户配置,因而无法被注入),服务器默认不连接,写操作与外部请求置于审批门之后。
完整架构与不变量见 [架构与设计](design/README.md)。
@@ -263,6 +285,7 @@ bun run --cwd packages/deepagent-code dev import-history --from codex --dry-run
- [安全策略](SECURITY.md)
- [隐私策略](PRIVACY.md)
- [贡献指南](CONTRIBUTING.md)
+- [行为准则](CODE_OF_CONDUCT.md)
- [更新日志](CHANGELOG.md)
## 许可与署名
diff --git a/bun.lock b/bun.lock
index a5c29ab10..10818a956 100644
--- a/bun.lock
+++ b/bun.lock
@@ -3,7 +3,7 @@
"configVersion": 1,
"workspaces": {
"": {
- "name": "opencode",
+ "name": "deepagent-code",
"dependencies": {
"@aws-sdk/client-s3": "3.933.0",
"@deepagent-code/plugin": "workspace:*",
@@ -106,7 +106,6 @@
"name": "@deepagent-code/cli",
"version": "2.0.0-beta.0",
"bin": {
- "dacode": "./bin/lildax.cjs",
"lildax": "./bin/lildax.cjs",
},
"dependencies": {
@@ -131,9 +130,6 @@
"packages/core": {
"name": "@deepagent-code/core",
"version": "2.0.0-beta.0",
- "bin": {
- "deepagent-code": "./bin/deepagent-code",
- },
"dependencies": {
"@ai-sdk/alibaba": "1.0.17",
"@ai-sdk/amazon-bedrock": "4.0.112",
@@ -174,6 +170,7 @@
"@parcel/watcher": "2.5.1",
"@silvia-odwyer/photon-node": "0.3.4",
"ai-gateway-provider": "3.1.2",
+ "ajv": "8.20.0",
"bun-pty": "0.4.8",
"cross-spawn": "catalog:",
"drizzle-orm": "catalog:",
@@ -443,6 +440,7 @@
},
"devDependencies": {
"@tsconfig/node22": "22.0.2",
+ "@types/bun": "catalog:",
"@types/node": "catalog:",
"@types/ws": "8.18.1",
"typescript": "catalog:",
@@ -1419,6 +1417,32 @@
"@lezer/rust": ["@lezer/rust@1.0.2", "", { "dependencies": { "@lezer/common": "^1.2.0", "@lezer/highlight": "^1.0.0", "@lezer/lr": "^1.0.0" } }, "sha512-Lz5sIPBdF2FUXcWeCu1//ojFAZqzTQNRga0aYv6dYXqJqPfMdCAI0NzajWUd4Xijj1IKJLtjoXRPMvTKWBcqKg=="],
+ "@libsql/client": ["@libsql/client@0.18.0", "", { "dependencies": { "@libsql/core": "^0.18.0", "@libsql/hrana-client": "^0.10.0", "js-base64": "^3.7.5", "libsql": "^0.5.28", "promise-limit": "^2.7.0" } }, "sha512-zMCCo58vv7w27j7+cnt/GW+X6/Rih6cHZ86PKi0AxCMOqMfrVgG9OZ5lW2bDMJhSeOjsv2szH2nJF3A9l36UmA=="],
+
+ "@libsql/core": ["@libsql/core@0.18.0", "", { "dependencies": { "js-base64": "^3.7.5" } }, "sha512-N8RR2CIpcgtbKZnXs2KVpw2lJQfinUj3I56e7qRDRpK18Hty0Rr8nr00VmFb4R/DsqOanPB/TaP3+QAQLZeXMg=="],
+
+ "@libsql/darwin-arm64": ["@libsql/darwin-arm64@0.5.29", "", { "os": "darwin", "cpu": "arm64" }, "sha512-K+2RIB1OGFPYQbfay48GakLhqf3ArcbHqPFu7EZiaUcRgFcdw8RoltsMyvbj5ix2fY0HV3Q3Ioa/ByvQdaSM0A=="],
+
+ "@libsql/darwin-x64": ["@libsql/darwin-x64@0.5.29", "", { "os": "darwin", "cpu": "x64" }, "sha512-OtT+KFHsKFy1R5FVadr8FJ2Bb1mghtXTyJkxv0trocq7NuHntSki1eUbxpO5ezJesDvBlqFjnWaYYY516QNLhQ=="],
+
+ "@libsql/hrana-client": ["@libsql/hrana-client@0.10.0", "", { "dependencies": { "@libsql/isomorphic-ws": "^0.1.5", "js-base64": "^3.7.5" } }, "sha512-OoA4EMqRAC7kn7V2P6EQqRcpZf2W+AjsNIyCizBg339Tq/aMC7sRnzs3SklderhmQWAqEzvv8A2vhxVmWpkVvw=="],
+
+ "@libsql/isomorphic-ws": ["@libsql/isomorphic-ws@0.1.5", "", { "dependencies": { "@types/ws": "^8.5.4", "ws": "^8.13.0" } }, "sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg=="],
+
+ "@libsql/linux-arm-gnueabihf": ["@libsql/linux-arm-gnueabihf@0.5.29", "", { "os": "linux", "cpu": "arm" }, "sha512-CD4n4zj7SJTHso4nf5cuMoWoMSS7asn5hHygsDuhRl8jjjCTT3yE+xdUvI4J7zsyb53VO5ISh4cwwOtf6k2UhQ=="],
+
+ "@libsql/linux-arm-musleabihf": ["@libsql/linux-arm-musleabihf@0.5.29", "", { "os": "linux", "cpu": "arm" }, "sha512-2Z9qBVpEJV7OeflzIR3+l5yAd4uTOLxklScYTwpZnkm2vDSGlC1PRlueLaufc4EFITkLKXK2MWBpexuNJfMVcg=="],
+
+ "@libsql/linux-arm64-gnu": ["@libsql/linux-arm64-gnu@0.5.29", "", { "os": "linux", "cpu": "arm64" }, "sha512-gURBqaiXIGGwFNEaUj8Ldk7Hps4STtG+31aEidCk5evMMdtsdfL3HPCpvys+ZF/tkOs2MWlRWoSq7SOuCE9k3w=="],
+
+ "@libsql/linux-arm64-musl": ["@libsql/linux-arm64-musl@0.5.29", "", { "os": "linux", "cpu": "arm64" }, "sha512-fwgYZ0H8mUkyVqXZHF3mT/92iIh1N94Owi/f66cPVNsk9BdGKq5gVpoKO+7UxaNzuEH1roJp2QEwsCZMvBLpqg=="],
+
+ "@libsql/linux-x64-gnu": ["@libsql/linux-x64-gnu@0.5.29", "", { "os": "linux", "cpu": "x64" }, "sha512-y14V0vY0nmMC6G0pHeJcEarcnGU2H6cm21ZceRkacWHvQAEhAG0latQkCtoS2njFOXiYIg+JYPfAoWKbi82rkg=="],
+
+ "@libsql/linux-x64-musl": ["@libsql/linux-x64-musl@0.5.29", "", { "os": "linux", "cpu": "x64" }, "sha512-gquqwA/39tH4pFl+J9n3SOMSymjX+6kZ3kWgY3b94nXFTwac9bnFNMffIomgvlFaC4ArVqMnOZD3nuJ3H3VO1w=="],
+
+ "@libsql/win32-x64-msvc": ["@libsql/win32-x64-msvc@0.5.29", "", { "os": "win32", "cpu": "x64" }, "sha512-4/0CvEdhi6+KjMxMaVbFM2n2Z44escBRoEYpR+gZg64DdetzGnYm8mcNLcoySaDJZNaBd6wz5DNdgRmcI4hXcg=="],
+
"@lukeed/ms": ["@lukeed/ms@2.0.2", "", {}, "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA=="],
"@lydell/node-pty": ["@lydell/node-pty@1.2.0-beta.12", "", { "optionalDependencies": { "@lydell/node-pty-darwin-arm64": "1.2.0-beta.12", "@lydell/node-pty-darwin-x64": "1.2.0-beta.12", "@lydell/node-pty-linux-arm64": "1.2.0-beta.12", "@lydell/node-pty-linux-x64": "1.2.0-beta.12", "@lydell/node-pty-win32-arm64": "1.2.0-beta.12", "@lydell/node-pty-win32-x64": "1.2.0-beta.12" } }, "sha512-qIK890UwPupoj07osVvgOIa++1mxeHbcGry4PKRHhNVNs81V2SCG34eJr46GybiOmBtc8Sj5PB1/GGM5PL549g=="],
@@ -1463,6 +1487,8 @@
"@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.4", "", { "dependencies": { "@tybys/wasm-util": "^0.10.1" }, "peerDependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1" } }, "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow=="],
+ "@neon-rs/load": ["@neon-rs/load@0.0.4", "", {}, "sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw=="],
+
"@nodable/entities": ["@nodable/entities@2.1.1", "", {}, "sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg=="],
"@npm/types": ["@npm/types@1.0.2", "", {}, "sha512-KXZccTDEnWqNrrx6JjpJKU/wJvNeg9BDgjS0XhmlZab7br921HtyVbsYzJr4L+xIvjdJ20Wh9dgxgCI2a5CEQw=="],
@@ -3033,7 +3059,7 @@
"get-tsconfig": ["get-tsconfig@4.14.0", "", { "dependencies": { "resolve-pkg-maps": "^1.0.0" } }, "sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA=="],
- "ghostty-web": ["ghostty-web@github:anomalyco/ghostty-web#83c0a07", {}, "anomalyco-ghostty-web-83c0a07", "sha512-Lf2v1agHkVUpMpHBWWuCZrhOEmcwwin5/Hboc9rZwQ7/CKkIh5rU1r1CvfLlhkMoFv+ed8z52RZ8hkzGZZj3MQ=="],
+ "ghostty-web": ["ghostty-web@github:anomalyco/ghostty-web#6e24d04", {}, "anomalyco-ghostty-web-6e24d04", "sha512-svnTv7Djx1QbZHr2H2Fxqp/LqkMwZB19x7ln4IOSYxlCs2wN1fTC3QRrknxtuPxDznfjV7eVBGps+Foa2v2YnQ=="],
"giget": ["giget@3.3.0", "", { "bin": { "giget": "dist/cli.mjs" } }, "sha512-gzi2D96p+AMfDcmJHGDj3KJ9NRiwvlFAU5yfa3ROwWZmFUjX4P43x3BcyRaOMMLto1vUo7C+86+MFhYTl6Ryiw=="],
@@ -3373,6 +3399,8 @@
"lazystream": ["lazystream@1.0.1", "", { "dependencies": { "readable-stream": "^2.0.5" } }, "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw=="],
+ "libsql": ["libsql@0.5.29", "", { "dependencies": { "@neon-rs/load": "^0.0.4", "detect-libc": "2.0.2" }, "optionalDependencies": { "@libsql/darwin-arm64": "0.5.29", "@libsql/darwin-x64": "0.5.29", "@libsql/linux-arm-gnueabihf": "0.5.29", "@libsql/linux-arm-musleabihf": "0.5.29", "@libsql/linux-arm64-gnu": "0.5.29", "@libsql/linux-arm64-musl": "0.5.29", "@libsql/linux-x64-gnu": "0.5.29", "@libsql/linux-x64-musl": "0.5.29", "@libsql/win32-x64-msvc": "0.5.29" }, "os": [ "linux", "win32", "darwin", ], "cpu": [ "arm", "x64", "arm64", ] }, "sha512-8lMP8iMgiBzzoNbAPQ59qdVcj6UaE/Vnm+fiwX4doX4Narook0a4GPKWBEv+CR8a1OwbfkgL18uBfBjWdF0Fzg=="],
+
"lightningcss": ["lightningcss@1.30.1", "", { "dependencies": { "detect-libc": "^2.0.3" }, "optionalDependencies": { "lightningcss-darwin-arm64": "1.30.1", "lightningcss-darwin-x64": "1.30.1", "lightningcss-freebsd-x64": "1.30.1", "lightningcss-linux-arm-gnueabihf": "1.30.1", "lightningcss-linux-arm64-gnu": "1.30.1", "lightningcss-linux-arm64-musl": "1.30.1", "lightningcss-linux-x64-gnu": "1.30.1", "lightningcss-linux-x64-musl": "1.30.1", "lightningcss-win32-arm64-msvc": "1.30.1", "lightningcss-win32-x64-msvc": "1.30.1" } }, "sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg=="],
"lightningcss-darwin-arm64": ["lightningcss-darwin-arm64@1.30.1", "", { "os": "darwin", "cpu": "arm64" }, "sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ=="],
@@ -3859,6 +3887,8 @@
"promise-call-limit": ["promise-call-limit@3.0.2", "", {}, "sha512-mRPQO2T1QQVw11E7+UdCJu7S61eJVWknzml9sC1heAdj1jxl0fWMBypIt9ZOcLFf8FkG995ZD7RnVk7HH72fZw=="],
+ "promise-limit": ["promise-limit@2.7.0", "", {}, "sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw=="],
+
"promise-retry": ["promise-retry@2.0.1", "", { "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" } }, "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g=="],
"promise.allsettled": ["promise.allsettled@1.0.7", "", { "dependencies": { "array.prototype.map": "^1.0.5", "call-bind": "^1.0.2", "define-properties": "^1.2.0", "es-abstract": "^1.22.1", "get-intrinsic": "^1.2.1", "iterate-value": "^1.0.2" } }, "sha512-hezvKvQQmsFkOdrZfYxUxkyxl8mgFQeT259Ajj9PXdbg9VzBCWrItOev72JyWxkCD5VSSqAeHmlN3tWx4DlmsA=="],
@@ -5131,6 +5161,8 @@
"lazystream/readable-stream": ["readable-stream@2.3.8", "", { "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", "isarray": "~1.0.0", "process-nextick-args": "~2.0.0", "safe-buffer": "~5.1.1", "string_decoder": "~1.1.1", "util-deprecate": "~1.0.1" } }, "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA=="],
+ "libsql/detect-libc": ["detect-libc@2.0.2", "", {}, "sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw=="],
+
"lightningcss/detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="],
"matcher/escape-string-regexp": ["escape-string-regexp@4.0.0", "", {}, "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="],
diff --git a/design/README.md b/design/README.md
index 5b88a6a78..8d0a4b901 100644
--- a/design/README.md
+++ b/design/README.md
@@ -9,6 +9,7 @@ The architecture is designed around one requirement: a long-running agent must r
## User Guides
- [Running Real-LLM Tests](./real-llm-testing.md)
+- [V2.0 R1 Implementation-Wave Review Summary](./v2.0-r1-wave-review-summary.md)
## Design Principles
diff --git a/github/README.md b/github/README.md
index 95d09412c..315804c93 100644
--- a/github/README.md
+++ b/github/README.md
@@ -1,6 +1,6 @@
# deepagent-code GitHub Action
-A GitHub Action that integrates [deepagent-code](https://deepagent-code.ai) directly into your GitHub workflow.
+A GitHub Action that integrates [deepagent-code](https://ai.deepagent.ltd) directly into your GitHub workflow.
The release workflow reads the target version from `github/VERSION` and publishes that exact tag.
diff --git a/github/action.yml b/github/action.yml
index 788c0bda1..770a28de3 100644
--- a/github/action.yml
+++ b/github/action.yml
@@ -35,7 +35,7 @@ inputs:
required: false
oidc_base_url:
- description: "Base URL for OIDC token exchange API. Only required when running a custom GitHub App install. Defaults to https://api.deepagent-code.ai"
+ description: "Base URL for OIDC token exchange API. Only required when running a custom GitHub App install. Defaults to https://api.deepagent.ltd"
required: false
runs:
@@ -58,7 +58,7 @@ runs:
- name: Install deepagent-code
if: steps.cache.outputs.cache-hit != 'true'
shell: bash
- run: curl -fsSL https://deepagent-code.ai/install | bash
+ run: curl -fsSL https://deepagent.ltd/install | bash
- name: Add deepagent-code to PATH
shell: bash
diff --git a/github/index.ts b/github/index.ts
index 227a44654..b09f9df95 100644
--- a/github/index.ts
+++ b/github/index.ts
@@ -363,7 +363,7 @@ function useIssueId() {
}
function useShareUrl() {
- return isMock() ? "https://dev.deepagent-code.ai" : "https://deepagent-code.ai"
+ return isMock() ? "https://dev.ai.deepagent.ltd" : "https://ai.deepagent.ltd"
}
async function getAccessToken() {
@@ -374,7 +374,7 @@ async function getAccessToken() {
let response
if (isMock()) {
- response = await fetch("https://api.deepagent-code.ai/exchange_github_app_token_with_pat", {
+ response = await fetch("https://api.deepagent.ltd/exchange_github_app_token_with_pat", {
method: "POST",
headers: {
Authorization: `Bearer ${useEnvMock().mockToken}`,
@@ -383,7 +383,7 @@ async function getAccessToken() {
})
} else {
const oidcToken = await core.getIDToken("deepagent-code-github-action")
- response = await fetch("https://api.deepagent-code.ai/exchange_github_app_token", {
+ response = await fetch("https://api.deepagent.ltd/exchange_github_app_token", {
method: "POST",
headers: {
Authorization: `Bearer ${oidcToken}`,
diff --git a/infra/app.ts b/infra/app.ts
index 37134e76d..820c9d3b6 100644
--- a/infra/app.ts
+++ b/infra/app.ts
@@ -10,8 +10,8 @@
* bun run --cwd packages/app build # static web app -> packages/app/dist
*
* Secrets for the backend are read from the environment (see
- * packages/function/src/api.ts): ADMIN_SECRET, GITHUB_APP_ID,
- * GITHUB_APP_PRIVATE_KEY, FEISHU_APP_ID, FEISHU_APP_SECRET,
+ * packages/function/src/api.ts): SHARE_CREATE_TOKEN, ADMIN_SECRET, GITHUB_APP_ID,
+ * GITHUB_APP_PRIVATE_KEY, FEISHU_VERIFICATION_TOKEN,
* DISCORD_SUPPORT_BOT_TOKEN, DISCORD_SUPPORT_CHANNEL_ID.
*/
export {}
diff --git a/infra/stage.ts b/infra/stage.ts
index ab98a10f2..82ef76b91 100644
--- a/infra/stage.ts
+++ b/infra/stage.ts
@@ -1,7 +1,7 @@
export const domain = (() => {
- if ($app.stage === "production") return "deepagent-code.ai"
- if ($app.stage === "dev") return "dev.deepagent-code.ai"
- return `${$app.stage}.dev.deepagent-code.ai`
+ if ($app.stage === "production") return "ai.deepagent.ltd"
+ if ($app.stage === "dev") return "dev.ai.deepagent.ltd"
+ return `${$app.stage}.dev.ai.deepagent.ltd`
})()
export const zoneID = "430ba34c138cfb5360826c4909f99be8"
diff --git a/install b/install
index 32ccc96d7..c50a9a154 100755
--- a/install
+++ b/install
@@ -17,18 +17,36 @@ Options:
-h, --help Display this help message
-v, --version {props.t("settings.capabilities.catalogTitle")}
+ {props.t("settings.capabilities.receiptsTitle")}
+ {props.t("settings.capabilities.snapshotTitle")}
+ {t("settings.capabilities.title")}
+