Refine WebUI commands and data skills

This commit is contained in:
武阳
2026-05-06 19:35:48 +08:00
parent 93a0eb74d7
commit a0da3c2423
13 changed files with 731 additions and 219 deletions
+112 -1
View File
@@ -41,6 +41,110 @@ from src.token_budget import calculate_token_budget
STATIC_DIR = Path(__file__).resolve().parents[2] / 'frontend' / 'legacy-static'
# WebUI 的快速入口只展示可以通过对话输入框安全执行的 slash command。
# 这些命令仍然保留在终端 `/` 列表里,但不适合作为 WebUI 快捷项。
WEBUI_HIDDEN_SLASH_COMMANDS = {
'exit',
'quit',
'feedback',
'bug',
'upgrade',
'stickers',
'chrome',
'install-github-app',
'install-slack-app',
'privacy-settings',
'mobile',
'ios',
'android',
'desktop',
'app',
'vim',
'theme',
}
WEBUI_SLASH_COMMAND_DESCRIPTIONS_ZH = {
'help': '查看内置 slash command 帮助。',
'context': '查看当前会话上下文用量估算。',
'context-raw': '查看原始环境、用户上下文和系统上下文快照。',
'token-budget': '查看当前 token 预算窗口、保留量和提示词长度限制。',
'mcp': '查看本地 MCP 清单和资源数量。',
'search': '查看搜索运行状态、切换搜索提供方,或执行一次网页搜索。',
'remote': '查看远程运行状态,或激活远程目标/配置。',
'worktree': '查看受管 git worktree 状态,或进入/退出当前 worktree 会话。',
'account': '查看账号运行状态或已配置账号档案。',
'ask': '查看 ask-user 运行状态或历史记录。',
'login': '激活本地账号档案或临时身份。',
'logout': '清除当前本地账号会话。',
'config': '查看配置状态、有效配置、配置来源或某个配置值。',
'lsp': '查看 LSP 状态,或执行符号、定义、引用、悬停、调用层级和诊断查询。',
'remotes': '列出本地远程配置。',
'ssh': '激活 SSH 远程目标/配置。',
'teleport': '激活 Teleport 远程目标/配置。',
'direct-connect': '激活直连远程目标/配置。',
'deep-link': '激活 deep-link 远程目标/配置。',
'disconnect': '断开当前远程运行目标。',
'resources': '列出本地 MCP 资源,可按关键词过滤。',
'resource': '按 URI 渲染一个本地 MCP 资源。',
'tasks': '查看本地运行时任务列表,可按状态过滤。',
'workflows': '列出从工作流清单发现的本地 workflows。',
'workflow': '查看或运行一个本地 workflow。',
'triggers': '列出从清单发现的本地远程触发器。',
'trigger': '查看或运行一个远程触发器。',
'teams': '列出本地协作团队配置。',
'team': '查看一个本地协作团队。',
'messages': '查看所有团队或某个团队的协作消息。',
'task-next': '查看本地任务列表中的下一个可执行任务。',
'plan': '查看当前本地运行计划。',
'task': '按 id 查看一个本地任务。',
'prompt': '渲染当前生效的系统提示词。',
'permissions': '查看当前工具权限模式。',
'hooks': '查看已发现的本地 hook 和 policy 清单。',
'trust': '查看 workspace 信任模式、受管设置和安全环境变量。',
'model': '查看或修改当前 Agent 实例使用的模型。',
'tools': '列出已注册工具,以及当前权限是否允许调用。',
'agents': '列出本地 Agent 配置,或查看某个 Agent 定义。',
'memory': '查看当前加载的 CLAUDE.md 记忆包和已发现文件。',
'status': '查看当前运行时和会话状态摘要。',
'clear': '清理当前进程中的临时运行状态。',
'compact': '总结并压缩当前对话,释放上下文空间。',
'cost': '查看当前会话的总耗时和费用估算。',
'diff': '查看当前工作区未提交改动。',
'files': '列出当前会话上下文中已加载的文件。',
'copy': '把上一条助手回复写入临时文件。',
'export': '导出当前对话为文本文件。',
'stats': '查看会话使用统计。',
'tag': '给当前会话添加或移除可搜索标签。',
'rename': '重命名当前对话。',
'branch': '基于当前对话创建一个分支/副本。',
'effort': '查看或设置模型推理强度。',
'doctor': '诊断并验证 claw-code 安装和配置。',
'commit': '创建 git commit。',
'pr-comments': '读取 GitHub PR 评论。',
'resume': '恢复之前的对话。',
'add-dir': '添加新的工作目录。',
'skills': '列出可用 Skills。',
'fast': '切换 fast mode。',
'rewind': '把对话恢复到之前的 checkpoint。',
'output-style': '已废弃:请使用 /config 修改输出风格。',
'release-notes': '查看本地 release notes 或变更日志链接。',
'extra-usage': '查看 extra-usage 配置链接。',
'passes': '查看 Claude Code guest passes 信息。',
'rate-limit-options': '查看账号触发限流时的可选处理方式。',
'reload-plugins': '重新加载本地插件清单并报告数量。',
'voice': '切换当前 workspace 的 voice mode 设置。',
'sandbox-toggle': '查看 sandbox 状态,或排除一条命令模式。',
'keybindings': '打印或创建本地快捷键配置文件。',
'btw': '向模型快速提一个旁路问题,不修改当前任务状态。',
'version': '打印当前 Agent 版本。',
'init': '初始化 CLAUDE.md 代码库说明文件。',
'ide': '查看检测到的 IDE/终端集成状态。',
'plugin': '列出已安装插件,或查看插件子命令用法。',
'remote-env': '列出远程环境,或设置默认配置。',
'bridge': '查看 remote-control bridge 状态。',
'remote-setup': '检查 Claude Code on the web 的准备状态。',
}
# ---------------------------------------------------------------------------
# Agent state holder
@@ -245,11 +349,18 @@ def create_app(state: AgentState) -> FastAPI:
async def list_slash_commands() -> list[dict[str, Any]]:
commands: list[dict[str, Any]] = []
for spec in get_slash_command_specs():
if any(name in WEBUI_HIDDEN_SLASH_COMMANDS for name in spec.names):
continue
commands.append(
{
'names': list(spec.names),
'primary': spec.names[0],
'description': spec.description,
'description': WEBUI_SLASH_COMMAND_DESCRIPTIONS_ZH.get(
spec.names[0],
spec.description,
),
'source': 'slash_command',
'webui_supported': True,
}
)
return commands