PRODUCT DOCS
DWork:面向 AI Agent 的桌面工作流与工具编排平台
DWork 把 Agent 对话、工具调用、插件/Skill/MCP、会话渲染、模型 Provider、会话级内置浏览器、手机控制、工作流看板、版本管理、会话记忆/工作区记忆、自动上下文压缩、知识库、定时任务、PPT/文档/网页生产力、收藏渲染和画板输入放到统一桌面工作台中。它适合展示 Agent Harness 研发能力:从任务拆解、工具执行到人工复核、浏览器/外部设备自动化、Git 隔离合并、长期记忆和产物交付。
核心创新与工程设计
DWork 的价值不只是“把聊天、插件、浏览器、手机、Git 放在一个桌面里”,而是把 Agent 真正落地时绕不开的控制面做出来:上下文怎么长期保持、工具怎么安全执行、外部能力怎么动态接入、生成产物怎么继续编辑、长任务怎么隔离和恢复、多人/多 Agent 怎么并行但不互相踩线。
1. Agent 控制面,而不是聊天壳
- Runtime 把模型流式输出、thinking、tool use、tool result、usage、prompt-cache、compaction、错误和权限事件统一成可追踪事件流。
- 前端把这些事件映射成时间线、工具卡、渲染块、压缩卡、任务看板、版本管理和资源选择器,用户能看见 Agent 在做什么,而不是只等最终答案。
- 会话、工作流、插件、手机、浏览器、Git、知识库都挂到同一控制面,形成一个桌面 Agent OS。
2. 上下文资产化
- 会话记忆、工作区记忆、CLAUDE.md、Agent memory、KB、收藏渲染、设计资源、服务器资源都可以作为上下文资产被选择和注入。
- 大工具输出超过阈值后会落盘到
tool-results,上下文里只保留预览和读取路径,避免一次 grep/build/log 把窗口撑爆。 - 自动压缩、手动压缩和中断恢复把长会话变成可继续的交接链,而不是一次性上下文消耗品。
3. 能力接入的 hybrid routing
- 插件不是单一路径:一个插件可以同时暴露 Skills、MCP servers、host connector、runtime instructions 和本地工具依赖。
- 选中插件后会生成 selected_plugins 指令,明确 skill-first、MCP-first、hybrid additive 的路由策略,避免 Agent 只凭插件名乱猜工具。
- MCP 有连接状态、工具/资源发现、授权状态和按需调用桥接,能把远程账户、云资源、外部服务变成 Agent 可发现能力。
4. 工具治理与安全边界
- PermissionPolicy/PermissionEnforcer 区分 read-only、workspace-write、danger-full-access、prompt 等模式,并按工具声明 required permission。
- 文件读写会检查 primary/extra workspace roots,越界路径会被拒绝;被用户拒绝过的 workspace root 会在本轮中被记住,避免 Agent 换种写法继续试。
- Hook 系统支持 PreToolUse、PostToolUse、PostToolUseFailure,可拒绝工具、改写输入、返回权限 override 和反馈消息,是面向企业/团队策略接入的安全插槽。
5. 可编辑产物闭环
- 会话输出能变成 Mermaid、Draw.io、Three.js、p5.js、PPT、HTML、图表、地图等可交互产物。
- 产物可以收藏为资源,也可以从会话里打开块编辑器,让 AI 基于临时文件做局部修改,而不是重新生成一整段。
- 这让 Agent 交付从“文本建议”变成“可保存、可引用、可修改、可再次进入上下文”的工作资产。
6. 多层隔离执行
- 浏览器按会话绑定独立 profile,手机按 session scope 注入,避免不同会话共享登录态、设备连接和操作上下文。
- 普通会话和工作流都能创建 Git worktree,把 Agent 改动隔离在临时分支,合并前可审阅 diff、提交、stash、回退。
- 工作流可把主工作区和额外工作区同时映射到 worktree,适合跨仓、多模块任务。
7. 长任务与多 Agent 调度
- TaskPacket 把任务范围、仓库配置、分支策略、验收测试、提交策略、汇报契约和升级策略结构化,像给 Agent 发一张可执行工单。
- Worker 控制面维护 Spawning、TrustRequired、ReadyForPrompt、PromptAccepted、Running、Blocked、Finished、Failed 状态,能识别 trust gate、prompt misdelivery 并重放 prompt。
- Team/Swarm 支持把任务拆给多个 teammate,使用线程局部上下文隔离 agent/team 身份,并生成统一 team result。
8. 可靠性与可恢复性
- conversation recovery 能修复中断的 user prompt、未配对 tool use/tool result、工具结果后未生成总结等半回合状态。
- prompt-cache 诊断会记录 model/system/tools/messages 变化造成的 cache break,帮助定位为什么上下文缓存突然失效。
- 文件快照、
/rewind-files、compaction metadata、token usage ledger 和 mock parity harness 共同构成可审计、可恢复、可测试的运行底座。
运行流程图
下面把 DWork 的关键运行链路整理成流程图:从用户输入进入 Agent loop,到工具治理、上下文压缩、记忆维护、插件路由、worktree 隔离、渲染产物编辑闭环,以及会话绑定的浏览器和手机自动化。流程图按源码结构抽象关键链路。
Agent Loop 主流程
flowchart TD
U["用户输入 / 图片 / 资源引用"] --> F["前端组装请求<br/>model + kb_refs + browser + context"]
F --> S["Axum 会话 API<br/>创建 / 恢复 Session"]
S --> R["ConversationRuntime"]
R --> G{"请求前检查"}
G -->|上下文超阈值| C["自动压缩<br/>compaction event"]
C --> R
G -->|可继续| M["Provider 流式调用"]
M --> E["事件流<br/>Text / Thinking / ToolUse / Usage"]
E --> UI["前端时间线实时渲染"]
E --> T{"有 ToolUse?"}
T -->|是| X["执行工具并写入 ToolResult"]
X --> R
T -->|否| P["持久化会话<br/>usage / metadata / snapshots"]
工具调用治理流程
flowchart TD
A["ToolUse 请求"] --> B["ToolRegistry 匹配工具声明"]
B --> C["PermissionPolicy<br/>required_permission"]
C --> D{"权限允许?"}
D -->|否| Z["返回拒绝原因<br/>写入 ToolResult"]
D -->|是| H["PreToolUse Hook"]
H --> I{"Hook 决策"}
I -->|deny| Z
I -->|updated_input| J["使用改写后的输入"]
I -->|allow| J
J --> K["执行工具<br/>文件 / 浏览器 / 手机 / MCP / Agent"]
K --> L{"输出过大?"}
L -->|是| O["落盘 tool-results<br/>上下文保留预览 + 路径"]
L -->|否| N["直接返回输出"]
O --> P["PostToolUse Hook"]
N --> P
P --> Q["ToolResult 进入会话"]
压缩与记忆流程
flowchart TD
A["会话累计变长"] --> B["估算 token + 读取模型窗口"]
B --> C{"超过用户阈值<br/>或模型窗口阈值?"}
C -->|否| D["继续正常请求"]
C -->|是| E["CONTEXT CHECKPOINT COMPACTION"]
E --> F{"模型摘要成功?"}
F -->|是| G["高信号 handoff summary"]
F -->|否| H["本地 fallback 摘要"]
G --> I["保留最近消息<br/>避免切断 tool-use / tool-result"]
H --> I
I --> J["更新 compaction metadata<br/>前端显示压缩卡"]
J --> K["会话记忆维护 agent"]
K --> L["workspace-session-memory 队列"]
插件与能力路由
flowchart TD
A["@插件 / @Skill / 工具搜索"] --> B["插件目录合并<br/>远程 registry + 本地 manifest"]
B --> C{"插件暴露能力"}
C -->|Skills| S["Skill 工具加载说明和模板"]
C -->|MCP| M["MCP manager 连接 / 鉴权 / 列工具"]
C -->|Host connector| H["宿主连接器工具"]
S --> R["selected_plugins 指令<br/>skill-first / mcp-first / hybrid"]
M --> R
H --> R
R --> T["Agent 按路由调用能力"]
Worktree 隔离与审阅
flowchart TD
A["新建会话或工作流"] --> B{"选择 worktree 隔离?"}
B -->|否| C["使用原工作区"]
B -->|是| D["检查 Git<br/>已初始化 + 有 HEAD + 干净"]
D --> E["创建 session / workflow worktree<br/>临时分支"]
E --> F["Agent 在隔离工作区修改"]
F --> G["版本面板审阅 diff / stash / commit"]
G --> H{"人工批准合并?"}
H -->|否| I["保留 / 回退 / 删除 worktree"]
H -->|是| J["提交 worktree 改动"]
J --> K["merge 回源工作区"]
K --> L{"冲突?"}
L -->|是| M["AI 冲突解决会话"]
L -->|否| N["清理 worktree 与临时分支"]
渲染产物编辑闭环
flowchart TD
A["模型输出 fenced code"] --> B["前端识别渲染类型"]
B --> C["渲染组件<br/>Mermaid / Draw.io / Three.js / PPT / HTML 等"]
C --> D{"用户动作"}
D -->|收藏| E["保存为 Favorite Resource"]
D -->|修改| F["打开 BlockEditModal"]
F --> G["写入临时文件"]
G --> H["AI 读取文件并 edit_file 局部修改"]
H --> I["override 持久化"]
E --> J["资源选择器再次引用"]
I --> J
J --> K["进入下一轮会话上下文"]
浏览器与手机操作链路
flowchart TD
A["会话开启浏览器 / 手机"] --> B["后端注入环境能力<br/>CLAW_BROWSER_ENABLED / CLAW_PHONE_ENABLED"]
B --> C{"目标类型"}
C -->|浏览器| D["会话独立 profile<br/>DOM / click / run_js"]
C -->|手机| E["ADB session scope<br/>snapshot / find_ui / tap / type"]
D --> F["ToolResult 返回页面或设备状态"]
E --> F
F --> G["Agent 读取状态并决定下一步"]
G --> H{"任务结束?"}
H -->|否| C
H -->|是| I["状态写入会话历史"]
工作流任务状态流转
flowchart TD
A["新建工作流"] --> B["AI 拆解任务 / 人工录入任务"]
B --> C["待办"]
C --> D["执行中"]
D --> E{"需要人工确认?"}
E -->|是| F["人工复核"]
F --> G{"通过?"}
G -->|否| H["失败 / 退回修改"]
G -->|是| I["合并中"]
E -->|否| I
I --> J{"合并成功?"}
J -->|否| H
J -->|是| K["已完成"]
H --> C
产品截图
以下展示 DWork 的主要产品界面,覆盖 Agent 工作台、插件中心、会话渲染、手机监控、版本管理、工作流看板和生产力模块。












