Skip to content

feat(agent): 引入可插拔工具研究插件 - #113

Merged
TNT-Likely merged 6 commits into
mainfrom
codex/tool-research-m0
Sep 17, 2026
Merged

TNT-Likely merged 6 commits into
mainfrom
codex/tool-research-m0

Conversation

@TNT-Likely

@TNT-Likely TNT-Likely commented Sep 15, 2026

Copy link
Copy Markdown
Owner

背景

随着 PanWatch 的工具数量增长,Tool Research 不应成为 Agent Runtime 的强耦合能力。需要把它作为可插拔扩展接入,同时保留 M0 的 shadow 模式,避免改变现有模型工具可见性和调用行为。

变更内容

  • pan-agent-runtime 中抽取通用 RuntimeExtensionBeforeModelTurnContextToolExposureDecision 和统一 extension_event
  • 新增独立包 pan-agent-tool-research,封装工具描述、候选检索、选择和插件适配逻辑。
  • PanWatch 通过显式组装接入 Tool Research,默认使用 shadow 模式;active 模式只能缩小经过核心策略过滤后的工具集合。
  • 将 Tool Research 事件改为通用扩展事件,保留 SSE、任务持久化和 Trace 展示链路。
  • 在助手工具层新增只读市场研究能力:股票搜索、市场交易状态、热门股票、热门板块、板块成分股、股票基本面、资金流向和龙虎榜。
  • 为新增工具补齐 descriptor、中文关键词、别名、领域、参数意图和数据时效,并复用现有 marketdata 与 discovery 适配器。
  • 修复发现榜单数据源:将固定失效的 push2.eastmoney.com 切换到同协议可用的 push2delay.eastmoney.com,覆盖热门股票、热门板块和板块成分股。
  • 补充工具执行、数据转换、数据源入口和 descriptor/runtime 集成测试。

验证

  • python -m pytest -q:729 passed, 1 skipped
  • python -m pytest packages/marketdata/tests/test_discovery_vendor.py -q:5 passed
  • python -m pytest tests/test_assistant_tools.py packages/pan-agent-runtime/tests packages/pan-agent-tool-research/tests -q:55 passed
  • 真实数据烟测:热门股票、热门板块、板块成分股均返回 3 条数据
  • pnpm exec vitest run:30 passed(前序提交验证)
  • pnpm build:成功(前序提交验证)
  • git diff --check:通过

边界与风险

  • 当前 Tool Research 仍是本地目录和关键词检索的 M0 实现,不包含远程工具注册中心或语义检索。
  • 新增市场研究工具均为只读,不新增交易、写入或删除能力。
  • 龙虎榜工具要求调用方提供明确的 YYYY-MM-DD 日期,不在数据层臆造“今天”。
  • 东财发现榜单仍是单一外部数据源,当前通过备用域名解决入口可达性;若供应商整体不可用,仍需要后续增加本地快照兜底和数据源健康提示。
  • 插件暂不支持运行时动态安装和热插拔,由宿主应用显式组装。
  • 默认 shadow 模式不改变现有工具调用行为;active 模式需要宿主显式配置。
  • 前端构建仍有仓库已有的 Browserslist、chunk size 和 React Router 警告,不属于本次改动引入的问题。

后续计划

  • 为 discovery 增加本地快照 fallback 和更明确的空结果/数据源失败区分。
  • 根据实际工具规模和检索质量,再评估语义检索、远程 registry 和更多可选 runtime 插件。

@TNT-Likely
TNT-Likely merged commit 6b70ad2 into main Sep 17, 2026
@TNT-Likely
TNT-Likely deleted the codex/tool-research-m0 branch September 17, 2026 08:57
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.

1 participant