Skip to content

修复(skill):改用兼容 PowerShell 的 mcporter 参数语法 - #562

Closed
realMisakaMikoto wants to merge 1 commit into
Panniantong:mainfrom
realMisakaMikoto:agent/fix-mcporter-powershell-syntax
Closed

修复(skill):改用兼容 PowerShell 的 mcporter 参数语法#562
realMisakaMikoto wants to merge 1 commit into
Panniantong:mainfrom
realMisakaMikoto:agent/fix-mcporter-powershell-syntax

Conversation

@realMisakaMikoto

@realMisakaMikoto realMisakaMikoto commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

概要

  • 将函数调用式 mcporter 示例替换为跨 Shell 更稳定的命名参数写法
  • 将 Exa 的 Reddit 回退搜索改为受支持的 site:reddit.com 查询
  • 添加回归测试,覆盖随包发布的技能、指南以及当前安装/故障排查文档

根因

在 Windows 上,npm 生成的 PowerShell shim 无法可靠保留下列函数调用式写法中的嵌套字符串字面量:

mcporter call 'exa.web_search_exa(query: "test", numResults: 1)'

因此,mcporter 收到的是标识符而非字符串,并报出 Unsupported argument expression: Identifier;查询中包含空格时,还可能把部分表达式误识别为临时 MCP 服务名。

本 PR 统一改用 mcporter 官方支持的 key=value 参数形式:

mcporter call exa.web_search_exa query="test" numResults=1

该写法已在 PowerShell 中实际验证,同时兼容 Bash。

用户影响

Windows 用户的 Agent 按照内置技能调用 Exa 时,不再在发出 MCP 请求前就因参数解析失败。其他 MCP 后端的当前技能示例与配置指南也统一采用相同的可移植写法。

验证

  • python -m pytest tests/test_skill_command.py -v:6 项通过,15 个子测试通过
  • python -m ruff check tests/test_skill_command.py:通过
  • git diff --check:通过
  • 实际运行 mcporter call exa.web_search_exa query="Agent Reach GitHub repository" numResults=1:成功返回真实搜索结果
  • Windows 完整测试:403 项通过、14 项跳过;另有 12 项与本改动无关的既有失败,集中在 POSIX /bin/sh、符号链接与 HOME 隔离
  • 全项目 ruff:存在 20 个与本改动无关的既有问题;本次修改的 Python 文件检查通过
  • 全项目 mypy:存在 1 个与本改动无关的既有错误,位于 agent_reach/cli.py:1747

相关工作

PR #537 处理的是另一个问题:Exa 工具契约中包含已弃用工具。本 PR 只处理 PowerShell 下的参数传递兼容性;两者在搜索参考文档中有少量行级重叠,合并顺序不同可能需要一次简单 rebase。

@realMisakaMikoto realMisakaMikoto changed the title fix(skill): use shell-safe mcporter arguments 修复(skill):改用兼容 PowerShell 的 mcporter 参数语法 Aug 3, 2026
@realMisakaMikoto
realMisakaMikoto marked this pull request as ready for review August 3, 2026 16:01
@Panniantong

Copy link
Copy Markdown
Owner

感谢贡献。该修复已在 #578 以保留你作者身份的提交 e4e00c6 重实现并合并到 main;已把当前 19 处 mcporter 示例改为 PowerShell 安全的命名参数,同时保留最新 LinkedIn 与 Exa 契约,并通过真实 mcporter 冒烟。关闭此旧 PR。

@Panniantong Panniantong closed this Aug 6, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants