Skip to content

feat(kit): replace agent discovery with @rivus/agent-kit - #150

Merged
PerfectPan merged 2 commits into
PerfectPan:mainfrom
nyx-cell:kit/discovery
Oct 15, 2026
Merged

PerfectPan merged 2 commits into
PerfectPan:mainfrom
nyx-cell:kit/discovery

Conversation

@nyx-cell

@nyx-cell nyx-cell commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Part of #147(四层全部合入才算关闭,单层不 Closes)。

Stack

四层自底向上:kit/discovery → kit/sessions → kit/leases → kit/room-web,四个 PR 全部 --base main。

本层是栈底:无需等待任何下层,git diff main..kit/discovery 即本层全部增量(85 files, +569/−2314)。

本层专属提交(git log --oneline main..kit/discovery):

  • 05250d9 feat(kit): replace agent discovery with @rivus/agent-kit
  • c23e9af fix(review): drop the stale moonbit checklist items and ignore rule

选定版本

  • @rivus/agent-kit@0.11.0(npm 实际发行版,dist/ 产物)——packages/agent-finder-cli/package.json 与 packages/agent-task-loop/package.json 中 "@rivus/agent-kit": "0.11.0"(exact,替换 @rivus/agent-finder-core: workspace:*)。
  • 本层不引入 @rivus/agent-kit-collab / effect(那是 leases / room-web 层)。

导入的 kit 子路径入口(git diff main..kit/discovery)

子路径 使用处
@rivus/agent-kit/discovery packages/agent-finder-cli/src/discovery/agents.ts、legacy-probe-recipes.ts、formatters/agent-table.ts、summary/summarize-agents.ts、packages/agent-task-loop/src/commands/init.ts(+ 其测试 mock)
@rivus/agent-kit/node agents.ts(createNodePlatform)、init.ts 及测试
@rivus/agent-kit/catalog agents.ts、legacy-probe-recipes.ts(类型/目录引用)

Summary

  • 删除 packages/agent-finder/ 整包(MoonBit agent_discovery_core + TS 桥 + wasm 产物 + 测试,48 个文件)及 sync-moonbit-version 脚本、CI/发布 workflow 中的 MoonBit 步骤与 publish-moonbit job。
  • 新增 packages/agent-finder-cli/src/discovery/legacy-probe-recipes.ts(20 条 legacy ProbeRecipe,逐字段搬运旧 catalog)与 discovery/agents.ts(builtinProbeRecipes + legacy 合并,7 内置 + 20 legacy = 27 个 agent)。
  • scan / doctor / provider list / provider inspect / agent-task-loop init 改走 kit detectAgents;init 用 versionProbe:false(不执行任何 agent 命令)。
  • engines.node 收紧到 >=22.13(kit Node adapters 要求)。

Validation

以下为步骤会话 2026-10-12 在本分支内容上实跑的记录(本机 Node v24.18.0 / pnpm 12.8.1;证据:/tmp/kit-step1-evidence.md §5;本次开 PR 会话未复跑全套门禁):

命令 结果
pnpm install --frozen-lockfile 通过(lockfile 重新生成后复验 up to date,supply-chain 校验过)
pnpm format:check 通过(558 files;首跑 4 个新/改文件漂移,pnpm fmt 修复后复检通过)
pnpm test 通过:根 node --test 14;agent-sessions 26;agent-room 70;agent-finder-cli 22(6 文件);agent-orchestration 67 passed + 3 skipped;agent-task-loop 548(93 文件,含重写 init.test.ts);room-web 182
pnpm build 通过(各包 vp pack ✔,room-web build ✔)
pnpm typecheck 通过(首跑 agent-finder-cli 1 个真实类型错误已修复)
pnpm lint 0 warnings, 0 errors(type-aware,474 files;首跑 4 个 await-thenable 已修复)
node packages/agent-task-loop/scripts/check-package.mjs 通过(clean consumer package check)
init 行为核验(fake HOME+PATH 假 claude 留痕) 通过:versionProbe:false 下没有任何 agent 命令被执行

新旧对拍证据摘录(先证据后删除)

