工程

开源 hamo-score-0.6b:一个在你自己机器上运行的心理状态评分模型

AI for Inner Explorers.

hamo-score-0.6b:一句话进,五个状态维度出,本地运行 —— 而危机识别被刻意留在权重之外

Hamo 开源了 hamo-score-0.6b:一个 6 亿参数的小模型,读取疗愈对话中的一句话,给出五个心理状态维度的分数 —— 并且永远不写回复。它在一台笔记本上不到一秒完成打分,与云端前沿模型的临床判断一致率 96.3%,全项目 API 花费约七美元。

Hamo 的每一次对话里,都站着一个不出声的参与者。Avatar 在说话,而另一个东西在读 —— 它不组织回应,只是把脉。来访者说一句话,它就悄悄记下五个数。

这个组件叫 SCORE。在此之前,它以调用云端大模型 API 的方式运行:来访者发出的每一句话,都要离开我们的机器、交给一家外部厂商、再带着一个判断回来。今天它跑在我们自己的硬件上,模型小到能装进一部手机 —— 而从这一周起,任何人都可以下载它。

它是把脉师,不是代笔人

描述 SCORE 最准确的说法,是它在给一段对话把脉。它读一句话,给五个维度各打一个 0.0 到 3.0 的分:

  • 行动力(Agency) —— 这个人是否在为自己做点什么?计划、应对、自主的行动。
  • 退缩(Withdrawal) —— 他是否在往回收?脱离、回避、沉默下去。
  • 极端化(Extremity) —— 灾难化、非黑即白、绝对化的措辞。
  • 敌意(Hostility) —— 在攻击某个人。单纯宣泄挫败不算。
  • 边界感(Boundary) —— 一个清晰的「我」留下的语言痕迹:我需要我不愿意这是我的底线

边界感值得多说一句,因为它是五个里最特别的一个。它的临床本源是家庭治疗中的「自我分化」 —— 那是一种关系属性,需要在时间里观察。但一个只读一句话的把脉师看不见关系,它只看得见语言。所以它实际测量的,是边界感的语言足迹:「我需要……」「我不愿意……」是高分;惊慌的倾泻、自我淹没在情绪里,是低分。而骂人根本不算边界 —— 那记为敌意,是边界失效的另一个方向。

这五个数字永远不会抵达来访者。它们流进确定性代码,折算成压力值、判定此刻落在哪个状态桶,再由准入表决定这一轮谈话能走多深 —— 是只能接地与陪伴,还是可以上认知检验。

把脉师从不开方。但下游的每一张方子,都以它的脉象为前提。

为什么必须是小的、本地的、自己的

云端 API 打分打得不错。但有四件事它给不了:

数据主权。 在多数前沿模型的服务条款下,你不能用它的输出去训练一个竞争模型。用租来的判官打分,分数就一直是租的。用自己的判官打分,每一次判断都成为可以喂给下一代模型的资产。

一把不会移动的尺子。 云端模型会被悄悄升级,判官一变,尺子就在你脚下漂移。而审计轨迹必须能回答「上个月的压力值和这个月的,是不是同一把尺子量的」 —— 只有锁死的版本号能让这个问题有答案。对任何需要为一份临床记录辩护的机构来说,一个不通知你就改变的模型,是不合格的。

强意义上的隐私。 打分本地化之后,来访者的话根本不再离开这栋楼。对于功能上等同于病历的对话,「数据不出诊所」是能拿出的最强姿态 —— 比任何关于传输加密的承诺都更强。

我们要求别人做的事,自己得先做。 我们认为专业机构最终应该部署的形态,是本地小模型 + 确定性脊柱。如果自己不先在生产里跑这套形态,去推荐它就是空话。开源一个自己并不依赖的东西,那是一份新闻稿;开源自己系统正跑着的那个东西,才是一次承诺。

它是怎么学会的,以及那条决定了一切的规矩

第一原则是一条隐私红线,后面每一个决定都受它约束:真实来访者对话永不进入训练集。

