@changgaowei:我们开源了一个面向微信小程序的 MCP 容器:加载小程序 MCP Skills,通过 DID 认证(双方均无需预注册)……

X AI KOLs Timeline 工具

摘要

开源了一个面向微信小程序的 MCP 容器(anp-miniapp-dock),基于 Rust 的 DID 原生 Skill 运行时,可加载小程序 MCP Skills、通过 DID 免预注册认证并调用服务与渲染组件,让小型消费级 Agent 无需依赖微信/支付宝/抖音官方集成即可接入小程序生态。

我们开源了一个面向微信小程序的 MCP 容器:加载小程序 MCP Skills,通过 DID 认证(双方均无需预注册),调用服务并渲染组件——让小型消费级 Agent 无需等待微信/支付宝/抖音专属集成,即可接入小程序生态。 https://github.com/agent-network-protocol/anp-miniapp-dock… https://x.com/changgaowei/article/2112838599108444475… https://github.com/agent-network-protocol/AgentNetworkProtocol…
查看原文
查看缓存全文

缓存时间: 2026/10/21 10:27

我们开源了一个面向微信小程序的 MCP 容器:加载小程序 MCP Skill、通过 DID 认证(双方都无需预注册)、调用服务并渲染组件——这样小型消费端 Agent 无需等待微信/支付宝/抖音专属集成,就能接入小程序生态。 https://github.com/agent-network-protocol/anp-miniapp-dock https://x.com/changgaowei/article/2112838599108444475 https://github.com/agent-network-protocol/AgentNetworkProtocol

agent-network-protocol/anp-miniapp-dock

来源:https://github.com/agent-network-protocol/anp-miniapp-dock

anp-miniapp-dock

anp-miniapp-dock 是一个 DID 原生的 Rust Skill 运行时,用于在 ANP 之上运行 MiniApp MCP 兼容的 Agent Skill。MVP 现已实现为 Cargo workspace。它可以加载 MiniApp MCP 风格的 Skill、校验 mcp.json、在基于 QuickJS 的隔离 VM 中运行原子 API JavaScript、编译并执行 MiniApp MCP 组件运行时子集、将高风险操作路由至同意/审计流程,并通过 dock-cli 和 demo-server 运行一个本地点咖啡演示。

架构文档

Workspace 布局

  • crates/mcp-schema:MiniApp MCP 清单/结果模型与校验。
  • crates/skill-loader:SKILL.md、mcp.json、API 模块与组件包加载。
  • crates/dock-core:编排器、API 注册表、权限、同意、审计与渲染路由边界。
  • crates/js-runtime-quickjs:基于 QuickJS 的原子 API VM,使用 rquickjs。
  • crates/wx-compat:P0 wx 能力画像、作用域存储、请求代理 trait 与模型上下文辅助工具。
  • crates/anp-adapter:ANP DID 感知的签名 HTTP、挑战证明契约、白名单与作用域能力令牌缓存。
  • crates/consent-audit:风险策略、Mock 同意提供方、证明、审计记录与脱敏。
  • crates/card-spec:结构化降级卡片 schema。
  • crates/component-runtime:组件 VM、WXML/WXSS 子集编译器、事件与 Render IR。
  • crates/demo-server:咖啡商户 Agent 演示服务器。
  • crates/dock-cli:开发者 CLI 与咖啡 E2E 测试工具。
  • examples/coffee-skill:Mock 的 MiniApp MCP 咖啡 Skill 测试夹具。
  • examples/fixtures:仅用于 Mock 的兼容性夹具,包括地址表单、媒体审核、动态状态与地图位置预览,每个都带有 README、预期的 test-skill JSON 摘要与 Render IR 快照证据。
  • testdata/render-ir:用于夹具回归测试的 Golden Render IR 快照。
  • testdata/perf:本地性能/压力冒烟基线 JSON 产物。
  • scripts/release-gates.sh:本地厂商中立的发布门禁执行器与 JSON 报告生成器。
  • examples/coffee-fastapi-server:用于模拟远程 HTTP 商户的 Python/FastAPI 本地咖啡服务。
  • mac-app/AnpMiniappDockMac:SwiftUI/Xcode 聊天机器人宿主,可识别用户意图、调用本地 MiniApp 容器并渲染 Skill 组件。

开发命令

本仓库通过 rust-toolchain.toml 将 Rust 固定为 1.88.0,以匹配 ANP Rust SDK 的路径依赖。

cargo metadata --format-version 1 --no-deps
cargo fmt --check
cargo clippy --workspace --all-targets -- -D warnings
cargo test --workspace

聚焦命令:

cargo test -p dock-cli --test coffee_order_flow
cargo test -p component-runtime snapshot
cargo test -p dock-cli fixture
cargo test -p dock-cli perf
cargo test -p demo-server
cargo test -p component-runtime component_vm

发布门禁执行器:

./scripts/release-gates.sh

