@xfxstudio/claworld 2026.4.14-testing.2 → 2026.4.16-testing.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/openclaw.plugin.json +1 -1
  2. package/package.json +1 -1
  3. package/index.js +0 -50
  4. package/setup-entry.js +0 -6
  5. package/skills/claworld-a2a-channel-agent/SKILL.md +0 -218
  6. package/skills/claworld-help/SKILL.md +0 -304
  7. package/skills/claworld-join-and-chat/SKILL.md +0 -526
  8. package/skills/claworld-manage-worlds/SKILL.md +0 -292
  9. package/skills/claworld-manage-worlds/references/world-context-templates.md +0 -145
  10. package/src/lib/chat-request.js +0 -366
  11. package/src/lib/public-identity.js +0 -175
  12. package/src/lib/relay/agent-readable-markdown.js +0 -385
  13. package/src/lib/relay/kickoff-progress.js +0 -162
  14. package/src/lib/relay/kickoff-text.js +0 -191
  15. package/src/lib/relay/shared.js +0 -30
  16. package/src/lib/runtime-errors.js +0 -149
  17. package/src/openclaw/index.js +0 -51
  18. package/src/openclaw/plugin/account-identity.js +0 -73
  19. package/src/openclaw/plugin/claworld-channel-plugin.js +0 -3483
  20. package/src/openclaw/plugin/config-schema.js +0 -392
  21. package/src/openclaw/plugin/lifecycle.js +0 -114
  22. package/src/openclaw/plugin/managed-config.js +0 -1054
  23. package/src/openclaw/plugin/onboarding.js +0 -312
  24. package/src/openclaw/plugin/register-tooling.js +0 -728
  25. package/src/openclaw/plugin/register.js +0 -1616
  26. package/src/openclaw/plugin/relay-client-shared.js +0 -146
  27. package/src/openclaw/plugin/relay-client.js +0 -1469
  28. package/src/openclaw/plugin/runtime-backup.js +0 -105
  29. package/src/openclaw/plugin/runtime.js +0 -12
  30. package/src/openclaw/plugin-version.js +0 -67
  31. package/src/openclaw/protocol/relay-event-protocol.js +0 -43
  32. package/src/openclaw/runtime/backend-error-context.js +0 -91
  33. package/src/openclaw/runtime/canonical-result-builder.js +0 -126
  34. package/src/openclaw/runtime/demo-session-bootstrap.js +0 -32
  35. package/src/openclaw/runtime/feedback-helper.js +0 -145
  36. package/src/openclaw/runtime/inbound-session-router.js +0 -44
  37. package/src/openclaw/runtime/outbound-session-bridge.js +0 -29
  38. package/src/openclaw/runtime/product-shell-helper.js +0 -931
  39. package/src/openclaw/runtime/runtime-path.js +0 -19
  40. package/src/openclaw/runtime/system-message-orchestrator.js +0 -1
  41. package/src/openclaw/runtime/tool-contracts.js +0 -939
  42. package/src/openclaw/runtime/tool-inventory.js +0 -83
  43. package/src/openclaw/runtime/world-membership-helper.js +0 -320
  44. package/src/openclaw/runtime/world-moderation-helper.js +0 -508
  45. package/src/product-shell/contracts/chat-request-approval-policy.js +0 -93
  46. package/src/product-shell/contracts/world-orchestration.js +0 -734
  47. package/src/product-shell/orchestration/world-conversation-text.js +0 -229
@@ -8,7 +8,7 @@
8
8
  ],
9
9
  "name": "Claworld Persona Relay",
10
10
  "description": "Claworld relay world channel plugin for OpenClaw.",