插件系统
插件中心用于安装和管理第三方操作能力。截图中可以看到分类、已安装数量、可用状态、配置路径、标签能力和依赖提示。源码显示它不是静态清单,而是“远程注册表 + 本地 manifest + 依赖适配器”的运行时系统。
插件目录与分类
- 远程目录来自
https://gunworker-plugin-registry.pages.dev/latest.json,本地有缓存和离线 fallback。 - 支持分类:开发工具、云服务、Agent 工具、办公协作、设计创作、数据科研、文档出版、工程制造等。
- 截图中统计为全部 29、已安装 12,并按分类展示 Android Studio、GitHub、WeChat Mini Program、Aliyun 等插件。
安装与可用性判断
- 安装源支持
cloudflare-package和local-installed。 - 安装时校验平台、版本、sha256、归档路径,并通过 Tauri 调用
install_openai_plugin。 - 插件声明 CLI/MCP 等 requirement 后,系统会执行本地命令检测、MCP upsert、OAuth/auth 检测,并给出“可用/需配置/缺失”状态。
能力注入方式
- 插件可暴露 Skills,安装后通过
@插件名或@Skill在会话中注入。 - 可声明 Read / Write / Interactive / DevTools / CLI fallback 等能力标签。
- 插件 manifest 与安装目录可被本地扫描并与 Cloudflare registry 清单合并。
工程价值
- 把外部工具、CLI、MCP 服务统一映射为 Agent 可发现、可配置、可调用的能力。
- 降低 Agent Harness 的扩展成本:新增工具不需要硬编码进主工程。
- 通过状态检查避免“装了但不可用”的问题,适合真实桌面端交付。
会话渲染输出与可编辑产物
DWork 的会话不只是 Markdown 聊天。模型输出指定 fenced code block 后,前端会识别渲染类型并直接转成可交互产物;产物可以收藏为资源,也可以在会话中打开“修改”进入块编辑器,让 AI 读取临时文件并用 edit_file 做局部修改。


