先说工具全貌:hmharness 是一个开源的 HarmonyOS/OpenHarmony 开发智能体框架,把工程创建、检查、构建、签名、安装、启动、日志读取和结果验证接成本地工具链,让 AI 不只是生成代码,还要用本机环境证明结果;自进化行为受审批、预算、canary 和回滚约束。它不是 DevEco Studio 的替代品,而是开发智能体和鸿蒙工具链之间的验证层。本文只展开其中一环:认知探索引擎。
一个真正要在本机干活的 AI,最怕的不是“不会答题”,而是把没见过的环境当成见过。项目结构、命令行工具、可执行动作、失败模式,这些都可能和训练语料不一致。如果智能体只会根据先验大胆输出,它就会把“猜测”包装成“结论”。
hmharness 的 cognitive explore 做的是另一件事:在明确预算和风险边界内,主动探测未知能力,把每一步的预测、执行和结果写进世界模型。猜错了就记为猜错,而不是继续圆故事。
1. 探索不是随机乱试,而是四项分数加权
探索引擎面对的是一个“动作空间”:当前环境提供了哪些可执行动作、每个动作的参数是什么、代价和风险是什么。对每个候选动作,它会综合四件事:
- 不确定性:这个世界模型对这个动作类型知道多少;
- 信息增益:执行它能不能减少不确定性;
- 目标相关性:它和当前探索目标有没有关系;
- 风险:是否包含不可逆或破坏性动词。
分数是“不确定性 + 信息增益 + 目标相关性 - 风险”。未知且低风险的动作优先被探测;高风险动作会被跳过或触发风险熔断。
这正是它和“让模型随便试命令”的区别:探索策略有明确目标,动作选择有评分,执行前有预测,执行后有世界模型更新,整个过程还受动作数和成本预算限制。
2. 每一步都先预测,再执行,后更新
runExploration 的关键顺序是:
读取历史轨迹 -> 重建世界模型 -> 注册假设
-> 选择未知动作 -> worldModel.predict
-> environment.act -> environment.observe
-> worldModel.update -> 记录轨迹和预测
这意味着探索不是只留下“执行了什么”,还留下“执行前以为会发生什么”。这些预测和结果后续可以作为校准数据,帮助系统知道哪些动作自己真的掌握,哪些动作仍然只是低置信猜测。
以公开实现为准,每个探索步骤都会写入轨迹;轨迹文件中的每一步都要求携带预测,测试也专门锁定这个约束。探索结束后,系统还会把摘要写入 episodic memory,来源标记为 exploration-run。
3. 一次真机结果:4 个动作,12 个成本单位
本地真机运行:
hmh cognitive explore --actions=4
输出摘要如下:
探索完成 · 4 动作 / 12 成本单位(预算到限)
轨迹 trj-explore-mum0dtkl 已落盘 · 假设裁决 1 条
[refuted] unseen affordances can be exercised successfully
信念更新:
read_file 置信 0.91 × 8
cognitive_query 置信 0.30 × 1
run_command 置信 0.81 × 124
write_file 置信 0.88 × 6
edit_file 置信 0.77 × 3
mcp_anysearch_search 置信 0.30 × 1
这里的 refuted 不是产品失败,而是本次探索最有价值的部分之一。探索开始前,系统注册了一个可检验假设:unseen affordances can be exercised successfully,并预先写明什么证据支持它、什么证据反驳它。当探索中出现失败或被拒绝的动作时,假设登记表把该假设标记为 refuted。
换句话说,这轮实验诚实地说:至少在这轮环境中,“没见过的能力都能成功执行”这个乐观假设不成立。世界模型因此获得了边界,而不是获得一段漂亮的自我表扬。
4. 预算、风险和临时目录是硬边界
cognitive explore 不是无限自主漫游。公开实现的边界包括:
- CLI 将动作数限制在 1 到 20 之间;
- 默认最大成本为 40 个成本单位;
- 默认风险容忍度为 0.6,超过则不选或熔断;
delete、remove、drop、publish、deploy、send、reset、format、kill等动词会被结构化风险评分识别;- terminal 探索使用临时 scratch 目录,结束后清理;
- 轨迹和探索记忆落盘,方便复查,不靠口头总结。
所以它探索的是“可承受的信息增量”,不是把生产环境当 playground。这个边界对开发工具尤其重要:一个能跑命令、写文件、调工具链的智能体,如果没有预算和风险边界,越主动反而越危险。
5. 怎么复现证据
本文证据钉在公开 main 提交 47648571574dd655e82f75a05dc6575a778c0c9c,该提交的 verify CI 已通过:CI 记录。
如果要核对源码和测试:
git clone https://github.com/swsgbl/hmharness.git
cd hmharness
git checkout 47648571574dd655e82f75a05dc6575a778c0c9c
npm install
node --import tsx --test packages/cognitive/src/__tests__/explore-runner.test.ts
如果要按本文口径安装 CLI:
npm install -g @hmharness/cli@0.19.4
hmh cognitive explore --actions=4
要求 Node >= 22。0.19.4 的 npm gitHead 是功能提交 44c9b410b96b1b9d95434df5c256e02cb93ada2e;44c9b41..4764857 之间只追加了 DEVLOG 文档,探索引擎源码不变。
发布时的边界也要说清:GitHub 最新 Release 仍是 v0.18.12,不能说“最新 Release 已包含探索引擎”。2026-09-30 当前 public main 已继续演进到 72c4638,npm latest 也到了 0.21.0,但该 main 的 verify 预检当时是红的;因此本文的复现路径固定在绿色 4764857 和 npm 0.19.4,不把旧结论外推到未来 main。
6. 结论
认知探索引擎的价值不在“AI 会自己玩了”,而在三件更朴素的事:
- 未知的动作会被显式探测,而不是被先验掩盖;
- 每一步都有预测、结果和置信度更新,后续可审计;
- 预算和风险边界让探索可以停下来。
对一个鸿蒙开发智能体框架来说,这种“知道自己不知道”的能力,比一句“越用越聪明”更可信。欢迎在 GitHub Discussions 反馈你在不同 OS、DevEco/OpenHarmony SDK 和真机环境下的探索结果。
参考: