Help action links
Voice: Clickable jumps in help-assistant answers, described in language users understand; the implementation protocol is mindlink://action/….
Source docs/en/site/mech-action-links.md
Voice: Clickable jumps in help-assistant answers, described in language users understand; the implementation protocol is mindlink://action/….
When to use: Only when the user asks how / in what way to open a page, use an action link as an entry. When the user says “open the workspace collaboration page” as a do-it request, the main site should switch to that page and keep the floating help conversation — do not only give “tap here”. Implementation: helpNavigation.ts and tryHelpNavigationFromChat.
Goal
Insert “clickable action links” in help documents so that while reading an answer the user can jump in one tap to the matching screen (for example “Create a workspace”).
Link protocol
Help documents use a custom protocol.
The main-site allowlist is client/web/src/helpActions.ts (the embed widget’s same-origin list is sdk/host-embed/widget/src/mindlinkAction.ts):
mindlink://action/workspace.createmindlink://action/module.workspace(optionalsection=; support queuesection=support, then optionalcs=requests|local|group|inbound; capability packs / data connections may usepack/data/conn/http/script; legacysection=teamsgoes to agent teams)mindlink://action/module.teams(agent teams)mindlink://action/module.chat(optionaluser_agent_id/session_idto locate a conversation)mindlink://action/chat.new-sessionmindlink://action/module.skills(optionalskill/idto open a given skill)mindlink://action/module.agents(open the agents marketplace subsection)mindlink://action/module.scheduled(scheduled tasks)mindlink://action/module.me(account and preferences)mindlink://action/module.apps(optionalapp=to open a workspace app;plugin=hropens a platform plugin, and may carrytab=)mindlink://action/module.workflows(optionaldef=/instance=deep link)mindlink://action/module.im(contacts; main site switches to Messages)
Syntax example:
`创建工作区`
Execution flow
- Help Markdown contains
mindlink://action/*links. - Front-end
HelpOnboardingPanelintercepts that protocol while rendering Markdown. - The link fires
onHelpAction(action, params). AppHomedispatches by allowlist (see the table above): workspace collaboration, create workspace, Messages / new conversation, Skills center, agents marketplace, scheduled tasks, account, app desktop, workflows, contacts.
The current implementation extracts the action allowlist into client/web/src/helpActions.ts, dispatched by executeHelpAction().
Safety
- Do not run arbitrary scripts; do not use
javascript:. - Only allowlisted actions; unknown actions only say “not supported yet”.
- External
http/httpslinks still open in a new window as usual.
Embed (host page)
The protocol is the same (mindlink://action/…), but the executor differs:
| Scene | Intercept and dispatch |
|---|---|
| Cadau main-site help | HelpOnboardingPanel → helpActions.ts → main-site module routing |
| Website embed widget | User click or auto_execute_navigation → widget.on("action") → host-page allowlist (e.g. executeHostAction) |
- Main-site actions (
module.workspace,chat.new-session, and similar) do nothing in embed unless the host maps them. - Embed must keep an action registry and write it into agent knowledge; see ../../sdk/host-embed/宿主知识文档撰写要求.md, ../../sdk/host-embed/网站集成说明.md §5.
- HR sample allowlist:
examples/hr-multi-tenant/web/src/mindlinkHostActions.ts.
Extension suggestions
- Basic local-queue analytics already exist:
trackHelpActionEvent()
- stage=clicked: the user clicked an action link - stage=executed: action result (ok/reason) - Storage key: mindlink_help_action_events (keep at most 200)
- The local queue can later be reported to the backend on a timer and fed into MemoryForge analysis.