DPP 是一个声明式页面协议:站点告诉智能体「我有什么数据、能做什么动作」, 智能体据此精确读取与操作页面——不再靠脆弱的猜测去猜选择器。
按投入从低到高,三个层级随时可用、可以叠加(高层级覆盖低层级):
/.well-known/desire.json 放一份 JSON:站点级页面地图、登录态指引。
不改一行业务代码。window.__desireProtocolExposed = {…}(原生声明形态,
无需引外部 SDK);噪音区在元素上标 data-dpp-ignore。<script src="https://desire.mankong.icu/desire-sdk.js"></script>
自动发现数据视图与动作,支持事件(order-placed 等)主动唤起智能体。一个典型的 L3 声明长这样(来自演示商店):
desire.expose({
views: {
products: { item: ".card[data-sku]",
fields: { title: ".name", price: {selector: ".price", type: "price"},
sku: {selector: ".", attr: "data-sku"} } }
},
actions: {
"add-to-cart": { params: {sku: {type: "string", required: true}},
run: [{click: ".card[data-sku='{sku}'] button.add"}],
effects: "persist" },
checkout: { run: [{click: "#checkout-btn"}], effects: "outbound" }
},
events: { "order-placed": {watch: ".toast.order"} }
});
pageExtract("products") 一次读全,支持 paged / infinite 自动翻页。pageAction("add-to-cart", {sku});
effects: "outbound" 的动作(下单、提交)会先向用户请求批准,危险操作不静默。data-dpp-ignore,智能体视而不见。在任意页面引入:
<script defer src="https://desire.mankong.icu/desire-sdk.js"></script>
SDK 提供类型化字段抽取、动作执行器、事件观察与自动化翻页;与 Desire 的信任分级 (站点声明 < 页面声明 < 用户显式指令)天然协同——声明只描述能力,执行永远经过用户的 访问等级与审批闸门。
隐私边界:声明与抽取全部在本机完成,页面数据不上传;跨源 iframe 的声明聚合与 定向提取在宿主侧实现,页面之间互相不可见。
desire.mankong.icu/demo/ 是一个按 DPP 接入的迷你商店:购物车与下单是真实请求(写入演示服务的内存,非真实交易)。用 Desire 打开后对智能体说:
pageExtract("products") 读结构化数据(价格已转数字、SKU 可加购)pageAction("add-to-cart", …)pageAction("checkout")——该动作声明了 effects: "outbound",会先向你请求批准order-placed 事件自动唤起智能体页面右下角的虚线框是 data-dpp-ignore 标注的噪音横幅——智能体会绕开它。