前言
简单讲讲一些 Hunea 的设计方面的考虑。
不过这些设计可能在未来也会进行变更,不过当前的话应该是比较稳定的。如有变化后续也会进行文档的调整的。
如果你主要关心操作路径,可以先看 斜杠菜单。
想法
核心原则:工具的本质是为人服务的,而不是人为工具服务。
Hunea 的设计一开始就是想做一个人类易用的产品。因此不少的设计都是基于这一初衷出发的。
作为一个也许是业内的人士,从我的视角来看,其实有不少产品做的真的不错,而且设计也很好。就是在展示给我这样的用户上,是不太理想和易用的。可能是 UI 怪、不自然,或者就是交互非常的不符合直觉,行为成本高等等。
当然这个也有很多方面的原因,这就好比没有多少人想写文档一样的,产品做出来能用可以交付,然后没有什么明显问题就好了。人机交互设计是比较靠后的。优先是解决问题,或者说是解决需求。
再加上优化交互和设计太费心思和打磨了。这个真的无可厚非。我个人很多时候也是会有这样的念头。哪怕是 TUI 界面或者是 Hunea 的姊妹产品 Nostra,在做的时候就是很多坑,很多细节需要考虑和做好。就是会花很多时间,去解决一些看起来好像微不足道的事情(比如 Nostra 上解决 macOS 左上角红绿灯和右侧的组件水平对齐的问题等)。而且这些情况往往不会有多少人注意到。
这些"边边角角"的事情,花费 100 的精力去做,但是产出的收益不一定有 50,甚至可能更低。有这个时间,还不如多做几个功能什么的,让自己的产品更丰富一些。能多解决几个问题。或者更有竞争力一些。
可是,功能越加越多,没有考虑一些这样的基础交互和设计的话。那么我们的应用,还能保持初心吗?
也许我们一开始只想做一个点外卖的应用,但是后面随着业务的增长,用户的增多。然后就往里面加上了很多和点外卖无关的功能,甚至还可以在里面看视频和玩游戏或者做点金融业务。
这可能是一个不恰当的类比。只是我想的是,把一个应用它本身该做的事情做好就可以了。
回到人机交互这一部分。虽然现在是 AI 时代了,不少工具的使用都从人类转移到了 AI。可是在大多数情况下,还是以人类为主的。所以我就想做一个面向人类的易用的工具。
并且符合一些想法和设计原则。
下文部分取自 Apple Developer 官网
非常感谢 Apple 总结的设计原则,指引和激励者着我尝试去设计一个好用的产品
不过我也仅仅领会到了皮毛,还有很多是我需要学习的
目标感
创造有意义的产品。
设计始于意图。识别对设计受众而言最重要的内容。专注于打磨这些内容,你将会打造出对用户真正有价值的体验。
提供价值。最佳的设计会体现“如何让产品真正有用”这一恒定不变的目标。在开发的每个阶段,问问自己,产品的用途是什么,以及设计是否服务于该用途。
保持专注。让 App 的使用方式符合用户预期,优先考虑 App 中最重要的功能,并专注于让这些功能变得真正出色。用途明确的产品更能有效帮助用户实现目标。
寻找解决问题的新方法。调查现有解决方案,并避免重复创建。定义产品的与众不同之处,并问问自己能如何通过设计体现。
Hunea 的设计意图一开始就是想做一个人类易用的 TUI 工具。尝试去解决一些基础的问题,这些问题大致可以从下方几点概括:
- "触手可得"的透明度:可以直接在 Hunea 中查看装配的提示词和工具以及响应等内容,无需要抓包或者翻看源码。
- 简洁易用符合直觉的操作界面。
- 速度不错,占用不高(后续会进行优化),并且力求跨平台可用。
- 自由、可扩展。无论是第一次接触还是高阶用户,都可以做自己想做的事情。后续 Hunea 会朝着这个方向继续努力。
- 其他
Hunea 会在后续的更新中不断打磨。并且将重心放在 Hunea 的核心交互和界面设计上。
能动性
让用户随心所欲地使用。
界面存在的意义在于帮助用户实现其目标。让用户可以自由操作、了解当下情况,并可轻松从误操作中恢复。
不妨碍工作。用户会使用你的产品来达成目的。助用户一臂之力的最佳方式通常是直接将其带到所需的任务或内容。最佳的设计是只在用户需要时低调呈现。
让用户自由探索。让其可在整个界面中移动和访问功能,而不受限于特定的流程或模式。使必要的引导流程易于跳过或退出,以便用户快速进入主要体验。
帮助用户从误操作中恢复。用户在知道可撤销操作或返回之前状态的情况下,会自由进行探索,而这种自由会让界面更具吸引力。将容错性融入设计,并让其易于实现。从意外情况中恢复不应花费用户的时间或精力。
Hunea 的 tree、resume、resend等功能,都可以让用户从不同的角度来了解当前的情况,并且进行探索和使用。
哪怕做错了也没有关系,tree 等本来就是可以进行回溯的。不用担心自己的误操作会导致一些意外的问题。
后续还会进行交互的增强,当前回溯等有些关键路径缺少二次确认和更为明确的解释。这些 Hunea 还有很长的路要走。
责任感
以用户最佳利益为核心。
作品会影响用户的生活。为赢得其信任,优先考虑安全性和隐私,并使产品的用途和意图公开透明。
让产品的用途和意图完全透明。用户的首次交互是你与其建立关系的契机。确保从一开始就明确 App 的意图。在请求许可时提供清晰的依据,在收集数据时表明所收集的内容及其使用方式。
保护用户信息安全。用户相信你会维护其数据的完整性。仅收集产品运作所需的内容,并进行妥善处理。预测可能导致误用或伤害的方式,并相应安排保护措施以防止滥用和意外结果。
Hunea 代码完全开源,每次产品更新都会先通过 GitHub 产出 release 然后进行上传到 npm 来进行发布。
整个过程完全透明,没有额外的黑盒操作。
Hunea 的配置文件和聊天内容等都存在本地规定好的目录下(除非你的 AI 供应商保留数据,不过这个是非可抗力,Hunea 无法保证)。没有遥测(因为我也不会……)和数据收集。
不会将数据偷偷存放或者产出一些奇怪的内容。
熟悉感
基于用户既有认知。
利用用户已了解的概念可帮助其快速适应。基于既有的现实和数字模式打造体验,并在整个设计应用中保持一致。
使用用户已知的概念。用户会将对真实世界和其他软件的认知带到每种新体验。利用这些认知使界面更具熟悉感和直观性。
保持视觉效果和交互方式一致。为元素建立行为或外观后,将其应用至整个设计。一致性可帮助用户更快速学习,并使其对新交互方式将会按其预期工作有信心。
提供清晰的反馈。在用户使用 App 时,为其提供清晰的信号指示当下情况。显示可用的控制,指示更改的内容,并使用系统模式显示提醒和提供选择。一致的反馈可帮助用户了解情况并保持掌控。
Hunea 的无界输出框,和可用鼠标交互和键盘快捷键撤回的设计,正是从现实中我们常用的体验出发的。不会引入额外的心智负担。
并且 Hunea 可选的将换行和发送按键互换,实现使用 Enter 进行换行而非直接发送消息。这也是从日常中使用笔记类软件出发的一致性体验(未来还会实现自定义快捷键映射,以满足更多元的需求)。
Hunea 中的 space 也就是空格键。如果没有额外的说明,在其他的界面中都代表"预览"这一个操作。并不会因为进入到某一个其他的界面而失去这一统一的设计。
在执行一些操作或者有提示时,会有清晰的 Toast 弹出以提示必要信息。还有系统消息以表面当前的情况。并不会全都保持"静默"。
灵活
适应各种不同的情境和需求。
用户使用软件的方式因人而异。设计之中越认可这一点,用户越能在使用时感受到接纳。留意其他软件的体验,并尽量支持尽可能多的设备、交互类型和视角。
为所有人设计。考虑到用户的产品设计会让用户更有信心。思考可能接触设计的用户的多样性,并将其体验、视角和需求范围考虑在内。从一开始就重视无障碍设计。将包容性融入设计,这可收获尽可能广泛的受众,并为所有用户打造更佳体验。
保留用户的情境。在设计适配不同平台和配置时,帮助用户保持舒适感。保持内容和控制的位置一致且可预测,并使用自然动画缓解过渡。
考虑各种输入方式。用户与设备的交互方式多种多样。针对尽可能多的输入方式(包括语音、触控和键盘等)进行设计,意味着更多用户可按照其最适合的方式使用你的产品。
有意识地应对每个平台。在任何运行环境中,你的软件都应该令人感到精美且自在。请对支持的每个平台都给予同等关注。
Hunea 因为尝试尽可能面向更多人使用。所以除了已经定下来的基础交互和界面设计外,其他的很多功能都是可选的,或者可以进行一定程度上的自定义的。
因为 TUI 不太好做无障碍设计。但是也进行了一定的尝试,比如采用不同的颜色,但是,尽可能保持柔和以及较大的视觉反馈以反映交互。克制地使用更多的颜色。保持尽可能统一的反馈设计。
并且,Hunea 后续也会考虑实现语音输入方面的补全。不过为了获得更好的体验感,建议当前可以搭配第三方应用来获得更好的体验。因为开发和维护者只有我一人的缘故,一些扩展性的设计哪怕已有计划,但是离实现还有很长的一段距离。
Windows 平台对我而言重要性和优先级和 macOS 等平台一致。无论你使用哪个操作系统,Hunea 都会尝试带来统一一致的体验。
也是因为只有我一人的缘故,敬请期待!
简洁
清晰直接。
设计良好的体验中会去除不必要的内容,使每个元素各得其所。逻辑清晰且易于导览的界面有助于更轻松达成目的。
仅包含必要内容。简洁并非极简主义,而是追求目标明确且实用的体验。保持重要内容触手可及的同时,过滤其他无关内容。
力求精简。最简单的表达方式往往最通用、最有帮助。在传达概念或为控制添加标签时选用恰如其分的字词。
建立层级结构。当形式和功能一目了然时,用户便能知道如何获得想要的结果。优先使用可识别的控制和一致的结构,有助于用户了解其当前所在位置和后续内容。
这个部分之前也提及了,Hunea 会尝试做好自己的份内工作,不会扩展更多的非 Hunea 所需要承载的任务或者职责。
并且 Hunea 力求保持简洁和减少界面嵌套。一个界面只做好一件事情。尽量不会把多个事情混在一个界面中一起处理。
匠心
重视每一个细节。
你的设计体现了你的用心程度,展示了你对为用户提供最佳体验的奉献。投入时间才能做好作品。
质量奠定基调。设计中的每个元素都会向用户展示你的用心程度。仔细考虑每一个决定,力求视觉效果惊艳、动画流畅、措辞精准和音频细致。
试验并迭代。尽早创建原型,尝试新方法,并乐于放弃无效方案。为每个功能设定高标准,进行优化,然后再次尝试。在真实世界环境下测试产品,确保其经久耐用、可靠且表现卓越。
保持匠心。发布并非终点。保持界面紧跟最新的平台功能和设计模式,并保持高质量标准。设计是一项长期承诺。
这个非常难以做到,但是我也在努力保持。Hunea 截至 2026 年 8 月 6 日 提交了 400+ 次。其中有相当一部分都是为了优化体验而做的工作。
有些提交会相隔不少时间。因为有时候要进行多次审查,以及各个方案比对。
Hunea 从最开始走来,引入过 ACP 和 Rig 还有 GenAI 等外部依赖或者设计。
但是都在后续的设计中,被我一一否决和清理。
不过我会尝试更多的新的方法或者方式。比如最近几次更新,都是我尝试引入了其他的依赖或者设计,来提高 Hunea 的体验感。
希望 Hunea 能够一直走在这样的道路上,也许更新的缓慢,但保持稳定和较高的标准,也许更容易让大家接受。
愉悦感
融入人文关怀。
用户会记住产品带来的感受。考虑符合体验的情绪,并力求以令人满意、丰富且具有使用乐趣的形式传达。
确定希望激发的情绪。并非所有软件的使用感受都相同。健身 App 可能带来活力,冥想 App 可能带来平静,而游戏可能带来兴奋。了解你希望调动的情绪,并用其塑造设计。
创造决定性时刻。每次交互都是展示软件定位的机会。无论是简单的按钮按下操作还是错误信息,每个时刻都值得考虑是否有机会添加一些可体现设计灵魂的特征。
不要将愉悦感当成装饰。请牢记,用户的目标是完成任务,不要让追求愉悦感本身影响到产品的核心目的。考虑整体美学:有些设计会受益于精心考虑的实用设计,有些则可能倾向于加入一点奇思妙想。多加尝试,找到平衡点。
全盘考虑。愉悦感涉及你对产品的各种考量,是用户在使用产品时的整体体验,这包括操作的自由、探索的安全性、熟悉隐喻的舒适感,以及从一种情境过渡到另一种情境的灵活性。当你带着意图、专注和关怀进行设计时,产品自然会带给用户愉悦感。
这也是 Hunea 甚至是我的其他的产品,比如 Nostra 一直在追求和保持的原则。
以 Hunea 为例,虽然相当一部分的 TUI 设计是参考了 Codex CLI 的,但这并不意味着 Hunea 想做第二个 Codex CLI。
Hunea 还融入了很多我的考虑和设计。以及很多可能看起来细微但是却让人舒适的设计。
还有 Hunea 的文档。
虽然有不少内容也是我通过 AI 进行辅助来生成的,但是我都会进行检查,以及每次更新都会及时进行更新,还有对旧内容的清理或者优化。
以及我个人也会花不少时间来对文档内容进行检查和补写。就比如这个文章。就是我一个字一个字敲出来的。
未来将会写好的"慢速开始"部分,我也会细致地进行撰写,并且及时更新,而非一个一次性的事情。
我希望 Hunea 能给人带来愉悦感,感受到 Hunea 的独特和魅力之处。
这样的设计和人文考量起步于 Hunea,但又不止于 Hunea。
希望在未来的日子里,能够越来越好。
最后
上面的一些设计原则,是当今的 Apple 官网所留的。
内容写完之后,感叹之余,又去看了看 1992 年版本的麦金塔人机交互指南的标题部分。感触更深:
- 隐喻(Metaphors):用了隐喻之后,你可以利用人们对于身边事物的知识来表达你开发的应用的概念和特性。隐喻应当简洁明了并有实际的和熟悉的喻体存在,所以你的用户们可以把这些知识无缝转换到电脑环境里。举个例子,人们常常用文件夹来存储他们的文件。对人们来说在电脑创建的文件夹中存储电脑创建的文档是可接受的。因此人们可以用类似于整理自己文件夹的方式来整理自己的硬盘。
Hunea 在开发的过程中吸收了其他的类似的应用的统一的设计,并且做了一些"兼容性"地设计
比如输入
/new会匹配到/clear,输入/quit会匹配到/exit等我也不知道什么时候开始用
new替换了clear,用exit替换了quit。也许语义更为清晰吧不过我以前的操作行为用惯了,尤其是
/quit,简直是太顺手了哈哈哈现在用这些新的命令有时候总会被坑一下~
- 直接交互(Direct Manipulation):直接交互允许人们去直接感受他们正在操作电脑中的物品。根据直接交互的原则,当用户对物品进行物理操作的时候,必须要让这个物品在屏幕上是可见的。当用户对这个物体进行操作时,对此物体的影响必须立刻对用户可见。举个例子,用户可以用拖拽一个图标的方式把一个文件从一个地方移动到另一个地方,或者是在文本框里直接点击就可以让光标放置在合适的位置。
这个就不重复介绍了
-
所看即所指(See-and-Point):在桌面,用户选择屏幕上面显示的几个选项里面选一个来做操作。用户用鼠标之类的点击设备去点击桌面上所显示的元素来直接和屏幕交互,选择物体或者是执行操作。
麦金塔电脑的桌面使用两种范例来工作,但是这两种范例的基本假设都是:用户可以在屏幕上面看到他们在干什么以及可以用鼠标指针指向他们看到的东西。这两个范例都是基于一个通用的用户操作形式:先名后动。
在第一个范例里,用户选择了一个他们要操作的物体(名词)然后选择在这个物体上要操作的内容(动词)…
在第二个范例里,用户拖拽一个物体(名词)到另外一个代表了操作(动词)的物体上…
Hunea 的不少界面都是可以使用鼠标进行点击或者滚轮进行交互的
后续也会继续补齐交互设计
———
写到这里有些累了~
有很多的想法和愿景留着以后再写咯。我这也是一时兴起,才写一下我的一些想法的。
后续也会将这些想法落实到 Hunea 或者其他的产品的设计中去的。
毕竟打交道更多的的是和产品,而不是看我写文章嘛哈哈!