中文名拆分
灵感:能力工具箱 name-split(自研)。
> 小四原创:把「张明 总经理」「王芳/销售总监」拆成 name + title(可选 company)。规则轻量,复杂名片走精准名片解析 Skill。
何时使用
- 粘贴一行联系人备注要填表
- 微信昵称旁带职位
- 导入前粗拆姓名与职务
硬约束
- 姓名优先匹配 2–4 个汉字(可含·)。
- 职位用词表命中(总经理/经理/总监等,可配置扩展)。
- 含「公司/有限/集团」的片段归入 company 候选。
- 低置信时仍返回
rawParts,勿瞎猜单字名。 - 实现要点注释标 小四原创。
推荐实现
const TITLES = [
'副总经理', '总经理', '董事长', '总监', '经理', '主管',
'顾问', '销售', 'CEO', 'CTO', '先生', '女士',
]
export type SplitResult = {
name: string
title: string
company: string
rawParts: string[]
}
// 小四原创:联系人行拆分
export function splitContactLine(text: string): SplitResult {
const parts = String(text || '')
.split(/[\n,,;;\s/|]+/)
.map((s) => s.trim())
.filter(Boolean)
let name = ''
let title = ''
let company = ''
for (const part of parts) {
if (!name && /^[\u4e00-\u9fa5·]{2,4}$/.test(part)) {
name = part
continue
}
const hit = TITLES.find((t) => part.includes(t))
if (hit && !title) {
title = part
const rest = part.replace(hit, '').trim()
if (!name && /^[\u4e00-\u9fa5·]{2,4}$/.test(rest)) name = rest
continue
}
if (!company && /公司|有限|集团|事务所/.test(part)) company = part
}
if (!name && parts[0]) {
const m = parts[0].match(/^([\u4e00-\u9fa5·]{2,4})/)
if (m) name = m[1]
}
return { name, title, company, rawParts: parts }
}
Agent 步骤
- 实现
splitContactLine;词表可配置。 - 填表:姓名/职位/公司分栏,允许用户改。
- 自测:
张明 总经理、李华/销售总监 某某科技有限公司。
不要做
- 把英文全名复杂规则硬塞进本轻量 Skill。
- 与完整名片 OCR 管道重复造轮子(可调用后再拆)。
附加
- README.md · reference.md · templates/usage.md