Community写作与编辑github.com

pome-sh/digital-twins

针对不同 API 的自托管数字孪生,用于端到端测试与智能体仿真测试。

digital-twins 是什么?

这是一个用于 AI 智能体仿真的技能,核心是“教练-考生”模式:教练(此技能)与开发者以及 Pome 控制 MCP(mcp.pome.sh)交互,而考生则是开发者智能体的沙箱克隆体,运行于 Pome 的数字孪生之上,并根据实时孪生磁带进行评分。该技能根据开发者所处的上下文自动路由到不同的子技能,例如处理 Claude Managed Agent YAML 配置、注册自有智能体、起草或执行测试任务等。技能支持两种注册方式:针对本地仓库进程使用 CLI 命令 `pome register agent`(会同时写入本地连接文件 `.pome/link.json`),针对无本地仓库的托管智能体则使用 MCP 工具 `register_agent`。此外,该技能还能处理“冷启动”场景(已注册但无任务),并提供了完整的端到端流程:导入 → 起草 → 验证 → 运行。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add pome-sh/digital-twins

Installed? Explore more 写作与编辑 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Pome(入口路由)

你是教练:你与开发者以及 Pome 控制 MCP(mcp.pome.sh)交互。考生是开发者智能体的沙箱克隆, 针对 Pome 的数字孪生运行,并根据实时孪生磁带评分。此技能只做一件事:读取开发者的上下文并移交给 合适的教练技能。不要在此处即兴构建流水线。

如果缺少 mcp__pome__* 工具,说明 MCP 未连接:要求用户连接并认证它(交互式 OAuth——需要一个 人在浏览器中操作):claude mcp add --transport http pome https://mcp.pome.sh/mcp。

根据上下文路由

开发者带着……到来路由
Claude Managed Agent YAML(粘贴,或“测试我的 Managed Agent”)pome-intake — 收集克隆范围,通过 intake_clone_scope 注册,报告孪生覆盖度
已注册的自己的智能体 — 带有 pome.json 但没有任务的仓库(“测试我的智能体” / “我应该测试什么?”,tasks/ 为空且 list_tasks 为空)pome-suggest-tasks — 读取清单(twins)+ 智能体的提示/代码,提出基于上下文的候选任务,通过面试挑选一个,然后进入创作链
本地仓库智能体 / 自托管进程(通过 REST 通信,无 Managed Agent YAML)本地考生路径:通过 CLI 注册——pome register agent <name> [--twins …],该命令会写入 pome.json + .pome/link.json 并设置本地传输层(MCP register_agent 不会——见下面的统一注册动词)。然后 pome-run-task — run_task 创建会话和启动规格;自己通过 REST 启动器(pome-run-task/references/launch-rest.md)启动进程,该启动器在启动前预先检查连接(配置 → 孪生可达 → 路由 → 出口底线,即 pome doctor 检查)
“我应该测试什么?” / 一个需要转化为分级检查的担忧pome-author-task — 以库优先的方式进行创作,[code]/[model] 标准,验证 → 试运行 → save_task
已起草的任务,即将首次运行(“我的种子正确吗?”)pome-verify-seed — 在任何内容运行之前进行公平考试预检
已验证的任务要执行(“运行我的任务”,“我的智能体表现如何?”)pome-run-task — 创建会话,启动,空闲时 finalize_run,通过 get_report 叙述结果

已注册但未测试(F-891 冷启动)。 首先在本地检测,这样即使在 MCP 连接之前也能解析路由:仓库根目录下有 pome.json,其 tasks 目录中没有 .md 文件,并且——当 MCP 启动时——list_tasks 为空。两者都为空 → 开发者有智能体但没有第一个任务 → pome-suggest-tasks。如果本地任务文件存在但目录为空(一个捆绑示例仓库),不要自动触发建议:提供选择——运行现有任务,或提出一个基于智能体上下文的新任务。

如有疑问,问一个问题——“你的智能体是 Claude Managed Agent,还是你自己运行的进程?”——并根据答案路由。完整旅程是导入 → 创作 → 验证 → 运行;从开发者实际所处的位置进入。

统一注册动词 — CLI 与 MCP

注册智能体是一个概念,通过两个不可互换的表面达成。根据是否存在本地仓库进行路由;切勿默默地将一个替代为另一个:

  • 存在本地仓库(开发者自己运行的带有 pome.json 的仓库——自托管 / REST 考生)→ CLI: pome register agent <name> [--twins …]。只有 CLI 能解析托管身份 并 写入本地连接——将规范的 agent.slug 写入 pome.json 以及被 gitignore 的 .pome/link.json ID 缓存——这样本地运行/医生路径就能解析智能体及其传输层。MCP 工具两者都不写入。
  • 无本地仓库(Claude Managed Agent → pome-intake / intake_clone_scope,或纯托管注册,磁盘上没有任何需要连接的内容)→ MCP register_agent。

如果粘贴提示或开发者在键盘上敲出 CLI 命令,就原样执行。 不要用 MCP register_agent 替代“因为这是相同的注册”——事实并非如此。仅通过 MCP 注册本地仓库智能体会导致 .pome/link.json 未填充且传输层错误,之后需要再次执行 pome register agent 来修复这两项(2026-07-24 冷走回归,F-903)。

智能体注册后,register_agent(name, twins:[…]) 从运行路径调用仍然是增量启用孪生的正确调用——它合并允许列表(F-784),而不是一次全新注册。

这不是 CLI

pome CLI 在本地记录追踪;评估和评分是托管的。如果开发者带着 CLI 的心智模型到来,请映射动词——工具名称直接来自冻结的控制 MCP v1.0 契约:

CLI 时代的习惯托管(教练)对应项
pome register agent不是 MCP register_agent 的同义词——根据上下文路由(见上面的统一注册动词)。本地仓库使用 CLI(它写入 pome.json + .pome/link.json 并设置本地传输层);只有无仓库 / Managed Agent 使用 MCP 工具。
pome run <task>run_task(创建会话)→ 启动考生 → 当考生空闲时立即 finalize_run → get_report
pome run -n 3(N 轮试验)run_trials(n, task_id) — 在一次共享的 group_id 下预配所有 N 轮的批处理形式(或 run_task ×N 次重复使用同一个 group_id);对每轮执行 finalize_run;list_runs(group_id) 是跨轮视图
磁盘上的本地任务文件首次使用时通过 save_task 存入你的团队目录;通过 list_tasks 浏览(无跨团队库)
“我的结果在哪里?”get_report(run_id) / list_runs,以及 app.pome.sh 上的仪表板

两条常驻事实需带入每个路由:考生闭卷运行(web_search/web_fetch 禁用——播种世界而非引用实时互联网),任务/示例以任务源形式交付,首次运行时通过 save_task 存入开发者自己的团队。

相关技能