摘自 /tmp/kit-step1-evidence.md §2 结论(同一合成世界状态分别喂旧 MoonBit 扫描器与 kit detectAgents;脚本 /tmp/kit-step1/parity-builtin.mjs、parity-recipes.mjs):

  • fixture A(既有 HostProbe fixture 逐字):codex 完全一致(status/command/version/evidence);其余 5 个共享 agent status/evidence 全部一致(missing),仅 warnings 有差异(见修正清单)。
  • fixture B(26 个旧 id 全量):23/26 完全一致(status、command、appPath、version、evidence 集合)。4 个差异全部是"待 owner 确认的修正",无一个是映射错误。
  • 初跑 claude-code/windsurf 各一个 evidence 差异,核查为对拍 fixture 自身不对称(existingPaths 漏了两处路径),修正 fixture 后一致——非实现差异。
  • 结构性差异(新增,非回归):Installation 新增 auth/problems 字段;报告顺序改为 kit 内置表序 + legacy 在后(CLI 人类输出自身有排序,不受影响);scan --json 从 DiscoveryReport(schema 0.1) 变为 Installation 数组(schema 不同构);版本探测统一由 detectAgents 执行(5s 上限、cwd=home、不走 shell),versionProbe:false 时不执行任何 agent 命令。

已接受的修正(等 owner 确认,changeset .changeset/agent-kit-discovery.md 已列)

  1. opencode/pi 的保守性 warning 消失(kit 内置 recipe 无 warning;20 条 legacy recipe 的 warning 原样保留)。
  2. cursor:新增 config 路径 ~/.cursor、命令候选 cursor-agent、2 条 recipe warnings(不跟随 CURSOR_CONFIG_DIR/XDG_CONFIG_HOME、不探测命令名 agent)。
  3. opencode 额外检查 ~/.config/opencode/opencode.jsonc 作为 MCP 配置路径。
  4. grok 新增(kit 独有;27 = 旧 26 + grok)。
  5. scan --json 输出形状从 DiscoveryReport(schema 0.1) 变为 Installation 数组;Installation 新增 auth/problems;scan 的 file auth 只读凭证文件、仅取非秘密事实。
  6. init 语义:versionProbe:false 下命令在 PATH 即入选,不再要求 --version 执行成功。
  7. "给 @rivus/agent-finder-core 加 changeset" 改为给 agent-finder-cli 与 agent-task-loop 加 changeset(原包已删除,无法发行版)。

另:pnpm changeset status → exit 0(minor:@rivus/agent-finder-cli、@rivus/agent-task-loop)。

跳过的检查说明

  • .github/workflows/moonbit-publish.yml 与 docs/moonbit-publish.md 按计划保留到 wrap-up 步骤(issue 把 token 移除与 workflow 删除放在第 5 步);本层已删除它的唯一调用方(publish.yml 的 publish-moonbit job),正常流程不会触发它。
  • 代码、脚本、CI、构建钩子中已无任何 MoonBit 执行路径(rg -i 'moon' 审计,见证据 §6)。

Known non-blocking notes

确认评审遗留项(均不阻塞本层合并,留给 wrap-up / 后续处理):

  1. 证据 /tmp/kit-step1-evidence.md §6 的审计方法描述与清单不完全自洽:rg -i 'moon' 审计未带 --hidden,被 ignore 的路径不在扫描面内,清单口径与命令口径对不齐。
  2. 证据 §2 的对拍枚举漏了 windsurf(26 个旧 id 的全量矩阵未逐项覆盖到它)。
  3. changeset 与证据的差异清单不同步:opencode .jsonc 路径只在 changeset 有、证据 §2/§7 未列;cursor-agent 命令候选的记载两侧详略不一致。
  4. docs/specs/0002-discovery-before-assignment.md:15 过时句:仍写着 "Today only agent-task-loop init consults @rivus/agent-finder-core"(本层已删除该包)(已在 kit/discovery 分支核实该行存在)。
  5. docs/moonbit-publish.md:37 对 publish.yml 的描述已失真:仍称 "The npm publish workflow still installs MoonBit and … calls .github/workflows/moonbit-publish.yml",而本层已从 publish.yml 删除这些步骤(已在 kit/discovery 分支核实该段存在)——留给 wrap-up 一并处理。

detectAgents/builtinProbeRecipes replace the MoonBit catalog and scanner; the MoonBit module, bridge, CI steps and build hook are gone; engines.node >= 22.13. Parity evidence vs the old scanner is in the PR description.
The PR/MR templates still listed the deleted check:moonbit-version script and .gitignore still ignored the deleted agent-finder moonbit output; confirmation-review round 1 flagged both, round 2 verified the deletions.
@PerfectPan
PerfectPan marked this pull request as ready for review October 15, 2026 08:36
@PerfectPan
PerfectPan merged commit 14d6ab7 into PerfectPan:main Oct 15, 2026
9 of 10 checks passed
@nyx-cell
nyx-cell deleted the kit/discovery branch October 15, 2026 14:31
@nyx-cell nyx-cell mentioned this pull request Oct 15, 2026
8 tasks done
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