بنقرة واحدة
myna
Myna 是 Grasshopper Python 的 agent interface。用 Myna.gha + recompute_and_read 驱动 GH Python Script 的编写、重算、回读与迭代。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Myna 是 Grasshopper Python 的 agent interface。用 Myna.gha + recompute_and_read 驱动 GH Python Script 的编写、重算、回读与迭代。
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | myna |
| description | Myna 是 Grasshopper Python 的 agent interface。用 Myna.gha + recompute_and_read 驱动 GH Python Script 的编写、重算、回读与迭代。 |
Agent interface for Grasshopper Python。
Myna.gha,并希望形成“改算法 -> 触发 GH 重算 -> 回读结果 -> 继续迭代”的闭环。项目根目录默认为 <PROJECT_ROOT>,由 GH_AUTODEBUG_PROJECT_ROOT、GH 文档路径或当前工作目录自动推断。GH 入口、bridge、算法代码必须指向同一个项目根目录。
默认目录和文件:
<PROJECT_ROOT>/mymodules/*.py:真实算法模块位置。<PROJECT_ROOT>/gh_scripts/*.py:GH Python 入口脚本默认位置。<PROJECT_ROOT>/_gh_debug/:自动调试运行文件与最终反馈文件目录。<PROJECT_ROOT>/.venv:项目依赖环境,默认依赖安装位置。templates/gh_entry_template.py:GH 入口脚本模板。templates/mymodule_template.py:算法模块模板。默认修改范围:
<PROJECT_ROOT>/mymodules/*.py。<PROJECT_ROOT>/gh_scripts/*.py 的 Agent 改动区。.venv 注入、mymodules 注入、request_id / heartbeat、Python sidecar 写入和 validation / python_debug 回写。依赖约定:
<PROJECT_ROOT>/.venv,优先使用 uv。# venv:。如果 .venv 尚未准备好,先运行:
python <skill_path>/local_project_env.py --project-root <PROJECT_ROOT>
安装额外依赖时运行:
python <skill_path>/local_project_env.py --project-root <PROJECT_ROOT> <package...>
Agent 开始工作前,默认假设用户已完成这些准备:
Myna.gha。Myna Recompute Server。<PROJECT_ROOT>/gh_scripts/*.py,以 templates/gh_entry_template.py 为模板。Myna Recompute Server 与目标 Python 组件放在同一个 Group,且该 Group 最好只放这两者。GH_AUTODEBUG_PROJECT_ROOT,使 GH 入口与 MCP bridge 指向同一个项目根目录。<PROJECT_ROOT> 至少包含 mymodules/ 和 _gh_debug/。当前只使用 Myna.gha TCP 重算 + recompute_and_read(...) 这条链路。
bridge 负责:
request_id。.gha 发送 recompute。60s。request_id 匹配且 terminal=true 的 last_error.json。ping:phase=timeoutping:phase=host_unreachable.gha 负责:
recompute。request_context_<component-guid>.json。runtime_messages、inputs_debug、outputs_debug、GH/Rhino 环境信息。_gh_debug/last_error.json。recompute 返回 run_in_progress。GH 入口脚本负责:
.venv 与 mymodules。request_context_<component-guid>.json。run_status_<request-id>.json 并每秒 heartbeat。python_payload_<component-guid>.json,其中包含 validation、python_debug、request_id、phase、terminal 等 Python 侧反馈。当前链路里有 4 个关键文件:
request_context_<component-guid>.jsonrun_status_<request-id>.jsonpython_payload_<component-guid>.jsonlast_error.json默认时序:
request_id。.gha 接收 recompute,写 request_context。request_context,立刻写 run_status,phase=running。run_status。python_payload,其中带 request_id、phase=succeeded|failed、terminal=true。.gha 在 SolutionEnd 合并 GH 反馈与 python_payload,写最终 last_error.json。request_id 的终态,由 bridge 兜底写 timeout 或 host_unreachable。把用户目标翻译成 4 件事:
mymodules/<algo>.py:真实算法。gh_scripts/*.py:GH 入口脚本接线。VALIDATION_REPORT / DEBUG_PAYLOAD:验证与调试反馈。<PROJECT_ROOT>/.venv。默认实现方式:
templates/mymodule_template.py 起步。templates/gh_entry_template.py 起步。当用户说“请编写某某算法,输入为 x/y/z,输出为 a/b/c”时,Agent 默认应:
<PROJECT_ROOT>/mymodules 新建或修改算法脚本。VALIDATION_REPORT / DEBUG_PAYLOAD。recompute_and_read(...) 依据 phase、validation 和 outputs_debug 持续迭代直到通过。每轮默认执行:
recompute_and_read(wait_timeout_s=60);若用户明确知道算法更慢,可按需调大。_gh_debug/last_error.json。request_id、phase、terminal、ok、error_category。error_location、traceback_tail、runtime_messages、inputs_debug、outputs_debug、validation、python_debug、python_payload_fresh。长耗时与并发约束:
<60s 的长计算;若算法更慢,应显式提高 wait_timeout_s。recompute 会返回 run_in_progress。停止条件:
phase=succeededok=truevalidation.passed=true,或存在等价的明确通过信号outputs_debug 与用户目标一致这是本 skill 的核心要求。ok=true 只表示“运行成功”,不表示“算法正确”。
VALIDATION_REPORT 推荐至少包含:
passedcheckstolerancemax_error 或其他关键误差值method_summaryDEBUG_PAYLOAD 适合包含:
禁止只用主算法自己的中间量做同源自证。Agent 默认应尽量构造另一条验证路径,至少满足下面之一:
优先级:
若主算法是几何或数值算法,Agent 默认应优先做这些事:
若无法构造完全独立的参考实现,Agent 也不能跳过验证;应退而求其次组合使用:
只有同时满足下面条件,才算“算法正确到可接受”:
validation.passed = true。outputs_debug 与用户要求一致。如果自检或交叉验算失败,应优先抛出异常,例如:
raise ValueError("VALIDATION_FAIL: max_error exceeds tolerance")
这会让入口把本轮归类为 validation_error。如果交叉验算失败,即使 ok=true,Agent 也不能停止,应继续修复算法。
Agent 应默认把这些字段视为主反馈源:
request_idphaseterminalokerror_categoryerror_locationtraceback_tailruntime_messagesinputs_debugoutputs_debugvalidationpython_debugpython_payload_fresh反馈源总表:
| 字段/反馈源 | 来源 | 类型 | 意义 |
|---|---|---|---|
request_id | bridge 发起、入口脚本回写、.gha 合并或 bridge 兜底 | 轮次标识 | 标记这次 recompute 属于哪一轮。bridge 只认 request_id 匹配且 terminal=true 的终态结果。 |
phase | Python sidecar、.gha 合并或 bridge 兜底 | 运行阶段 | 常见值:running、succeeded、failed、timeout、host_unreachable。适合先判断这轮到底是正常结束、超时,还是宿主失联。 |
terminal | Python sidecar、.gha 合并或 bridge 兜底 | 终态标志 | 为 true 表示这轮反馈已经收敛到可消费终态。 |
ok | .gha 汇总 GH runtime messages 与 Python sidecar 的 ok 后得出,或由 bridge 兜底写 false | 合并后的总判断 | 最终是否成功运行。不是算法正确性的充分条件。 |
error_category | Python sidecar、.gha 退化分类或 bridge 兜底 | 合并后的错误分类 | 用于快速决定下一步改哪一层:导入、输入、类型、几何、验证失败、组件运行时问题,还是链路级 timeout / 宿主失联。 |
error_location | Python 入口脚本根据 traceback 提取,.gha 合并 | Python 错误定位 | 通常是 mymodules/*.py 的文件名和行号。 |
traceback_tail | Python 入口脚本写 sidecar,.gha 合并 | Python 异常尾部 | Python 组件执行失败时的最后一段 traceback。用于直接定位算法或导入错误。 |
runtime_messages | .gha 直接从目标 GH 组件采集 | GH 运行时消息 | 对应组件在 Grasshopper 侧产生的 warning/error/info。适合判断有没有组件级报错。 |
inputs_debug | .gha 直接采集目标组件输入端口 | 参数输入快照 | 反映本轮 x/y/z/... 实际进到 Python 组件里的数据形态、分支、长度和值预览。当前已过滤 script 输入口。 |
outputs_debug | .gha 直接采集目标组件输出端口 | 参数输出快照 | 反映本轮 a/b/c/... 实际从 Python 组件流出的数据形态、分支、长度和值预览。当前已过滤 out 输出口。 |
validation | 算法模块 VALIDATION_REPORT,经 Python sidecar 再由 .gha 合并 | 正式自检结果 | 判断“结果是否真的正确”的主反馈源。必须包含交叉验算结论,而不只是形式检查。 |
python_debug | 算法模块 DEBUG_PAYLOAD,经 Python sidecar 再由 .gha 合并 | 调试补充信息 | 适合放中间量、误差统计、参考实现摘要、关键样本对比。 |
python_payload_fresh | .gha 读取 sidecar 后写入最终 JSON | sidecar 新鲜度 | 表示本轮是否成功读到了刚生成的 Python sidecar。若为 false,说明 Python 反馈可能缺失或过期。 |
started_at_utc / heartbeat_at_utc / finished_at_utc | 入口脚本写 run_status / python_payload,再由 .gha 合并;timeout 时可由 bridge 兜底带出 | 时间状态 | 用于判断本轮是否真正启动、最近一次活性时间、是否已经结束。 |
stdout_tail | Python 入口脚本写 sidecar,.gha 合并 | Python 标准输出 | 算法或入口脚本 print(...) 的尾部内容。 |
stderr_tail | Python 入口脚本写 sidecar,.gha 合并 | Python 标准错误 | Python 侧错误输出尾部。 |
module_name | Python sidecar 或 bridge 从 run_status 带出 | Python 模块信息 | 表示本轮入口脚本实际导入了哪个算法模块。适合排查“改了文件但 GH 没用到”。 |
elapsed_ms | Python sidecar,.gha 合并 | Python 执行耗时 | 本轮 Python 侧执行时长。 |
gh_environment | .gha 构建 | GH 环境信息 | 描述当前 Grasshopper 文档/组件上下文,用于定位是不是文档、目标组件或画布状态的问题。 |
rhino_environment | .gha 构建 | Rhino 环境信息 | 描述 Rhino 运行环境,用于区分宿主环境问题与算法问题。 |
判断约定:
ok=true 误判为“算法正确”;算法正确性主要看 validation、交叉验算和 outputs_debug。outputs_debug 和 validation。phase=succeeded / phase=failed 表示本轮已正常结束。phase=timeout 表示等待上限内未完成,但宿主仍可通信。phase=host_unreachable 表示 bridge 无法再与宿主通信。phase=timeout 后立刻再调重算,可能先拿到 run_in_progress;这通常表示 GH 内上一轮还没真正释放。mymodules/*.py 和 GH 入口脚本的 Agent 改动区。request_id、run_status heartbeat、Python sidecar 写入机制。