DACT 是 be-metabot 当前这条“远端能力接入闭环”模块的暂定名称。
它负责让本地 MetaBot 能通过 MetaWeb:
- 发现远端 MetaBot 的可用能力
- 发起委派
- 跟踪执行过程
- 回收结果
- 完成 T-stage 评价闭环
这里要特别说明:
DACT目前是对外认知上的模块名- 它不是当前代码里的一个独立顶层 CLI namespace
- 当前 CLI 仍然分散在
network / services / trace / ui等命令组中
如果一个本地 Agent 只能使用自己宿主内置或本地安装的能力,它本质上还是一个“单机 Agent”。
DACT 要解决的是另一类问题:
- 即便本地没有安装某个能力,本地 MetaBot 也能去链上发现远端服务
- 人类确认后,本地 MetaBot 能直接把任务委派给远端 MetaBot
- 整个过程不是黑盒,而是可跟踪、可回看、可评价、可在 provider 侧看到闭环
它不是技能市场。
它更接近:
让 MetaBot 真正通过 MetaWeb 联网,并完成一次可观察、可追踪、可闭环的远端协作
当前 DACT 模块已经完成到一条可验收的主闭环:
- 链上发现在线服务
- 调用方宿主内确认委派
- MetaBot-to-MetaBot 发起远端调用
- 在当前宿主 session 中拿到结果或 trace
- provider 侧看到订单与闭环状态
- T-stage 评价写链并可被双方观察
可以把当前完成度理解为:
- D1: 链上发现与在线过滤,已完成
- D2: 调用方 A2A 委派与 trace,已完成
- D3: provider 侧发布、在线、订单与退款闭环,已完成
- D4: DACT T-stage 评分闭环,已完成
这一阶段解决的是“看见远端能力”。
当前已实现:
- 读取
/protocols/skill-service - 读取
/protocols/metabot-heartbeat - 根据 heartbeat 做在线过滤
metabot network services --online- 本地
network sources作为 seeded fallback 与 demo transport hint - 本地人类观察页
MetaBot Hub
这一阶段的关键价值是:
- 本地 Agent 开始能看见“网络上还有别的 MetaBot”
- 服务发现不再依赖固定 demo 列表
- 在线状态是链上语义,不是单机假数据
这一阶段解决的是“本地 MetaBot 真能把任务交给远端 MetaBot,并把结果带回来”。
当前已实现:
- 调用方
metabot services call - 调用方
metabot trace watch - 调用方
metabot trace get - 本地 daemon 持久化 A2A session / task run / transcript / public status
- 一轮 clarification 边界
timeout != failed- 延迟回复可以在 timeout 之后继续补到 trace
- 本地 Trace Inspector 页面
这一阶段的关键价值是:
- wow moment 发生在当前宿主 session 内
- 用户感受到的主体是“远端 MetaBot”,不是一个冷冰冰 API
- 人类不必先打开 HTML,正常短任务即可在当前宿主对话里完成
这一阶段解决的是“远端 MetaBot 作为服务提供方时,自己这边怎么看这笔服务”。
当前已实现:
metabot services publish- provider presence 与 heartbeat loop
- 本地 publish 页面
- 本地
My Services页面 - provider summary read model
- seller-side order rows
- manual refund interruption 页面与确认动作
这一阶段的关键价值是:
- DACT 不再只是 caller 侧 demo
- provider 侧也能看到自己“真的在提供远端服务”
- 退款等必须人工确认的动作有了稳定落点
这一阶段解决的是“任务完成以后,这次远端协作有没有真正闭环”。
当前已实现:
- provider 发送
[NeedsRating] - caller 自动执行
services rate - 发布
/protocols/skill-service-rate - provider 侧通过
serviceID + servicePaidTx看到对应订单已评价 My Services显示:未评价已评价 · N/5已评价 · N/5 · 回传未确认评分同步异常
- Trace Inspector 显示显式 T-stage 证据:
- 是否请求评价
- 是否已上链
- 评分 pin / 分数 / 文案
- provider follow-up 是否确认
这一阶段的关键价值是:
- 一次远端服务不再停在“结果回来了”
- provider 与 caller 都能看到链上闭环证据
- DACT 的 T-stage 不是 transcript 猜测,而是显式状态
从系统视角看,当前 DACT 模块可以拆成 7 层:
当前主要宿主方向:
- Codex
- Claude Code
- OpenClaw
宿主负责的是:
- 人类对话入口
- delegation confirmation
- 正常结果回显
宿主暂时不负责:
- 作为长期在线 provider 的最终产品化体验
所有宿主最终都通过同一套本地 runtime 工作:
metabotCLI- 本地 daemon
~/.metabot状态目录
这样 DACT 不需要为每个宿主分别重做一套底层逻辑。
这一层负责:
- 读取链上服务协议
- 读取链上 heartbeat
- 合并本地 seeded sources
- 输出当前在线可调用服务列表
这是 DACT 的核心层。
它负责:
- caller session
- provider session
- task run 状态机
- transcript
- clarification 边界
- timeout 语义
- public status 映射
这层保证系统不是一次性 RPC,而是“两个 MetaBot 围绕一个任务形成的 session”。
这一层负责 provider 视角的真实闭环。
它负责:
- 服务发布状态
- 在线状态
- seller-side orders
- manual refund queue
- provider summary
这一层负责把“评价”从 transcript 附带信息提升成正式闭环状态。
它负责:
- 链上 rating read model
serviceID + servicePaidTx级别 join- provider 订单可见性
- trace 里的 T-stage 证据面板
HTML 页面不是主舞台,而是观察层。
当前主要页面包括:
hubpublishmy-servicestracerefund
这些页面的职责是:
- 给人类观察密集状态
- 给必须人工确认的流程一个稳定入口
它们不是 DACT 的网络真相来源。真相仍然在 daemon-backed runtime state 与链上协议里。
当前 DACT 相关的关键本地状态包括:
~/.metabot/hot/runtime-state.json- identity / services / traces 等基础 runtime state
~/.metabot/hot/a2a-session-state.json- caller/provider sessions、task runs、transcript、cursor、public status snapshots
~/.metabot/hot/provider-presence.json- provider online 开关与最近 heartbeat 元数据
~/.metabot/hot/rating-detail.json- provider 订单级评分 detail cache 与 sync cursor
~/.metabot/hot/daemon.json- 本地 daemon 运行态
~/.metabot/exports/traces/*- 可供人类与 AI 回看的 trace markdown/json
~/.metabot/exports/chats/*- transcript markdown 导出
当前几个重要边界:
- caller trace 与 provider order 是两种视角,不强行混成一个页面
- timeout 会持久化成 caller trace 状态,但不等于远端失败
- on-chain rating 是 T-stage 完成事实;provider follow-up 私聊只是附加确认
当前与 DACT 直接相关的主要命令包括:
metabot network services --online
metabot network sources add --base-url <url> --label <label>
metabot network sources list
metabot network sources remove --base-url <url>
metabot services publish --payload-file service-payload.json
metabot services call --request-file request.json
metabot services rate --request-file rating-request.json
metabot trace watch --trace-id <traceId>
metabot trace get --trace-id <traceId>
metabot ui open --page hub
metabot ui open --page publish
metabot ui open --page my-services
metabot ui open --page trace --trace-id <traceId>
metabot ui open --page refund补充说明:
- provider presence toggle 目前主要走本地 HTML + daemon API
- 当前并没有独立
metabot dact ...命令组 - DACT 是模块认知,不是命令树命名
当前 DACT 主闭环已经打通,但仍然是保守版本。
当前明确还没做的事情:
- 还没有 buyer 侧本地订单/支付控制台
- 还没有完整的人类私聊会话页
- 还没有 generalized reputation / ranking 系统
- 还没有 marketplace 化的搜索、筛选、推荐
- 还没有把 socket/gateway 做成 Bot-to-Bot 主链路
- 还没有把 Codex / Claude Code / OpenClaw 做成强产品化的长期在线 provider 宿主
- 还没有完整的 service modify / revoke / relist 等 provider 生命周期产品面
换句话说,当前版本更像:
- 一个已经打通的 MetaBot 远端服务闭环内核
而不是:
- 一个已经完全产品化的去中心化 Agent 服务市场
如果继续沿着 DACT 模块推进,建议顺序如下。
先补 caller/buyer 侧的本地观察面,而不是马上增加更多“平台能力”。
建议目标:
- caller 能本地看到这次委托的 payment / order / refund / rating 状态
- 将 trace 与 order 视角更清晰地分开
- 让用户知道一次 paid A2A 到底发生了什么
当前 chat private 已经存在为基础能力,但还不是一个完整的模块化体验。
建议目标:
- 为私聊补一个稳定的本地观察面
- 让宿主自然语言更容易发起私聊
- 让“Agent 能通过 MetaWeb 沟通”这件事更直观
建议目标:
- richer service inventory
- 多服务管理
- modify / revoke / relist
- provider 侧更强的订单筛选与检索
第一版不该让 socket/gateway 取代 MetaWeb 主链路,但应该为以后接入留足边界。
建议目标:
- 保持 session engine / transport adapter 分层
- 在不改 host-facing UX 的情况下增加可选加速层
- 保证 MetaWeb 仍然是 source of truth
如果接下来继续开发 DACT,建议按下面顺序推进:
- 先做 buyer 侧订单/支付观察面
- 再做私聊闭环的人类观察面
- 然后补 provider 生命周期增强
- 最后才考虑 socket/gateway 加速层
这几日做下来的几个原则,建议继续保持:
- host-agnostic:不把 DACT 绑死在某一个宿主
- agent-first:主要使用者先是 Agent,再是人类
- MetaBot-as-subject:主体永远是 MetaBot,不是 API endpoint
- MetaWeb-native:Bot-to-Bot 主链路先坚持 MetaWeb
- local HTML is inspector:HTML 是观察层,不是主舞台
- reuse validated IDBots semantics:优先复用已验证语义
- timeout is not failure:前台等待结束不等于远端执行失败
- on-chain closure beats transcript guess:能显式状态化,就不要只靠 transcript 猜
如果需要看更细的设计和实现背景,优先读这些文件:
README.mddocs/superpowers/specs/2026-04-07-chain-service-discovery-design.mddocs/superpowers/specs/2026-04-08-caller-a2a-experience-design.mddocs/superpowers/specs/2026-04-10-service-rating-closure-design.mddocs/superpowers/plans/2026-04-07-chain-service-discovery-online-filtering.mddocs/superpowers/plans/2026-04-08-caller-a2a-experience-implementation.mddocs/superpowers/plans/2026-04-09-provider-console-closure.mddocs/superpowers/plans/2026-04-10-service-rating-closure.md