支持的渲染类型
| 标签 | 用途 | 输入/运行方式 |
|---|---|---|
report | 结构化 Markdown 报告 | 报告 fence,可包含嵌套图表与代码块 |
mermaid | 流程图、时序图、状态图等 | Mermaid DSL 文本,前端队列化渲染 SVG |
html | 网页/交互页面预览 | HTML 代码块沙箱渲染 |
canvas-video | Canvas 视频动画 | JS 返回 draw、duration、fps,后端流式渲染 |
graph | 力导向关系图 | JSON:{nodes[], links[]} |
threejs | 3D 场景 | JS 使用 THREE、OrbitControls、WebGL/WebGPU fallback |
dashboard | 交互仪表盘 | JSON:{title, layout[]},支持多 widget 布局 |
p5js | 生成艺术与交互绘制 | JS 实例模式,包含 p.setup、p.draw |
map | Leaflet 地图 | JSON:{center, zoom, markers, polylines} |
markmap | 思维导图 | Markdown 标题/列表嵌套 |
mathplot | 数学函数图 | JSON 数据与函数配置 |
octave | 科学图表 | Octave/Plotly 风格数据或脚本 |
ag-grid | 数据表格 | JSON:{columnDefs[], rowData[], options?} |
pptx | PPT 幻灯片预览与下载 | JS 返回 PptxGenJS 实例,前端拦截 slide 生成预览 |
interactive-animation | 原生 Canvas 2D 交互动画 | JS 返回 draw/update/event handlers |
chem3d | 3D 分子结构 | 使用 $3Dmol,支持 pdb/sdf/mol2/xyz/json |
geo-3d-globe | 3D 地球点线可视化 | JSON:{points[], lines[]} |
geo-3d-globe-js | 可编程 3D 地球运行时 | JS 定义 init/onTick/onData 等运行时钩子 |
excalidraw | 手绘风格图 | JSON:{elements[], appState} |
drawio | Draw.io 精确架构图 | mxGraph XML;drawio-renderer 是同类 alias |
可编辑链路
- 每个渲染块通过稳定 hash 生成块 ID,点击“修改”打开
BlockEditModal。 - 原始代码被保存为
block-edit-<id>.txt,AI 先读文件,再用edit_file局部替换。 - 应用后写入本地 override,保留原始 assistant message,避免重排时间线。
收藏与复用
- 渲染产物可收藏,收藏项记录 type、code、title、summary。
- 输入框支持
@渲染-*或@Render-*选择渲染类型,也能引用已收藏产物作为模板。 - 收藏渲染可进入资源上下文,作为后续生成/修改的参考材料。
模型 Provider 支持
模型配置支持多 profile:每个 profile 保存 id、name、model、provider、baseUrl、apiKey,可设为默认,也可绑定到会话、定时任务、工作流步骤。运行时会把 profile 转成对应 provider 的环境变量,并按模型名优先路由。
opus、sonnet、haiku;环境变量 ANTHROPIC_API_KEY、ANTHROPIC_AUTH_TOKEN、ANTHROPIC_BASE_URL;默认 context window 200K。deepseek、deepseek-v4-flash、deepseek-v4-pro、deepseek-chat、deepseek-reasoner;环境变量 DEEPSEEK_API_KEY、DEEPSEEK_BASE_URL;兼容 reasoning/thinking 字段。MiniMax,通过 OpenAI-compatible client 发送;环境变量 MINIMAX_API_KEY、MINIMAX_BASE_URL;兼容 reasoning details。OPENAI_API_KEY、OPENAI_BASE_URL;默认 fallback context window 128K。grok、grok-3、grok-mini、grok-3-mini、grok-2;环境变量 XAI_API_KEY、XAI_BASE_URL;context window 131072。会话与工作流模型选择
/api/models返回配置好的模型列表和默认 profile。- 单会话模型写入
session-models.json,任务、待办、工作流创建表单都能选择模型。 - 工作流支持 step_models,复杂任务可以为不同步骤绑定不同模型。
图像模型 Provider
- 图像生成 profile 另存为
imageProfiles,支持默认图像模型。 - 源码中支持
openai、google、minimax、recraft、stability、bfl、volcengine、alibaba。 - 生成结果统一落地为本地
/generated-images/*URL,供会话展示。
会话级内置浏览器隔离
DWork 的浏览器能力不是全局共享开关,而是绑定到具体会话。开启后,当前会话会使用独立 Chrome profile,Agent 可以在这个隔离浏览器里打开网页、读取 DOM、点击元素、执行 JavaScript,并在每次关键操作后验证页面状态。
会话绑定与状态隔离
- 前端在会话输入区提供“浏览器”开关,切换时调用
/api/sessions/:id/browser保存该会话是否启用浏览器。 - 后端把开关状态写入
browser-sessions.json,读取时同时查询该会话浏览器进程状态,用于显示已连接/未启动。 - 每个会话使用
.agent-browser-user-data-<session_id>作为 profile 目录,避免 Cookie、登录态、缓存和页面历史互相污染。 - 删除会话、清理任务或清理工作流时,会同步删除对应浏览器 profile 和会话开关记录。
Agent 可操作浏览器
browser_navigate:在会话浏览器里打开目标 URL。browser_get_dom:读取简化后的交互 DOM,可高亮可点击元素并按长度/过滤条件截断。browser_click:按 DOM 高亮 index 或 CSS selector 点击页面元素。browser_run_js:在当前页面执行 JavaScript,用于复杂交互、数据提取和页面验证。
内置服务实现
- 后端通过
/api/browser/open启动本地 Node browser service,默认监听127.0.0.1:3456。 /api/browser/navigate、/api/browser/click、/api/browser/run-js、/api/browser/get-dom、/api/browser/close统一代理到该服务。- 打开浏览器时会把当前会话的
profile_dir传给 browser service,实现一会话一浏览器上下文。
运行时注入边界
- 只有会话启用浏览器且不是用户应用测试会话时,运行时才注入
CLAW_BROWSER_ENABLED=1。 - 同时注入
CLAW_BROWSER_PROFILE_DIR,工具层再用该 profile 目录请求 browser service。 - 系统提示明确要求 Agent 先
browser_get_dom理解页面,再点击/执行 JS,并在导航或点击后再次验证,不假设页面状态。
手机控制 / 移动端自动化
DWork 可以把 USB/ADB 连接的 Android 手机接入 Agent 工具链。前端提供手机监控面板,后端负责设备发现、连接、截图、UI 层级读取和输入动作执行;会话启动时把已连接设备以环境变量注入给运行时,让 Agent 能在当前会话内直接观察并操作手机。

桌面监控与设备管理
- 面板显示已保存、可用、已连接数量,支持添加/扫描设备、保存设备、连接、断开、删除。
- 连接后展示实时手机截图,卡片状态区分实时、可重连、离线,并可点击刷新屏幕。
- 支持 ADB 识别修复入口;设备信息持久化到本地 phone store,截图缓存到 phone-screenshots。
- 请求层支持 session scope,同一台设备可以按会话隔离地连接和授权。
Agent 可直接调用的手机工具
phone_status:读取当前会话保存手机和连接状态。phone_snapshot:按 clickable、top_layer、close、search、bottom_tabs、all 分页读取 Android UI 结构、前台应用和屏幕尺寸。phone_find_ui:按文本、content-desc、resource-id、class 查找 UI 节点,返回 bounds 和中心坐标。phone_tap、phone_swipe、phone_type、phone_key、phone_open_app、phone_close_popup:执行点击、滑动、输入、按键、打开应用和关闭弹窗。
后端执行链路
/api/phones管理设备;/api/phones/discover扫描 ADB 设备;/api/phones/:id/screenshot拉取截图。/api/phones/action与/api/phones/tool将前端操作和 Agent 工具请求统一转成 ADB 命令。- 动作层覆盖
adb shell input tap、swipe、text、keyevent、monkey -p;中文输入有剪贴板粘贴 fallback。
会话安全边界
- 只有当前会话连接了手机,运行时才注入
CLAW_PHONE_ENABLED=1。 - 同时注入
CLAW_PHONE_SCOPE_TYPE=session、CLAW_PHONE_SCOPE_ID、CLAW_PHONE_CONNECTED_INFO,工具调用只访问当前会话 scope 下的设备。 - 读状态/快照是 ReadOnly;点击、输入、打开应用等会被标记为高权限动作,适合接入权限确认流程。
Agent 工作台
左侧功能区把知识库、定时任务、网页设计、PPT、文档编写、Excel、我的应用、插件、服务器集中到一个入口;右侧会话区支持 WebSearch、资源引用、模型选择、浏览器开关和深度研究开关。

AI 工作流看板
工作流看板支持任务创建、AI 拆解、运行、审批、拒绝、重试、继续、停止、移动状态、会话关联和 Git worktree 隔离。状态列覆盖待办、执行中、人工复核、合并中、已完成、失败。

版本管理系统
DWork 内置 Git 版本管理面板,用来承接 Agent 生成代码后的人工检查、暂存、提交、分支切换、提交历史查看和差异审阅。除了工作流执行会创建独立 Git worktree,普通会话在新建时也可以勾选“创建为 worktree 会话”,把本次对话的改动放到独立分支和独立工作区里,完成后再由用户合并回源工作区。



会话级 Git 面板
- 面板按当前会话工作区读取 Git 状态,支持变更、分支、提交历史三类视图。
- 变更页支持暂存、恢复暂存、填写提交信息、提交和放弃更改。
- 分支页支持读取本地/远程分支、切换分支、创建分支、删除分支。
- 提交历史页支持查看
git log --oneline --graph --all --decorate结果,并可对提交做 inspect/checkout/reset。
差异审阅
- 差异查看器按文件打开,展示 HEAD 到工作区、提交到父提交、或任意 base/head 区间的 diff。
- 支持新增/删除统计、变更跳转、文件级 diff 查看。
- 未跟踪文件会生成虚拟
/dev/nulldiff;大文件和二进制文件会跳过预览,避免卡住 UI。 - 会话 API 支持
/api/sessions/:id/git/diff、/git/inspect、/git/file-content、/git/restore-file。
工作流 Worktree 隔离
- 创建工作流前会检查 Git 是否安装、仓库是否初始化、是否已有基线提交、当前工作区是否干净。
- 必要时可以一键初始化 Git、创建初始快照、提交当前改动或查看变更。
- 运行工作流时为主工作区和额外工作区创建独立
workflow-worktrees,分支名形如gunworker-<workflow-id>-<index>。 - 审批通过后自动提交 worktree 改动,再 merge 回源工作区;若遇到冲突,可启动 AI 合并冲突解决会话。
会话 Worktree 隔离
- 新建会话弹窗支持选择主工作区、额外工作区,并勾选
create_worktree,从当前HEAD创建会话专属 worktree。 - 创建前要求 Git 已安装、仓库已初始化、已有提交、工作区干净;不满足时会阻止创建,避免把未提交变更混入隔离分支。
- 后端把元数据写入
session-worktrees.json,worktree 放在session-worktrees/<session-id>/main,分支名形如gunworker-session-<session-id>。 - 会话列表有 Worktree 标识;合并入口会先提交 worktree 改动,再把源分支合入 worktree,最后合并回源工作区,冲突时可交给当前会话用 AI 解决。
快照、暂存与回退
- 支持
git stash save/pop/list/drop,可把临时改动从工作区挪开再恢复。 - 支持
checkout、reset --mixed/--hard、单文件 restore,覆盖从轻量回退到硬回退的操作。 - 运行时还维护按 message id 绑定的文件快照,
/rewind-files <message-id>可以把被改文件恢复到某次消息前的状态。 - 会话 worktree 也有独立分支和合并入口,合并完成后清理 worktree 和临时分支。
记忆系统:会话记忆与工作区记忆
DWork 的记忆不是单一提示词,而是分层的长期上下文系统:会话记忆负责把当前对话的任务状态、文件、错误修正和结果沉淀下来;工作区记忆负责把跨会话仍然有价值的项目状态、决策和架构信息沉淀下来;Agent/项目记忆再把 CLAUDE.md、团队记忆和不同作用域的 Agent memory 加载进运行时。
会话记忆
- Runtime 维护
SessionMemoryState,默认累计 10k token 后初始化,之后每新增 5k token 且至少 3 次工具调用才触发更新,避免频繁写入。 - 每个会话的摘要保存到
.claw/sessions/session-memory/<session>/summary.md,用于 compaction、会话重开或长时间中断后的连续性恢复。 DEFAULT_SESSION_MEMORY_TEMPLATE固定包含 Current State、Task specification、Files and Functions、Workflow、Errors & Corrections、Learnings、Key results、Worklog 等结构。- 更新由独立的 session-memory maintenance agent 完成,要求保留标题并通过
write_file或edit_file修改摘要文件。
工作区记忆
- 主工作区会话的会话记忆更新后,会进入 workspace memory 队列,生成共享的
workspace-session-memory/<workspace_hash>/summary.md。 - 工作区记忆只保留跨会话有价值的信息:Active Goals、Important Decisions、Files and Architecture、Open Threads、Recent Session Notes。
- 更新过程有 lock 文件保护,避免多个后台维护任务同时写同一份记忆;后台进程还会跳过空白摘要和默认模板。
- 非主工作区或维护子进程会通过
CLAW_DISABLE_WORKSPACE_SESSION_MEMORY=1关闭级联写入,防止记忆递归污染。
Agent / 项目记忆
- Agent memory 按 User、Project、Local 三个作用域加载:
~/.claude/agents/<agent>、<cwd>/.claude/agents/<agent>、~/.claude/agents-local/<agent>。 - 自动记忆路径优先使用工作区
.claude/memory/,没有时回退到用户级~/.claude/memory/。 - 项目上下文会沿工作区祖先目录发现
CLAUDE.md和.claw/CLAUDE.md,并可读取CLAUDE.local.md、.claude/team-memory等本地/团队约束。 - 这些内容会被渲染为 Project context 或 Agent Memory 区块,和当前日期、Git 状态、diff 等一起进入模型上下文。
上下文压缩联动
- 前端会显示 context usage 与 compaction 状态;当长会话压缩或恢复时,会话记忆提供“接着做”的结构化线索。
- 记忆摘要按固定标题组织,便于模型在上下文很长时快速恢复任务目标、已改文件、踩坑记录和下一步计划。
- 工作区记忆把多次会话的稳定事实合并到一个工作区级摘要,适合长期开发项目、招聘作品集项目和持续迭代的 Agent 平台。
- 这套机制让 DWork 不只会执行一次性指令,也能把项目经验、用户偏好和架构决策沉淀成后续会话可复用的上下文资产。
会话自动压缩:按设置与模型动态调整
DWork 的压缩机制用于解决长会话上下文膨胀问题。它不是把旧消息粗暴删除,而是把较早的对话切成高信号摘要,保留最近一段原文、工具调用连续性和必要文件内容,再把摘要作为“上一段会话的交接信息”放回会话开头,让 Agent 在长任务里继续工作。
动态触发阈值
- 用户可在设置里配置
autoCompactThreshold,前端通过/api/settings/auto_compact读取和保存,最大值限制为 800000。 - 运行时还会按当前模型计算上下文窗口:Claude 默认 200k、MiniMax M2 系列约 204800、GPT-5 约 400k、DeepSeek v4 约 1M、Gemini 2.x/2.5/3 约 1048576、Grok fast 可到 2M。
- 有效触发线取用户阈值与模型窗口阈值的更严格者:
effective_compaction_threshold = auto_threshold.min(context_window - reserve_tokens)。 - 默认保留区
reserve_tokens为 13000,避免请求贴近模型窗口上限时才处理,给输出和工具结果留安全空间。
自动压缩路径
- 请求前主动检查:每次模型调用前估算当前会话 token,如果超过有效阈值就先压缩再请求模型。
- 工具循环中还会读取上一轮模型真实 usage,包含 input、cache read、cache creation;如果真实输入超过用户阈值,也会在下一次请求前触发。
- 反应式处理:如果 API 返回 context length exceeded,运行时会立即尝试压缩并重试请求。
- 自动恢复前也会判断是否需要先运行
/compact,低于阈值则明确跳过,并在状态里显示当前估算 token、设置阈值和模型窗口阈值。
压缩内容如何生成
- 优先使用模型执行 “CONTEXT CHECKPOINT COMPACTION”,要求输出高信号 handoff summary,覆盖已完成事项、当前进展、涉及文件、下一步、用户约束、技术决策和错误修正。
- 长历史会被拆分成 summary chunks,再通过最终 synthesis prompt 合并成一个连贯摘要,避免单次摘要也超过上下文。
- 模型摘要失败时会走本地 fallback:规则化摘要、去重、截断、保留核心行,保证压缩链路不会因为模型异常完全失效。
- 摘要会清理 thinking/analysis 噪音,并被写入会话 compaction metadata,前端可展示来源、压缩前后估算 token、移除消息数和保留最近 token 数。
保留现场与可见反馈
- 压缩时默认保留最近约 24000 tokens,最低 6000;手动压缩会按当前会话大小动态收紧到更 aggressive 的保留预算。
- 不会切断 tool-use / tool-result 对;如果边界落在工具结果上,会回退到对应 assistant 工具调用,保持工具链闭环。
- 最近修改过的文件可作为系统消息保留下来,默认最多 5 个文件、单文件 20KB,避免压缩后丢失刚生成的大段代码。
- 前端有 context usage ring,展示活跃上下文 / 阈值比例;双击可手动压缩,压缩事件会以专门的 compaction card 出现在会话时间线中。
生产力模块
PPT / 文档 / 网页 / Excel
- PPT 设计器有模板、页面元素、主题 token、下载 PPT、AI 修改/重做/演示等入口。
- 文档、网页、Excel 模块作为专业生产力工作台,复用会话、模型、资源和渲染能力。
- 用户应用与网页设计模块可以把生成产物落成可运行项目。
画板与收藏
- 手绘画板使用 Excalidraw 作为输入面板,可把笔画数据发送给 AI 并在聊天中引用为
@画板。 - 收藏保存 Mermaid、Three.js、p5.js、Draw.io 等渲染产物,后续可作为模板或资源引用。
- 渲染收藏与资源选择器打通,支持在会话里复用过去生成的可视化结果。


自动化与资源能力
浏览器 / 设备自动化
- 内置浏览器在独立章节展开,覆盖会话绑定、独立 profile、DOM 读取、点击和 JS 执行。
- 手机控制在独立章节展开,覆盖 ADB 设备发现、实时截图、UI 快照、点击、滑动、输入、按键和打开应用。
- 适合把网页、桌面资源和外部移动端 UI 纳入 Tool Use。
知识库 / 上下文资源
- 知识库支持 tree/content/files/folders/import/export。
- 记忆系统和上下文压缩在独立章节展开,覆盖 session memory、workspace memory、agent memory、CLAUDE.md、动态 auto compaction 和 compaction 连续性。
- 会话输入可引用 KB、设计资源、服务器、收藏资源。
MCP / Skill / 多 Agent
- MCP 支持 settings 配置、check、auth 和 stdio 管理。
- 工具注册包含 Skill、Agent、ToolSearch、WorkerCreate、TeamCreate。
- 可把子代理、团队、定时任务组合成长期自动化能力。
源码锚点
文档内容基于项目源码阅读整理,重点锚点如下。
cli/crates/runtime/src/conversation.rs、cli/crates/tools/src/lib.rs、cli/crates/runtime/src/permission_enforcer.rs、cli/crates/runtime/src/hooks.rs、cli/crates/runtime/src/tool_result_storage.rs、cli/crates/runtime/src/conversation_recovery.rs、cli/crates/runtime/src/worker_boot.rs、cli/crates/runtime/src/task_packet.rs:事件化 Agent loop、工具治理、Hook、超大输出落盘、中断恢复、Worker/Team/Swarm 控制面和结构化任务工单。cli/crates/runtime/src/conversation.rs、compact.rs、session_memory.rs、cli/crates/tools/src/lib.rs、front/src/pluginCatalog.js、front/src/BlockEditModal.jsx、front/src/GitTreeModal.jsx、front/src/PhoneMonitorModal.jsx、front/src/App.jsx:Agent loop、工具权限、上下文压缩、记忆队列、插件路由、worktree 隔离、渲染块编辑和浏览器/手机自动化流程图依据。cli/crates/runtime/src/conversation.rs:流式会话、ToolUse/ToolResult、权限、自动 compact、事件流。cli/crates/tools/src/lib.rs:read/write/edit/grep/web、Agent、ToolSearch、WorkerCreate、TeamCreate、MCP、Skill、browser、phone、TodoWrite;browser 工具包含 navigate/get_dom/click/run_js,phone 工具包含 status/snapshot/find_ui/tap/swipe/type/key/open_app/close_popup。cli/crates/api/src/providers/mod.rs、openai_compat.rs:Anthropic、DeepSeek、MiniMax、OpenAI、xAI 路由与兼容层。cli/crates/web-server/src/main.rs:/api/settings/models、/api/settings/image-models、profile 环境变量注入。front/src/pluginCatalog.js、pluginRuntime.js、PluginCenterModal.jsx:Cloudflare registry、本地 manifest、安装与依赖检查。front/src/App.jsx:RENDER_BLOCK_LABELS、渲染组件、收藏、@渲染 mention、Draw.io/Three/p5/PPT 等块。front/src/BlockEditModal.jsx、/api/block-edit/:id:临时文件、编辑会话、edit_file 局部修改、override 持久化。front/src/TaskBoard.jsx、cli/crates/web-server/src/main.rs:任务拆解、状态流转、审批、Git worktree、会话绑定。front/src/GitTreeModal.jsx、front/src/NewSessionModal.jsx、front/src/api.js、cli/crates/web-server/src/main.rs、cli/crates/runtime/src/file_history.rs、cli/crates/commands/src/lib.rs:Git 状态、提交、分支、stash、diff inspect、文件恢复、workflow/session worktree、create_worktree、session-worktrees.json、/rewind-files 文件快照回退。cli/crates/runtime/src/session_memory.rs、cli/crates/runtime/src/memory_paths.rs、cli/crates/runtime/src/agent_memory.rs、cli/crates/runtime/src/prompt.rs、cli/crates/web-server/src/main.rs、front/src/ChatPanel.jsx:会话记忆阈值与模板、workspace-session-memory 队列、Agent memory 作用域、CLAUDE.md 项目上下文、context usage/compaction UI。cli/crates/runtime/src/compact.rs、cli/crates/runtime/src/conversation.rs、cli/crates/runtime/src/summary_compression.rs、cli/crates/web-server/src/main.rs、front/src/components/ContextUsageRing.jsx、front/src/SettingsModal.jsx:自动压缩阈值、模型 context window、reserve_tokens、请求前/超限后压缩、/compact、模型摘要与本地 fallback、时间线 compaction card。front/src/App.jsx、front/src/api.js、cli/crates/web-server/src/main.rs、cli/crates/tools/src/lib.rs、cli/crates/rusty-claude-cli/src/main.rs:会话浏览器开关、browser-sessions.json、.agent-browser-user-data-<session_id>、browser API、Agent browser tools、CLAW_BROWSER_ENABLED 注入。front/src/PhoneMonitorModal.jsx、front/src/api.js、cli/crates/web-server/src/main.rs、cli/crates/tools/src/lib.rs:手机监控 UI、ADB 发现/连接/截图、动作执行、Agent phone tools、CLAW_PHONE_ENABLED 会话注入。技术架构
前端层
- React + Vite + Tauri WebView,承担会话、看板、插件中心、PPT、渲染块、资源选择等复杂交互。
- 渲染块按 fenced code / marker 自动识别,并通过 ErrorBoundary、流式稳定 key、缓存队列保障体验。
- 前端本地存储收藏渲染、会话资源、块编辑 override、插件中心状态。
后端层
- Rust Axum sidecar 提供会话、工作流、设置、插件、MCP、浏览器、手机、PPT、知识库、Git worktree API。
- Runtime 负责模型调用、工具执行、权限、内存、日志、token usage 和事件合并。
- 模型兼容层把 Anthropic Message API 和 OpenAI-compatible Chat Completions 统一成内部事件。
项目摘要
独立设计并实现面向 AI Agent 的桌面工作流平台,覆盖事件化会话运行时、工具调用治理、Hook 安全策略、插件中心、MCP/Skill hybrid routing、会话渲染产物与可编辑块、模型 Provider 路由、知识库、会话记忆与工作区记忆、按设置与模型窗口动态调整的自动上下文压缩、会话级隔离内置浏览器、Android 手机控制、AI 工作流看板、版本管理系统、会话/工作流 Git worktree 隔离执行、Worker/Team/Swarm 长任务调度、人工复核、PPT/文档/网页生产力模块等能力。项目体现 Agent Loop、Tool Use、Memory、MCP、Skills、Provider Integration、Renderable Artifacts、工作流编排、权限治理和本地自动化工程能力。