1. 项目概述:当465年的御医传承遇见AI智能体
最近在折腾一个挺有意思的事儿,把故宫里那些尘封了四百多年的“黄册”——你可以理解为明清时期的皇家医疗档案——给“盘活”了。这事儿听起来有点穿越,但核心逻辑很现代:用一套名为WorkBuddy的AI原生桌面智能体工作台,去重构这套跨越了465年的御医传承与宫廷医疗体系的运营脉络。最终的目标,是打造一个专属于这个领域的“AI驾驶舱”。
你可能要问,这跟“儿子学了前端开发,如今公司裁员,现在想继续学AI应用与智能体开发”有啥关系?关系大了。这恰恰说明了当前技术浪潮的转向:从相对标准化的前端界面开发,转向解决复杂、非标、深度业务逻辑的AI智能体应用开发。WorkBuddy这类工具的出现,降低了智能体工作流搭建的门槛,让开发者能更聚焦于业务本身,而不是底层框架。我这个项目,就是一个活生生的案例——它不是一个简单的数据可视化看板,而是一个能理解御医诊疗逻辑、辅助分析药材配伍、甚至模拟传承脉络的“智能业务伙伴”。
简单来说,这个“AI驾驶舱”就是一个高度定制化的智能工作台。它基于WorkBuddy搭建,里面集成了针对古籍文献解析、中医知识图谱构建、历史数据分析等特定任务的AI技能(Skills)。通过自然语言对话,我就能指挥这个“驾驶舱”去完成诸如“梳理乾隆朝暑病方剂的变化趋势”、“对比不同御医对同一种脉象的论述差异”等复杂任务,结果会以清晰的可视化图表或结构化报告呈现在工作台上。这彻底改变了以往面对海量、非结构化的古籍文本时,那种依赖人工逐字检索、比对、归纳的低效模式。
2. 核心思路:从“档案数字化”到“业务智能化”的跃迁
传统的历史文献或专业知识数字化项目,往往止步于“数据库”阶段。我们把黄册扫描、OCR识别、录入数据库,顶多做个全文检索。但这只是解决了“存”和“找”的问题,远未触及“用”和“悟”的层面。御医传承的核心价值,在于其诊断思路、用药法则、随证变化的动态体系,这些是隐藏在零散医案和药方背后的“运营脉络”。
2.1 为何选择WorkBuddy作为核心引擎?
市面上AI工具很多,为何独选WorkBuddy?这源于它对“AI原生”和“桌面智能体工作台”两个概念的深度实践。
首先,AI原生意味着AI不是外挂插件,而是工作流的核心交互界面和驱动引擎。在WorkBuddy里,你不再是在一个传统软件里点菜单、拖控件,而是直接通过对话告诉它你的意图,比如“帮我把这摞黄册里所有关于‘伤寒’的医案,按朝代、御医、主要症状提取出来,做成一个表格”。它理解你的自然语言指令,并自动调度背后的技能去执行。这非常适合处理像黄册这样格式不一、信息分散的非结构化资料。
其次,桌面智能体工作台提供了一个集中、可扩展的操作环境。它不像一些在线AI服务,用完即走。WorkBuddy允许我将常用的数据处理技能、知识库查询技能、图表生成技能像搭积木一样组合起来,形成稳定的工作流,并固定在这个“工作台”上。对于需要长期、深入研究的项目,这种稳定性和可积累性至关重要。它解决了“AI智能体真实现状”中常被诟病的“一次一议”、难以沉淀的问题。
2.2 重构“运营脉络”的三层设计
我的构建思路分为三层,由底至上分别是:数据感知层、智能处理层、决策驾驶舱。
数据感知层:这是基础。目标是将465年间零散的黄册、医案、脉案、方剂记录,转化为机器可读、可关联的数据。这里不仅用了OCR,更重要的是结合了专门训练的中医古籍命名实体识别模型,能自动识别出文本中的人名(御医、帝后)、病症(病名、症状)、药材、剂量、时间等关键实体。
智能处理层:这是WorkBuddy大显身手的地方。我基于其强大的自定义指令和技能(Skills)扩展能力,开发了一系列专用技能。
- 脉络追踪技能:输入一位御医的名字,它能自动关联其师承、弟子、主要服务的帝王时段、留下的典型医案,绘制出传承与执业的时间线图谱。
- 方剂对比技能:输入一个病症(如“头痛”),它能跨朝代、跨御医对比所有相关方剂的药材组成,分析核心药对和用药趋势的变化,并用网络图展示药材间的共现关系。
- 知识问答技能:基于已构建的知识图谱,回答诸如“道光年间治疗腹泻最常用的三味药是什么?”这类复杂查询。
决策驾驶舱:这是最终的呈现界面。在WorkBuddy的工作台界面上,我将上述技能的输出,通过其与BI工具的融合能力(对应热词“workbuddy和bi工具结合”),固定为几个核心仪表盘。比如一个“传承全景仪表盘”,动态展示御医家族的师承网络;一个“病症方剂演化仪表盘”,用热力图和趋势线展示不同朝代对同一类疾病的治疗偏好变化。这个驾驶舱,让数百年的数据脉络一目了然。
注意:这里的关键不是简单的数据可视化,而是“智能驱动”的可视化。每个图表背后都是一个可交互的智能体技能。你可以直接对图表说“聚焦康熙朝的数据”或“对比一下这两位御医的用药风格”,图表会实时响应并变化。这才是“AI驾驶舱”区别于传统看板的精髓。
3. 实操构建:从零搭建你的领域AI驾驶舱
如果你也对某个垂直领域(不仅是历史,可以是法律、金融、制造业等)的深度分析感兴趣,想用WorkBuddy构建自己的智能工作台,可以跟着下面的步骤走。我的环境以macOS为例,Windows和Linux(包括麒麟版)流程类似,安装包不同而已。
3.1 环境准备与基础安装
首先,访问WorkBuddy官网或相关社区获取最新的安装包。对于个人学习和研究,通常有免费版本或试用期。安装过程很简单,下载对应系统的安装程序(.dmg、.exe或Linux包),按向导完成即可。安装成功后,首次启动会有一个简单的引导流程。
一个关键步骤是配置AI模型后端。WorkBuddy本身是工作台,它的“智能”需要接入大语言模型来驱动。它支持多种方式:
- 云端API:最简单,直接填写OpenAI、DeepSeek、智谱等平台的API Key即可。网络稳定,性能有保障,适合大多数用户。
- 本地模型:对应热词“部署和使用本地ai智能体(openclaw)”。如果你有较强的显卡(如NVIDIA RTX 3060 12G以上),追求数据完全私有,可以部署Ollama等本地模型服务,然后在WorkBuddy的设置中配置本地API地址。这对处理专业领域术语可能更有优势,因为可以在本地微调模型。
实操心得:初期建议先用云端API(如DeepSeek),快速验证想法和技能效果。等到工作流稳定、数据敏感度要求高时,再考虑迁移到本地模型。本地部署的调试成本较高,容易在初期打击信心。
3.2 核心技能(Skills)规划与开发
安装好只是有了一个空的工作台,它的威力来自于“技能”。WorkBuddy自带一些通用技能,如文件处理、网页搜索等,但真正的生产力来自自定义技能。
1. 技能规划:以我的御医项目为例,我规划了以下几类技能:
- 数据接入技能:负责从扫描PDF、古籍数据库接口中拉取原始数据。
- 文本解析技能:调用我之前训练好的NER模型,进行实体识别和结构化提取。
- 知识库管理技能:将结构化数据存入本地的向量数据库(如Chroma DB),便于语义检索。
- 专业分析技能:如上面提到的脉络追踪、方剂对比等,这是业务核心。
- 输出渲染技能:调用图表库(如ECharts)或生成Markdown/Word报告。
2. 技能开发基础:WorkBuddy的技能本质是一个个可被调用的函数或API接口。它支持多种方式:
- Python脚本:最灵活的方式。你可以在技能里写Python代码,调用任何你熟悉的库(pandas, numpy, networkx等)。
- HTTP API封装:如果你已有现成的分析服务,可以将其封装成HTTP API,然后在WorkBuddy中创建一个技能来调用它。
- 内置工具组合:利用WorkBuddy的图形化技能编辑器,通过拖拽内置的“代码块”、“判断”、“循环”等节点,组合成简单的工作流。
对于程序员而言,直接写Python脚本是最强大的。你可以在技能中获取用户输入的参数,执行复杂逻辑,最后返回文本、数据或HTML片段给WorkBuddy界面显示。
3. 一个简单的技能示例:方剂药材频率统计假设我们已经有了结构化的方剂数据表(包含朝代、方剂名、药材列表),下面是一个简化版的技能脚本框架,展示如何创建一个技能:
# 技能名:calculate_herb_frequency # 功能:统计指定朝代范围内,高频出现的药材及其次数 import pandas as pd from workbuddy.skill import skill, Parameter # 假设的SDK导入方式 @skill( name="药材频率分析", description="分析特定朝代方剂中药材的出现频率", parameters=[ Parameter(name="dynasty_start", type="string", description="起始朝代,如‘明朝’"), Parameter(name="dynasty_end", type="string", description="结束朝代,如‘清朝’"), Parameter(name="top_n", type="integer", description="返回前N个高频药材", default=10) ] ) def execute(dynasty_start: str, dynasty_end: str, top_n: int): # 1. 加载数据(这里假设数据已加载到全局变量或数据库中) # df = pd.read_csv('prescription_structured.csv') # 2. 过滤朝代 filtered_df = df[(df['dynasty'] >= dynasty_start) & (df['dynasty'] <= dynasty_end)] # 3. 统计药材频率(假设‘herbs’列是药材列表的字符串,如‘黄芪,当归,甘草’) all_herbs = [] for herb_list in filtered_df['herbs'].dropna(): all_herbs.extend([h.strip() for h in herb_list.split(',')]) herb_series = pd.Series(all_herbs) freq = herb_series.value_counts().head(top_n) # 4. 格式化结果为Markdown表格,WorkBuddy可以优美地渲染 result_md = "| 药材 | 出现次数 |\n| :--- | :--- |\n" for herb, count in freq.items(): result_md += f"| {herb} | {count} |\n" # 5. 也可以返回数据供其他技能或图表使用 result_data = { "herbs": freq.index.tolist(), "counts": freq.values.tolist() } # WorkBuddy技能可以返回多种格式,这里返回文本和数据的组合 return { "markdown_output": result_md, "data_output": result_data }将这个技能脚本放到WorkBuddy指定的技能目录下,它就会被自动加载。之后在对话中,我就可以说:“使用‘药材频率分析’技能,分析从明朝到清朝的高频药材,取前15位。” WorkBuddy会解析我的指令,调用这个技能,并展示漂亮的表格。
3.3 工作台(Dashboard)与工作流编排
技能是零件,工作台是组装车间和展示厅。WorkBuddy允许你创建多个工作台,每个工作台可以放置不同的“组件”。
- 添加可视化组件:将上面技能返回的
data_output,绑定到一个图表组件(如柱状图、饼图)。WorkBuddy通常支持配置图表的数据源来自哪个技能的哪个输出字段。 - 创建交互控件:添加下拉框、输入框、按钮。例如,做一个朝代选择下拉框,将其值绑定到“药材频率分析”技能的
dynasty_start和dynasty_end参数。这样,我下拉选择“康熙”到“乾隆”,点击“分析”按钮,图表就会自动刷新。 - 编排自动化工作流:这是高级用法。你可以设置“触发器”。比如,当“数据接入技能”监测到有新黄册图片存入特定文件夹时,自动触发“文本解析技能”,解析完再自动触发“知识库更新技能”,实现全自动化流水线。
避坑指南:在编排复杂工作流时,一定要为每个技能设置清晰的输入输出文档,并处理好异常。比如,文本解析可能失败,要在技能里做好
try-catch,返回明确的错误信息,而不是让整个工作流静默中断。初期建议先用简单的“手动触发”模式,一步步调试通每个环节,再尝试自动化。
4. 深度定制:让AI更懂你的专业领域
要让AI智能体真正理解像“御医传承”这样的专业领域,仅靠通用大模型是不够的,必须进行深度定制。WorkBuddy提供了几个关键路径。
4.1 知识库增强检索(RAG)
这是提升智能体专业性的核心技术。我构建了一个专属的“御医知识向量库”。
- 步骤:将已经结构化的御医生平、医案摘要、方剂要点、古籍原文片段,转换成文本向量,存入向量数据库(如Chroma DB,它很容易集成)。
- 集成:在WorkBuddy中开发一个“知识检索技能”。当用户提问时(如“朱丹溪的滋阴降火法在宫廷中如何应用?”),该技能首先将问题向量化,去向量库中搜索最相关的10个片段,然后将这些片段作为“上下文”,连同原始问题一起提交给大模型,让模型基于这些精准的领域知识生成答案。
- 效果:这能极大减少大模型的“胡言乱语”,让答案紧扣史料,有据可查。这对应了热词中“全面 专业,提升效率,理解意图”的需求。
4.2 编写高质量的自定义指令(Prompt Engineering)
WorkBuddy允许你为整个工作台或单个技能设置“系统级”自定义指令。这是教导AI如何以专家身份思考和回应的关键。
- 角色设定:在指令开头明确AI的角色。“你是一位精通明清医学史与中医诊断学的资深研究员,擅长从宫廷医案中分析诊疗规律与学术传承。”
- 输出规范:规定回答格式。“你的分析应首先给出核心结论,然后分点列举支持性证据,证据需注明出自哪部黄册或医案。最后可以提出一个有待进一步验证的假设。”
- 思维链要求:鼓励AI展示推理过程。“请逐步推理,先分析病症特点,再对比用药,最后总结治疗思路的异同。”
- 禁忌与边界:明确限制。“你所有的分析必须基于已提供的史料,不得编造不存在的内容。对于史料未明确记载的御医私人关系,应使用‘可能’、‘推测’等措辞。”
写好这些指令后,AI在分析时的“专业范儿”和可靠性会显著提升。这解决了“workbuddy自定义指令如何写”的困惑——核心就是定义角色、规定流程、明确边界。
4.3 技能间的协同与数据流转
一个复杂的分析任务往往需要多个技能接力完成。WorkBuddy的工作流引擎支持将多个技能串联起来。
- 数据管道:技能A的输出,可以作为技能B的输入。例如,“文本解析技能”输出结构化的医案JSON,这个JSON直接作为“脉络分析技能”的输入。
- 条件分支:可以根据中间结果决定下一步走向。例如,如果“病症分类技能”判断当前医案属于“温病”,则触发“温病方剂分析技能”;如果属于“内科杂病”,则触发另一套分析技能。
- 实践案例:当我发出指令“分析一下康熙年间所有关于感冒的医案,并总结出最常用的五个方剂组合”时,背后触发的工作流是:
- 知识检索技能:从向量库中找出所有康熙朝包含“感冒”、“伤风”、“外感”等关键词的医案文本。
- 深度解析技能:对找出的文本进行细粒度实体抽取,明确每则医案的具体方剂组成。
- 方剂聚类技能:使用聚类算法(如通过Python的scikit-learn库),对这些方剂进行相似度分析,归并出常用的组合模式。
- 报告生成技能:将聚类结果用文字和图表进行总结,输出最终报告。
这个过程完全由AI驱动,我只需要提出最终问题,无需关心中间步骤如何切换、数据如何传递。这就是“AI驾驶舱”带来的范式变革:从操作工变为指挥官。
5. 行业应用延伸:不止于历史研究
通过这个项目,我深刻体会到WorkBuddy这类AI原生工作台的核心价值:将专家的领域知识沉淀为可复用的智能工作流,从而大幅提升复杂信息处理和决策分析的效率与深度。这套方法论完全可以复用到其他行业。
- 制造业(对应热词“workbuddy 制造业”):构建“生产质量AI驾驶舱”。技能包括:从MES/SCADA系统实时抽取数据、基于历史数据训练的设备故障预测模型、产品质量缺陷的根因分析技能。厂长可以在工作台上直接问:“为什么A生产线昨天的次品率突然升高?和哪些参数变化相关?”驾驶舱自动调用数据检索、关联分析、根因推断等一系列技能,给出分析报告。
- 金融投研:构建“上市公司深度分析驾驶舱”。技能包括:爬取并解析年报/公告、财务指标自动计算与预警、行业对比分析、舆情情感分析。分析师可以指令:“对比一下宁德时代和比亚迪最近三年的研发投入占比及专利产出效率。”驾驶舱自动生成对比图表和深度分析摘要。
- 法律与审计:构建“合同审查与风险驾驶舱”。技能包括:合同文本的关键条款抽取(如付款条件、违约责任)、与标准模板的差异比对、历史相似案例的风险点提示。律师可以上传一份合同草案,指令:“找出所有责任限定条款,并评估其对我方客户的潜在风险等级。”
这些场景的共同点是:处理对象是非结构化或半结构化的海量文本/数据,分析过程需要多步骤、多模型的复杂流水线,最终输出需要结合专业判断的决策支持信息。WorkBuddy正好提供了串联起整个流水线、并以自然语言为统一交互界面的“胶水”和“面板”。
6. 常见问题与实战排坑记录
在实际搭建和使用过程中,我踩过不少坑,也总结了一些经验。
6.1 技能开发与调试问题
问题1:技能执行报错,但错误信息不清晰。
- 排查:首先在技能的Python代码中增加详细的日志记录,使用
print或logging模块将关键变量的中间状态输出。WorkBuddy通常有运行日志窗口可以查看。其次,检查输入参数的数据类型和格式是否与预期完全一致。很多时候错误源于数据中有None值或字符串格式意外。 - 技巧:开发技能时,先写一个最小的、可独立运行的测试脚本,确保核心逻辑正确,再移植到WorkBuddy的技能框架内。
- 排查:首先在技能的Python代码中增加详细的日志记录,使用
问题2:技能执行速度很慢,影响交互体验。
- 排查:分析瓶颈所在。如果是调用外部API(如大模型接口或自己部署的模型),可能是网络或API本身延迟。如果是本地数据处理,检查是否在处理大量数据时使用了低效的循环。
- 优化:对于数据密集型技能,考虑使用
pandas的向量化操作替代循环;引入缓存机制,对相同参数的查询直接返回缓存结果;对于耗时很长的技能,可以设计为异步执行,先返回一个“任务已提交”的提示,执行完毕后再通知用户。
问题3:自定义指令(Prompt)效果不稳定,有时答非所问。
- 排查:大模型对指令的措辞非常敏感。检查指令是否足够清晰、无歧义。尝试将复杂的指令拆分成多个简单、循序渐进的指令。
- 优化:采用“Few-Shot”示例法。在系统指令中,不仅告诉AI该怎么做,还直接给出一两个输入输出的完美示例。这能极大地稳定输出格式和质量。例如,在御医分析指令中,我会附上一个示例:“用户问:‘分析御医吴谦在《医宗金鉴》中的学术特点。’ 你应该这样回答:核心结论是……证据一出自……证据二出自……推测其可能受到……影响。”
6.2 工作台与数据管理问题
问题4:多个技能需要访问同一个数据库或数据文件,如何管理?
- 方案:不要在每个技能里硬编码文件路径或数据库连接。WorkBuddy通常支持环境变量或全局配置。将数据库连接字符串、常用文件路径等作为工作台的全局配置项,技能运行时从配置中读取。这样便于迁移和团队协作。
问题5:如何实现技能间的数据共享?
- 方案:WorkBuddy的工作流引擎通常会将上一个技能的输出,作为变量传递给下一个技能。你需要明确定义每个技能的输入输出JSON Schema。例如,技能A输出
{“structured_cases”: list},技能B的输入就定义为需要structured_cases这个字段。在图形化编排界面,通过连线来建立这种数据绑定关系。
- 方案:WorkBuddy的工作流引擎通常会将上一个技能的输出,作为变量传递给下一个技能。你需要明确定义每个技能的输入输出JSON Schema。例如,技能A输出
问题6:构建的知识库(向量库)越来越大,检索速度变慢。
- 优化:
- 索引优化:使用支持高效索引的向量数据库,如
Chroma的hnsw索引。 - 分级存储:将知识库按主题、朝代等维度拆分,检索时先根据用户问题路由到子库,减少搜索范围。
- 元数据过滤:在检索时,除了语义相似度,同时利用元数据(如朝代、医者)进行过滤,可以极大加速并提升精度。
- 缓存热点问题:对常见问题的检索结果进行缓存。
- 索引优化:使用支持高效索引的向量数据库,如
- 优化:
6.3 关于学习路径与前景的思考
回到开头的那个热搜词:“儿子学了前端开发,如今公司裁员,现在想继续学AI应用与智能体开发,你觉得前景”。通过这个项目,我的体会是:
前景非常广阔,但学习路径需要调整。前端开发的核心是视觉交互和逻辑实现,而AI应用与智能体开发的核心是问题抽象、流程设计、领域知识建模以及与AI的协同。
- 优势:前端开发者对用户体验、数据流转有深刻理解,这对于设计AI智能体与人的交互界面(如WorkBuddy的工作台、对话逻辑)是巨大优势。他们知道如何将AI的输出以最友好、最有效的方式呈现出来。
- 需要补足:
- Prompt Engineering:学会如何与AI有效沟通,这是新的“编程语言”。
- 数据处理能力:比前端更深一层,要熟悉从非结构化数据(文本、图片)中提取、清洗、结构化信息的方法。
- 工作流思维:从编写单个函数,转变为设计一个由多个AI技能和人机交互节点组成的、能解决复杂问题的工作流。
- 领域知识:AI应用要落地,必须与垂直行业结合。懂一些医疗、金融、制造的业务逻辑,比单纯懂技术更有价值。
WorkBuddy这类工具的出现,实际上降低了AI智能体开发的技术栈门槛。你不需要从零开始训练模型,也不需要搭建复杂的分布式服务框架。你可以像搭积木一样,利用现有的模型能力和自定义代码,快速构建出解决实际问题的智能应用。这对于有编程基础(如前端开发)的转型者来说,是一个非常好的切入点和发力方向。从做一个“炫酷的H5页面”,到做一个“能自动分析行业报告、辅助决策的AI驾驶舱”,这种价值的跃升,正是这个时代给开发者带来的新机遇。