Contenido del repositorio de origen con títulos, ejemplos, código, tablas, enlaces e imágenes preservados.
数字员工 Skill
执行任何 dws 操作前,先完整读取 `dingtalk-shared`。先用 dingtalk-tag-index.md 路由;生命周期读取 manage.md,自然语言创建/恢复/DSH 接入再读 manage-and-connect.md;能力资源读取 capability.md;执行排障读取 run.md。
路由
| 用户意图 | 命令 | |||||
|---|---|---|---|---|---|---|
| 创建草稿 / 创建并发布 / 查询 / 修改 / 上线 / 删除 | dws dingtalk-tag manage ... | |||||
| 下线 | 当前版本无独立下线命令;明确说明限制,不得用 delete 冒充下线 | |||||
| A2A 或其他仅登录场景 | dws dingtalk-tag manage login --agent-uuid ... | |||||
| 只登录数字员工并保存本地 Profile | dws dingtalk-tag manage login --agent-uuid ... | |||||
| 把已有、已发布的本地数字员工接入 DSH | dws dingtalk-tag connect --agent-uuid ... --channel dsh | |||||
| 把数字员工接入当前本地 Agent | dws dingtalk-tag connect --agent-uuid ... --channel auto --daemon --alwayson | |||||
| 查询、停止或重启数字员工本地连接 | dws dingtalk-tag connect list/status/stop/restart | |||||
| 在新机器接管(先在旧机器完成解绑) | 旧机器 connect unbind 成功后,新机器 dws dingtalk-tag connect --agent-uuid ... --channel ... | |||||
| 解除本机连接,但保留员工和 Profile | dws dingtalk-tag connect unbind --agent-uuid ... | |||||
| 将已有连接换为其他本地 Agent 或 DSH | 先 connect unbind --agent-uuid ...,再 connect --agent-uuid ... --channel ... | |||||
| 创建、更新、删除或查询 Skill / MCP 资源 | `dws dingtalk-tag capability skill | mcp create | update | delete | list | query ...` |
| 查一次执行的状态或完整 trace | dws dingtalk-tag run ... |
自然语言编排硬约束
- 创建/更新的 MCP 主程序类型字段为
digitalTagEmployeeProfile.type,列表过滤使用顶层type,仅支持open_code、local_agent,a2a暂不支持。CLI 参数为--type;创建时必须显式传--type open_code|local_agent,缺失或空值由 DWS 本地拦截;应告知调用方选择主程序类型,不能省略或发送空值。更新时未传则保持原值;明确接入本地 Agent/DSH 时传--type local_agent。注意create/list/save-draft的--type是主程序类型,而detail使用--snapshot draft|published选择配置来源,不要混淆。 - 创建时未提供
--response-mode或值为空,CLI 默认发送mention_only,包括local_agent。更新时不传就不更新该字段,显式值保持不变;最终有效配置由服务端按当前草稿校验。 - 创建要求名称、描述和主程序类型;部门可不传,由服务端补操作人的主任职部门。不要向用户索要部门名称、岗位、工号或内部 uid。
save-draft只更新用户明确修改的基础草稿字段,不接受 Skill/MCP 完整数组。Skill/MCP 生命周期统一使用capability skill|mcp create|update|delete|list|query;不设计 attach/detach,check_mcp只在 create 和带配置的 update 内部调用。- 创建或替换 MCP 配置时,须告知并显式填写
configString.mcpServers.<名称>.type(streamable-http或sse)以及对应url;不能只填 URL,configType=JSON也不能代替传输类型。仅更新 enabled 不重新提交配置。 - 发布所需配置由服务端校验;创建时默认响应模式为
mention_only。历史草稿缺少响应模式时先通过save-draft补齐,不以发布命令隐式改写草稿。 - 同一自然语言请求里的连续写操作只做一次汇总确认;确认后才加
--yes。先用--dry-run --format json展示计划。 - 创建成功后若保存或发布失败,必须返回已创建的
agentUuid和恢复命令;重试禁止再次执行 create。 - “创建并落盘 Profile”可顺序执行创建/发布与
manage login;“创建并接入 DSH”则使用connect --channel dsh。创建/发布与 connect 是独立事务,connect 绝不创建、修改或发布数字员工。 - 用户可以只创建/管理数字员工、只把已有员工转换为本地 Profile,或继续接入 DSH;三种操作互不强绑定。
- 数字员工 ID 统一使用
agentUuid/--agent-uuid;人员标识统一使用userId,不得要求或展示 uid、robotUid、staffId。 - 普通本地 Agent 接入使用 Event Consume,默认仅主管可触发;白名单中的用户必须先在员工身份下精确解析。支持 Codex、Qoder/QoderWork、Claude Code、CodeBuddy/WorkBuddy、Gemini、OpenCode 和 custom。OpenClaw/Hermes 暂未适配,不要回退到机器人创建流程。
- 自然语言“创建发布并接入本机”在发布后显式使用
--daemon --alwayson;命令行默认前台。DSH 不加这两个参数,由运行中的宿主员工级启动;宿主不可用时按 restartRequired 提示启动宿主。connect 不提供开机自启,也不能在电脑休眠期间处理消息。 - connect 失败后保留员工 ID 和已落盘 Profile,检查
connect status再恢复;不要重复 create、不要清除事件重试预算、不要隐式覆盖另一个 Adapter 的绑定。 - 服务端 identity 由主管登录态注入,禁止传入 userId/orgId;deviceId 是稳定设备标识,runtimeBindingId 是服务端绑定 ID,与本地 bindingRevision/runtimeInstanceId 不同。绑定回执不代表在线;响应未知的 bind 不得自动重试或通过删配置绕过。只保存 Profile 使用
manage login。 - “暂停”使用 stop(保留绑定);“解绑”使用 unbind(保留 Profile);“换成本地另一个 Agent”先 unbind,成功后再 connect;两步先 dry-run 并汇总确认。换绑先确认旧实例释放,unknown 或超时不得手动删绑定来绕过。新绑定已提交但启动失败使用 restart;旧绑定仍在 unbinding 时重试原 unbind。
安全
manage login在内部完成 AuthCode 换票、在线身份核验,并保存精确corpId:userIdProfile;不得输出或转存 AuthCode/Token。只登录或仅保存 Profile 使用manage login;真正接入本地 Agent/DSH 使用connect。- 删除不可逆;修改、发布、删除和 connect 按 Schema 的确认要求执行。
- Channel 仅保留
capabilities/binding用于能力发现和绑定、访问判定。数字员工发送使用chat +messages-reply/chat +messages-send,必须指定员工 Profile,并以--body-stdin --wait-delivery --employee-context传入受限正文与绑定上下文。DSH 要求chatDelivery=true,缺少时提示升级 DWS。