真实的生产数据只做两件事。它做「考卷」 —— 758 条留出的真实轮次,以其历史生产评分作为标准答案。它还提供「分布统计」:真实的人到底把话说多短、多口语、多零碎。第二件事比听起来重要得多。不参照它写出来的合成数据,会漂向工整、通顺、小说长度的段落 —— 而没有任何一个正在痛苦中的人,是那样打字的。

教学本身走的是一条三级师徒链。两年的生产打分早已在数据库里攒出了一份标准答案,再用一次不花一分钱。接着,一个开源模型 —— DeepSeek-chat —— 必须先在 440 条真题上通过「资格考试」,与标准答案的维度级一致率达到 89% 之后,才被允许去教任何东西。然后它给那些成为学生教材的合成对话窗口批改作业 —— 五代累计约两万条通过准入,其中本次发布的版本学的是约 1.5 万条。学生是 Qwen3-0.6B,在一台 MacBook 上以每轮 40 分钟的节奏学完。

为什么要绕一个中间老师,而不直接拿原判官的分数来教?两个理由,都是结构性的。一是服务条款不允许。二是我们要的是一条端到端完全开放、可复现的血统 —— 别人应该能在没有商业 API 密钥的情况下跑通这条管线,得到可比的结果。

合成语料也不是随便造的。它是按一张场景格子表定额生产的:中性寒暄必须全维打零;危机表达必须让退缩打满;对 AI 本身的抗拒要分五档强度;像「算了」这样两个字的消息,必须结合上下文才能理解。每一条生成出来的样本还要过一遍线上系统在用的同一道准入闸门 —— 分数落在设计目标之外的,直接丢弃,不做修补。

成绩单

评价一个把脉师,最公平的参照物就是它所替代的那个把脉师。读这张表有一个前提要先说清楚:模型那一列是在 758 条终评卷上判的分,而教师那一列是它在另一份 440 条校准集上的资格考成绩。两份考卷不同,所以这些列是参照,不是同场竞速:

hamo-score-0.6b教师(DeepSeek)参照评分器·与自己比
维度分一致率(±0.5)84.0%88.7%94–98%
最终临床判断一致率96.3%97.5%未测
分维度A 81% · W 86% · E 85% · H 94% · B 73%
延迟本地约 0.8 秒(MLX),1.5–2.9 秒(ARM CPU 上的 GGUF q8)一次网络往返
单次打分成本不到一分钱,在自有硬件上摊销API 计费 + 数据出境

关于这张表,有三句诚实的话要说。第一,天花板并不是 100% —— 那个参照评分器重复打同一句话时,与自己的一致率也只有 94–98%;而小模型的分歧大多是「这该打 1.0 还是 1.5」这种在 0.5 步长量表上的贴线球,恰恰是参照模型自己也会两边横跳的那类球。第二,边界感 73% 是五个维度里最弱的一项,我们不打算把它藏起来 —— 出于上文说过的原因,它是五项中最难从单句话里读出来的。第三,也是最不好看的一条:这一代的决策级一致率其实小幅下降了,从上一版的 96.8% 降到这里的 96.3%。这是我们有意接受的取舍 —— 同一次发布把维度级一致率从 81% 推到了 84.0%,并把危机措辞的召回率翻了一倍 —— 但它在某一个轴上确实是回退,理应写在表格自己的段落里,而不是塞进一条没人会读的脚注。

小模型还有一项旧管线没有的能力。极短的回复 —— 「算了」「无所谓」 —— 过去会被当作无法评分而跳过。小模型能结合上下文读懂它们,抓到里面那个退缩信号。而那恰恰是一个好的临床工作者会抬起头来的时刻。

它拒绝做的事

这里的边界不是免责声明,而是架构。

它从不写回复。 它在架构上仍然是一个小语言模型 —— 你用 AutoModelForCausalLM 加载它、调用 generate —— 但它被训练与提示去输出的,只有一个装着五个分数的 JSON 对象。它没有任何对话角色,它产出的任何东西都不会被展示给来访者。

