对话生成员工画像:操作指南
在消息里对助手说话,完成探索、固化技能、按固定流程出画像。
来源 docs/技术博客/对话生成员工画像操作指南.md
表述:本文面向 工作区管理员与日常用户,说明如何在 消息 里对工作智能体说话,完成「探索 → 固化技能 →(可选)创建应用 → 按固定流程出报表」,无需在技能中心手工粘贴脚本或配置文件。实现对照见文末 实现对照。
日期:2026-07-10 示例与模板:examples/employee-profile-pipeline/ 相关机制:docs/core-mechanisms/技能组成规范.md、docs/core-mechanisms/工作区应用.md、help/product-features/writing-workspace-skills.md
结论
Cadau 支持把 员工画像 类需求做成 可重复执行的程序管线,而不是每次让模型临场写 SQL、拼 HTML。
推荐路径:
- 在对话里 试跑一次(可选);
- 说一句 「创建员工画像技能」 → 平台安装内置模板(pipeline + 脚本 + 版式)并绑到当前智能体;
- 管理员在对话里 写入预定义查询(一次性);
- 日常只说 「生成某某的员工画像」 → 按固定步骤取数、组装、交付 HTML;
- 需要桌面入口时,对话 「做一个员工画像应用」。
开始前:环境要求
| 项 | 说明 |
|---|---|
| 工作区 | 已选工作区,且在 消息 中与 工作智能体 对话(非帮助智能体专用场景亦可,但需已绑定 HR 相关能力) |
| 数据集成 | 工作区 助手能力包 已开通 数据连接;成员已被授权访问 HR 库 |
| HR 数据连接 | 至少一条指向 HR / 人事库的连接(连接串、表权限在 管理端或协作设置 中配置——尚无「对话里新建数据库连接」) |
| 脚本执行 | 平台与工作区已开通 脚本执行,且你的账号未被禁止;否则技能里的 run_script 无法跑组装脚本 |
| 管理员 | 写入预定义查询(query.upsert)须 工作区管理员 |
五步操作(推荐话术)
第 1 步:探索(可选,第一次)
在 消息 输入:
生成赵江的员工画像
会发生什么
- 智能体通过 数据连接 试查 HR 数据,并尝试生成一版画像(可能是 HTML 或结构化说明)。
- 若尚未配置 预定义查询,可能只用 表预览 看样例——不能当作正式生产流程。
建议:探索满意后,用第 2、3 步固化为程序;不要长期依赖「临场发挥」。
第 2 步:一句话创建技能(核心)
在 同一会话或新会话 对 工作智能体 说:
创建员工画像技能
或更完整:
创建一个员工画像技能,按固定 pipeline 取数,脚本组装 HTML
平台会自动
| 动作 | 说明 |
|---|---|
| 写入 技能中心 | 含取数清单(pipeline)、Python 组装脚本、HTML 版式模板 |
| 绑定当前智能体 | 后续对话会自动参考该技能 |
| 填入 数据连接 slug | 若工作区已有名称/slug 含 HR、员工、人事 的连接,会自动替换模板中的占位 |
注意区分两种「生成技能」说法
| 你说 | 得到什么 |
|---|---|
| 把刚才的流程沉淀成技能 / 根据对话生成技能 | 从聊天记录 摘录 Markdown 步骤(说明书型,模型仍可能即兴改 SQL/HTML) |
| 创建员工画像技能 | 安装 内置程序模板(pipeline + 脚本 + 固定版式)——新建请用这句 |
| 更新 @某技能,按固定 pipeline 取数,脚本组装 html | 把 已有技能 替换为 pipeline 模板(正文 + 附属文件)——迁移旧技能用这句 |
第 2b 步:已有技能迁移为 pipeline(可选)
若技能中心里已有一条「员工画像」类技能(例如 LLM 写的说明书版),在 消息 中 @ 该技能后说:
更新 @生成员工画像HTML(含证件照与统计图),按固定 pipeline 取数,脚本组装 html
须同时包含:更新/修改 + pipeline(或「固定取数」)+ 脚本组装 + 员工画像/HTML 等关键词。
平台会写入 references/pipeline.json、scripts/assemble_profile.py、assets/profile.html,并发布新版本——不是仅用 AI 改 Markdown 正文。
若你只说「更新这条技能」而不提 pipeline,仍会得到 说明书型修订,不会自动安装固定取数流程。
第 3 步:写入预定义查询(管理员,一次性)
HR 库表结构因客户而异,需把 只读查询 配进数据连接。管理员可在对话中说:
帮我把员工画像需要的预定义查询写入 HR 数据连接
并补充:
请按 examples/employee-profile-pipeline 里 query-defs 的清单,逐条 query.upsert;写完后用「赵江」逐条 query.run 验证。
查询清单概要(完整 JSON 见 examples/employee-profile-pipeline/data-connection/query-defs.example.json):
| query_id | 用途 |
|---|---|
employee_by_name | 按姓名查员工主档(得 empId、工号、入职日等) |
employee_contact_by_emp_id | 联系方式 |
employee_org_by_emp_id | 部门、职务、上级 |
employee_contract_by_emp_id | 合同(可选) |
employee_salary_by_emp_id | 薪资摘要(可选,视权限) |
eaemp_photo_by_id / mostayentryphoto_by_empname | 证件照 |
验证示例(管理员或智能体在工具调用中):
{
"source_slug": "你的HR连接slug",
"action": "query.run",
"params": {
"query_id": "employee_by_name",
"params": { "empName": "赵江" }
}
}
若 SQL 与真实 CareTop/HR 表不一致,在对话中说:「按我们库表校正 employee_by_name 这条查询」,由管理员确认后 query.upsert 更新。
缺某条查询时(对话里临时补充)
不必事先配齐全部 query。用户问统计、查重、查证件号等而 query.list 无匹配时,智能体应:
- 提议一条只读
SELECT与建议的 query_id(参数用?,勿用@empName); - 等用户确认(如「可以,加上并查」);
- 管理员
query.upsert,并 同一会话query.run给出结果。
禁止用 表预览 的前若干行回答「有没有重名」「身份证是否相同」等——表预览不能代表全库。
预定义查询 SQL 占位符:须 WHERE empName = ? 且 params 与 ? 个数一致;@empName 会导致保存失败或执行报错。
第 4 步:创建应用(可选)
需要 应用桌面 入口(输入姓名即可出画像、看历史)时,在 消息 说:
做一个员工画像应用,输入姓名、能看历史记录
平台会
- 在 应用 桌面创建 员工画像 应用(表单 + 历史列表);
- 创建时写入 Python 脚本(
logic/generate_profile.py、组装脚本与版式资源); - 在应用里提交姓名后,直接运行这些脚本取数并生成 HTML,不必再绕回对话。
日常仍可在消息里说「生成某某的员工画像」;两种入口共用同一套取数与版式。
第 5 步:日常使用
配置完成后,用户只需:
生成赵江的员工画像
预期行为(固定程序,非临场编写):
sequenceDiagram
participant U as 用户
participant A as 工作智能体
participant DS as 数据连接
participant S as 组装脚本
U->>A: 生成赵江的员工画像
A->>A: 召回「员工画像」技能
loop pipeline 各步骤
A->>DS: query.run 固定 query_id
DS-->>A: 行数据 / 照片 upload_id
end
A->>S: run_script 填入 HTML 模板
S-->>A: output_files/*.html
A->>U: 预览 / 下载链接交付物:固定版式的 HTML 员工画像;缺字段显示「无」或「—」,不编造。
重名时:按姓名查到 多条 员工时,须列出 工号、创建时间、状态 等请用户选定 empId,未确认前 不得 继续取后续数据。
重名后的追问(如「这三人身份证是否相同」):应走 查证件号 的预定义查询(或按上文 提议 → 确认 → 保存 → 执行);勿 用表预览扫全表。
常见问题
照片不显示
- HTML 内
img须使用/api/v1/uploads/{upload_id},不要用占位符域名。 - 查询结果中的 BLOB 照片应由平台落盘为附件后再嵌入。
说「创建员工画像技能」没反应
- 确认在 已选工作区 的 工作智能体 会话中;
- 话术须含 「员工画像」+「技能」+「创建/生成」(例如「生成赵江的员工画像」是 出报表,不是 建技能);
- 后端需已部署含 员工画像内置模板 的版本(见实现对照)。
脚本执行失败
- 检查 助手能力包 → 脚本执行 与工作区成员授权;
- 在技能中心打开该技能,确认存在
scripts/assemble_profile.py。
只有说明书、没有 pipeline
- 说明用了 「沉淀对话」 或 普通「更新技能」;请 @ 目标技能后说:「更新,按固定 pipeline 取数,脚本组装 html」,或在技能中心回滚后再迁移。
查重名 / 证件号答不准
- 表预览 只能看未筛选的前若干行,不能用来判断全库有没有重名或对比身份证。
- 应配置 预定义查询(如按姓名查
citizenID),或让管理员在对话确认后 保存查询再执行。 - SQL 须用
?占位,勿用@empName。
智能检查校正很慢或看不到进度
- 数据集成 → 数据连接 表单中,「智能检查校正」会 逐条 检查;条目多时请等待进度条。
- 全屏编辑 预定义查询时,进度对话框显示在页面最上层;若仍无响应,确认已配置 AI 服务后重试。
生成到一半停了、让你说「继续」
- 直接在同一会话说:「继续把周珊珊的员工画像做完」 或 「继续生成画像」 即可,不必解释技术细节。
- 平台会在后台尽量自动续跑;若仍只说话不出结果,可新开一句:「生成某某的员工画像」(带上已确认的正确姓名)。
- 若卡在 重名确认 或 姓名候选,按智能体列表选好再回一句「就是这个」。
与管理端手工配置的关系
| 能力 | 对话能否完成 | 备注 |
|---|---|---|
| 创建员工画像 技能 | 能 | 「创建员工画像技能」 |
| 已有技能 → pipeline | 能 | 「更新 @技能,按固定 pipeline 取数,脚本组装 html」 |
| 创建员工画像 应用 | 能 | 「做一个员工画像应用」 |
| 写入 预定义查询 | 能(管理员) | query.upsert |
| 新建 HR 数据库连接 | 不能 | 须在协作/管理端配置连接串与授权 |
| 开通 脚本执行 | 不能 | 须管理员在平台/能力包配置 |
| 日常出报表 | 能 | 「生成某某的员工画像」 |
实现对照
| 用户概念 | 实现 |
|---|---|
| 对话创建员工画像技能 | skillfromchat.tryEmployeeProfileSkillDraft,模板目录 backend/internal/skillfromchat/bundled/employee-profile/ |
| 对话创建员工画像应用 | appfromchat.FastRoute → 模板 employee_profile,workspaceapp.employeeProfileAppSpec |
| 取数清单 | 技能 references/pipeline.json |
| 字段映射 | references/field-mapping.json |
| HTML 组装 | scripts/assemble_profile.py + assets/profile.html |
| 示例仓库路径 | examples/employee-profile-pipeline/ |
| 平台动作入口 | skillfromchat.TryExecute(技能)、appfromchat.TryExecute(应用),在 handlers/chat.go 工作区会话中触发 |
延伸阅读
- 员工画像 Pipeline 与数据连接对齐指南 — 管理员一次性 upsert 话术与对齐判据
- 技能撰写要求:
help/product-features/writing-workspace-skills.md(§8.4 脚本类、§8.6 预定义查询) - 工作区应用:
docs/core-mechanisms/工作区应用.md - 从探索到程序化的设计思路:可与同事分享
examples/employee-profile-pipeline/README.md中的架构说明