该执行器默认在 target/release-gates/release-gates-report.json 输出 dock.release-gates-report.v1。它会执行 docs/runbook/release-gates.md 中的发布门禁,记录通过/失败/跳过,将跳过视为未通过,并将脱敏失败、绕过同意、沙箱逃逸以及 token/Authorization/Signature 泄漏标记为硬性阻断项。--quick 仅用于开发期间验证脚本与报告管道,不构成发布批准。存在发布说明文件时,请传入 --release-notes <路径> 或设置 RELEASE_NOTES_PATH=。

本地金丝雀/发布演练:

./scripts/release-gates.sh --release-notes docs/runbook/releases/2026-06-14-local-canary.md

CLI

dock-cli 输出 JSON,因此结果既可作为校验证据,也可管道传给其他工具。完整的端到端开发者工作流请阅读开发者文档。

validate 输出稳定的 dock.validate-report.v1 schema。其 status / reportStatus 描述发布就绪程度(ok、warning 或 error),而 commandStatus: "ok" 表示 CLI 命令本身执行完成。报告中的本地绝对路径与敏感信息已做脱敏;咖啡夹具仍为 compatibilityLevel: "demo-only",因为它未签名,且使用仅限演示的 localhost 兼容性元数据。

cargo run -p dock-cli -- validate examples/coffee-skill
cargo run -p dock-cli -- inspect examples/coffee-skill
cargo run -p dock-cli -- test-skill examples/coffee-skill
cargo run -p dock-cli -- validate examples/fixtures/address-form
cargo run -p dock-cli -- test-skill examples/fixtures/address-form
cargo run -p dock-cli -- test-skill examples/fixtures/media-review
cargo run -p dock-cli -- test-skill examples/fixtures/dynamic-status
cargo run -p dock-cli -- test-skill examples/fixtures/location-map-preview
cargo run -p dock-cli -- import-wechat-mcp examples/coffee-skill --dry-run
cargo run -p dock-cli -- doctor
cargo run -p dock-cli -- perf examples/coffee-skill --iterations 1
cargo run -p dock-cli -- call-api examples/coffee-skill searchDrinks '{}'
cargo run -p dock-cli -- preview-component examples/coffee-skill components/drink-list/index '{"apiName":"searchDrinks","structuredContent":{"drinks":[{"id":"latte","name":"Latte","price":18}]}}'
cargo run -p dock-cli -- preview-card '{"content":[{"type":"text","text":"paid"}],"structuredContent":{"orderId":"order_demo_001","status":"paid"}}'

doctor 输出 dock.doctor-report.v1,检查本地工具链、workspace、运行时配置契约、Skill 包、DID 身份、签名凭证文件权限、解析器、白名单、存储/审计后端画像、Host 提供方、沙箱门禁面以及可选的远程服务器健康状态。未指定 --server 时,服务器健康状态为 skip 而非 pass;指定 --ci 时,检查失败会在 JSON 报告写入后产生 commandStatus: "failed"。本地默认配置与无头/演示后端仍属于 warning/skip 证据,而非生产就绪证据。

perf 输出 dock.perf-baseline-report.v1,记录本地的、依赖硬件的冒烟证据,涵盖 Skill 加载、API VM 调用、组件渲染、Render IR 大小、令牌查找、存储读写、进程 RSS 内存采样、并发会话、多 Skill、多组件渲染、动态请求/定时器以及资源限制 fail-closed 行为。testdata/perf/coffee-smoke-baseline.json 中的样例产物属于发布证据与 schema 文档,而非生产 SLO。

要针对 Python/FastAPI 本地服务运行咖啡流程:

cd examples/coffee-fastapi-server
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
uvicorn app:app --host 127.0.0.1 --port 8008
# 在另一个 shell 中,从仓库根目录执行:
cargo run -p dock-cli -- run-demo --skill examples/coffee-skill --server http://127.0.0.1:8008

Rust 演示服务器仍可用于聚焦测试:

cargo run -p demo-server -- \
  --host 127.0.0.1 \
  --port 3000 \
  --skill examples/coffee-skill \
  --token-issuer-secret test-only-local-secret \
  --trusted-did-document '=examples/identity/did_document.json'

cargo run -p dock-cli -- run-demo \
  --skill examples/coffee-skill \
  --server http://127.0.0.1:3000

run-demo 会执行 ANP DID 挑战/登录,调用 demo-server 的咖啡业务 API,通过 dock-core 运行本地 Skill API VM,让 Skill 的 JavaScript 调用 wx.login 并向 localhost 咖啡 HTTP 服务发起 wx.request,触发组件的 api/call 动作,对高风险同意进行 Mock 批准,将组件 VM 输出渲染为 Render IR JSON,并校验卡片过期。能力令牌仅在内部使用,并从 CLI 输出中脱敏。默认情况下,CLI 会读取 examples/identity/did_document.json 与 examples/identity/key-1-private.pem,并从 DID 文档的 id 派生用户 DID。这些文件仅为测试夹具;真实 DID 凭证必须保留在本地并被 Git 忽略。传入 --trusted-did-document 的 DID 必须与 DID 文档的 id 匹配。