它不是危机检测器。 这是本文最重要的一行,而它需要说得精确,而不是说得笼统。危机的判定根本不接在这个模型上:在 Hamo 的系统里,一套独立的确定性机制在更上游短路进入完整的升级协议,危机内容根本不会到达评分器。换掉评分器动不了这道闸门,因为这道闸门从来就没连到它上面。权重里确实带有一定的危机措辞敏感度 —— 这一项的召回率比上一代提升了 2 倍 —— 但那是纵深防御,不是防线本身。许可证要求任何部署这份权重的一方,都必须复现上游那套机制。

它不做诊断。 没有标签,没有障碍名称,不对一个人下任何临床结论。它评估的是一条消息,不是一个人,更不是来访者顺口提到的第三方。

它不做决定。 系统下一句说什么,由跑在同一条临床脊柱上的九种疗法管辖,并由一位以自己的执照担责的持证咨询师完成配置。把脉师提供信息,从不做选择。

为什么许可证不是 Apache 2.0

这件事我们想了很久,最后是刻意选的。

完全宽松的许可意味着:第一个基于这份权重造出来的无监督消费级 AI 伴侣,血统上挂着我们的名字 —— 而那恰恰是监管者正在清场的产品品类。完全封闭则意味着研究者和机构无法验证我们声称的任何一件事,那就失去了开源的意义。

所以权重以 HAMO-RAIL-S 1.0 发布,这是一份负责任 AI 许可证,而不是一份 OSI 认可的开源许可证。我们宁愿在这一点上说得精确,也不去借用一个并不贴切的词。商用、修改与再分发全都是自由的 —— 它带的是四条使用限制:

  1. 不得独立做临床判定。 分数是提供给人去判断的输入,永远不是它自己下的结论。
  2. 不得用于对个人的重大决定 —— 雇佣、保险、监控筛查。一个能从语言里读出心理状态的模型,恰恰最容易被对准那些从未同意被读取的人;这条线的存在,是要让那种用法成为明确的违约,而不是一片灰色地带。
  3. 面向消费者的心理健康部署,必须保留一条独立的上游危机通道,并向所服务的人披露 AI 身份。
  4. 不得试图重识别个人。

完整条款见模型页面

我们希望它被拿去做什么

一个这么小、这么快、又这么可检视的评分器,用处远不止于我们自己的产品。有四类人,我们特别希望听到你们的声音:

心理学研究机构。 你可以锁死一个版本,它永远不会在你的研究底下漂移。一个在实验中途被悄悄升级的云端模型会让跨时间的比较失效;一个固定的本地检查点不会。如果你需要一件三月份和一月份给出同一个数的逐句状态测量工具,这就是一件。

临床与疗愈机构。 把它跑在你自己的基础设施里,来访者的语言就不会离开它。权重小到普通硬件就能承载 —— 不需要 GPU 集群,不依赖厂商,也不必为对话内容去谈一份数据处理协议。

执业咨询师。 这里诚实的用法是督导与复盘支持:为一份会谈记录提供第二重阅读,让你看见一位来访者的状态在数周里的形状 —— 那是单靠对会谈的记忆托不住的。它不替代你的判断,它是一件由你的判断来解读的仪器。

社会与语言心理学者。 这套东西底下有一个具体的主张:心理状态的可测量属性,会在单独一句话的语言里留下痕迹。我们认为这个主张值得被以语言和心智为业的人做对抗性检验。而我们最弱的那个维度 —— 边界感,73% —— 恰恰是这种检验最有价值的地方。

如果你发现它错了,请告诉我们错在哪里。公开的权重加上公开的评测方法,意味着分歧从此可以是具体的,而不是修辞性的。这基本上就是全部的意义所在。

为什么要把自己造的一个组件送出去

因为这个使命,不会由一家公司握着所有零件来完成。

陪伴内在探索者,唤醒全然觉知力 —— AI for Inner Explorers, Companion to Full Awareness.

如果目标是市场份额,那就该把每一个组件都攥在手里。但目标是帮助人看见一直在自己行为底下运行的那些东西 —— 而在任何有意义的时间尺度上,没有任何一家公司能独自抵达那里。心理学研究机构、临床机构、执业咨询师、研究心智与社会的学者,都必须能用这些工具去搭建、去检视、去纠正。这要求组件是可检视的、可以在本地跑起来的。所以我们把自己的做成这样,从这里开始。

