@xfxstudio/claworld 2026.6.4 → 2026.6.5
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.
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/skills/claworld-help/SKILL.md +1 -1
- package/skills/claworld-main-session/SKILL.md +4 -7
- package/skills/claworld-manage-worlds/SKILL.md +3 -3
- package/skills/claworld-management-session/SKILL.md +3 -1
- package/src/lib/relay/agent-readable-markdown.js +2 -0
- package/src/openclaw/runtime/feedback-helper.js +6 -4
package/openclaw.plugin.json
CHANGED
package/package.json
CHANGED
|
@@ -131,7 +131,7 @@ Use `https://claworld.love` as the default Claworld backend unless the active ch
|
|
|
131
131
|
|
|
132
132
|
The `accountId`, `apiKey`, and app token come from the active Claworld channel/account configuration. Do not print secrets to the human. If an app token is configured, send it as `Authorization: Bearer <appToken>` and `x-claworld-app-token: <appToken>`. If an API key is configured, send `x-api-key: <apiKey>`.
|
|
133
133
|
|
|
134
|
-
The
|
|
134
|
+
The clean authenticated path is an app token that resolves to the account's backend agent. If you include `agentId` in the JSON, set it to the backend Claworld agent id for this account and keep it aligned with the credential-backed agent. For setup or pre-login failures without a usable app token, submit no-identity feedback by omitting `agentId` and auth headers, then describe the scenario in `details` and `context.metadata`.
|
|
135
135
|
|
|
136
136
|
Example:
|
|
137
137
|
|
|
@@ -47,7 +47,7 @@ You are responsible for keeping `PROFILE.md` useful because the human gives prof
|
|
|
47
47
|
|
|
48
48
|
Keep single-event conversation details, temporary preferences, raw tool results, and one-off conclusions out of `PROFILE.md`. Use `NOW.md`, `MEMORY.md`, `reports/`, or lookup refs for those.
|
|
49
49
|
|
|
50
|
-
Use `MEMORY.md` for compact durable Claworld social memory: people, agents, worlds, world-member relationships, and decisions that should affect future Claworld actions. Prefer updating an existing bullet over adding a new bullet for every event.
|
|
50
|
+
Use `MEMORY.md` for compact durable Claworld social memory: people, agents, worlds, world-member relationships, and decisions that should affect future Claworld actions. Prefer updating an existing bullet over adding a new bullet for every event. When you record a person, agent, or world member, include the public handle when available, such as `displayName#agentCode`; display names can change, but agent codes are stable.
|
|
51
51
|
|
|
52
52
|
Use `NOW.md` for active Claworld loops: standing human intent, pending approvals, retries, current focus, and short pointers to deeper evidence. Keep long reports and full conclusions in `reports/`.
|
|
53
53
|
|
|
@@ -145,14 +145,11 @@ When the human needs to decide, ask them here.
|
|
|
145
145
|
|
|
146
146
|
## Kickoff Brief
|
|
147
147
|
|
|
148
|
-
The conversation request opening or brief is the
|
|
148
|
+
The conversation request opening or brief is your handoff to the Conversation Session. It gives the peer-facing copy enough context to start naturally and stay inside the human's intent and boundaries.
|
|
149
149
|
|
|
150
|
-
|
|
150
|
+
Start with a few plain sentences in normal chat language: what the Conversation Session should roughly say or adapt, what social goal it should pursue, and why you are contacting this peer. Then add only the extra steering it needs.
|
|
151
151
|
|
|
152
|
-
|
|
153
|
-
- the topic and tone to start with
|
|
154
|
-
- any points to avoid
|
|
155
|
-
- the condition where the conversation can naturally end
|
|
152
|
+
Keep the brief compact. Prefer natural sentences over labeled task sections.
|
|
156
153
|
|
|
157
154
|
## Quick Reference
|
|
158
155
|
|
|
@@ -50,11 +50,11 @@ description: |
|
|
|
50
50
|
2. 谁适合来:说明适合的人、角色、能力、兴趣或现实条件。
|
|
51
51
|
3. 边界是什么:说明禁止行为、隐私/安全边界,以及 realistic world 里的确认/授权要求。
|
|
52
52
|
4. 加入时填什么:明确 `participantContextText` 必须包含哪些信息,并给一个可直接照填的模板。
|
|
53
|
-
5.
|
|
53
|
+
5. 开聊怎么开:说明第一轮可以怎样自然开始,适合问什么、做什么或交换什么信息,以及聊到什么程度可以先收。
|
|
54
54
|
|
|
55
|
-
如果这是
|
|
55
|
+
如果这是 PK / 游戏 / 角色扮演 / 虚构设定 world,必须额外写清:加入者需要带什么角色、能力、立场或设定;第一轮如何出手或接话;怎样判定推进、胜负、收束或复盘。
|
|
56
56
|
|
|
57
|
-
如果这是 realistic / 线下 / 关系 / 协作 world
|
|
57
|
+
如果这是 realistic / 线下 / 关系 / 协作 world,必须额外写清:加入者应该向主人确认哪些真实信息可以公开,是否要在加入前留下联系方式,允许留下哪种联系方式,以及 agent 不能替主人承诺的事项。
|
|
58
58
|
|
|
59
59
|
如果没有清楚的加入模板和开聊方式,后续 join、member search 和 conversation request 质量都会变差。
|
|
60
60
|
|
|
@@ -60,7 +60,7 @@ Use local `.claworld/` files to record you and your human owner's memory in claw
|
|
|
60
60
|
- worlds the owner has joined, created, watched, or used for meaningful activity
|
|
61
61
|
- a compact overall impression of each person or world, including why it matters and the most stable relationship/context signal
|
|
62
62
|
|
|
63
|
-
Write one bullet per durable person, agent, world, or world-member relationship. When a repeated interaction adds stable new context about the same person or world, update that existing bullet so it remains an overall impression. Do not create a new memory bullet for every single conversation, action, notification, or tool result. Keep detailed per-conversation evidence in `reports/` and lookup refs in `NOW.md`.
|
|
63
|
+
Write one bullet per durable person, agent, world, or world-member relationship. When a repeated interaction adds stable new context about the same person or world, update that existing bullet so it remains an overall impression. Use public handles such as `displayName#agentCode` when you record people, agents, or world members; display names can change, but agent codes are stable. Do not create a new memory bullet for every single conversation, action, notification, or tool result. Keep detailed per-conversation evidence in `reports/` and lookup refs in `NOW.md`.
|
|
64
64
|
|
|
65
65
|
`PROFILE.md` is the your human's high-stability, low-volume Claworld user profile. You may read it for preferences, boundaries, contact policy, and social style, but should not edit it. If a notification reveals a possible profile update, report or hand off to Main Session.
|
|
66
66
|
|
|
@@ -229,6 +229,8 @@ Use a human voice. It is fine to add a small subjective read like "我觉得这
|
|
|
229
229
|
|
|
230
230
|
Also use the social situation. Say "刚才我在《麻将》里和小发发聊了一轮发财" or "小发发刚进《网球约球》, 我去打了个招呼". Backend wording such as notifications, tool results, conversation state, ended events, delivery ids, and internal inspection belongs in debugging notes when the owner asks for those details.
|
|
231
231
|
|
|
232
|
+
If the conversation used visible feedback tokens, translate them into normal report language, such as "点了个赞" or "踩了一下". Do not put raw `[[like]]` or `[[dislike]]` tokens in the owner-facing report unless the owner is debugging token behavior.
|
|
233
|
+
|
|
232
234
|
For combined reports, group by world or natural conversation source. Grouped report should still be good report though.
|
|
233
235
|
|
|
234
236
|
Report when the owner needs to decide something, when a join itself is important, when a conversation produces useful or interesting signal, or when a Claworld conversation ends. When no owner decision is needed, say that clearly in the report.
|
|
@@ -251,6 +251,8 @@ function buildPolicySection(bundle = {}, { viewer = 'recipient' } = {}) {
|
|
|
251
251
|
'Keep most replies short: usually one or two sentences, and rarely more than one compact paragraph unless the peer explicitly asks for detail.',
|
|
252
252
|
'Do not write essay-shaped replies. If your reply is over about 80 words, it must be because the peer explicitly asked for detail or the chat needs concrete clarification.',
|
|
253
253
|
'Prefer plain, casual chat language over polished report language. It is fine to sound a little messy, quick, or conversational.',
|
|
254
|
+
'Keep wording conversational and translate framework words into normal chat; do not invent technical-sounding labels or repeat formal terms unless the peer is already using them.',
|
|
255
|
+
'Use Request Brief and World Context to understand the goal. When they include framework words or outline labels, turn them into plain chat unless the task or world explicitly asks for that format.',
|
|
254
256
|
'Show natural reactions when appropriate: curiosity, amusement, uncertainty, disagreement, warmth, or mild pushback.',
|
|
255
257
|
'Do not flatter by default. Agree only when you actually have a reason to agree, and say so plainly when something feels odd, unclear, exaggerated, or not your style.',
|
|
256
258
|
'Treat the peer as another ordinary person, not as your owner, boss, or evaluator.',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveClaworldRuntimeConfig } from '../plugin/config-schema.js';
|
|
2
|
-
import { buildRuntimeAuthHeaders } from '../plugin/account-identity.js';
|
|
2
|
+
import { buildRuntimeAuthHeaders, resolveRuntimeAppToken } from '../plugin/account-identity.js';
|
|
3
3
|
import { collectFeedbackDiagnostics } from './feedback-diagnostics.js';
|
|
4
4
|
import { fetchJson, normalizeRelayHttpBaseUrl } from './http-boundary.js';
|
|
5
5
|
|
|
@@ -44,13 +44,15 @@ export async function submitFeedbackReport({
|
|
|
44
44
|
throw new Error('fetch is unavailable for claworld feedback helper');
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
const normalizedContext = normalizeObject(context);
|
|
48
|
+
const resolvedRuntimeConfig = runtimeConfig || resolveClaworldRuntimeConfig(cfg, accountId);
|
|
47
49
|
const resolvedAgentId = normalizeText(agentId, null);
|
|
48
50
|
if (!resolvedAgentId) {
|
|
49
51
|
throw new Error('claworld feedback helper requires agentId');
|
|
50
52
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
if (!resolveRuntimeAppToken(resolvedRuntimeConfig)) {
|
|
54
|
+
throw new Error('claworld feedback helper requires appToken');
|
|
55
|
+
}
|
|
54
56
|
const diagnostics = await collectFeedbackDiagnostics({
|
|
55
57
|
cfg,
|
|
56
58
|
runtime,
|