fix: make hwpod workspace search node-native
This commit is contained in:
@@ -124,13 +124,15 @@ Keil MDK 装配规则:当 `spec.workspace.toolchain` 为 `keil-mdk`、`keil`
|
||||
| `node.inventory` | 查询 workspace/probe/io 能力 |
|
||||
| `workspace.ls` | 列目录 |
|
||||
| `workspace.cat` | 读文件 |
|
||||
| `workspace.rg` | 搜索文件内容 |
|
||||
| `workspace.rg` | 递归搜索文件内容,标准别名还有 `grep` / `search` |
|
||||
| `workspace.apply-patch` | 应用 Codex apply_patch envelope 源码补丁 |
|
||||
| `workspace.write` | 带 `expectedSha`、换行策略和 diff 摘要的整文件写入 |
|
||||
| `workspace.replace` | 带 `expectedSha`、唯一匹配检查和 diff 摘要的精确文本替换 |
|
||||
| `workspace.insert-after` | 按精确 anchor 插入文本,避免 PowerShell/cmd quoting |
|
||||
| `cmd.run` | 通用 host 命令透传,用于组合 Keil、serial-monitor、job status、下载、复位和临时维护动作 |
|
||||
|
||||
`workspace.rg` 是查找符号、结构体、函数签名和错误文本的标准入口。它在 node 侧直接做受限递归文本搜索,不依赖目标 host 预装 `rg`,并支持 `--context`、`--before-context`、`--after-context`、`--max-matches`、`--max-files`、`--max-bytes-per-file` 和 `--max-line-bytes`。输出会保留结构化 `matches`、`scannedFiles`、`truncated` 和 `limits`,用于在不爆炸输出的前提下追踪上下文。需要精准读整文件时才用 `workspace.cat`;查找 ARM-2D 头文件、函数原型或 Demo 入口时,优先用 `workspace.rg` / `workspace.search`,不要再把 `cat` 管道给 shell `grep`。
|
||||
|
||||
若历史实现中仍存在 `debug.*` 或 `io.*` 这类专用 op,它们只能作为兼容存量观察对象,不再作为新 case 或新 harness 业务的扩展方向。标准路径是:compiler 根据 spec 生成 `cmd.run` 的 `command` + `argv`,node 只负责在目标 host 上忠实执行并返回 stdout/stderr/exit code。
|
||||
|
||||
`hwpod-node` 是 HWPOD 的唯一受控节点执行器。第一阶段的业务扩展优先落在 `hwpod-compiler-cli` / `hwpod-cli`,通过已有文件读写 op 和 `cmd.run` 组合 Keil、serial-monitor 等成熟工具;不要因为某个 case 需要 build、job status、download、UART 或临时维护动作就新增专用 node op。`cmd.run` 的命令解析、PATH 稳定性和跨平台差异必须在 `hwpod-node` 本体内处理;当 Windows service、后台进程或 D601 host 的环境变量与交互 shell 不一致时,不得用 gateway shell、手工 PowerShell、预先手工创建 worktree 或其他旁路代替 `hwpod-node-ops -> hwpod-node`。D601/Windows 实地调试应使用 UniDesk SSH 透传 `D601:win` 观察进程、PATH、工具安装位置和日志,但修复必须回到 `hwpod-node` 源码、配置或启动入口,并用 `/v1/hwpod-node-ops` 原链路复测。只有 `cmd.run` 自身的执行语义、环境继承或可见性不满足真实 host 执行时,才修改 `hwpod-node`;否则优先改 compiler/CLI。
|
||||
@@ -180,6 +182,7 @@ bun tools/hwpod-ctl.ts spec validate --spec .hwlab/hwpod-spec.yaml
|
||||
bun tools/hwpod-compiler-cli.ts compile --spec .hwlab/hwpod-spec.yaml --intent workspace.ls --args '{"path":"."}'
|
||||
bun tools/hwpod-cli.ts inspect --spec .hwlab/hwpod-spec.yaml --dry-run
|
||||
bun tools/hwpod-cli.ts workspace read --spec .hwlab/hwpod-spec.yaml projects/01_baseline/User/main.c
|
||||
bun tools/hwpod-cli.ts workspace rg arm_2d_init projects/01_baseline/Middlewares/Arm-2D --context 3 --spec .hwlab/hwpod-spec.yaml
|
||||
bun tools/hwpod-cli.ts workspace replace --spec .hwlab/hwpod-spec.yaml --path projects/01_baseline/User/main.c --find "old text" --replace "new text" --expected-sha <sha>
|
||||
bun tools/hwpod-cli.ts workspace insert-after --spec .hwlab/hwpod-spec.yaml --path projects/01_baseline/User/main.c --anchor "while (1)" --line " /* marker */"
|
||||
bun tools/hwpod-cli.ts download --spec .hwlab/hwpod-spec.yaml
|
||||
@@ -207,6 +210,7 @@ export HWLAB_RUNTIME_ENDPOINT_LOCKED=1
|
||||
bun tools/hwpod-ctl.ts spec validate --spec .hwlab/hwpod-spec.yaml
|
||||
bun tools/hwpod-cli.ts inspect --spec .hwlab/hwpod-spec.yaml
|
||||
bun tools/hwpod-cli.ts workspace cat --spec .hwlab/hwpod-spec.yaml --path projects/01_baseline/User/main.c
|
||||
bun tools/hwpod-cli.ts workspace rg arm_2d_init projects/01_baseline/Middlewares/Arm-2D --context 3 --spec .hwlab/hwpod-spec.yaml
|
||||
bun tools/hwpod-cli.ts build --spec .hwlab/hwpod-spec.yaml
|
||||
bun tools/hwpod-cli.ts download --spec .hwlab/hwpod-spec.yaml
|
||||
bun tools/hwpod-cli.ts job status <jobId> --spec .hwlab/hwpod-spec.yaml
|
||||
@@ -225,6 +229,7 @@ code agent 必须在自己的 AgentRun workspace 内调用同一套入口,例
|
||||
hwpod-ctl spec validate --spec .hwlab/hwpod-spec.yaml
|
||||
hwpod inspect --spec .hwlab/hwpod-spec.yaml
|
||||
hwpod workspace cat --spec .hwlab/hwpod-spec.yaml --path projects/01_baseline/User/main.c
|
||||
hwpod workspace rg arm_2d_init projects/01_baseline/Middlewares/Arm-2D --context 3 --spec .hwlab/hwpod-spec.yaml
|
||||
hwpod workspace replace --spec .hwlab/hwpod-spec.yaml --path projects/01_baseline/User/main.c --find <old> --replace <new> --expected-sha <sha>
|
||||
hwpod build --spec .hwlab/hwpod-spec.yaml
|
||||
hwpod download --spec .hwlab/hwpod-spec.yaml
|
||||
|
||||
Reference in New Issue
Block a user