返回全部文章

产品机制

给 Agent 安装应用:Morphz 的认知应用

Morphz 将专业工作方法、参考知识和执行程序做成可安装的认知应用。同一个 Agent 可以按任务采用不同方法,同时保留对用户和项目的理解。

一个 Agent 可以写代码、写小说,也可以参与视频制作。但真正做起这些工作,光有一个能回答问题的模型还不够。审查代码要有检查和验证的方法,写长篇小说要维护人物与情节,剪视频则要围绕素材和时间线安排操作。

Morphz 用认知应用组织这些专业能力:把工作方法、参考知识和执行程序做成可安装的应用。应用可以不同,使用它们的仍是同一个 Agent。它保留对用户和项目的理解,在不同工作之间继续积累经验。

.hns 是 Morphz 的最小认知应用形态。一份文件就可以定义一套方法,赋予它名称和版本,安装后交给 Agent 使用。本文从这种可以直接编写、安装和运行的小应用开始,看看专业能力如何变成 Agent 随任务选用的方法。

应用提供方法,Agent 保留认知

认知应用把领域内的工作方法交给 Agent,帮助它把通用能力用在具体任务上。

以代码审查为例,这套方法可以说明什么样的问题值得报告,提供检查改动的程序,以及如何组织验证结果。Agent 使用它时,仍然知道项目此前的决定,也仍然记得用户对兼容性和实现范围的要求。应用规定如何开展这项工作,已有认知帮助它判断当前项目应该怎样处理。

之后撰写发布说明,Agent 可以采用另一套方法。代码审查中已经确认的问题和修改,不需要先整理成一份交接材料,再交给一个从未参与过工作的助手。只要相关结论已经提交到共享认知中,后续工作就可以继续使用。

Morphz 最小认知应用机制图:.hns 代码审查应用的主 Harness 将工作约定、参考知识和程序加载到一次求值;同一个 Agent 读取共享认知,结合应用方法执行审查。需要保留的结论经上下文事务提交,后续发布说明工作再读取已提交的认知。各项工作复用统一运行时的工具、调度、事务与权限机制。
以代码审查和发布说明为例,展示 .hns 最小认知应用的工作方式:同一个 Agent 采用不同方法,后续工作继续使用经上下文事务提交的认知。图中两种应用为机制示例。点击图片可放大查看。

这套方法作用于具体工作:运行时将 .hns 包的主 Harness 绑定到一次求值,也就是 Agent 为当前工作进行判断和行动的过程。每次求值绑定一个主 Harness,不同工作的求值可以选用不同方法,并发推进时仍由同一套运行时调度。代码审查可以继续检查改动,写作任务也可以同时组织章节,各自使用适合的方法。

工作方法可以包含程序

一套方法往往既有需要理解的要求,也有可以直接执行的步骤。

“只报告会影响实际使用的问题”需要模型判断。“先读取指定文件,再把读取结果交给模型分析”则可以由程序安排,不必每次都靠模型重新决定顺序。认知应用可以同时容纳这两部分。

每个 .hns 包承载一个主 Harness,作为这个最小应用的执行核心,将工作约定、默认认知和求值入口组织在一起:

  • 工作约定:要处理哪些对象、遵循什么要求、交付怎样的结果。
  • 参考知识:采用这套方法时需要的默认知识和经验。
  • 执行程序与函数:固定步骤由程序执行,需要判断的部分交给模型。

Morphz 的 Yao 语言为此提供两种入口。infer 让模型根据工作约定决定下一步,适合路径尚不确定的任务;eval 由运行时执行程序,在指定步骤调用模型,适合已有明确流程的工作。两种方式都使用 Morphz 原有的工具、调度和上下文事务。

例如,一个文件审阅应用可以先由程序读取文件,再让模型分析内容。下面是一份完整的 .hns 最小认知应用,保存为 file-review.hns

(manifest
  (id file-review)
  (version "1.0.0")
  (title "File Review")
  (capabilities (tools read)))

(contract
  (purpose "Review the supplied file for concrete issues.")
  (output "Explain each issue and its impact. Do not invent test results."))

(eval
  (requires (tools read))
  (seq
    (bind document
      (call read (path "README.md")))
    (infer
      (captures document)
      (returns String)
      "Review this document using the current contract.")))