Mac 聊天机器人演示

Mac 宿主是一个真实的 Xcode 项目与 Swift Package。它提供 PC 风格的聊天机器人 UI:

  1. 用户输入需求,例如 我要点一杯咖啡;
  2. 应用从进程环境或 source ~/.zshrc 中读取 OPENAI_BASE_URL、OPENAI_API_KEY 与 OPENAI_MODEL;
  3. 一次 OpenAI 兼容的 chat-completions 调用识别出点咖啡意图;
  4. 应用调用本地 MiniApp 容器 / Coffee Skill,并在聊天中渲染返回的组件。

如果希望应用使用 FastAPI 本地服务而非 Rust 备用服务器,请先准备好该可选服务:

cd examples/coffee-fastapi-server
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

运行宿主:

open mac-app/AnpMiniappDockMac/AnpMiniappDockMac.xcodeproj
# 或在不打开窗口的情况下进行冒烟测试:
cd mac-app/AnpMiniappDockMac
ANP_DOCK_MAC_HEADLESS=1 \
ANP_DOCK_CHAT_PROMPT='我要点一杯咖啡' \
swift run

设置 ANP_DOCK_DISABLE_OPENAI=1 可强制使用本地备用意图识别,以获得确定性的冒烟测试。

MVP 边界

MVP 与 MiniApp MCP Skill 形态契约兼容,但并非完整的小程序运行时。

已实现的 P0:

  • SKILL.md、mcp.json、apis[]、components[]、_meta.ui.componentPath。
  • 原子 API JS 加载,含受限 CommonJS、wx.modelContext.createSkill、registerAPI、中间件、输入校验、超时与沙箱化全局对象。
  • 权限、同意、审计、渲染路由与模型可见结果过滤的运行时边界。
  • ANP DID 感知的适配器契约、签名请求辅助工具、anp-http-signature/v1 挑战证明、白名单与作用域能力令牌缓存。
  • 组件运行时子集:Component({})、data、properties、methods、created/attached/detached、setData、NotificationType.Input/Result/Expire、sendFollowUpMessage、api/call、expirePreviousCards、点按/图片事件、WXML/WXSS 子集、Render IR JSON。
  • 针对结构化结果或渲染失败的 CardSpec 降级方案。
  • 咖啡商户演示服务器与 CLI/E2E 流程。

P0.5 认证/令牌现已在演示服务器流程中使用真实的 ANP DID 挑战签名与作用域能力令牌。运行时仍然有意不实现真实的 Flutter 宿主、完整的 WXML/WXSS、完整的组件/页面路由、微信登录、真实支付服务商、云开发、社交 API、同意 UI 或宿主渲染器。

安全说明

请勿提交私钥、DID 凭证、能力令牌、商户密钥、OpenAI API 密钥或真实用户数据。咖啡 Skill 与演示服务器使用纯 Mock 的业务数据,但挑战/登录与能力令牌已不再是 Mock。运行时代码应将 DID 签名、令牌与高风险授权保持在 Skill/CLI 边界之下,面向用户的输出应对令牌与签名进行脱敏。

相似文章

@MoonInAI: 喵的之前就说AI副业新手一定要去干小程序,这下真的一语成谶了!!! 刚看到的消息:微信小程序重大利好新风口 微信小程序个人主体虚拟支付收款开通 小程序赞赏功能8月底开通 刚好我最近把自己做小程序踩过的坑,整理成了一个开源 wechat-m…

X AI KOLs Timeline

作者发布开源项目 wechat-miniprogram-builder,一个覆盖微信小程序全生命周期的 AI Skill,并提及微信小程序个人主体虚拟支付收款开通、赞赏功能8月底开通等平台利好。

@ezshine: 分享一个开源项目,这个项目可以让你在自己的服务器上使用容器技术打开多个微信官方 Linux 客户端从而实现微信多开。 通俗点说,就像是你有好几台电脑,每台电脑开一个微信官方客户端,然后提供一个远程桌面让你登录操作电脑。所以这种登录微信的方…

X AI KOLs Timeline

分享一个开源项目 WechatOnCloud,它利用容器技术在自有服务器上运行多个独立的微信官方 Linux 客户端,并通过浏览器远程桌面管理,实现合规的微信多开与多端共享。

Show HN:WhatsApp MCP 在 Cloudflare 上免费运行

Hacker News Top

Show HN:whatsapp-mcp,一个部署在 Cloudflare Workers 上的开源 MCP 服务器,让 AI 代理(如 Claude Code)搜索并读取你自己的 WhatsApp 聊天记录,消息存储在 Cloudflare Durable Object 的 SQLite 数据库中。