这是 Hamo 第一个被释出的组件,也是最小的一个。它不会是最后一个。

一个读取人心理状态的组件,不该是任何人的黑箱 —— 包括我们自己的。它应该小到能在你自己的机器上跑,便宜到一个研究实验室负担得起,开放到我们错的时候你能精确指出错在哪里。这就是权重公开的原因。理解人类心智不是一个可以垄断的市场,而是一件必须一起做的事。
Chris Cheng,Hamo AI 创始人兼 CEO

模型:chrischengzh/hamo-score-0.6b · 基座:Qwen3-0.6B · 许可证:HAMO-RAIL-S 1.0 · 格式:safetensors、MLX、GGUF

Grounded in code, not slideware.

Hamo AI — making minds aware, and awake.


关于 Hamo AI

上海合莫科技有限公司,是一家位于中国的人工智能公司,正在打造下一代 AI 咨询师 Avatar 系统。我们开发的 AI 疗愈平台「Hamo」通过 AI 疗愈 Avatar 连接心理健康专业人士与来访者,由三个相互连接的应用组成:Hamo Pro(咨询师控制台,用于创建与管理 AI Avatar)、Hamo Client(来访者端,用于与疗愈 Avatar 对话)以及 Hamo-UME(统一心智引擎, 后端 API)。平台的目标是让心理健康支持更可及,同时通过创建并监督这些 AI Avatar 的持证咨询师,始终保持专业把关。

媒体联系

上海合莫科技有限公司
邮箱:socialmedia@hamo.ai
网站:www.hamoai.tech
地址:中国上海市闵行区新闵路 481 弄 15 号 402 室,200240

常见问题

hamo-score-0.6b 是什么?

一个开放权重的 6 亿参数模型,基于 Qwen3-0.6B 微调而来。它读取心理健康对话中的一条消息,输出五个心理状态维度的分数 —— 行动力、退缩、极端化、敌意、边界感 —— 每项 0.0 到 3.0 分。它不生成任何文本。它是一件测量仪器,不是一个对话智能体。

hamo-score-0.6b 是心理咨询聊天机器人吗?

不是。它从不写回复 —— 它被训练与提示去输出的,只有一个装着五个分数的 JSON 对象,而它产出的任何东西都不会被展示给来访者。它在架构上仍然是一个小语言模型,用 AutoModelForCausalLM 加载,但它没有任何对话角色。决定下一句话该说什么,是由确定性代码与持证咨询师的配置共同承担的另一项工作,永远不交给这个模型。

hamo-score-0.6b 能识别危机或自杀风险吗?

不能 —— 它明确不是危机检测器。危机的判定不接在这个模型上:在 Hamo 自己的系统里,一套独立的确定性机制在更上游短路处理,危机内容根本不会到达评分器。权重里确实带有一定的危机措辞敏感度,这一代的召回率比上一代提升了 2 倍,但那是纵深防御,不是防线本身。许可证要求任何部署这份权重的一方,都必须复现上游那套机制。

训练这个模型用了真实来访者的对话数据吗?

没有。没有任何一条真实来访者消息进入训练集。真实的生产轮次只做两件事:作为留出的「考卷」给模型判分,以及作为「真实的人到底怎么说话」的统计参照。训练教材全部是合成的:五代累计约两万条通过准入的对话窗口,其中本次发布的版本训练用了约 1.5 万条。

一个 0.6B 的小模型,准确率和云端前沿模型比如何?

在最终临床判断上,它与云端前沿模型的一致率为 96.3%。在单维度分数的 ±0.5 区间内一致率为 84.0%。作为参照:那个参考评分器自己重复打同一句话时,前后一致率也只有 94–98% —— 这个自洽率才是真正的天花板,而不是 100%。

hamo-score-0.6b 使用什么许可证发布?可以商用吗?

HAMO-RAIL-S 1.0,一份负责任 AI 许可证,而不是 Apache 2.0。商用、修改与再分发都是自由的,它带的是四条使用限制:不得独立做临床判定;不得用于对个人的重大决定,例如雇佣、保险或监控筛查;面向消费者的心理健康部署必须保留独立的上游危机处理通道并披露 AI 身份;不得试图重识别个人。