这份示例读取工作目录中的 README.md,然后请求模型审阅。读取文件是确定的步骤,发现问题和解释影响由模型完成。可以下载示例包,从修改工作约定和审阅要求开始,逐步形成自己的方法。

同一个 .hns 包也可以把重复步骤封装成函数。模型看到导出函数的名称、参数、说明和所需能力,需要时再调用;函数内部的实现不必全部进入模型上下文。

简单的方法可以放在一个文件中,较大的程序也可以拆分为多个文件,组织成 .hns 目录包。两种形式使用同一套安装和选择机制。

安装 .hns 最小应用,按需使用

安装上述文件:

morphz harness install ./file-review.hns
morphz harness list --format=json

安装会检查包的结构并保存其确定版本,不会立即执行里面的程序。需要使用时,可以为目标指定这套方法:

morphz objective create --harness=file-review@1.0.0 \
  "Review README.md and explain any concrete issues."

普通对话也可以使用这些最小应用,不必为了选择应用先建立一个长期目标。模型可以通过 harness_list 查看已安装 .hns 包的简要信息,再用 harness_select 选择具体名称和版本;运行时会在后续求值中加载对应主 Harness 的工作约定、参考知识和入口程序。

应用目录不会整份塞进每次请求。Agent 先发现有哪些方法可用,选定后再加载详细内容。这既让工作方法可以扩充,也避免安装的应用越多,每次对话就背负越多无关材料。

一次求值选定主 Harness 后,对应 .hns 包的名称、版本和内容哈希会随执行记录保存。即使后来安装了新版本,已经开始的工作仍然沿用原来的绑定,不会在中途悄悄换一套规则。

应用知识与工作经验各有归属

应用附带的知识来自作者;Agent 在实际工作中形成的经验来自自己的经历。两者需要区分。

例如,审阅应用可以提供“确认问题后再建议修改”的通用方法,而“这个项目必须兼容旧版配置”是 Agent 从用户那里获得的具体要求。前者随应用加载,后者保存在 Agent 自己的认知中。

Morphz 将应用附带的工作约定和默认认知作为只读内容提供给本次求值。安装或使用应用,不会自动把这些内容写进 Agent 的长期认知。模型认为某条经验值得保留时,仍然通过上下文事务明确提交。

因此,换用另一套应用不需要清空已有认知,安装一个应用也不会覆盖 Agent 对项目的理解。可复用的方法与持续积累的经验,可以分别演进。

界面让人参与专业工作

人参与专业工作时,也需要适合的界面。代码改了哪里,适合直接看差异;故事里的人物关系,画出来比埋在一段回复里清楚;剪辑结果则需要播放和检查。

Desktop 已实现相关界面功能,但尚未发布。它通过界面包引用已安装的 Harness,将独立界面、工作对象和 Agent 输入连接起来,让人可以围绕工作对象与 Agent 协作。

设计上,GUI 是可选、按平台适配的部分:图形界面由支持它的客户端呈现,执行部分仍使用 Morphz 的认知与任务能力。终端无需为了运行认知应用而具备图形界面。

应用复用运行时,不另建一套 Agent

应用作者可以专注于领域本身:要收集哪些信息,哪些步骤可以固定,哪些判断留给模型,以及如何检查结果。线程等待、工具执行、事务提交和权限检查,继续由 Morphz 处理。

应用声明需要读文件,不代表它因此获得了读取任意文件的权限。实际操作仍然受执行节点、沙箱和审批规则限制。安装应用不等于授权运行,这与应用是否由模型自主选择无关。

从一个 .hns 包开始,开发者就能把一类工作的经验写成方法和程序,交给已经了解用户和项目的 Agent 使用。方法可以按版本演进,认知继续积累。为 Agent 增加一种专业能力,不必重新建立它对用户和项目的理解。

面向更完整的应用,Morphz 为应用级封装预留了 .coa:围绕应用自身的身份与版本,组织执行方法、可选界面和资源,其中的执行部分可以包含或引用 Harness。简单的认知应用仍可以直接以 .hns 分发和运行。

包格式与使用方式见认知应用、领域程序与 YaoHNS 包格式规范。共享认知的维护方式见上下文事务,多项工作如何同时推进见并发调度