# OpenHands 并行任务：用两个worktree分别做库存筛选和CSV导入预览

本次实际运行：Python标准库参考程序、业务边界检查与HTML渲染。未安装或运行OpenHands，未调用模型、创建真实自动化、发送消息、建第三方PR或部署。人工基准和错误样稿均明确标注。

## 文件

input.json：原创输入；node-fields.json：字段教材，不能直接当平台导出文件导入；prompt.md：任务约束；schema.json：规范化观察结构；reference.py：本站手写参考；reference-output.json：实际本地输出；reference.html：参考产物；review-template.json：读者填写目标工具结果。

## 本地运行

```bash
python3 reference.py
python3 verify.py
```

用浏览器打开reference.html。不依赖模型或第三方账户。

## 真实平台步骤

1. 明确两项互不重叠的责任
阅读 input.json，两项功能分别只改filter.py和import_preview.py。运行 reference.py会在系统临时目录建立真实Git仓库与两个worktree，结束后保留工作区清单及差异文本，不连接远程。

2. 在Canvas打开Git练习仓库
Agent Canvas选择Open Workspace打开自己的副本，检查overview中的分支和workspace。普通复制文件夹没有Git元数据时不能当作worktree演示。

3. 建立第一个隔离子会话
让父代理启动local child conversation，明确isolated worktree，任务是分类筛选。查看子会话overview的路径，与父会话不同才继续；shared workspace不能满足本题隔离要求。

4. 建立第二个独立子会话
第二个child只负责CSV导入预览，输入两条有效行和一条空SKU。给每个子会话独立验收，不让两个代理同时修改同一公共入口。

5. 分别审查两份改动
在各自Files/Commits中阅读diff、命令和检查记录。确认任务甲没写import_preview.py，任务乙没写filter.py；包内worktree-reference.json仅证明本地Git机制。

6. 集成后一起运行两项功能
先保留主分支基线，再按自己的Git流程集成两份经审查的改动。复查筛选、清空筛选、导入正常行和错误行；本地参考展示两个独立工作区真实产生的diff。

7. 保留隔离证据与实际费用
保存Canvas父子会话链接、真实workspace路径、最终diff和失败项。并行请求数可能增加费用，两个子会话存在不表示最终集成已经通过。

## 版本与许可

Canvas1.27.1；须Git仓库，两个模型任务可能增加请求成本；共享workspace不是隔离模式。桌面preview界面可能变动；不宣称任意代理harness都支持全部子任务能力。

## 来源

- https://docs.openhands.dev/openhands/usage/agent-canvas/conversations
- https://www.openhands.dev/product/canvas
- https://docs.openhands.dev/openhands/usage/agent-canvas/setup

## 验收边界

独立库存小应用中，任务甲负责筛选器与查询状态，任务乙负责CSV导入预览及错误行提示。两个child conversation明确选isolated worktree，最终交两份独立diff和集成预览；核对两个workspace路径、各自文件范围、主分支在集成前没被写入、集成后导入与筛选同时可用。无需自动push或自动merge。

目标产品实跑时保存原生输出，不得把本包人工/手写参考改名冒充模型返回。所有人物、订单与规则均为虚构练习数据。

渲染说明：input.html、operation.html、reference.html和figures是随当前原创输入冻结的实际浏览器预览；修改输入后重新运行会更新reference-output.json，静态HTML不会自动重绘。目标软件原生结果请另存。
