AI探索未知环境为什么不瞎猜?hmharness认知探索引擎拆解 GitHub:swsgbl/hmharness

0 阅读6分钟

先说工具全貌:hmharness 是一个开源的 HarmonyOS/OpenHarmony 开发智能体框架,把工程创建、检查、构建、签名、安装、启动、日志读取和结果验证接成本地工具链,让 AI 不只是生成代码,还要用本机环境证明结果;自进化行为受审批、预算、canary 和回滚约束。它不是 DevEco Studio 的替代品,而是开发智能体和鸿蒙工具链之间的验证层。本文只展开其中一环:认知探索引擎。

仓库:github.com/swsgbl/hmha…

一个真正要在本机干活的 AI,最怕的不是“不会答题”,而是把没见过的环境当成见过。项目结构、命令行工具、可执行动作、失败模式,这些都可能和训练语料不一致。如果智能体只会根据先验大胆输出,它就会把“猜测”包装成“结论”。

hmharness 的 cognitive explore 做的是另一件事:在明确预算和风险边界内,主动探测未知能力,把每一步的预测、执行和结果写进世界模型。猜错了就记为猜错,而不是继续圆故事。

GitHub 仓库入口

1. 探索不是随机乱试,而是四项分数加权

探索引擎面对的是一个“动作空间”:当前环境提供了哪些可执行动作、每个动作的参数是什么、代价和风险是什么。对每个候选动作,它会综合四件事:

  1. 不确定性:这个世界模型对这个动作类型知道多少;
  2. 信息增益:执行它能不能减少不确定性;
  3. 目标相关性:它和当前探索目标有没有关系;
  4. 风险:是否包含不可逆或破坏性动词。

分数是“不确定性 + 信息增益 + 目标相关性 - 风险”。未知且低风险的动作优先被探测;高风险动作会被跳过或触发风险熔断。

认知探索闭环

这正是它和“让模型随便试命令”的区别:探索策略有明确目标,动作选择有评分,执行前有预测,执行后有世界模型更新,整个过程还受动作数和成本预算限制。

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 会自己玩了”,而在三件更朴素的事:

  1. 未知的动作会被显式探测,而不是被先验掩盖;
  2. 每一步都有预测、结果和置信度更新,后续可审计;
  3. 预算和风险边界让探索可以停下来。

对一个鸿蒙开发智能体框架来说,这种“知道自己不知道”的能力,比一句“越用越聪明”更可信。欢迎在 GitHub Discussions 反馈你在不同 OS、DevEco/OpenHarmony SDK 和真机环境下的探索结果。

参考: