ワンクリックで
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 写入机制。