资讯详情

OpenMed Agent Skills:一套 73 个技能目录的构建、安装与验证体系

📅 2026/9/18 19:57:25 | 华诺云谱 👁 阅读
OpenMed Agent Skills:一套 73 个技能目录的构建、安装与验证体系
OpenMed Agent Skills:一套 73 个技能目录的构建、安装与验证体系【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmedOpenMed Skills 是 OpenMed(本地优先的临床 NER 与 HIPAA PII 去标识化 Python 库)面向编码智能体(Coding Agent)的一套可移植 Agent Skills 目录:每个技能是一个包含SKILL.md的目录,遵循开放 Agent Skills 标准,在 Claude Code、OpenAI Codex、OpenCode 等客户端中不加修改即可生效。读完本文,你将掌握一键安装脚本的完整用法、73 个技能按 14 个类别组织的目录结构、SKILL.md的规范与 CI 校验规则,以及基于skills/packs/manifest.json的主题包(packs)构建机制,并理解技能如何驱动真实 OpenMed API(如deidentify、analyze_text)生成合规的本地推理代码。一、什么是 OpenMed Skills每个技能是一个独立的文件夹,核心文件为SKILL.md(含 YAML frontmatter),按开放 Agent Skills 标准组织。仓库根目录的 skills/README.md 将其描述为:Portable Agent Skills for building with OpenMed — the on-device, Apache-2.0 clinical biomedical NLP library. Each skill is a folder with aSKILL.mdthat works unchanged inClaude Code,OpenAI Codex,OpenCode, and compatible agents.其设计目标很明确:把 OpenMed 及其上下游医疗数据工作(去标识化、NER、FHIR 导出、评估)的正确接法沉淀为智能体可检索的知识单元。目录中共有73 个技能,横跨 14 个类别。技能之间的协作关系用三个标记表达:标记含义→ before该技能运行在 OpenMed 上游(数据摄取类任务)after →该技能消费 OpenMed 的输出↔ adjacent与 OpenMed 相邻的辅助任务例如数据摄取类技能(parsing-hl7v2-messages、fetching-fhir-resources)把文本喂给 OpenMed,而after →类技能(如auditing-deid-leakage、exporting-to-fhir)则基于 OpenMed 的去标识化或 NER 结果继续加工。二、一键安装:install-skills.sh 的原理与用法2.1 默认安装与按目标安装git clone https://github.com/maziyarpanahi/openmed cd openmed ./install-skills.sh # - Claude Code, Codex, OpenCode, and ~/.agents/skills或针对单一智能体安装:Agent命令技能目录Claude Code./install-skills.sh claude~/.claude/skills/OpenAI Codex./install-skills.sh codex~/.codex/skills/OpenCode./install-skills.sh opencode~/.config/opencode/skills/跨客户端约定./install-skills.sh agents~/.agents/skills/不克隆仓库也可以直接拷贝目录:cp -r skills/*/ ~/.claude/skills/(按目标智能体替换路径)。Claude Code 用户还可以以插件形式安装,无需 clone:/plugin marketplace add maziyarpanahi/openmed /plugin install openmed-skillsopenmed-skills2.2 源码解析:为什么用符号链接而不是拷贝阅读 install-skills.sh 可以看到,脚本对每个技能目录执行ln -s符号链接而非复制,并附带了完整的幂等与保护逻辑:link_into() { ... for skill in $SRC/*/; do ... [ -f $skill/SKILL.md ] || continue # 只认真正的技能,跳过辅助目录 link_path$dest/$name if [ -L $link_path ]; then # 已是指向本仓库的符号链接 → 计数后跳过(幂等) ... fi if [ -e $link_path ]; then echo skip $link_path (a file or directory already exists) 2 # 目标已存在普通文件/目录 → 保留,绝不覆盖 fi ln -s $skill_path $link_path ... done }这段实现带来三个可验证的行为(install-skills.sh):单一事实源:git pull之后,所有已安装技能自动更新,因为链接始终指向仓库内源目录;幂等重跑:重复执行不会重复建链,已指向本仓库的链接只会被计数;绝不破坏用户数据:已存在的无关符号链接或普通文件会被跳过并打印existing entries preserved提示。脚本末尾还给出 Windows 注意事项:符号链接需要开发者模式或管理员权限,否则回退到cp -r skills/*/ ...的拷贝方式(install-skills.sh)。同样的安装逻辑在 build_catalog.py 的do_install()中以纯 Python 复现(支持--install claude|codex|opencode|agents|all),方便不使用 bash 的环境(skills/build_catalog.py)。三、30 秒体验:技能如何生成可运行的 OpenMed 代码安装完成后,用自然语言向智能体提问即可,它会自动检索到匹配的技能并写出正确的本地推理代码。skills/README.md 给出的示范:You:Build a local OpenMed pipeline that de-identifies a synthetic discharge note and extracts medication entities. Keep the example synthetic.智能体加载deidentifying-clinical-textextracting-clinical-entities两个技能,产出:import openmed note Synthetic patient Jane Example (MRN 12345), seen 2024-03-02, started on metformin 500mg BID. deid openmed.deidentify( note, methodmask, policyhipaa_safe_harbor ) meds openmed.analyze_text( deid.deidentified_text, model_namepharma_detection_superclinical, )这个示例背后的关键约束是:样本必须是合成的,模型一次性下载后推理全部本地运行,真实 PHI 不得进入云端智能体的提示词、日志或拷贝的示例。3.1 技能中的真实 API 契约技能的价值在于把 API 契约写死给智能体。以 skills/deidentifying-clinical-text/SKILL.md 为例,它明确记录了deidentify()的完整行为:五种method的语义对照表:mask(→[NAME]标签)、remove、replace(类型匹配的假值)、hash(稳定哈希、单向)、shift_dates(保日期区间);返回对象DeidentificationResult的字段名:输出文本在.deidentified_text,实体在.pii_entities(不是.text/.entities),映射仅在keep_mappingTrue时于.mapping中出现;可复现代理值consistentTrue, seed42,可逆去标识化配合openmed.reidentify(deidentified_text, mapping);一条硬性纪律:PIIEntity.text/.original_text持有原始 PHI,永远不得打印、记录或缓存,审计只用 offset、canonical_label和哈希。同样,skills/building-with-openmed/SKILL.md 作为地图型技能,把每个任务映射到对应技能与真实 API,并给出三个核心调用:import openmed # 1) 命名实体识别(词元分类) result openmed.analyze_text( Patient prescribed 500 mg metformin for type 2 diabetes., model_namedisease_detection_superclinical, # registry key, HF id, or local path output_formatdict, # dict | json | html | csv ) # 2) 去标识化 PHI(mask | remove | replace | hash | shift_dates) deid openmed.deidentify( John Doe (MRN 12345) seen on 2024-03-02., methodreplace, policyhipaa_safe_harbor, # 内置策略档案 ) # 3) 只定位 PHI 跨度,不改写文本 pii openmed.extract_pii(Call Dr. Smith at 617-555-0123.) # PredictionResult该技能还定义了构建时的不可妥协规则:本地优先(不给 PHI 工作流加云调用)、制品中不留原始 PHI(审计用 offset/哈希/标签)、仅宽松许可(不打包 UMLS/SNOMED CT/MIMIC 等资产,受限词表走用户自有凭据的进程外调用)、以泄漏率而非 F1 作为发布门槛、以及 OpenMed 只做辅助不做自主临床决策。安装面则按 extras 划分能力:pip install openmed[hf](模型下载)、[mcp]、[service](FastAPI)、[mlx](Apple Silicon)、[presidio]等。四、完整技能目录:14 个类别 × 73 个技能以下目录继承自 skills/README.md,每个链接对应skills/name/SKILL.md。OpenMed core — 直接用 OpenMed 构建技能作用Pairsask-openmed用确定性的本地路由,为摄入、隐私、抽取、交换或验证类请求选择第一个 OpenMed 工作流技能↔ adjacentbuilding-with-openmed为任何使用 OpenMed(设备端临床/生物医学 NLP 库)的项目做定向与引导,覆盖 NER、PHI 去标识化等↔ adjacentchoosing-openmed-models针对临床/生物医学任务、领域或语言,发现并挑选合适的 OpenMed 模型↔ adjacentdeidentifying-clinical-text用deidentify()在设备端移除、掩码或替换临床自由文本中的 PHI/PII↔ adjacentextracting-clinical-entities用analyze_text对医学文本运行临床/生物医学 NER↔ adjacentextracting-pii-entities用extract_pii检测 PHI/PII 跨度,不改动文本↔ adjacentloading-openmed-models从 Hugging Face Hub 或本地路径加载模型并跨调用高效复用↔ adjacentreidentifying-text可逆去标识化,之后用保存的映射恢复原始 PHI↔ adjacentrunning-zeroshot-ner用 GLiNER / GLiNER2 零样本支持,无需微调抽取任意自定义实体类型↔ adjacentData ingestion — 向 OpenMed 喂入临床文本技能作用Pairsextracting-dicom-metadata读取 DICOM 文件头与 DICOM-SR 内容,提取研究/序列元数据与内嵌报告文本,并标记 PHI→ beforefetching-fhir-resources从 FHIR REST 服务器获取并翻页 R4 资源(Patient、DocumentReference、DiagnosticReport、Observation、Condition)并解码→ beforegenerating-synthea-data用 MITRE Synthea 生成合成但真实的患者记录(FHIR R4 Bundle、C-CDA、CSV),用于开发与 CI 夹具↔ adjacentparsing-ccda-documents解析 C-CDA/CCD XML,按章节 LOINC 码提取叙述文本与编码条目→ beforeparsing-hl7v2-messages解码管道分隔的 HL7 v2.x 消息(ADT、ORU、MDM、ORM)为结构化分段/字段/组件,并暴露 OBX-5 与 NTE-3 自由文本→ beforeDe-identification privacy技能作用Pairsauditing-deid-leakage对已去标识文本做对抗性残余标识扫描,产出泄漏报告,命中即阻断发布after →auditing-deidentification-runs通过deidentify(auditTrue)产出签名的、可复现的、无 PHI 的去标识化运行审计轨迹after →auditing-safe-harbor-checklist对照 HIPAA Safe Harbor 全部 18 类标识符核验输出并报告残余重识别风险after →configuring-privacy-policies选择并定制 7 个内置隐私策略档案,构建自定义代理值生成器↔ adjacentdeidentifying-multilingual-text给deidentify()传lang与locale对非英文临床文本做设备端去标识化↔ adjacentgenerating-synthetic-surrogates用类型匹配的逼真假值替换检测到的 PHI,保持病历可读可解析after →pseudonymizing-for-gdprGDPR 级假名化,保留独立保管的重关联密钥after →reviewing-reidentification-risk准标识符专家确定式风险评分(k-匿名、l-多样性)加 OpenMed 经验性重识别攻击after →setup-openmed收集有界的一组去标识化策略决策,写入确定性、可审查的DEID-POLICY.md↔ adjacentshifting-clinical-dates逐患者一致日期平移,保事件间隔,满足 Safe Harbor 日期规则after →Clinical NLP — 精炼 OpenMed 输出技能作用Pairsextracting-sdoh抽取社会健康决定因素(SDOH):住房不稳、食品不安全、失业、交通障碍、社会孤立等after →parsing-lab-values从临床文本解析化验值与参考区间,标记低/正常/高/危急after →reconciling-problem-lists去重并对账抽取出的疾病,形成带临床状态(active/resolved/historical)的干净问题列表after →resolving-clinical-context为实体分配 ConText 三轴(否定、时态、不确定性),使denies chest pain不被误判after →segmenting-clinical-sections在运行 NER 前把病历切分为规范章节(Chief Complaint、HPI、PMH、Medications 等)→ beforesummarizing-clinical-notes产出引用锚定的结构化病历摘要(一句话、住院经过、问题导向视图)after →Terminology coding技能作用Pairscoding-hcc-risk-adjustment把慢病映射到 CMS-HCC V28 风险调整类别并估计 RAF 分数after →coding-icd10为诊断与手术建议候选 ICD-10-CM / ICD-10-PCS 编码after →linking-umls-concepts用用户自己的 UTS API 密钥把实体链接到 UMLS CUI,不打包 Metathesaurusafter →mapping-loinc用公共 Regenstrief LOINC 与 FHIR 术语服务把观察名称映射到 LOINCafter →mapping-to-snomed通过用户自备术语服务器把临床概念跨度映射到 SNOMED CTafter →normalizing-rxnorm用免费公共 RxNav/RxNorm REST API 把药物提及归一到 RxCUIafter →FHIR interoperability技能作用Pairsassembling-fhir-bundles把 OpenMed 输出产生的多个 R4 资源打包为可 POST 给 EHR 的事务 Bundleafter →bridging-presidio-and-spacy通过内置互操作适配器注册表把 OpenMed 与 Presidio、spaCy、LangChain 组合↔ adjacentexporting-bulk-fhir发起并收割 FHIR Bulk Data$export,把 NDJSON 流送进批量去标识化→ beforeexporting-to-fhir把analyze_text实体转为 Condition、MedicationStatement、Observation 等 R4 资源after →querying-terminology-service调用用户自备 FHIR 术语服务器($validate-code、$expand等)验证与扩展临床编码↔ adjacentscaffolding-smart-on-fhir搭建 SMART-on-FHIR 应用(EHR/独立启动、OAuth2 PKCE、scope、fhirContext)↔ adjacentvalidating-us-core提交 EHR 前用官方 HL7 FHIR 校验器对照 US Core/USCDI 档案验证资源与 Bundleafter →Evaluation quality技能作用Pairsauditing-subgroup-fairness审计模型在人口学亚组(性别、年龄段等)上的性能差异↔ adjacentauthoring-model-cards为 NER/去标识化模型生成模型卡:预期用途、定量指标、亚组表现after →benchmarking-clinical-ner对用户提供的金标语料打分(实体级 P/R/F1)↔ adjacentbuilding-gold-corpus搭建合成金标准标注项目:标签模式、标注规范↔ adjacentevaluating-with-leakage-gates对照 G1a–G8 泄漏优先发布门槛评估模型,以泄漏而非 F1 把关↔ adjacentgating-deid-leakage增加 CI 门禁:PHI 召回率跌破阈值或出现关键漏检即失败构建↔ adjacentResearch genomics技能作用Pairsannotating-variants用公共免许可注释工具(Ensembl VEP REST 等)注释 VCF 变异并规范化 HGVS↔ adjacentdefining-cohort-phenotypes在 OMOP CDM 上以 OHDSI ATLAS/CIRCE 风格编写可计算的表型与队列定义↔ adjacentmining-pubmed-literature经 NCBI E-utilities(ESearch → EFetch/ESummary)检索 PubMed/PMC 构建语料↔ adjacentparsing-trial-eligibility把临床试验入排标准自由文本解析为结构化逻辑并对照患者特征匹配after →searching-clinicaltrials用 ClinicalTrials.gov v2 REST API(游标分页)按疾病、干预、招募状态检索↔ adjacentImaging OCR intake技能作用Pairsextracting-lab-tables从 PDF、扫描件与图像中检测并抽取化验表格为结构化行→ beforeingesting-clinical-documents把扫描传真、图像、CSV/CDA 导出转为干净文本,全程设备端→ beforestructuring-radiology-reports把放射叙述转为结构化发现与印象(测量值、侧别、解剖、随访)after →Compliance regulatory / Safety pharmacovigilance / Analytics reporting技能作用Pairsauditing-part11-trails生成并核验 21 CFR Part 11 风格审计轨迹(who/what/when、电子签名、防篡改)↔ adjacentchecking-hipaa-compliance在 PHI 上部署 OpenMed 前对数据管线跑 HIPAA 隐私与安全规则清单并产出差距报告↔ adjacentdetecting-pv-signals在 FAERS/OpenFDA 药物-事件数据上计算 PRR、ROR、EBGM、IC(BCPNN)失衡信号↔ adjacentquerying-openfda-labels经免费公共 OpenFDA API 查询 FDA 药品标签、NDC、适应症、黑框警告与召回↔ adjacentreporting-adverse-events把抽取的不良事件提及结构化为 FAERS/ICH E2B(R3) 可报告字段after →building-patient-timelines从抽取的临床事件组装时间线,规范化日期并解析相对时间表达after →computing-ecqms用 CQL/QDM 逻辑在结构化数据上计算电子临床质量措施after →etl-to-omop-cdm把术语编码后的条件、药物、测量映射进 OMOP CDM v5.4 临床表after →Deployment ops技能作用Pairsbatch-processing-clinical-text设备端大批量 NER/PII/去标识化,支持分片与检查点↔ adjacentdeploying-openmed-mcp运行 OpenMed MCP 服务器,让编码智能体与聊天客户端调用临床 NER、PII 抽取↔ adjacentenforcing-nophi-logging添加日志/遥测守卫,从日志、trace、错误报告中清除或阻断 PHI↔ adjacentrunning-openmed-ondevice用 MLX(Apple Silicon)、CoreML(iOS/macOS)或 ONNX/WebGPU 后端全设备端运行↔ adjacentserving-openmed-rest-api搭建 FastAPI REST 服务,含健康检查与模型保活/卸载↔ adjacentuncategorized技能作用benchmark-pii-recall用合成金标跨度基准测试 PII 模型,报告标签感知的精确跨度与字符召回,不输出标识符deidentify-a-dataset对本地 CSV/JSONL/Parquet 数据集选定自由文本列去标识化,产出独立脱敏数据集extract-clinical-entities-to-fhir从合成或已去标识文本抽取实体并映射为确定性 FHIR R4 资源pick-a-pii-model从已提交注册表按语言、运行时格式与体积预算选设备端 PII 模型,并要求召回验证五、SKILL.md 规范与 CI 校验:build_catalog.py目录不是手工维护的。skills/build_catalog.py 同时承担校验、README 目录再生成与插件市场清单生成三种职责:python skills/build_catalog.py --check # CI gate:仅校验 python skills/build_catalog.py # 重写 README marketplace它自带一个零依赖的 frontmatter 解析器(parse_frontmatter,支持顶层key: value与一层嵌套metadata:映射),保证在任何纯标准库环境(包括 CI)可运行(skills/build_catalog.py)。load_skills()对每个skills/name/目录执行一组确定性检查(skills/build_catalog.py):检查项规则源码依据目录与名称一致frontmattername必须等于目录名,且匹配^[a-z0-9](?:-[a-z0-9])*$(kebab-case)NAME_RE(skills/build_catalog.py)保留词名称中禁止出现anthropic、claudeRESERVED(skills/build_catalog.py)描述description必填且 ≤1024 字符load_skills()(skills/build_catalog.py)体积SKILL.md正文 ≤500 行,超出须拆分到references/同上署名卫生禁止 AI/厂商署名脚注(如 Co-authored-by、 generated by…),正则刻意避开 data generated by Synthea 这类无辜技术表述ATTRIB_RE(skills/build_catalog.py)隐藏/辅助目录./_前缀目录与packs/不计入技能CATALOG_HELPER_DIRS(skills/build_catalog.py)类别与展示顺序由CATEGORY_ORDER固定(13 个类别,未知类别追加到末尾),pairs值before/after/adjacent映射为目录中的→ before、after →、↔ adjacent徽章(skills/build_catalog.py)。README 中每个技能描述取首句并在 140 字符处截断,这正是目录表格里大量 … 的由来(skills/build_catalog.py)。无参数运行时,脚本除校验外还会重写两个制品:skills/README.md 本身(整篇目录表都是生成物);.claude-plugin/marketplace.json插件市场清单——plugins[0].skills按名称排序列出全部./skills/name路径,支撑/plugin marketplace add/plugin install的插件安装路径(skills/build_catalog.py)。5.1 更严格的仓库级门禁除目录生成器外,docs/agent-skills/validation.md 记录了另一道 CI 门禁python scripts/skills/validate.py,它是纯本地、离线、确定性的:不取网、不解析外链、不导入 OpenMed 包。它在 frontmatter 基础上额外检查相对 Markdown 链接与仓库内引用文件(拒绝本地 file 协议、反斜杠路径、符号链接逃逸)、skills/name与已提交.claude-plugin/marketplace.json的成员一致性,并让每个可执行辅助脚本在临时 HOME、离线环境变量、代理阻断、无环境凭据的条件下通过--help。失败诊断只包含仓库路径、可选行号与固定提示词,绝不泄露技能正文或主机绝对路径。六、主题包(packs):按预算裁剪技能上下文全量 73 个技能对单一任务可能引入过多上下文。仓库因此提供版本化的主题包契约 skills/packs/manifest.json(manifest_version: 1),声明 5 个包,每个包有独立语义化版本、预算上限max_skills: 12与max_bytes: 100000:包定位收录技能数(本仓库)privacy去标识化、隐私策略、审计、重识别风险11interoperability文档摄入、FHIR 交换与卫生信息交换标准11coding术语、临床编码、规范化与映射9evaluation合成评估、模型证据与泄漏门禁8research队列、纵向分析、生物医学研究与临床试验9包契约规则(见 docs/agent-skills/packs.md):一个技能只能属于一个主题包;未入选技能仍可从全量目录使用。构建器python scripts/skills/build_packs.py仅用标准库、从不联网,默认输出每个包一个目录,内含pack.json选择记录与回指源目录的相对符号链接(保持SKILL.md单一事实源);写入边界处对文件加载与内存中的 manifest 双重再校验,调用方无法绕过标识符与包含规则。不支持符号链接的平台可用--selection-only生成纯元数据选择。包只是安装与上下文裁剪手段,不改变 OpenMed 运行时行为,也不构成合规认证。6.1 免克隆分发:技能包导出docs/agent-skills/install.md 描述的另一条分发路径是打包导出:python scripts/skills/export.py --output openmed-skills.zip python scripts/skills/export.py --pack privacy --host codex --output openmed-privacy.zip导出器读取本地skills/目录、skills/compatibility.json与主题包 manifest(若存在),写出 ZIP/tar.gz 归档与相邻 manifest:记录所选技能、主机能力、源修订(GitHEAD,无 Git 元数据时为unknown)以及每个源文件的 SHA-256 与字节数;归档成员顺序与 JSON 格式固定,同一修订两次导出产生相同字节。安全边界包括:拒绝替换已存在归档(需--force且原子化暂存-重命名)、拒绝符号链接/隐藏路径/非可移植名称、Git checkout 中要求所选文件已被跟踪;--host对应的技能目录来自 compatibility.json 数据(Claude Code~/.claude/skills/、Codex~/.codex/skills/、OpenCode~/.config/opencode/skills/、共享约定~/.agents/skills/),安装时用cp -R -n防覆盖模式落地。七、工程约定小结把 skills/README.md、install-skills.sh、skills/build_catalog.py 与 docs/agent-skills/ 下各篇设计文档合起来看,OpenMed 的技能体系遵循一组可复用的工程约定:单一事实源:技能正文只存在于skills/name/下;安装器、包构建器、导出器全部以符号链接或只读拷贝引用它,git pull即全量更新;一切本地、离线、确定性:校验、包构建、导出都不发起网络请求;相同输入产生相同字节或相同制品;失败即报、不覆盖、不逃逸:安装跳过既有条目,构建器在写盘前拒绝违规输入,校验诊断刻意不携带正文与主机路径;隐私与许可纪律贯穿技能内容:技能自身禁止 AI 署名脚注;技能教给智能体的规则则是——真实 PHI 不进提示词、日志、缓存与制品,审计只留 offset/哈希/标签,受限术语库用用户自有凭据进程外调用,发布以泄漏率门禁为准。对新用户的建议路径:先读 skills/building-with-openmed/SKILL.md 建立任务 → 技能/API映射,用./install-skills.sh全量安装(或按工作流只装一个 pack),以合成数据验证第一个deidentifyanalyze_text管线,最后用python skills/build_catalog.py --check确认本地目录符合规范。【免费下载链接】openmedLocal-first healthcare AI: clinical NER HIPAA PII de-identification that runs 100% on-device. 2,200 medical models, 21 languages, Apple MLX Python, no cloud, no patient data leaving your network. Apache-2.0项目地址: https://gitcode.com/GitHub_Trending/ope/openmed创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。