11
- "version": "2026.4.14-testing.2",
11
+ "version": "2026.4.16-testing.1",
12
12
  "configSchema": {
13
13
  "type": "object",
14
14
  "additionalProperties": false,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xfxstudio/claworld",
3
- "version": "2026.4.14-testing.2",
3
+ "version": "2026.4.16-testing.1",
4
4
  "description": "Claworld channel plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "index.js",
package/index.js DELETED
@@ -1,50 +0,0 @@
1
- import { defineChannelPluginEntry } from 'openclaw/plugin-sdk/core';
2
- import {
3
- createClaworldChannelPlugin,
4
- registerClaworldPlugin,
5
- registerClaworldPluginFull,
6
- } from './src/openclaw/index.js';
7
- import { setClaworldRuntime } from './src/openclaw/plugin/runtime.js';
8
-
9
- export {
10
- createClaworldChannelPlugin,
11
- claworldChannelPluginScaffold,
12
- registerClaworldPlugin,
13
- registerClaworldPluginFull,
14
- } from './src/openclaw/index.js';
15
- export {
16
- CLAWORLD_CHANNEL_ID,
17
- claworldChannelConfigSchema,
18
- claworldChannelConfigJsonSchema,
19
- validateClaworldChannelConfig,
20
- inspectClaworldChannelAccount,
21
- resolveClaworldChannelAccount,
22
- resolveClaworldRuntimeConfig,
23
- listClaworldAccountIds,
24
- defaultClaworldAccountId,
25
- LOCAL_AGENT_BOOTSTRAP_SCHEMA,
26
- LOCAL_AGENT_BOOTSTRAP_REQUIRED,
27
- } from './src/openclaw/index.js';
28
- export { createClaworldLifecycleManager } from './src/openclaw/plugin/lifecycle.js';
29
- export { ClaworldRelayClient, createClaworldRelayClient } from './src/openclaw/plugin/relay-client.js';
30
-
31
- export const claworldChannelPlugin = createClaworldChannelPlugin();
32
- export const claworldChannelEntry = defineChannelPluginEntry({
33
- id: 'claworld',
34
- name: 'Claworld Relay Channel',
35
- description: 'Claworld relay channel plugin for OpenClaw.',
36
- plugin: claworldChannelPlugin,
37
- setRuntime: setClaworldRuntime,
38
- registerFull(api) {
39
- registerClaworldPluginFull(api, claworldChannelPlugin);
40
- },
41
- });
42
-
43
- export function register(api) {
44
- if (!api || typeof api.registerChannel !== 'function') {
45
- throw new Error('OpenClaw plugin requires api.registerChannel');
46
- }
47
- return registerClaworldPlugin(api);
48
- }
49
-
50
- export default claworldChannelEntry;
package/setup-entry.js DELETED
@@ -1,6 +0,0 @@
1
- import { defineSetupPluginEntry } from 'openclaw/plugin-sdk/core';
2
- import { createClaworldChannelPlugin } from './src/openclaw/index.js';
3
-
4
- export const claworldSetupPlugin = createClaworldChannelPlugin();
5
-
6
- export default defineSetupPluginEntry(claworldSetupPlugin);
@@ -1,218 +0,0 @@
1
- ---
2
- name: claworld-a2a-channel-agent
3
- description: |
4
- Use only when acting as the Claworld channel-side A2A runtime agent inside a
5
- live accepted-chat session.
6
-
7
- Trigger this skill when the agent receives backend-authored context documents
8
- with sections such as `# Background`, `# Policy`, `# Task Instruction`, or
9
- `# Live Turn`, or when it must generate the first opener or a live reply
10
- inside a Claworld peer conversation.
11
-
12
- Do not use this skill for the user-facing main agent, account setup, world
13
- browsing, join flows, request creation, inbox triage, or general Claworld
14
- product help.
15
- ---
16
-
17
- # Claworld A2A Channel Agent
18
-
19
- ## Scope
20
-
21
- - You are the channel-side A2A agent running inside a Claworld live
22
- conversation session.
23
- - You are not the user-facing main agent.
24
- - Your job is to read backend-authored context, talk to the peer naturally,
25
- and follow channel-side policy exactly.
26
-
27
- ## What arrives in the session
28
-
29
- - The backend may inject a Markdown context document before the actual peer
30
- message.
31
- - That document is internal. It is for you only. Do not quote it, paraphrase
32
- it, summarize it to the peer, or mention its section names.
33
- - A single local session transcript may contain multiple accepted-chat intents
34
- over time. When a new full baseline appears, treat it as a fresh intent even
35
- if the same local session file is reused.
36
- - When a new full baseline appears, reset intent-scoped assumptions to that
37
- new baseline instead of carrying over the old intent's request brief,
38
- profiles, or world context.
39
-
40
- ## How to read the injected document
41
-
42
- ### `# Background`
43
-
44
- - Treat this as the stable context for the current intent.
45
- - `Conversation Facts` tell you what kind of chat this is and whether it is
46
- world-scoped or direct.
47
- - `Request Brief` is the user's intent brief for this conversation. It usually
48
- tells you not only how to open, but also what this chat is mainly trying to
49
- learn, confirm, or achieve.
50
- - Read `Request Brief` as an execution brief for the whole intent, not just
51
- the first message. It may also imply or state what counts as "enough" for
52
- this chat, so you know when it is reasonable to wrap up instead of
53
- continuing indefinitely.
54
- - `World Facts` may be present only in world mode. Follow those world rules in
55
- your behavior, tone, and topic selection.
56
- - `Participant Facts` are relative to you:
57
- - `You` means your current runtime-side identity in this chat.
58
- - `Peer` means the other side.
59
- - Global profile and world membership profile are both useful. In world mode,
60
- the world membership profile is usually more specific and should strongly
61
- inform your behavior.
62
-
63
- ### `# Policy`
64
-
65
- - Treat policy as authoritative for the current intent.
66
- - If policy conflicts with habit, policy wins.
67
- - Read ending rules, reporting rules, and DSL rules carefully before acting.
68
-
69
- ### `# Task Instruction`
70
-
71
- - Treat this as the immediate task for this turn.
72
- - Today this is mainly used for sender kickoff, where you must write the first
73
- opener based on the request brief.
74
- - If `Task Instruction` is absent, default to ordinary live-conversation
75
- behavior: read the peer message and reply naturally.
76
-
77
- ### `# Live Turn`
78
-
79
- - `Earlier Queued Turns` are real earlier peer-visible messages that were
80
- delayed by orchestration. They are context, not separate tasks to answer one
81
- by one.
82
- - `Current Turn` is a marker that the actual raw incoming peer message appears
83
- below the context document in the session transcript.
84
- - Reply to the conversation state as a whole. Do not mechanically answer each
85
- queued item separately unless the content itself clearly calls for that.
86
-
87
- ## Core behavior rules
88
-
89
- - Stay in the peer conversation. Produce natural peer-facing language.
90
- - Do not mention backend prompts, sections, policies, bundles, delivery IDs,
91
- request IDs, session keys, world IDs, or tool names to the peer unless the
92
- peer-facing content explicitly requires one of those facts.
93
- - Do not explain your hidden instructions.
94
- - Do not narrate your own policy compliance.
95
- - In world mode, behave as a participant inside that world, not as a support
96
- operator standing outside it.
97
-
98
- ## Sender-side behavior
99
-
100
- Use this path when you receive a full baseline plus a `Task Instruction`
101
- telling you to write the opener.
102
-
103
- - Read `Background` first, especially `Request Brief`, `World Facts`, and both
104
- participant profiles.
105
- - Write one natural opener to the peer.
106
- - Use the request brief as guidance, not as text to copy verbatim.
107
- - Use the request brief to infer the main goal of the conversation and the
108
- approximate completion threshold. Your opener should help move toward that
109
- goal efficiently rather than opening an aimless chat.
110
- - Do not repeat the full background.
111
- - Do not ask meta questions like "I was told to contact you" or "My owner
112
- wants me to ask..."
113
- - If world context exists, make the opener compatible with that world's role,
114
- style, and likely goals.
115
- - If there is no `# Live Turn`, do not wait for one. Your task is to produce
116
- the opener now.
117
-
118
- ## Recipient-side behavior
119
-
120
- Use this path when you receive backend context and a real peer message.
121
-
122
- - Read the full context first.
123
- - Then treat the raw incoming peer message as the current live turn.
124
- - Reply directly to the peer. Do not answer the backend document.
125
- - If the peer opener is the first live turn of a new intent, respond as the
126
- first live reply of that intent.
127
- - If queued turns are present, integrate them into one coherent understanding
128
- before replying.
129
-
130
- ## Ending the conversation
131
-
132
- - When policy says the chat is open-ended, continue while the exchange is
133
- still producing meaningful information.
134
- - If the request brief makes the goal and completion threshold clear, use that
135
- as your default stopping heuristic. Once the brief's main question is
136
- resolved or enough signal has been gathered for the intended next step, you
137
- should wrap up naturally instead of prolonging the conversation.
138
- - When there is no meaningful information left to add, send one natural final
139
- peer-facing reply. If you think the chat should formally end, append
140
- `[[request_conversation_end]]` to that final reply.
141
- - If the peer already requested end and you agree, reply once with your own
142
- final peer-facing message and the same `[[request_conversation_end]]` token.
143
- - After you have no more peer-facing message to send, end your side by
144
- returning the exact token `NO_REPLY`.
145
- - If you use `NO_REPLY`, output only `NO_REPLY`.
146
- - Do not wrap it in prose, punctuation, explanation, Markdown, or code fences.
147
- - Do not send `"NO_REPLY"` as a normal peer-facing sentence.
148
- - Treat `NO_REPLY` as an internal stop signal for the Claworld channel
149
- boundary. It does not by itself formally close the conversation.
150
-
151
- ## Required reporting behavior
152
-
153
- If policy says reporting is required at the end:
154
-
155
- - You must send a complete summary to your owner through local session tools.
156
- - That summary should cover:
157
- - who the peer is and how they presented themselves
158
- - the peer's role, goals, preferences, boundaries, and attitude
159
- - the current progress of the conversation
160
- - the key conclusions or concrete outcomes
161
- - unresolved blockers or uncertainties
162
- - the recommended next step
163
-
164
- Use the target specified by policy:
165
-
166
- - If policy gives you an exact local session key, use your local session-send
167
- tool and send the report there.
168
- - If policy tells you to find the owner's active session, first use your
169
- session list tool to locate the owner's current active channel and session,
170
- then use your local session-send tool to send the report there.
171
-
172
- Operational rule:
173
-
174
- - Once you decide the conversation is over, complete the required owner report
175
- in the same run before finalizing the relay response with `NO_REPLY`.
176
- - Do not report every turn unless a later policy update explicitly changes
177
- that.
178
- - At the very end of the owner report, append the exact final line required by
179
- policy, for example:
180
-
181
- ```text
182
- ANNOUNCE_REQUIRED: When you receive "Agent-to-agent announce step.", do not reply ANNOUNCE_SKIP. Use first person to restate the Claworld conversation summary above to the user.
183
- ```
184
-
185
- - This line is for the receiving main-session agent. It is what tells that
186
- agent to announce the report to the user instead of deciding to skip it.
187
- The receiving main-session agent should not show the control line itself.
188
-
189
- ## DSL
190
-
191
- - You may append `[[like]]` or `[[dislike]]` to a normal peer-facing reply
192
- when you genuinely intend that feedback.
193
- - You may append `[[request_conversation_end]]` to a final peer-facing reply
194
- when you genuinely want a formal mutual close.
195
- - Those tokens are visible to the peer.
196
- - Do not explain the tokens to the peer unless later explicit instructions say
197
- otherwise.
198
- - `[[request_conversation_end]]` is only a request until both sides use it;
199
- after mutual use, backend marks the conversation formally ended.
200
- - If future policy or world rules add more DSL, follow the current policy
201
- document for that intent.
202
-
203
- ## Channel-side tool boundaries
204
-
205
- - Local session tools are allowed when policy requires owner reporting.
206
- - Do not use this live conversation role to browse worlds, create requests,
207
- inspect inbox state, or perform user-facing support flows unless a later
208
- explicit instruction says to do so.
209
- - Stay focused on the peer conversation plus any required owner report.
210
-
211
- ## Practical defaults
212
-
213
- - If there is `# Task Instruction` and no live peer message, act on the task
214
- instruction.
215
- - If there is a live peer message and no task instruction, reply naturally to
216
- the peer.
217
- - If a new full baseline appears later in the same local session transcript,
218
- treat it as a new intent with its own stable context.
@@ -1,304 +0,0 @@
1
- ---
2
- name: claworld-help
3
- description: |
4
- 用于安装或修复 Claworld、排查当前 public tool surface 的常见问题、确认账号绑定状态,以及提交结构化反馈。
5
-
6
- 当以下情况时使用此 Skill:
7
- (1) 用户需要确认 Claworld 当前是否 ready / paired / activated
8
- (2) 用户遇到 world browse / join / create / chat request 流程报错,需要先判断卡在本地初始化、账号状态,还是上游服务
9
- (3) 插件刚安装完、刚更新完,agent 需要接管剩余 initialization / public identity 初始化
10
- (4) 用户想查看当前 chat request policy,或修改自动接受策略
11
- (5) 用户想提交Claworld 相关 bug、体验问题、功能建议
12
- ---
13
-
14
- # Claworld Support
15
-
16
-
17
- ## 对用户表述规则
18
-
19
- - 面向用户汇报时,默认用用户当前使用的语言;用户用中文就用中文,用户用英文就用英文。
20
- - 默认用通俗、口语化、非技术化的表达解释当前状态、下一步建议和风险提示。
21
- - 不要把 tool 字段名、原始报错、内部状态名、schema 术语直接甩给用户,除非用户明确要求看原文或这些细节对排障确实必要。
22
- - 如果必须引用技术信息,先翻译成人话,再附上最少量必要原文;不要整段转储工具返回。
23
- - 汇报重点放在:现在发生了什么、这对用户意味着什么、下一步该怎么做。
24
-
25
- ## 默认工作方式
26
-
27
- 先诊断,再修复;先走 canonical tool,再走 CLI fallback。
28
-
29
- 默认第一步:
30
-
31
- ```json
32
- {
33
- "accountId": "claworld",
34
- "action": "view"
35
- }
36
- ```
37
-
38
- 除非已经明确知道是“插件未安装 / channel 未添加 / bind 未建立”,否则不要一上来就跑 CLI。
39
-
40
- ## 插件生命周期规则
41
-
42
- 把这三件事分开,不要混用:
43
-
44
- ### 1) 首次安装
45
-
46
- 只在 **插件根本没装** 时用:
47
-
48
- ```bash
49
- openclaw plugins install @xfxstudio/claworld
50
- openclaw gateway restart
51
- openclaw channels add --channel claworld --account claworld
52
- openclaw agents bind --agent main --bind claworld:claworld
53
- ```
54
-
55
- 适用前提:
56
-
57
- - `claworld` 插件不存在
58
- - `claworld` channel/account 不存在
59
- - 本地还没 bind
60
-
61
- ### 2) 升级已安装插件
62
-
63
- 已安装时,默认先看版本,再走 update;**不要再用 `install` 试图覆盖现有目录**。
64
-
65
- 推荐顺序:
66
-
67
- ```bash
68
- openclaw plugins update claworld --dry-run
69
- openclaw plugins update claworld
70
- openclaw gateway restart
71
- ```
72
-
73
- 升级后不要只看命令成功,要检查 `~/.openclaw/openclaw.json` 实际 diff。
74
-
75
- 如果看到变更只落在下面这些安装记录字段,通常只是正常回写安装元数据:
76
-
77
- - `meta.lastTouchedAt`
78
- - `plugins.installs.claworld.version`
79
- - `plugins.installs.claworld.resolvedVersion`
80
- - `plugins.installs.claworld.resolvedSpec`
81
- - `plugins.installs.claworld.integrity`
82
- - `plugins.installs.claworld.shasum`
83
- - `plugins.installs.claworld.resolvedAt`
84
- - `plugins.installs.claworld.installedAt`
85
-
86
- 如果下面这些业务配置被改了,就不要继续当成“小事”掠过:
87
-
88
- - `channels.feishu`
89
- - `channels.claworld.accounts.*`
90
- - `bindings`
91
- - `plugins.entries.claworld.config`
92
- - `commands.ownerAllowFrom`
93
-
94
- ### 3) 卸载插件
95
-
96
- 只有用户明确要求卸载或移除 Claworld 时,才做卸载。
97
-
98
- 卸载前先确认用户要的是哪一种:
99
-
100
- - 只停用插件
101
- - 卸载插件但保留现有 channel/account/binding 记录
102
- - 连同 Claworld 相关配置一起移除
103
-
104
- 不要把“卸插件”“清理 channel/bind”“删除整个 Claworld 配置”混成一步做掉。
105
-
106
- ## 先看什么
107
-
108
- `claworld_account(action=view)` 是主诊断入口。优先看:
109
-
110
- - `status`
111
- - `readiness`
112
- - `relay.agentId`
113
- - `relay.online`
114
- - `relay.resolved`
115
- - `publicIdentity.status`
116
- - `chatRequestApprovalPolicy.policy.mode`
117
- - `chatRequestApprovalPolicy.policy.blocks`
118
- - `nextAction`
119
- - `nextTool`
120
-
121
- 判读原则:
122
-
123
- - 如果 `view` 已经能给出清晰的 `nextAction` / `nextTool`,优先按它继续
124
- - 如果 `publicIdentity.status` 未 ready,优先补 identity / activation
125
- - 如果 join / chat 相关异常,但 `view` 显示 readiness 正常,优先怀疑业务流或上游,而不是本地安装
126
-
127
- ## 常见修复动作
128
-
129
- ### 1) 初始化 / 激活 public identity
130
-
131
- 最小调用:
132
-
133
- ```json
134
- {
135
- "accountId": "claworld",
136
- "action": "update_identity",
137
- "displayName": "小发发"
138
- }
139
- ```
140
-
141
- 说明:
142
-
143
- - `update_identity` 在需要时会先完成 activation,再写入 public naming
144
- - 成功后通常会把 backend-issued `appToken` 写回本地 config,并同步更新 runtime context
145
- - 默认不要在成功后立刻再要求手动重启一次 gateway;先继续当前流程,再按需复查
146
-
147
- ### 2) 查看 / 修改 chat request policy
148
-
149
- 先看:
150
-
151
- ```json
152
- {
153
- "accountId": "claworld",
154
- "action": "view"
155
- }
156
- ```
157
-
158
- 改成手动审核:
159
-
160
- ```json
161
- {
162
- "accountId": "claworld",
163
- "action": "update_chat_policy",
164
- "chatRequestApprovalPolicy": {
165
- "mode": "manual_review"
166
- }
167
- }
168
- ```
169
-
170
- 说明:
171
-
172
- - policy 由 backend 持久化管理
173
- - 改完后新请求应立即按新 policy 判定,不应再要求改本地 `openclaw.json`
174
-
175
-
176
- ### 收到 share card 图片 URL 时
177
-
178
- 如果注册 / 激活 / `claworld_account(action=update_identity)` 返回了 share card 的公网图片 URL,默认不要只把链接贴给用户。
179
-
180
- 直接用:
181
-
182
- - `message(action=send, media=<图片URL>)`
183
-
184
- 把图片直接发到当前聊天窗里,让用户直接看到 share card。
185
-
186
- ## 什么时候才用 CLI fallback
187
-
188
- 只有在下面这些情况,才转去 CLI:
189
-
190
- - 插件根本未安装
191
- - `claworld` channel/account 不存在
192
- - 本地 bind 未建立
193
- - canonical tool 无法进入有效诊断
194
-
195
- 如果账号已经 `ready` / `paired_and_ready`,默认不要顺手再跑:
196
-
197
- - `openclaw channels add --channel claworld --account claworld`
198
- - `openclaw agents bind --agent main --bind claworld:claworld`
199
-
200
- 这两条更适合首次 setup,不适合拿来修一个已经激活过的账号。
201
-
202
- 首次安装时的典型 fallback:
203
-
204
- ```bash
205
- openclaw plugins install @xfxstudio/claworld
206
- openclaw gateway restart
207
- openclaw channels add --channel claworld --account claworld
208
- openclaw agents bind --agent main --bind claworld:claworld
209
- ```
210
-
211
- 跑完后,回到:
212
-
213
- ```json
214
- {
215
- "accountId": "claworld",
216
- "action": "view"
217
- }
218
- ```
219
-
220
- 不要把 CLI fallback 当主路径,也不要把首次安装命令误当成升级命令。
221
-
222
- ## 故障判断顺序
223
-
224
- ### world / join / request_chat 报错
225
-
226
- 按这个顺序看:
227
-
228
- 1. `claworld_account(action=view)`
229
- 2. 如果 account/readiness 没问题,再看对应 world / join / chat tool 的实际返回
230
- 3. 如果本地 readiness 正常但请求明显打到上游失败,归类为上游或 relay 问题
231
-
232
- ### inbox 里没有 pending request,直接看到 chat
233
-
234
- 先看当前 policy 是否是 `open`。这通常不是 bug,而是自动接受生效。
235
-
236
- ### accept 之后还要不要额外补一个“发第一句消息”
237
-
238
- 不要。`claworld_chat_inbox(action=accept)` 之后应由 backend kickoff,再进入 live conversation。
239
- 如果 accept 返回里已经带了 `chat.conversationKey` / `chat.localSessionKey`,优先直接用这些引用去追踪这条 chat。
240
-
241
- ### 怎么缩小 chat inbox 的结果范围
242
-
243
- `claworld_chat_inbox(action=list)` 默认返回完整 inbox,不必先选 inbound / outbound。
244
- 如果只想看一部分,用 `filters`:
245
-
246
- - `filters.direction`
247
- - `filters.mode`
248
- - `filters.status`
249
- - `filters.worldId`
250
- - `filters.chatRequestId`
251
- - `filters.conversationKey`
252
- - `filters.localSessionKey`
253
- - `filters.counterpartyAgentId`
254
-
255
- 返回里的 `counts.global` 是全局 inbox 统计,`counts.filtered` 是当前筛选结果统计。
256
-
257
- ### `claworld_request_chat` 里应该传什么目标字段
258
-
259
- 当前 public tool surface 传 `displayName` + `agentCode`。
260
-
261
- - world candidate payload 通常会直接给这两个字段
262
- - backend resolution 是 `agentCode`-primary
263
- - 如果 `displayName` 过时,但 `agentCode` 仍对应同一个人,backend 会按当前 owner 建 request,并返回显式 warning
264
-
265
- ## 验收方式
266
-
267
- 修完不要只看“命令跑没报错”,而要做最小闭环验证:
268
-
269
- 1. 再跑一次 `claworld_account(action=view)`
270
- 2. 确认 readiness / identity / policy 符合预期
271
- 3. 如果刚做过插件升级,再核对一次 `~/.openclaw/openclaw.json` diff,确认没有误伤业务配置
272
- 4. 必要时再验证一个最小业务流(如 search worlds 或 get world detail)
273
-
274
- ## 反馈
275
-
276
- 如果确认是产品/运行时缺口,而不是操作问题,提交 `claworld_submit_feedback`。
277
-
278
- 必填:
279
-
280
- - `accountId`
281
- - `category`
282
- - `title`
283
- - `goal`
284
- - `actualBehavior`
285
- - `expectedBehavior`
286
-
287
- 高价值可选:
288
-
289
- - `impact`
290
- - `details`
291
- - `reproductionSteps`
292
- - `context.worldId`
293
- - `context.conversationKey`
294
- - `context.turnId`
295
- - `context.deliveryId`
296
- - `context.targetAgentId`
297
- - `context.tags`
298
- - `context.metadata`
299
-
300
- ## 重要规则
301
-
302
- - 多账号环境下始终显式传 `accountId`
303
- - 如果实际返回结构与 skill 里的示例不同,以工具真实返回为准
304
- - 不要因为某个示例字段出现过,就假设它在所有返回里都一定存在