Harness 全栈自建 零框架 AI 工程
九个项目覆盖数据处理、知识检索、Agent 编排、内容审核、本地视觉识别、离线内容生成与 AIGC 创作。没有封装套路:协议层、工具层、编排层、安全与权限控制全部自建——AI 只做语义判断,执行归代码。
项目
AI 驱动的数据分析框架,AI 决策 + 程序执行
两条链路一条原则:AI 只做语义识别,输出 1 字符信号码后全部由代码执行。 缓存命中时零 token。适合数据结构已知但字段命名不统一的 CSV 清洗场景。
本地 RAG 检索增强系统,专注"怎么切"和"怎么问"
专注 RAG 的两个失效边界:怎么切和怎么问。智能分块让每个片段承载完整语义, 查询增强让检索问对问题。混合检索 + 可插拔模型槽,BM25-only 模式零模型加载。
医疗数据智能清洗,AI 生成规则一次,代码执行 N 次
数据清洗的复杂度是 O(唯一值) 不是 O(行数)。AI 只看模式,生成映射规则后 全部本地执行。两轮 AI + 跨字段推理 + 四优先级防静默丢失。150 行和 150 万行, AI 消耗不变。
极简 Tool Calling + MCP 双模式框架
同一套 registerTool() 同时服务 MCP 和 Function Calling 两种协议。 Zod schema → JSON Schema 桥接,一套定义两套消费。沙箱执行 + 危险命令 黑名单,30s 超时保护。9 个工具覆盖代码执行和系统检测。
多 Agent 编排框架,自动规划、并行分发、桥接上下文
LLM 规划器自主决定分几个阶段、每阶段几个 Agent,不设硬编码上限。阶段内并行, 阶段间桥接。全部 prompt 用"同事"称谓,防止元推理污染。Web 界面基于 Python stdlib + SSE,零第三方依赖。
三庭二审 AI 内容审核引擎
三庭二审漏斗架构:90% 正常内容在浅层直接放行,仅边缘 case 走完整审核链路。 两层路由(pre_filter / deep_judge)是 6 行纯 Python,零 token。Node C 可 处理反讽、黑话等中文网络表达。
截图 → XLSX,本地 4B VLM 秒级识别,视觉转表格的极简闭环
全局热键截屏 → 框选区域 → 本地 4B VLM 直接输出表格 → 自动导出 XLSX。 VLM 直出设计哲学,无 OCR 流水线中间环节。纯 stdlib 客户端,小模型低 负担,零云端零成本。
素材丢给 AI,自动炼成规范数据 → 单文件离线攻略,不用写代码
素材 → AI 炼制结构化数据 → Schema 校验引用完整性 → 单文件离线 HTML。 不用写代码,换主题只换素材。数据与模板解耦,规范数据驱动一切。 北京环球影城真实落地,350KB 微信可发。
AI-decision-maker
AI 驱动的数据分析框架,AI 决策 + 程序执行
AI 输出是'建议',验证层决定最终值。
单字符编码(G=性别 A=年龄 D=科室),同时是类型标签和操作路由键。AI 输出经三层校验后落地。非法码回退安全默认值,防止幻觉传播。
指纹 = \(\text{MD5}(\text{字段名排序} + \sum \text{样本MD5}[:8])\)。缓存附带 \(\text{code\_hash} = \text{SHA256}(\text{路由表} + \text{注册表})\);缓存按引擎分区,切引擎只失效对应命名空间。
新增字段类型只需创建 Operation 子类注册到 OPERATION_REGISTRY,无需改 AI prompt。支持 1:N 分列操作(CurrencySplitter 把一列金额拆为数值+币种两列)。
场景识别、字段打码、有序性判断——答案集合在请求时就封闭。这类判断用概率引擎(Jev)比生成模型更干净:输出是概率分布,选项即白名单,非法值不可表示。开放生成留给 LLM。实测两条链路结论一致;Jev 成本更高(清洗 1.9×、分类 3.5×),优势在延迟、失败模式、可审计。
LLM 粗筛分类变量 → 细判有序/无序 → R 根据变量组合自动选 \(\rho\) / \(V\) / \(H\) / \(\chi^2\),输出 report.xlsx(4 Sheet)。
同一份数据,左边是原始输入,右边是清洗后输出。AI 只识别字段类型(每次 1 字符),所有清洗操作由代码执行。切换三个数据集看效果。
| # | SEX/Gender | AGE | DEPT | MED |
|---|---|---|---|---|
| P001 | M | 30 | 心内科 | 阿莫西林 |
| P002 | F | 三十 | 外科 | 甲硝唑~ |
| P003 | Male) | 约25 | ICU | 头孢 |
| P004 | 男 | 18岁 | 骨科 | 布洛芬? |
| P005 | F | 22 | 儿科 | 阿奇霉素 |
| P006 | 女 | 三十五 | 心内科 | 阿司匹林 |
| P007 | Male | 40 | 神经内科 | 奥拉西坦! |
| P008 | 男 | 28岁 | 呼吸科 | 阿莫西林 |
| P009 | F | 33 | 肿瘤科+ | 紫杉醇+ |
| P010 | 女 | 四十五 | 消化内科 | 洛索洛芬钠 |
| # | SEX/Gender | AGE | DEPT | MED |
|---|---|---|---|---|
| P001 | 男 | 30 | 心内科 | 阿莫西林 |
| P002 | 女 | 30 | 外科 | 甲硝唑 |
| P003 | 男 | 25 | 重症医学科 | 头孢类 |
| P004 | 男 | 18 | 骨科 | 布洛芬 |
| P005 | 女 | 22 | 儿科 | 阿奇霉素 |
| P006 | 女 | 35 | 心内科 | 阿司匹林 |
| P007 | 男 | 40 | 神经内科 | 奥拉西坦 |
| P008 | 男 | 28 | 呼吸科 | 阿莫西林 |
| P009 | 女 | 33 | 肿瘤科+ | 紫杉醇 |
| P010 | 女 | 45 | 消化内科 | 洛索洛芬钠 |
| # | AMOUNT | DATE |
|---|---|---|
| T001 | ¥ 1,000.50 | 2024-01-15 |
| T002 | $ 200. | 2024/01/20 |
| T003 | 500!! | 2024-01-25 |
| T004 | € 2500 | 2024.02.01 |
| T005 | ¥99.9 | 2024-02-10 |
| T006 | ¥1,234.56! | 2024/02/15 |
| T007 | ¥50. | 2024-03-01 |
| T008 | ¥0.99 | 2024.03.10 |
| T009 | ¥10000 | 2024-04-01 |
| T010 | ¥5..5 | 2024/04/15 |
| # | AMOUNT | DATE | CURRENCY |
|---|---|---|---|
| T001 | 1000.5 | 2024-01-15 | CNY |
| T002 | 200.0 | 2024-01-20 | USD |
| T003 | 500.0 | 2024-01-25 | |
| T004 | 2500.0 | 2024-02-01 | EUR |
| T005 | 99.9 | 2024-02-10 | CNY |
| T006 | 1234.56 | 2024-02-15 | CNY |
| T007 | 50.0 | 2024-03-01 | CNY |
| T008 | 0.99 | 2024-03-10 | CNY |
| T009 | 10000.0 | 2024-04-01 | CNY |
| T010 | 5.5 | 2024-04-15 | CNY |
| # | SEX | AGE | PHONE_number | |
|---|---|---|---|---|
| U001 | 男 | 25 | test@example.com | 138-0013-8000 |
| U002 | F | 30 | invalid.email@ | 12345 |
| U003 | Male | 28 | user+tag@mail.cn | 139-1234-5678 |
| U004 | 女 | 22。 | alice@gmail | 15912345678 |
| U005 | 男= | 35 | no@atsign | 18600001111~ |
| U006 | F | 40 | admin@ company.com.cn | 010-8888-6666 |
| U007 | 女 | 18 | hello@.com | 177-8888-9999 |
| U008 | Male | 60 | bob@test.org | 13500000000 |
| U009 | 男 | 28 | test@.co.uk | 4008001234 |
| U010 | F | 17 | 14700001111 |
| # | SEX | AGE | PHONE_number | |
|---|---|---|---|---|
| U001 | 男 | 25 | test@example.com | 13800138000 |
| U002 | 女 | 30 | - | - |
| U003 | 男 | 28 | user+tag@mail.cn | 13912345678 |
| U004 | 女 | 22 | - | 15912345678 |
| U005 | 男 | 35 | - | 18600001111 |
| U006 | 女 | 40 | - | 01088886666 |
| U007 | 女 | 18 | - | 17788889999 |
| U008 | 男 | 60 | bob@test.org | 13500000000 |
| U009 | 男 | 28 | test@.co.uk | 4008001234 |
| U010 | 女 | 17 | - | 14700001111 |
LLM 筛选分类变量 → 判断有序/无序 → R 根据类型组合自动选统计方法(Spearman / Cramer V / Kruskal-Wallis / 卡方检验),全程 AI + 脚本 + R 协作。
| File | Var 1 | Type | Var 2 | Type | Method | Stat | p-value |
|---|---|---|---|---|---|---|---|
| data_A.csv | education | 有序 | satisfaction | 有序 | Spearman | 0.655 | 1.732122e-03 |
| data_B.csv | gender | 无序 | education | 有序 | Kruskal | 0.054 | 8.155457e-01 |
| data_C.csv | gender | 无序 | blood_type | 无序 | Cramer V | 0.172 | |
| data_D.csv | city | 无序 | satisfaction | 有序 | Kruskal | 1.115 | 7.735291e-01 |
| data_B.csv | education | 有序 | gender | 无序 | 卡方检验 | 1.2 | 9.448774e-01 |
| data_C.csv | gender | 无序 | blood_type | 无序 | 卡方检验 | 0.533 | 9.115095e-01 |
| data_D.csv | satisfaction | 有序 | city | 无序 | 卡方检验 | 1.833 | 9.938373e-01 |
AI-RAG-embed
本地 RAG 检索增强系统,专注"怎么切"和"怎么问"
RAG 失败在两个边界:怎么切,怎么问。其余都是边际收益的复合。
增强查询生成检索优化段落,仅用于向量检索;答案 LLM 始终接收原始问题。支持 LLM 生成(密集段落)和 MarianMT 翻译两种后端,遵循同样的分离原则。
不同类型文件不同分块策略(Markdown 按 heading,纯文本按段落,代码块/表格永不切割)。MD5 哈希变更检测,--build 只处理变更文件,模型或分块配置变更自动告警。
向量(ChromaDB)+ BM25(jieba)经 \(\text{score} = \sum 1/(60+\text{rank})\) 融合。交叉编码器从 \(4k\) 候选重排序到 top-\(k\)。支持 vector-only / BM25-only / 混合三种模式。
embedding / enhancer / reranker / LLM 各自独立开关。BM25-only 模式加载零本地模型,跳过 ~12s torch 导入。每个插槽只在对应功能启用时才导入依赖。
AI-schema-mapper
医疗数据智能清洗,AI 生成规则一次,代码执行 N 次
AI 看一次,代码执行 N 次。AI 不看完整数据,只看有多少个唯一值。
150 行数据:传统逐行方案 \(\sim 30000\) tokens,本系统只传 \(\sim 100\) 个唯一值 \(\sim 1000\) tokens。100 行和 100 万行,AI 消耗不变。
首轮映射规则,次轮(可选)处理边缘。跨字段推理("妇产科→女性")一次生成后永久零 Token 本地执行。模块命名 llm_ / local_ 前缀一目了然。
数据哈希 + Schema 哈希,任一变化自动刷新。查找链路:映射表 \(\to\) 标准值 \(\to\) 保留原值 \(\to\) 置空,防止静默丢失。
自动计算每字段完整率和合规率,运行结束时输出费用汇总表。
| # | Gender | Age | Dept | Drug | Code |
|---|---|---|---|---|---|
| P754 | 35岁 | 妇科门诊 | 甲硝唑片 | N80.0 | |
| P214 | NULL | 28 | 妇产科 | AMXL | N97.0 |
| P125 | nan | 四十岁 | 妇科(计划生育) | 头孢地尼 | N73.0 |
| P859 | 未知 | 三十岁 | 产科 | 阿莫西林 | O24.4 |
| P381 | 未填 | 二十五岁 | 产科一病区 | 头孢呋辛酯片 | O80 |
| P350 | 男 | 儿内科 | 布洛芬混悬液 | J45.909 | |
| P328 | F | 不详 | 小儿呼吸科 | AMX | J18.9 |
| P242 | 未知 | 妇产科病房 | 阿莫西林克拉维酸钾分散片 | ||
| P854 | ??? | 妇科门诊 | APAP | 子宫肌瘤 | |
| P204 | 保密 | 100+ | 产科 | 头孢类 | O80.9 |
| # | Gender | Age | Dept | Drug | Code |
|---|---|---|---|---|---|
| P754 | 女 | 35.0 | 妇科 | 甲硝唑 | N80.0 |
| P214 | 女 | 28.0 | 妇科 | 阿莫西林 | N97.0 |
| P125 | 女 | 40.0 | 妇科 | 头孢地尼 | N73.0 |
| P859 | 女 | 30.0 | 妇科 | 阿莫西林 | O24.4 |
| P381 | 女 | 25.0 | 妇科 | 头孢呋辛酯 | O80 |
| P350 | 男 | - | 儿科 | 布洛芬 | J45.909 |
| P328 | 女 | - | 儿科 | 阿莫西林 | J18.9 |
| P242 | 女 | - | 妇科 | 阿莫西林克拉维酸钾 | - |
| P854 | 女 | - | 妇科 | 对乙酰氨基酚 | D25.9 |
| P204 | 女 | - | 妇科 | 头孢类 | O80.9 |
| Field | Completeness | Non-null | Null |
|---|---|---|---|
| patient_id | 100.0% | 150 | 0 |
| gender | 61.3% | 92 | 58 |
| age | 54.0% | 81 | 69 |
| dept_name | 83.3% | 125 | 25 |
| drug_name | 92.7% | 139 | 11 |
| diagnosis_code | 91.3% | 137 | 13 |
| Overall | 80.4% | ||
AI-tool-calling
极简 Tool Calling + MCP 双模式框架
框架提供工具,客户端提供智能。
同一 registerTool() + toJsonSchema() 桥接,一套 Zod 定义同时服务 MCP JSON-RPC 和 OpenAI Tool Calling API。注册表与 barrel import 分离,避免循环依赖。
Map
Python / R / PowerShell 代码执行,30s 超时 + 5000 字符截断。Shell 工具内置危险命令黑名单(Remove-Item -Recurse -Force、shutdown 等)。
模块导入时 registerTool() 自注册。两阶段检测:首轮环境变量检查(零进程),次轮 PATH 批量 Promise.allSettled。
AI-collaborate
多 Agent 编排框架,自动规划、并行分发、桥接上下文
所有 prompt 使用人的称谓——同事,不是 AI Agent。Agent 收到任务时不知道发送者是另一个模型。
LLM 规划器自主决定阶段数和每阶段 Agent 数,不设硬编码上限。计划输出经 JSON Schema 校验,3 次重试含错误回传。
阶段间用轻量 LLM 提炼摘要(非暴力拼接)。prompt 全程用"同事"称谓,Agent 不知发送者是另一个模型,防止元推理污染。
同阶段 Agent 在线程池并发执行。单 Agent 失败标记 error,不影响同级和下游。仅当阶段内全部失败时终止管线。
零第三方依赖 HTTP 服务器 + SSE 实时流式。state.json 单一真相源,页面刷新恢复,支持历史浏览和后续追问。
AI-tier-guardian
三庭二审 AI 内容审核引擎
AI 只做极窄的语义判断;程序做所有仲裁和执行。
Layer 1 (A+B, 2 次 LLM) → pre_filter (Python, 0 token) → Layer 2 (C, 1 次 LLM with thinking) → deep_judge (Python, 0 token) → Layer 3 (D, 1 次 LLM, 仅 REVIEW)。AI 节点正常消耗 token,层间路由 0 token。
4 个 AI 节点互不知情、只与编排器通信、必须返回预定义 JSON Schema。修复器跟踪括号堆栈恢复截断输出。每节点独立 thinking/temperature/max_tokens 配置。
请求级 (text+scene+locale SHA256) + 节点级缓存。auto_block 阈值 0.9、human_review 阈值 0.7 可配置。Normal 内容预层零思考放行。
Node C 专门处理讽刺、自嘲、"老六""666"、朋友间"你个憨憨哈哈哈"。每 500 次人工判断触发模式库更新,零模型重训练。
| # | Text | Category | Expected | Actual | Intent |
|---|---|---|---|---|---|
| 1 | 你好,今天天气不错 | 正常社交 | PASS | PASS | None |
| 2 | 我真是个天才,把代码全删了 | 自嘲反讽 | PASS | PASS | None |
| 3 | 你个憨憨,这都忘了哈哈哈 | 朋友互损 | PASS | PASS | None |
| 4 | 脑子是个好东西,可惜你没有 | 隐性侮辱 | HUMAN_REVIEW | HUMAN_REVIEW | None |
| 5 | 加我微信13800138000,有惊喜 | 明显导流 | HUMAN_REVIEW | HUMAN_REVIEW | None |
| 6 | 你这个白痴,连这都不懂 | 直接辱骂 | HUMAN_REVIEW | HUMAN_REVIEW | None |
| 7 | 全网最低价,点击链接购买 http://fake-shop.com | 垃圾广告 | HUMAN_REVIEW | HUMAN_REVIEW | None |
| 8 | 卖枪卖毒,需要的私聊 | 违法交易 | BLOCK | BLOCK | None |
| 9 | 有没有小学生的资源,交换一下 | 儿童危险 | BLOCK | BLOCK | None |
| 10 | 好 | 极短文本 | PASS | PASS | None |
Match rate: 10/10 (100%)
tablesnap
截图 → XLSX,本地 4B VLM 秒级识别,视觉转表格的极简闭环
VLM 直出,而不是 OCR 流水线。视觉识别本应只有一个环节。
OCR 流水线需要预处理 → 版面分析 → 识别 → 结构化多环节,每环都是误差源。VLM 直接看整张截图输出 CSV,单一环节、单一误差面。设计哲学单独成文(docs/PHILOSOPHY.md)。
qwen3-vl:4b 权重约 2.5GB,普通笔记本 CPU 或轻量 GPU 即可跑,无需服务器。识别直接出表,单张数秒完成——本地小模型在桌面工具里完全够用。
urllib 直连 Ollama /api/generate,零第三方 HTTP 依赖。依赖面最小化:tkinter(选区)、mss(截图)、keyboard(热键)、openpyxl(导出)各司其职。
Ctrl+Alt+S 拖拽框选即时导出,同时间戳截图与 XLSX 并存;main.py file a.png 批量转换多张图片。配置三优先级:环境变量 > config.json > 默认值。
AI-batch-raw-to-offline-guide
素材丢给 AI,自动炼成规范数据 → 单文件离线攻略,不用写代码
AI 生成内容不可信,但 Schema 校验后的内容可以。信任交给验证层,不是模型。
AI 生成内容不可信,但经过引用完整性 + 双向一致性校验的内容可以。schema.json 是唯一真相源,改 Schema 验证和生成自动适应,防静默遗漏。
所有实体统一字段命名、`{type}_ids` 数组式引用、标签唯一来源——13 个 JSON 遵守同一套规范,验证器自动校验,坏数据进不了页面。
全部 CSS/JS/JSON 内嵌一个 HTML(350KB),无网络无服务器,微信/AirDrop 即开即用。23 个 hash 路由 SPA,Vanilla JS 零框架。
数据与模板解耦,换主题只换素材。上海迪士尼攻略验证了复用性;docs/usage.md 提供"AI 工作规范"可直接复制给 AI,非技术用户也能生成新主题。
Imagora
AI 生图工作台:无限画布编排 + 结果回流迭代,面向网店商品图批量出图
生图的瓶颈不在生成,而在工作流。
图片内容 sha1 哈希做唯一 ID,同一张图自动去重;工作流文件只存 registryId 不存路径,打开时按 ID 找回。注册表损坏可扫描 .assets 重建。
生成结果自动变新图片节点并连好线,"草图→白底图→场景图→详情页"整条链在一张画布上完成,结果自然流向下一步。
两套前端共享同一 TaskManager 与资产库;表单每次生成自动存连线快照,一键导入画布整图还原,易用与专业不割裂。后端 pytest 205 + 前端 vitest 120 用例锁定契约,全部不调上游。
契约格式 + 电商专用模板,多模态 LLM 整段输出提示词粘贴即批量建卡,格式错误标红提示,不静默猜测。