Appearance
Workova Agent 当前架构说明(2026-03-13)
历史路径说明
文中后半段仍然保留了部分 archive/desktop-legacy/ 路径,这些内容主要用来说明历史实现背景。
如果你要继续开发,请以当前 desktop/ 工作区为准。
1. 架构边界(已锁定)
客户端(桌面端,唯一执行真源)
- 执行
Agent Loop:LLM -> tool.call -> approval -> tool.result -> next iteration - 执行工具调用、审批暂停恢复、问题提问恢复
- 执行 MCP 生命周期(连接、断开、重连、工具发现)
- 执行技能扫描/校验/绑定注入
- 执行多 Agent 协同(delegate/graph/bus)
- 执行工作流工具族(
workflow.start/wait/control/snapshot/query/history) - 渲染结构化聊天卡片(todo/question/tool/workflow/mcp/context/status/error)
后端(仅存储与转发)
- LLM 网关:
/api/v1/llm/* - 同步接口:
/api/v1/sync/push、/api/v1/sync/pull - 设备心跳:
/api/v1/device/heartbeat - 允许保存 Agent/聊天/运行事件数据用于跨端同步,但不参与任何执行决策
明确禁止(后端)
- 禁止服务端执行 tool call / MCP call / Agent loop / 协同编排 / workflow 编排
2. 同步协议(硬切到 changes[])
Push 请求
POST /api/v1/sync/push
json
{
"device_id": "desktop-local",
"changes": [
{
"entity_type": "agents",
"entity_id": "agent-1",
"op": "upsert",
"version": 3,
"updated_at": "2026-03-06T12:00:00Z",
"source_ts": "2026-03-06T12:00:00Z",
"payload": {}
}
]
}Pull 响应
GET /api/v1/sync/pull
json
{
"changes": [],
"has_more": false,
"cursor_ts": "2026-03-06T12:00:00Z"
}冲突规则(服务端固定实现)
- append-only:
messages/tool_calls/agent_run_steps/workflow_run_events - LWW:
agents/agent_tool_policies/agent_skill_bindings/mcp_servers - todo 快照:按条目状态时间戳合并(统一使用
todos字段)
3. 客户端 Agent 能力清单
内置工具(默认内建)
- 文件:
fs.list/read/search/write/edit/move/delete/mkdir - 脚本与进程:
shell.exec/script.run/process.list/process.kill - 网页:
web.search/web.fetch/web.extract - 浏览器:
browser.open/click/type/select/wait/eval/screenshot/network_logs/console_logs - 工作流:
workflow.start/wait/control/snapshot/query/history - 知识库:
kb.search/kb.ingest/kb.reindex - 记忆:
memory.add/search/update/delete - 协同:
agent.delegate/agent.spawn/agent.merge_result - 任务:
todo.create/update/list/complete - 系统:
time.now/http.request - MCP 动态工具:
mcp.<server_id>.<tool>
权限与审批
auto/required/manual_each_call/deny- Agent 级工具授权矩阵:
enabled/approval_mode/rate_limit/time_limit/network_scope/fs_scope
沙箱模式
trustedworkspace(默认)strict(强拦截 shell、越权网络、browser.eval)
运行时恢复点(2026-03-13 当前状态)
- 新增数据库级
runtime_run_checkpoints作为 run checkpoint 真源 - 恢复点保存:
run metadata / run loop cursor / conversation slice / tool state / approval queue / pending mutation metadata / memory flush markers / recovery hints - 当前每个 checkpoint 还带恢复链元数据:
recovery_chain_id / recovery_chain_version / parent_checkpoint_id - 新增
runtime_checkpoint_artifacts保存本地文件修改前快照 - 恢复点用户表达统一使用:
任务恢复点 / 安全回退点 fs.write/edit/move/delete/mkdir会在执行前自动创建恢复点agent_run_list_checkpoints / agent_run_get_checkpoint / agent_run_restore_checkpoint已经暴露为 Tauri command,并接入桌面端恢复点控制面restore_run_checkpoint()对文件系统类快照已经是真恢复;shell.exec / script.run现在会先按cwd / script 所在目录收缩恢复作用域:- 小作用域走
filesystem_snapshot真恢复 - 中等偏大作用域走
manifest_snapshot,至少能清理恢复点之后新增的副作用文件 - 超大作用域现在会走
inventory_snapshot inventory_snapshot会记录目录直接孩子清单,并结合命令显式目标提取来恢复关键文件- 命令里的
--output / --out / --file / --write / -o等显式输出目标现在也会被提取进恢复目标 manifest_snapshot / inventory_snapshot还会在预算内提升一部分小文件为真实内容快照,补强“旧文件被覆盖”的恢复能力
- 小作用域走
resume_agent_run已经不再把 checkpoint 直接拼成CHECKPOINT_CONTEXTsystem prompt 注入模型消息;现在会先生成结构化resume_contract,并作为 runtime step / observability 元数据记录- checkpoint retention 不再只是“固定保留最近 20 个”,现在已经升级为分层治理:
- 默认至少保留最近 5 个 checkpoint
- 普通 checkpoint 按 14 天窗口清理
restored / pending approval / failure taxonomy != none的关键恢复链节点按 45 天窗口保护- 超出数量上限时,优先删除非保护节点
- 当前恢复语义已经明确拆成两条:
restore:回滚文件快照、重建 tool call / approval 状态,并把 run 置为pausedresume:基于当前 run 状态继续 loop,依赖结构化resume_contract + recent run context,不是“拿恢复点文本喂模型”
- 失败分类已经从“单纯字符串匹配”升级到“结构化 failure contract 优先,字符串只做最后兜底”:
PolicyEnforcement -> policy_failureToolExecution + sandbox block -> sandbox_failureRestoreFlow + shell/script opaque restore -> degraded_recoveryResumeFlow -> resume_failure- 当前每条关键失败事件还会补充
failure_contract:taxonomy / stage / source / reason_code / recoverability / details
长期记忆与自我进化(2026-03-13 当前状态)
- 长期记忆已经从“基础 memory.add/search/update/delete/compact”升级到第一批结构化真源:
memories新增治理字段:memory_kind / confidence / source_type / source_run_id / confirmed_by_user / expires_at / conflicts_with / supersedes / last_used_at- 新增
user_models:用户画像真源 - 新增
agent_identity_profiles:Agent 身份真源 - 新增
memory_heartbeat_reviews:周期复盘事实表
- 当前已经落地的 OpenClaw / CoPaw 对标能力:
- 六层记忆里的基础分层已经入库:
episodic / semantic / preference / decision / procedural / relationship memory_search现在带双通道返回:semantic_recall + exact_evidencecreate_agent / create_conversation会自动 bootstrapuser model + agent identitymemory_compact()会先执行pre-compaction memory flushmemory_run_heartbeat_review()已经能提炼preference / decision / procedural / relationship / lessons learneduser_models已补齐preference_signals / habit_profile / goal_profile / persona_profile / communication_profile / cadence_profile / risk_profile
- 六层记忆里的基础分层已经入库:
- 新增
memory_relationship_graph:关系图谱真源 - 关系图现在带
ontology_tags / edge_weight / relation_source - 关系图还新增
subject_role / object_role / ontology_path / interaction_pattern - 新增
memory_relationship_entities:关系实体注册真源 - 节点现在带
canonical_name / ontology_domain / aliases / mention_count - 关系图会继续生成多跳边:
expects_update_via / operates_on / protects / shapes_output_for - agent 全局视角下已经补了跨会话实体合并:
- 相同 stakeholder / workflow / preference 实体会在查询层聚合成单一长期节点视图
- 聚合边会保留
source_conversation_ids
- 新增
runtime_user_corrections:用户纠错沉淀真源- 已新增 Tauri command:
memory_record_user_correction / memory_get_relationship_graph - 已新增 observability 事件:
memory_flush_triggered / memory_flush_completed / heartbeat_review_completed
- 已新增 Tauri command:
- 当前长期记忆治理已经补到:
apply_memory_resolution_cycle():会在 flush / heartbeat 后自动处理 conflict / supersede- default retention / expiry policy:不同 memory kind 会自动分配默认保留期,并在过期后归档
procedural_memory:已支持“模型优先、规则兜底”的步骤级提炼
- procedural memory 现在已经从环境变量开关升级成 runtime policy:
heuristic:完全本地规则adaptive:默认模式,复杂流程优先尝试模型蒸馏llm_first:优先模型蒸馏,失败再回退- 已新增 Tauri command:
list_procedural_memory_policies / get_procedural_memory_policy / set_procedural_memory_policy
- 当前仍然保留的简化项:
- procedural memory 默认模式虽然已经升级成
adaptive - 但复杂度判断仍然是“runtime policy + 本地线索”驱动,不是更强的学习型蒸馏策略
- relationship ontology 的跨会话实体合并策略还可以继续增强
- procedural memory 默认模式虽然已经升级成
Phase C已经进入第一批内核闭环:- 新增
runtime_outcome_evaluations:run 结果评分真源 - 新增
runtime_reflections:失败归因 / 复盘结论真源 - 新增
runtime_memory_writeback_candidates:长期记忆写回候选真源 - 新增
runtime_policy_candidates:策略候选真源 - 新增
runtime_policy_candidate_validations:shadow / canary / rollback 验证事实表 - terminal run (
completed/failed/canceled) 现在会自动触发outcome evaluator restore_run_checkpoint()触发 rollback 后也会进入 learning cycle- 已新增 Tauri command:
agent_run_list_policy_candidates / agent_run_get_policy_candidate / agent_run_validate_policy_candidate_shadow / agent_run_prepare_policy_candidate_canary / agent_run_apply_policy_candidate_canary / agent_run_rollback_policy_candidate - 已新增 observability 事件:
outcome_scored / reflection_generated / policy_candidate_generated / policy_shadow_validated / policy_canary_applied / policy_rollback_completed
- 新增
- 当前已经落地的复盘输出包括:
root_causeaffected_subsystemrecommended_memory_writebackrecommended_policy_updaterecommended_workflow_extractionrecommended_skill_gap_analysis
- 当前
recommended_memory_writeback已经不只是 reflection 字段:- 会自动生成
memory writeback candidate - 可经 Tauri command / 前端控制面触发真正写回长期记忆
- 会自动生成
- 当前已经落地的策略验证链包括:
shadow_pending -> shadow_passed | shadow_failedshadow_passed -> canary_ready -> canary_appliedshadow_passed | canary_ready | canary_applied -> rolled_backget_runtime_policy_candidate()会返回候选详情和全部验证记录
- 已新增策略候选自动执行器:
- runtime 启动时会拉起
policy_candidate_scheduler - 单次 learning cycle 结束后也会自动推进当前 run 的策略候选
- 后续失败 / restore 会自动回滚旧的 canary policy candidate
- runtime 启动时会拉起
Phase C现在还新增了 failure pattern clustering:- 新增
runtime_failure_patterns:失败模式聚类真源 record_run_learning_cycle()会在 reflection 后继续聚合失败模式- 已新增 Tauri command:
agent_run_list_failure_patterns - 已新增 observability 事件:
failure_pattern_clustered
- 新增
Phase D已经进入第一批结构化闭环:- 新增
runtime_behavior_traces:行为轨迹真源 - 新增
runtime_skill_gap_analyses:技能缺口分析真源 - 新增
runtime_skill_recommendations:技能 / workflow 推荐真源 record_run_learning_cycle()现在会继续触发 skills evolution cycle- 已新增 Tauri command:
skill_list_behavior_traces / skill_list_gap_analyses / skill_list_recommendations / skill_get_recommendation - 已新增 observability 事件:
behavior_trace_mined / skill_gap_detected / skill_recommendation_generated
- 新增
- 当前已经落地的 Phase D 第一层能力:
- 采集 run 内部工具序列、重复约束、人工补救动作
- 依据重复频率和已有技能绑定情况区分
knowledge_gap / workflow_gap / skill_gap / policy_gap - 在没有现成技能时产出
draft_pending的本地技能草案建议 - 在已有技能注册表命中时产出绑定现有技能的建议
Phase D第二层已补到“生命周期可操作”:- 新增
runtime_skill_recommendation_validations:技能推荐生命周期验证事实表 - 新增
runtime_skill_versions:技能正式升级 / 版本治理真源 - 推荐结果现在可以走
draft_generated -> validated -> shadow_ready -> shadow_active -> canary_ready -> canary_applied -> live -> rolled_back / retired - 已新增 Tauri command:
skill_generate_recommendation_draftskill_validate_recommendationskill_prepare_recommendation_shadowskill_apply_recommendation_shadowskill_prepare_recommendation_canaryskill_apply_recommendation_canaryskill_promote_recommendation_to_liveskill_list_versionsskill_rollback_recommendationskill_retire_recommendation
- 已新增 observability 事件:
skill_draft_generatedskill_validation_completedskill_shadow_run_completedskill_canary_appliedskill_promoted_to_liveskill_rollback_completedskill_retired
- 新增
- 已新增技能 rollout 自动执行器:
- runtime 启动时会拉起
skill_rollout_scheduler - 单次 learning cycle 结束后会自动把 recommendation 尽量推进到当前可达的最远状态
- 后续失败 / restore 会自动回滚旧的
canary_applied / liverecommendation
- runtime 启动时会拉起
- 技能环境兼容性 gating 已经从“只看 skill validator”补强为:
host osworkspace markersrequired sandboxbin / env / pathworkspace write accesscontainer / virtualenv / remote hostremote_executor_protocol / required_remote_capabilities- recommendation 如果已经拿到
SKILL.md路径,会优先按路径解析 - 因此推荐验证不再只是“文件合法”,而是开始校验“宿主能不能跑”
- 外部执行器现在已经补进实时协商链:
- runtime 启动时会拉起
remote_executor_handshake_scheduler - 优先通过
POST /handshake发送本地 runtime 能力、版本和工作区上下文 - 如果远端不支持 handshake,会退回
GET /capabilities + /health - 协商结果会进入 runtime cache,并反映到 health / compatibility probe / diagnostics
- runtime 启动时会拉起
- 前端诊断中心现在已经补了“学习与技能演化”控制面:
- 展示长期记忆 writeback 候选
- 展示 policy candidate
- 展示 skill recommendation
- 支持手动 heartbeat review / 写回长期记忆 / 推进 candidate 生命周期 / 手动触发一轮自动推进
- 设置中心现在已经补了“记忆与成长”页签:
- 普通用户可以直接录入纠错
- 可以手动触发 heartbeat review
- 可以查看用户画像摘要与关系图谱摘要
- 当前仍然保留的简化项:
- 设置中心目前还是“轻产品页 + 控制面”形态,还不是完整的记忆成长中心
- rollout compatibility 目前已经补到“本地动态宿主探测 + 远程服务端实时协商”
- 但远端协议仍然以
HTTP JSON handshake为主,不是更复杂的长连接协商 - relationship ontology 已经补到“实体注册 + 多跳边 + 跨会话聚合”,但实体消歧与别名学习还可以继续增强
4. 聊天 UI 结构化契约
消息规则
- 用户消息:右侧气泡
- assistant 正文:非气泡全宽内容区
- system:轻量状态条
运行细节规则
- 细节卡片:
Thinking/ToolCall/ToolResult/ContextCompact/Workflow/McpStatus/RunStatus/Error - 运行中(
running|paused):默认展开 - 终态(
completed|failed|canceled):800ms自动折叠 - 用户 pin(钉住)后:保持展开,不自动折叠
独立交互
TodoCard:任务状态交互QuestionCard:回答后自动触发agent_run_resume
5. MCP 与技能
MCP
- 支持
stdio/http - 状态机:
created/testing/connected/degraded/disconnected/failed - 支持测试连接、手动连接/断开、自动重连、工具刷新、心跳时间展示
- MCP 工具默认审批策略:
required
技能
- 扫描
SKILL.md(含 frontmatter) - 依赖校验:缺 bin/env/path 时返回标准化原因
- 绑定策略:
summary_only/on_demand/always/full - 支持
bind/unbind,并写回同步 outbox
6. 当前验证命令(2026-03-13)
bash
# desktop 工作区
cd desktop
npm run test
npm run build
# 桌面 runtime
cd apps/gui/src-tauri
cargo check
# 后端
cd ../../../backend
go build ./...
go test ./...当前仓库在当前阶段更建议按下面的思路理解:
desktop/是继续演进的主工作区apps/gui/src-tauri是当前桌面 runtime 入口- 历史
archive/desktop-legacy/命令只保留作演进背景参考,不再作为默认开发入口
当前仍需单独说明:
cd desktop && npm run tauri:build需要完整桌面构建环境,签名相关配置不足时会失败- Phase B
Memory & User Model、Phase CLearning & Reflection、Phase DSkill Evolution的核心闭环已经落地,但仍然保留若干简化项,不应写成“所有治理深度都已封顶”