agent-onboarding
为 OpenClaw 新增或修复 Feishu Agent 的标准入职 Skill。覆盖配置 upsert、identity(open_id)补齐、角色文档模板渲染、飞书与任务合同规范校验、roster/board 同步与重启前审计。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
为 OpenClaw 新增或修复 Feishu Agent 的标准入职 Skill。覆盖配置 upsert、identity(open_id)补齐、角色文档模板渲染、飞书与任务合同规范校验、roster/board 同步与重启前审计。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | agent-onboarding |
| description | 为 OpenClaw 新增或修复 Feishu Agent 的标准入职 Skill。覆盖配置 upsert、identity(open_id)补齐、角色文档模板渲染、飞书与任务合同规范校验、roster/board 同步与重启前审计。 |
| license | MIT |
| version | 4.4.0 |
用于把新 Agent 入职为"可被 @、可派单、可追踪"的标准员工。
这是新 Agent 入职的唯一入口;如果需要调整 onboarding 流程,应优先修改这个 Skill 及其脚本,而不是在 openclaw-feishu-delivery 项目里再维护第二套独立 onboarding 文档。
identity/open_id、角色文档、派单看板不完整一个可上线的 Agent,至少需要以下 16 项全部满足:
新增说明(Feishu 私聊策略):
dmPolicy="pairing",未知用户私聊会收到 pairing codedmPolicy="open" 且 allowFrom=["*"]dmPolicy="allowlist"allowlist 时,onboarding 默认走半自动 auto-dm:先临时 pairing,等待 owner 首次私聊,再自动回填该账号视角下的真实 open_iddmPolicy="disabled"openclaw.json.agents.list 有该 agentopenclaw.json.bindings 有 channel=feishu + accountId={agent-id}openclaw.json.channels.feishu.accounts 有 appId/appSecretopenclaw.json.channels.feishu.userIdentities[{identity-key}][agent-id] 有 operator open_id$OPENCLAW_HOME/agents/{agent-id}/agent 目录存在$OPENCLAW_HOME/agents/{agent-id}/sessions 目录存在workspace-{agent-id} 存在且有 IDENTITY.mdIDENTITY.md 含三要素:Name / 岗位职责 / 核心工作(>=3)MEMORY.md 已由注入脚本写入项目化消息铁律(send_message.py + runtime 配置 + contract 文档)openclaw-feishu-delivery 项目目录存在且可读openclaw-feishu-delivery/runtime/accounts.local.json 已有该 agent runtime accountagent-roster.json 已纳入该 agentdispatch-board.json 已出现可用窗口(runtime 或 binding)TASK_POLICY.md 已落地并通过任务合同校验(单任务单责任人 + 创建人回执)allowlist,全员对外用 open + ["*"],不允许长期停在模糊状态入职完成后,Agent 必须能在任务积分体系中被稳定调度,要求:
creator_type + creator_idassignee_agent_idexpected_output + acceptance_criteriadone 后必须有回执记录(receipt)按 docs.openclaw.ai,新 Agent 入职后至少还要满足:
openclaw agents list --bindings 可见确定性路由(multi-agent)openclaw channels status --probe 中 Feishu 为 ok(channel health)dmPolicy="open" 时必须 allowFrom 包含 "*"(Feishu dmPolicy)groups.<chat_id>.requireMention=true(group mention gating)openclaw doctor --fix 与 openclaw gateway restart(配置收敛)路径约定补充:
~/.openclaw/openclaw.jsonOPENCLAW_CONFIG_PATH,应优先读取该路径OPENCLAW_STATE_DIR(兼容 OPENCLAW_HOME),应优先读取该状态目录常见根因只有三类:
agents/bindings/accounts,漏写 userIdentitiesuserIdentities 写到了错误 key(例如实际运行读 default,你写在了 prod)直接后果:群里虽然能收消息,但提及判定可能失败(表现为"did not mention bot")。
[收集入职参数]
|
v
[Step1 upsert配置 + identity]
|
v
[Step1.5 明确 DM 接入策略(open/allowlist/disabled)]
|
v
[Step1.6 若目标是 allowlist,临时 pairing 并等待 owner 首次私聊]
|
v
[Step2 接入 delivery runtime]
|
v
[Step3 渲染角色模板文档]
|
v
[Step3.5 注入 MEMORY 项目铁律]
|
v
[Step4 校验 identity/memory/runtime/task-policy]
|
v
[Step5 环境预检(requests)]
|
v
[Step6 加入默认群组]
|
v
[Step7 同步 roster/board + 审计]
|
v
[Step8 重启后回归验证]
|
v
[Step9 条件交接给 coach]
|
v
[交接: 可被@ + 可派单 + 可接入消息项目]
agent-id:英文 ID(如 security)agent-name:中文岗位名(如 安全专家)role-summary:一句话岗位职责core-work:3-5 条核心工作app-idapp-secretoperator-open-id:必须,用于 userIdentitiesidentity-key:可选;不传会自动沿用现有 key(推荐)python3 scripts/ensure_feishu_agent.py upsert \
--agent-id {agent-id} \
--agent-name "{agent-name}" \
--app-id {app-id} \
--app-secret {app-secret} \
--operator-open-id {operator-open-id} \
--dry-run
正式执行:
python3 scripts/ensure_feishu_agent.py upsert \
--agent-id {agent-id} \
--agent-name "{agent-name}" \
--app-id {app-id} \
--app-secret {app-secret} \
--operator-open-id {operator-open-id}
在写配置前,先确认该 Agent 的业务范围,但 onboarding 默认先走 pairing:
pairing:默认入口。用于拿到该账号视角下的真实 open_id 与 pairing codeallowlist:当业务范围是指定人群时,拿到 pairing 信息后收口为账号级 allowlistopen:当业务范围是面向全员或对外服务时,拿到 pairing 信息后收口为 open + ["*"]disabled:不接受私聊,只允许群内或其他路由入口推荐规则:
pairingallowlistopen + ["*"]disabled执行原则:
open_idsessions_send 伪造入站消息open_idchannels.feishu.accounts.<accountId>.allowFrom建议执行顺序:
dmPolicy="pairing"openclaw pairing list feishu --account <accountId> --json 捕获 pairing requestid(open_id) + code(pairing code)open_id 写入 channels.feishu.accounts.<accountId>.allowFromdmPolicy="allowlist"推荐收尾话术:
现在接入已经基本完成,最后还差一次首次私聊来获取这位新 Agent 的匹配信息。请你先给新入职的 Agent 发一句任意消息;我拿到匹配信息后,会继续替你完成最后的入职流程。
标准命令:
python3 scripts/capture_feishu_owner_identity.py \
--account-id {agent-id} \
--approve-pairing
超时默认 300 秒;在等待期间,owner 需要主动给新 agent 发第一条消息。
验收动作:
openclaw channels status --probe
并至少检查一次:
open_idallowlist 是否写入账号级配置而非误写全局配置OpenClaw: access not configured pairing 文案python3 scripts/ensure_delivery_runtime_account.py \
--agent-id {agent-id}
正式执行:
python3 scripts/ensure_delivery_runtime_account.py \
--agent-id {agent-id} \
--apply
说明:
openclaw-feishu-delivery/runtime/accounts.local.jsonroute.transport.account={agent-id} 才能稳定引用该 agentpython3 scripts/scaffold_agent_workspace_docs.py \
--agent-id {agent-id} \
--agent-name "{agent-name}" \
--workspace-dir $OPENCLAW_HOME/workspace-{agent-id} \
--role-summary "{岗位职责}" \
--core-work "{核心工作1}" \
--core-work "{核心工作2}" \
--core-work "{核心工作3}" \
--force
产物最少包含:
IDENTITY.mdUSER.mdMEMORY.mdAGENTS.mdTASK_POLICY.mdworkspace-{agent-id}/skills/ 目录(仅建目录,不自动写入 skill 软链接)模板策略补充:
AGENTS.md 时必须注入 AI 编程规范段落tmux + AI 编程工具 + 回调 链路,不再按任务大小区分--ai-coding-agent,不要依赖口头约定python3 scripts/inject_agent_memory_rules.py \
--agent-id {agent-id} \
--workspace-dir $OPENCLAW_HOME/workspace-{agent-id}
正式执行:
python3 scripts/inject_agent_memory_rules.py \
--agent-id {agent-id} \
--workspace-dir $OPENCLAW_HOME/workspace-{agent-id} \
--apply
要求:
openclaw-feishu-delivery 项目位置为准,不手写绝对路径python3 scripts/ensure_feishu_agent.py audit
python3 scripts/validate_memory_feishu_rules.py --agent-id {agent-id}
python3 scripts/validate_agent_workspace_identity.py \
--agent-id {agent-id} \
--agent-name "{agent-name}" \
--workspace-dir $OPENCLAW_HOME/workspace-{agent-id}
python3 scripts/validate_agent_task_contract_rules.py --agent-id {agent-id}
openclaw doctor --fix
openclaw agents list --bindings
openclaw channels status --probe
python3 /root/.openclaw/projects/openclaw-feishu-delivery/scripts/scaffold_agent_task.py --help
要求:
群组入群脚本依赖 requests。先在当前执行环境做依赖守卫:
python3 scripts/ensure_python_dependency.py \
--module requests \
--package requests
预期结果:
requests,直接返回 status=okpython3 -m pip install requestsimport requests 验证成功才允许继续 Step 5说明:
scripts/feishu_group_membership.py 在正式执行时也会再次自检并尝试自动补装python3 scripts/feishu_group_membership.py ensure-bot-groups \
--target-account-id {agent-id} \
--scenario agent_onboarding \
--dry-run
python3 scripts/feishu_group_membership.py ensure-bot-groups \
--target-account-id {agent-id} \
--scenario agent_onboarding
python3 scripts/sync_agent_roster.py
python3 $OPENCLAW_HOME/workspace/scripts/repair_feishu_native_sessions.py --repair
python3 $OPENCLAW_HOME/workspace/scripts/refresh_dispatch_board.py
python3 $OPENCLAW_HOME/workspace/scripts/audit_dispatch_integrity.py
当前会话若经过 gateway,使用延迟重启;否则直接重启。
systemctl --user restart openclaw-gateway.service
journalctl --user -u openclaw-gateway.service --since "2 minutes ago" --no-pager
成功信号:
active (running)Invalid config@单个 / @多个 都能触发目标 agent入职确认通过后,若 coach agent + workspace-coach + openclaw-training 观察任务脚本 都存在,则自动触发教练接手培训;否则返回 status=skipped 并继续完成 onboarding 收尾,不再强行执行教练开训。
python3 scripts/trigger_coach_training_handoff.py \
--agent-id {agent-id} \
--agent-name "{agent-name}" \
--role-summary "{岗位职责}" \
--observe-days 14 \
--notify-timeout 45 \
--notify
满足条件时,该步骤会自动完成:
openclaw-training 脚本生成观察期定时考核任务 JSONcoach 派发开训指令(--notify)跳过条件:
openclaw.json 中不存在 coach agentworkspace-coach 不存在workspace-coach/skills/openclaw-training/scripts/generate_coach_observation_jobs.py 不存在如果已部署任务积分后台(Ops Backend),入职通过后同步事件:
curl -X POST http://127.0.0.1:8088/api/onboarding/confirm \
-H 'Content-Type: application/json' \
-d '{
"agent_id":"{agent-id}",
"agent_name":"{agent-name}",
"role_summary":"{岗位职责}",
"creator_type":"human",
"creator_id":"supervisor"
}'
预期结果:
如果要把"任务驱动 + 积分激励"快速扩到现有全部 agent,执行:
# 先 dry-run
python3 scripts/backfill_agent_task_contract_docs.py
# 确认后正式写入
python3 scripts/backfill_agent_task_contract_docs.py --apply
该脚本会:
TASK_POLICY.mdAGENTS.md 追加"任务合同铁律"段落(缺失才追加)MEMORY.md 追加"任务执行铁律"段落(缺失才追加)pairing 启动,并成功获取首次真实私聊的 pairing 信息allowlistopen 且 allowFrom=["*"]allowlist,已自动采集 owner open_idallowlist,allowFrom 已写入账号级配置而非误写全局配置upsert --dry-run 输出无关键缺口upsert 已写入 agents/bindings/accounts/userIdentitiesensure_delivery_runtime_account.py --agent-id {agent-id} dry-run 正常ensure_delivery_runtime_account.py --agent-id {agent-id} --apply 已写入 runtime accountscaffold 已生成 IDENTITY.md/USER.md/MEMORY.md/AGENTS.md/TASK_POLICY.mdvalidate_agent_workspace_identity.py 通过validate_memory_feishu_rules.py 通过validate_agent_task_contract_rules.py 通过openclaw doctor 无 Feishu 关键告警(尤其 dmPolicy=open 时 allowFrom=["*"])openclaw agents list --bindings 可见 feishu accountId={agent-id} 路由openclaw channels status --probe 中 Feishu 为 okensure_python_dependency.py --module requests 已通过(或返回已安装)sync_agent_roster.py 已刷新员工清单refresh_dispatch_board.py 已刷新窗口audit_dispatch_integrity.py 无关键阻塞@{agent-name} 可回@1个 与 @多个 目标都能命中对应 agentcoach 基础设施齐全,已执行 trigger_coach_training_handoff.py 并生成 intake + observation jobscoach 基础设施齐全,coach 已收到开训派单(或 intake 队列状态为 notified)coach 不存在,交接步骤返回 status=skipped 且 reason 明确/api/agents)/api/tasks + /dispatch)SKILL.md,细节模板下沉到 references/ 与 assets/scripts/,减少自由发挥scripts/ensure_feishu_agent.pyscripts/ensure_python_dependency.pyscripts/feishu_group_membership.pyscripts/scaffold_agent_workspace_docs.pyscripts/validate_memory_feishu_rules.pyscripts/validate_agent_workspace_identity.pyscripts/validate_agent_task_contract_rules.pyscripts/sync_agent_roster.pyscripts/trigger_coach_training_handoff.pyscripts/backfill_agent_task_contract_docs.pyreferences/agent-responsibilities.mdreferences/identity-template.mdreferences/memory-template.mdreferences/task-contract-spec.mdassets/agent-template/*.tpl
ory-template.md`references/task-contract-spec.mdassets/agent-template/*.tpl
template.md`references/task-contract-spec.mdassets/agent-template/*.tpl