
1. 在 MONAI 超声分割链路里审核备注先要可追溯做儿童心脏超声 3D 建模时MONAI 的LoadImaged、Spacingd、Orientationd一旦配置漂移后面医生签署的模型就可能“看起来对、量出来错”。这里以审核备注工程师视角把 CHOP 类工作流拆成可复现步骤平台把 CT、MRI 和超声转成儿童心脏 3D 模型医生在术前查看解剖结构、评估器械适配并对每个模型完成审核签署。AI 可以显著缩短从影像到可审核模型的时间但审核备注不能少。先到 TaoToken 官网 拿 Key再把 Base URL 设为https://taotoken.net/api这样 Claude Code、Codex 或 CC Switch 里的模型调用才能走统一入口。本文不写“模型能不能替代医生”这类空泛问题而是给出三个能落地的东西一份超声分割脚本一份审核备注模板一份医生签署字段对照。它们的目标是让每个 3D 心脏模型在交给心脏科或放射科医生之前都带上可追溯的预处理参数、分割置信度、模型版本和签署状态。TaoToken 在这里做的是 API 接入层你仍然在本地或受控环境执行 MONAI 推理审核备注由工程脚本生成医生签署字段由业务系统或本地审计库维护。2. 超声分割脚本从 DICOM/多帧到结构 mask 的最小链路先准备环境。超声数据可能来自单帧、多帧或 DICOM series本文用“多帧堆叠成伪 3D”的方式演示。真正的临床系统需要按设备、探头和协议做校准这里只保留可复现工程骨架。python -m venv .venv source .venv/bin/activate pip install monai[nibabel,itk] pydicom numpy torch下面的脚本读取一个 NIfTI 或已转换好的超声体数据做方向、间距、强度归一化用 MONAI UNet 做滑窗推理保存 mask并生成审核备注 JSON。模型权重路径写成占位实际使用时替换成你们验证过的权重。import json from pathlib import Path import numpy as np import torch from monai import transforms from monai.networks.nets import UNet from monai.inferers import sliding_window_inference CASE_ID CHD-US-0001 IMAGE_PATH data/ultrasound_case_0001.nii.gz MODEL_PATH weights/heart_us_seg.pth OUT_MASK outputs/ultrasound_case_0001_mask.nii.gz OUT_NOTE outputs/ultrasound_case_0001_audit_note.json def build_preprocess(): return transforms.Compose([ transforms.LoadImaged(keys[image]), transforms.EnsureChannelFirstd(keys[image]), transforms.Orientationd(keys[image], axcodesRAS), transforms.Spacingd( keys[image], pixdim(1.0, 1.0, 1.0), mode(bilinear,), ), transforms.ScaleIntensityRanged( keys[image], a_min0, a_max255, b_min0.0, b_max1.0, clipTrue, ), ]) def load_model(device): model UNet( spatial_dims3, in_channels1, out_channels4, channels(16, 32, 64, 128, 256), strides(2, 2, 2, 2), num_res_units2, ).to(device) state torch.load(MODEL_PATH, map_locationdevice) model.load_state_dict(state) model.eval() return model def main(): device torch.device(cuda if torch.cuda.is_available() else cpu) preprocess build_preprocess() data preprocess({image: IMAGE_PATH}) image data[image].unsqueeze(0).to(device) model load_model(device) with torch.no_grad(): logits sliding_window_inference( inputsimage, roi_size(96, 96, 96), sw_batch_size2, predictormodel, overlap0.25, ) prob torch.softmax(logits, dim1) mask torch.argmax(prob, dim1).squeeze(0).cpu().numpy().astype(np.uint8) confidence float(prob.max(dim1).values.mean().cpu().item()) Path(outputs).mkdir(exist_okTrue) import nibabel as nib nib.save(nib.Nifti1Image(mask, affinenp.eye(4)), OUT_MASK) note { case_id: CASE_ID, modality: ultrasound, image_path: IMAGE_PATH, mask_path: OUT_MASK, model_version: heart_us_seg_v0.1, spacing: [1.0, 1.0, 1.0], orientation: RAS, mean_confidence: round(confidence, 4), seg_classes: { 0: background, 1: left_ventricle, 2: right_ventricle, 3: atrial_structures }, review_status: pending_doctor_signoff, engineer_note: 超声伪影区域已标记右心室边界需医生重点确认。 } Path(OUT_NOTE).write_text(json.dumps(note, ensure_asciiFalse, indent2), encodingutf-8) print(fmask saved: {OUT_MASK}) print(faudit note saved: {OUT_NOTE}) if __name__ __main__: main()这段脚本的关键不是网络结构而是审核链路上的字段spacing、orientation、model_version、mean_confidence、review_status。如果这些字段没有随 mask 一起保存后面医生签署时只能看到三维模型却无法判断它经过了什么处理。尤其是超声各向异性、声影、斑点噪声都会影响分割边界审核备注必须把“需要医生确认的区域”写清楚。如果你要把脚本接到 TaoToken 的模型对话能力做结构化备注补全可以在本地生成 JSON 后再通过 API 做字段规范检查。Base URL 仍然是https://taotoken.net/apiKey 从 TaoToken 控制台入口 获取。注意不要让脚本直连生产库也不要把原始患者影像直接传给任何外部服务先做本地脱敏和字段抽取。3. TaoToken 接入配置Claude Code settings.json、Codex config.toml、CC Switch 三件套审核备注工程师通常不只用一个工具有人用 Claude Code 改脚本有人用 Codex 做配置排查也有人用 CC Switch 管理多套 CLI。这里必须把配置分开不能把 Claude Code 的ANTHROPIC_*套到 Codex 上。Claude Code 的settings.json可以这样写。路径一般是~/.claude/settings.jsonKey 用占位符YOUR_API_KEYBase URL 写https://taotoken.net/api不要附加 UTM 参数。{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: YOUR_API_KEY, ANTHROPIC_API_KEY: YOUR_API_KEY, ANTHROPIC_MODEL: claude-sonnet-4-5, ANTHROPIC_SMALL_FAST_MODEL: claude-haiku-3-5 } }如果 Claude Code 启动时报 401先检查ANTHROPIC_AUTH_TOKEN和ANTHROPIC_API_KEY是否都指向同一个有效 Key。如果是 404检查ANTHROPIC_BASE_URL是否误写成https://taotoken.net/api/v1或带上了?utm_source...。Base URL 只保留https://taotoken.net/api。Codex 使用config.toml路径一般是~/.codex/config.toml。这里不要出现任何ANTHROPIC_*而是用独立的环境变量名。model gpt-5-codex model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEY然后在本地 shell 中设置 Keyexport TAOTOKEN_API_KEYYOUR_API_KEY如果你使用 CC Switch 管理多套 CLI重点检查“三件套”供应商 Base URLClaude Code 用ANTHROPIC_BASE_URLhttps://taotoken.net/apiCodex 用base_url https://taotoken.net/api。API Key 环境变量Claude Code 读ANTHROPIC_AUTH_TOKEN或ANTHROPIC_API_KEYCodex 读TAOTOKEN_API_KEY不要混用。默认模型名Claude Code 用ANTHROPIC_MODELCodex 用model gpt-5-codex模型名要跟 TaoToken 当前支持的模型列表一致。CC Switch 里切换供应商后建议开新终端再启动 CLI避免旧环境变量残留。你可以先在 模型对话 中做一次最小请求验证 Key再回到本地跑 MONAI 脚本。这样排障顺序是Key 是否有效、Base URL 是否可达、模型名是否存在、本地脚本是否依赖 GPU。不要一上来就改 MONAI 代码。4. 审核备注模板与医生签署字段对照审核备注不是一句“模型已生成”。它要能回答用了哪份影像、什么模态、分割了哪些结构、模型版本是什么、工程师标注了哪些风险、谁最终签署。下面给出一份 Markdown 模板可以直接放进病例文件夹或工单系统。# 儿童心脏超声 3D 分割审核备注 - 病例编号CHD-US-0001 - 检查模态超声 - 影像来源脱敏后本地 NIfTI - 建模任务心脏结构分割 3D 表面重建 - 模型版本heart_us_seg_v0.1 - 预处理RAS 方向1.0mm 各向同性重采样强度归一化到 [0,1] - 分割结构左心室、右心室、心房结构 - 平均置信度0.87 - 工程师风险提示右心室侧壁存在声影边界需医生确认 - 待医生确认字段右心室流出道、房室瓣附近边界、是否可用于器械适配评估 - 审核状态pending_doctor_signoff - 审核医生__________ - 科室心脏科 / 放射科 - 签署时间__________ - 医生备注__________医生签署字段对照可以用表格维护。工程侧只填技术字段医生侧填临床判断两边不要互相覆盖。字段工程侧填写医生侧填写是否必填说明case_id是否是病例唯一编号modality是否是超声 / CT / MRImodel_version是否是可追溯到权重版本spacing是否是重采样间距影响测量orientation是否是RAS/LAS 等方向编码seg_classes是否是分割类别定义mean_confidence是否是平均置信度不等同临床结论engineer_note是否是风险区域提示doctor_confirm_fields是是是医生需要确认的解剖点review_status是是是待审核 / 已签署 / 退回reviewer_name否是是审核医生姓名reviewer_department否是是心脏科或放射科signed_at否是是签署时间doctor_note否是否临床补充意见可以用 Python 从分割脚本的 JSON 自动生成备注。下面函数读取上一步的audit_note.json补上医生签署字段并输出 Markdown。import json from pathlib import Path def render_audit_markdown(note_path, out_path): note json.loads(Path(note_path).read_text(encodingutf-8)) lines [ f# 儿童心脏超声 3D 分割审核备注, , f- 病例编号{note[case_id]}, f- 检查模态{note[modality]}, f- 模型版本{note[model_version]}, f- 方向编码{note[orientation]}, f- 重采样间距{note[spacing]}, f- 平均置信度{note[mean_confidence]}, f- 工程师风险提示{note[engineer_note]}, f- 审核状态{note[review_status]}, , ## 医生签署字段, , - 审核医生__________, - 科室心脏科 / 放射科, - 签署时间__________, - 医生备注__________, , ## 工程备注, , f- 影像路径{note[image_path]}, f- mask 路径{note[mask_path]}, f- 分割类别{json.dumps(note[seg_classes], ensure_asciiFalse)}, ] Path(out_path).write_text(\n.join(lines), encodingutf-8) print(fmarkdown saved: {out_path}) if __name__ __main__: render_audit_markdown( outputs/ultrasound_case_0001_audit_note.json, outputs/ultrasound_case_0001_audit_note.md )这份模板的重点是“医生签署字段”和“工程字段”分离。工程侧可以批量生成医生侧必须由有权限的人签署。如果后面要探索不同支架在心脏模型中的表现也必须先保证模型经过审核签署否则模拟结果没有临床讨论基础。5. 本地审计追踪SQLite 表结构、批量导出与质量门禁审核备注不能只停留在单个 JSON 文件。更稳妥的做法是本地 SQLite 审计库由工程师在本地执行建表和插入。禁止让 MCP、Agent 或自动化脚本直连 Oracle、生产库或医院核心库。下面的 SQL 只作为本地审计示例。CREATE TABLE IF NOT EXISTS heart_model_audit ( case_id TEXT PRIMARY KEY, modality TEXT NOT NULL, image_path TEXT NOT NULL, mask_path TEXT NOT NULL, model_version TEXT NOT NULL, spacing_json TEXT NOT NULL, orientation TEXT NOT NULL, mean_confidence REAL, engineer_note TEXT, review_status TEXT NOT NULL DEFAULT pending_doctor_signoff, reviewer_name TEXT, reviewer_department TEXT, signed_at TEXT, doctor_note TEXT, created_at TEXT NOT NULL DEFAULT CURRENT_TIMESTAMP ); CREATE INDEX IF NOT EXISTS idx_audit_status ON heart_model_audit(review_status);本地执行可以这样sqlite3 outputs/heart_audit.db schema.sql sqlite3 outputs/heart_audit.db .mode csv .headers on SELECT case_id, model_version, review_status, reviewer_name, signed_at FROM heart_model_audit; outputs/audit_export.csv质量门禁建议至少包括spacing是否在预期范围内。超声重采样后如果间距异常体积测量会偏。orientation是否为 RAS 或其他统一方向。不同方向混用会让 3D 模型镜像。mean_confidence是否低于阈值。低置信度病例必须进入医生重点审核队列。seg_classes是否与当前模型版本匹配。模型升级后类别定义不能沿用旧版。review_status是否从pending_doctor_signoff变为signed。只有签署后才允许进入器械适配模拟。model_version是否可回溯到权重文件和训练配置。如果你用 TaoToken 做备注字段的规范化检查可以让模型对话只处理脱敏后的 JSON不传影像文件。Base URL 仍然用https://taotoken.net/apiKey 从 API Keys 创建。工程侧要保留原始输入和输出方便审计。6. 排障清单超声伪影、各向异性、Key/Base URL 配错第一类问题在 MONAI。超声分割最常见的是声影、斑点噪声和边界不连续。审核备注里要写明“右心室侧壁声影边界需医生确认”而不是只写“分割完成”。如果Spacingd把各向异性数据重采样成各向同性体积测量可能变化必须在备注里记录原始 spacing 和目标 spacing。第二类问题在方向。Orientationd(axcodesRAS)后保存 mask 时仍要确认 affine 和原始影像一致。如果 3D 模型左右颠倒医生在术前评估器械适配时会出现严重误判。建议在备注中增加orientation_check字段人工抽查左心室和右心室位置。第三类问题在 TaoToken 接入。Claude Code 和 Codex 的配置不要混Claude Code检查~/.claude/settings.json中ANTHROPIC_BASE_URL是否为https://taotoken.net/apiANTHROPIC_AUTH_TOKEN或ANTHROPIC_API_KEY是否为YOUR_API_KEY对应的有效 Key。Codex检查~/.codex/config.toml中base_url是否为https://taotoken.net/apienv_key是否为TAOTOKEN_API_KEYshell 中是否export TAOTOKEN_API_KEYYOUR_API_KEY。CC Switch检查三件套是否串台。切到 Claude Code 供应商时不要保留 Codex 的TAOTOKEN_API_KEY覆盖切到 Codex 时不要出现ANTHROPIC_*。Base URL 不要带 UTM。官网链接可以带utm_sourcetaotoken_aicg_blog_endutm_content...但 API Base URL 只写https://taotoken.net/api。不要在脚本里硬编码 Key。用环境变量或本地密钥管理日志中脱敏。第四类问题在医生签署流程。pending_doctor_signoff的模型不能进入“器械适配模拟”队列。审核备注模板里要有医生科室、签署时间、医生备注。心脏科和放射科医生的审核重点不同字段对照表要允许分别填写。如果你在 CC Switch 中切换后 Claude Code 仍报旧模型名先退出 CLI再执行env | grep ANTHROPIC和env | grep TAOTOKEN确认没有旧变量残留。Codex 报模型不存在时先到 模型对话 验证当前 Key 可用的模型名再改config.toml。不要把 Claude Code 的ANTHROPIC_MODEL写进 Codex。7. 从审核备注到交付高转化路径与下一步把 CHOP 类心脏建模流程工程化核心不是“让 AI 生成一个 3D 模型”就结束而是让每个模型都带有可追溯的审核备注。超声分割脚本负责生成 mask 和技术字段审核备注模板负责把技术字段和医生签署字段分开SQLite 本地审计库负责状态流转。TaoToken 负责把模型调用统一到https://taotoken.net/api让 Claude Code、Codex 和 CC Switch 的配置有据可查。你可以按这个顺序继续先在 模型对话 验证 Key 和模型名。如果要把配置接入日常开发流查看 Coding Plan。需要创建或轮换 Key进入 API Keys。Claude Code 的详细环境变量和 settings.json 写法参考 Claude Code 文档。更多入口和产品信息回到 TaoToken 官网。最后再强调一次MONAI 负责医学影像分割与重建TaoToken 负责 API 接入与开发工具配置医生签署负责临床审核。三者边界清楚审核备注才有意义。把spacing、orientation、model_version、mean_confidence、review_status、reviewer_name、signed_at这些字段补齐你的超声分割结果才真正具备交付条件。