dsh-mobile-plugin 0.5.28 → 0.5.29
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/extensions/catalog.json +10 -1
- package/extensions/magpie/agentcompact.js +104 -0
- package/extensions/magpie/app.css +4902 -0
- package/extensions/magpie/app.js +24474 -0
- package/extensions/magpie/autobackup.js +185 -0
- package/extensions/magpie/autoresetown.js +151 -0
- package/extensions/magpie/balfound.js +38 -0
- package/extensions/magpie/boot.js +23 -0
- package/extensions/magpie/cfgblocked.js +39 -0
- package/extensions/magpie/checkinnow.js +111 -0
- package/extensions/magpie/claudemode.js +92 -0
- package/extensions/magpie/compat.js +41 -0
- package/extensions/magpie/context.css +433 -0
- package/extensions/magpie/context.js +1576 -0
- package/extensions/magpie/ctxtext.js +223 -0
- package/extensions/magpie/fonts.js +42 -0
- package/extensions/magpie/i18n.js +18942 -0
- package/extensions/magpie/icons/ai21.svg +1 -0
- package/extensions/magpie/icons/ai302-color.svg +1 -0
- package/extensions/magpie/icons/ai360-color.svg +1 -0
- package/extensions/magpie/icons/aihubmix-color.svg +1 -0
- package/extensions/magpie/icons/aionui.svg +1 -0
- package/extensions/magpie/icons/air.svg +4 -0
- package/extensions/magpie/icons/alibaba-color.svg +1 -0
- package/extensions/magpie/icons/alibabacloud-color.svg +1 -0
- package/extensions/magpie/icons/alma.png +0 -0
- package/extensions/magpie/icons/anthropic.svg +1 -0
- package/extensions/magpie/icons/antigravity-color.svg +1 -0
- package/extensions/magpie/icons/anyscale-color.svg +1 -0
- package/extensions/magpie/icons/app-alma.png +0 -0
- package/extensions/magpie/icons/app-cc-switch.png +0 -0
- package/extensions/magpie/icons/apple-touch-icon.png +0 -0
- package/extensions/magpie/icons/aside.svg +28 -0
- package/extensions/magpie/icons/astrbot.svg +1 -0
- package/extensions/magpie/icons/atomcode.png +0 -0
- package/extensions/magpie/icons/aws.svg +1 -0
- package/extensions/magpie/icons/azure-color.svg +1 -0
- package/extensions/magpie/icons/azureai-color.svg +1 -0
- package/extensions/magpie/icons/baichuan-color.svg +1 -0
- package/extensions/magpie/icons/baidu-color.svg +1 -0
- package/extensions/magpie/icons/baiducloud-color.svg +1 -0
- package/extensions/magpie/icons/bailian-color.svg +1 -0
- package/extensions/magpie/icons/baseten.svg +1 -0
- package/extensions/magpie/icons/bedrock-color.svg +1 -0
- package/extensions/magpie/icons/burncloud-color.svg +1 -0
- package/extensions/magpie/icons/bytedance-color.svg +1 -0
- package/extensions/magpie/icons/cerebras.svg +1 -0
- package/extensions/magpie/icons/chatglm-color.svg +1 -0
- package/extensions/magpie/icons/cherryin-color.svg +1 -0
- package/extensions/magpie/icons/chutes.svg +1 -0
- package/extensions/magpie/icons/cindy.png +0 -0
- package/extensions/magpie/icons/claude-color.svg +1 -0
- package/extensions/magpie/icons/claudecode-color.svg +1 -0
- package/extensions/magpie/icons/cline.svg +1 -0
- package/extensions/magpie/icons/cloudflare-color.svg +1 -0
- package/extensions/magpie/icons/codebuddy-color.svg +1 -0
- package/extensions/magpie/icons/codex-color.svg +1 -0
- package/extensions/magpie/icons/cohere-color.svg +1 -0
- package/extensions/magpie/icons/cometapi-color.svg +1 -0
- package/extensions/magpie/icons/commandcode.svg +1 -0
- package/extensions/magpie/icons/copilot-color.svg +1 -0
- package/extensions/magpie/icons/coze.svg +1 -0
- package/extensions/magpie/icons/crush.png +0 -0
- package/extensions/magpie/icons/curl.svg +1 -0
- package/extensions/magpie/icons/cursor.svg +1 -0
- package/extensions/magpie/icons/deepinfra-color.svg +1 -0
- package/extensions/magpie/icons/deepmind-color.svg +1 -0
- package/extensions/magpie/icons/deepseek-color.svg +1 -0
- package/extensions/magpie/icons/deveco-color.svg +12 -0
- package/extensions/magpie/icons/devin.svg +1 -0
- package/extensions/magpie/icons/doubao-color.svg +1 -0
- package/extensions/magpie/icons/empryo-color.svg +1 -0
- package/extensions/magpie/icons/factory.svg +1 -0
- package/extensions/magpie/icons/favicon.svg +1 -0
- package/extensions/magpie/icons/featherless-color.svg +1 -0
- package/extensions/magpie/icons/fireworks-color.svg +1 -0
- package/extensions/magpie/icons/friendli.svg +1 -0
- package/extensions/magpie/icons/fx.svg +1 -0
- package/extensions/magpie/icons/gemini-color.svg +1 -0
- package/extensions/magpie/icons/geminicli-color.svg +1 -0
- package/extensions/magpie/icons/gemma-color.svg +1 -0
- package/extensions/magpie/icons/giteeai.svg +1 -0
- package/extensions/magpie/icons/github.svg +1 -0
- package/extensions/magpie/icons/githubcopilot.svg +1 -0
- package/extensions/magpie/icons/glama.svg +1 -0
- package/extensions/magpie/icons/gmicloud.svg +1 -0
- package/extensions/magpie/icons/google-color.svg +1 -0
- package/extensions/magpie/icons/googlecloud-color.svg +1 -0
- package/extensions/magpie/icons/goose.svg +1 -0
- package/extensions/magpie/icons/grok.svg +1 -0
- package/extensions/magpie/icons/groq.svg +1 -0
- package/extensions/magpie/icons/hanako.png +0 -0
- package/extensions/magpie/icons/hermes.svg +1 -0
- package/extensions/magpie/icons/huawei-color.svg +1 -0
- package/extensions/magpie/icons/huaweicloud-color.svg +1 -0
- package/extensions/magpie/icons/huggingface-color.svg +1 -0
- package/extensions/magpie/icons/hunyuan-color.svg +1 -0
- package/extensions/magpie/icons/hyperbolic-color.svg +1 -0
- package/extensions/magpie/icons/icon-512.png +0 -0
- package/extensions/magpie/icons/iflytekcloud-color.svg +1 -0
- package/extensions/magpie/icons/inference.svg +1 -0
- package/extensions/magpie/icons/infinigence-color.svg +1 -0
- package/extensions/magpie/icons/internlm-color.svg +1 -0
- package/extensions/magpie/icons/jcode.svg +1 -0
- package/extensions/magpie/icons/jina.svg +1 -0
- package/extensions/magpie/icons/kilo.svg +1 -0
- package/extensions/magpie/icons/kilocode.svg +1 -0
- package/extensions/magpie/icons/kimi-code-desktop.png +0 -0
- package/extensions/magpie/icons/kimi.svg +1 -0
- package/extensions/magpie/icons/kiro-color.svg +1 -0
- package/extensions/magpie/icons/kling-color.svg +1 -0
- package/extensions/magpie/icons/lambda.svg +1 -0
- package/extensions/magpie/icons/leptonai-color.svg +1 -0
- package/extensions/magpie/icons/liquid.svg +1 -0
- package/extensions/magpie/icons/liveagent-color.svg +1 -0
- package/extensions/magpie/icons/llmapi.svg +1 -0
- package/extensions/magpie/icons/lmstudio.svg +1 -0
- package/extensions/magpie/icons/lody.png +0 -0
- package/extensions/magpie/icons/longcat.svg +1 -0
- package/extensions/magpie/icons/magpie.svg +1 -0
- package/extensions/magpie/icons/meta-color.svg +1 -0
- package/extensions/magpie/icons/metaai-color.svg +1 -0
- package/extensions/magpie/icons/microsoft-color.svg +1 -0
- package/extensions/magpie/icons/mimocode.svg +1 -0
- package/extensions/magpie/icons/minimax-color.svg +1 -0
- package/extensions/magpie/icons/mistermorph-color.svg +1 -0
- package/extensions/magpie/icons/mistral-color.svg +1 -0
- package/extensions/magpie/icons/mlx-serve.png +0 -0
- package/extensions/magpie/icons/modelscope-color.svg +1 -0
- package/extensions/magpie/icons/monica-color.svg +1 -0
- package/extensions/magpie/icons/moonshot.svg +1 -0
- package/extensions/magpie/icons/morph-color.svg +1 -0
- package/extensions/magpie/icons/mothx.png +0 -0
- package/extensions/magpie/icons/nebius.svg +1 -0
- package/extensions/magpie/icons/newapi-color.svg +1 -0
- package/extensions/magpie/icons/nousresearch.svg +1 -0
- package/extensions/magpie/icons/nova-color.svg +1 -0
- package/extensions/magpie/icons/novita-color.svg +1 -0
- package/extensions/magpie/icons/nvidia-color.svg +1 -0
- package/extensions/magpie/icons/ollama.svg +1 -0
- package/extensions/magpie/icons/omlx.svg +1 -0
- package/extensions/magpie/icons/omo.svg +1 -0
- package/extensions/magpie/icons/omp.svg +1 -0
- package/extensions/magpie/icons/openai.svg +1 -0
- package/extensions/magpie/icons/openchamber.svg +11 -0
- package/extensions/magpie/icons/openclaw.svg +1 -0
- package/extensions/magpie/icons/opencode.svg +1 -0
- package/extensions/magpie/icons/openmausbot.svg +1 -0
- package/extensions/magpie/icons/openrouter.svg +1 -0
- package/extensions/magpie/icons/openwebui.svg +1 -0
- package/extensions/magpie/icons/parasail.svg +1 -0
- package/extensions/magpie/icons/penguin-color.svg +1 -0
- package/extensions/magpie/icons/perplexity-color.svg +1 -0
- package/extensions/magpie/icons/phala-color.svg +1 -0
- package/extensions/magpie/icons/pi.svg +1 -0
- package/extensions/magpie/icons/pipellm-color.svg +5 -0
- package/extensions/magpie/icons/poe.svg +1 -0
- package/extensions/magpie/icons/ppio-color.svg +1 -0
- package/extensions/magpie/icons/prime-agent.svg +1 -0
- package/extensions/magpie/icons/qiniu-color.svg +1 -0
- package/extensions/magpie/icons/qoder.svg +1 -0
- package/extensions/magpie/icons/qwen-color.svg +1 -0
- package/extensions/magpie/icons/qwenpaw.svg +1 -0
- package/extensions/magpie/icons/raycast.svg +1 -0
- package/extensions/magpie/icons/reasonix-color.svg +48 -0
- package/extensions/magpie/icons/reka.svg +1 -0
- package/extensions/magpie/icons/replicate.svg +1 -0
- package/extensions/magpie/icons/roocode.svg +1 -0
- package/extensions/magpie/icons/rtk.png +0 -0
- package/extensions/magpie/icons/sambanova-color.svg +1 -0
- package/extensions/magpie/icons/sensenova-color.svg +1 -0
- package/extensions/magpie/icons/siliconcloud-color.svg +1 -0
- package/extensions/magpie/icons/snow.png +0 -0
- package/extensions/magpie/icons/snowflake-color.svg +1 -0
- package/extensions/magpie/icons/sophnet-color.svg +1 -0
- package/extensions/magpie/icons/spark-color.svg +1 -0
- package/extensions/magpie/icons/stepfun-color.svg +1 -0
- package/extensions/magpie/icons/straico-color.svg +1 -0
- package/extensions/magpie/icons/submodel-color.svg +1 -0
- package/extensions/magpie/icons/t3code.svg +4 -0
- package/extensions/magpie/icons/targon-color.svg +1 -0
- package/extensions/magpie/icons/tencent-color.svg +1 -0
- package/extensions/magpie/icons/tencentcloud-color.svg +1 -0
- package/extensions/magpie/icons/tiangong-color.svg +1 -0
- package/extensions/magpie/icons/together-color.svg +1 -0
- package/extensions/magpie/icons/trae.svg +1 -0
- package/extensions/magpie/icons/typesafe.png +0 -0
- package/extensions/magpie/icons/upstage-color.svg +1 -0
- package/extensions/magpie/icons/venice-color.svg +1 -0
- package/extensions/magpie/icons/vercel.svg +1 -0
- package/extensions/magpie/icons/vertexai-color.svg +1 -0
- package/extensions/magpie/icons/vllm-color.svg +1 -0
- package/extensions/magpie/icons/volcengine-color.svg +1 -0
- package/extensions/magpie/icons/voyage-color.svg +1 -0
- package/extensions/magpie/icons/vscode.svg +1 -0
- package/extensions/magpie/icons/wenxin-color.svg +1 -0
- package/extensions/magpie/icons/windsurf.svg +1 -0
- package/extensions/magpie/icons/workbuddy-color.svg +1 -0
- package/extensions/magpie/icons/workersai-color.svg +1 -0
- package/extensions/magpie/icons/xai.svg +1 -0
- package/extensions/magpie/icons/xiaomimimo.svg +1 -0
- package/extensions/magpie/icons/xinference-color.svg +1 -0
- package/extensions/magpie/icons/yi.svg +1 -0
- package/extensions/magpie/icons/yuanbao-color.svg +1 -0
- package/extensions/magpie/icons/yylx.svg +5 -0
- package/extensions/magpie/icons/zai.svg +1 -0
- package/extensions/magpie/icons/zcode.png +0 -0
- package/extensions/magpie/icons/zed.svg +1 -0
- package/extensions/magpie/icons/zenmux.svg +1 -0
- package/extensions/magpie/icons/zeroone.svg +1 -0
- package/extensions/magpie/icons/zhipu-color.svg +1 -0
- package/extensions/magpie/icons/zoo-code.png +0 -0
- package/extensions/magpie/index.html +572 -0
- package/extensions/magpie/kernel.js +274 -0
- package/extensions/magpie/keyspend.js +63 -0
- package/extensions/magpie/layout.js +26 -0
- package/extensions/magpie/manifest.json +37 -0
- package/extensions/magpie/navlamp.js +47 -0
- package/extensions/magpie/omarchy.css +72 -0
- package/extensions/magpie/omarchy.js +46 -0
- package/extensions/magpie/passerrors.js +21 -0
- package/extensions/magpie/pluginpages.js +405 -0
- package/extensions/magpie/plugins/gateway/client.js +1194 -0
- package/extensions/magpie/plugins/gateway/keys.js +972 -0
- package/extensions/magpie/plugins/gateway/settings.js +459 -0
- package/extensions/magpie/plugins/library/client.js +6788 -0
- package/extensions/magpie/plugins/library/i18n.js +3228 -0
- package/extensions/magpie/plugins/library/library.css +848 -0
- package/extensions/magpie/plugins/otel/i18n.js +48 -0
- package/extensions/magpie/plugins/otel/page.js +189 -0
- package/extensions/magpie/plugins/redact/client.js +46 -0
- package/extensions/magpie/plugins/redact/demo.js +461 -0
- package/extensions/magpie/plugins/redact/i18n.js +432 -0
- package/extensions/magpie/plugins/redact/page.js +985 -0
- package/extensions/magpie/plugins/redact/redact.css +385 -0
- package/extensions/magpie/plugins/redact/settings.js +248 -0
- package/extensions/magpie/plugins/redact/xq_dark.jpg +0 -0
- package/extensions/magpie/plugins/redact/xq_dark.webm +0 -0
- package/extensions/magpie/plugins/redact/xq_light.jpg +0 -0
- package/extensions/magpie/plugins/redact/xq_light.webm +0 -0
- package/extensions/magpie/plugins/routing/client.js +8593 -0
- package/extensions/magpie/plugins/routing/i18n.js +2696 -0
- package/extensions/magpie/plugins/routing/routing.css +1111 -0
- package/extensions/magpie/plugins/search/settings.js +460 -0
- package/extensions/magpie/plugins/sessions/client.js +1622 -0
- package/extensions/magpie/plugins/sessions/i18n.js +360 -0
- package/extensions/magpie/plugins/sessions/sessions.css +181 -0
- package/extensions/magpie/plugins/sessions/settings.js +100 -0
- package/extensions/magpie/plugins/usage/client.js +150 -0
- package/extensions/magpie/plugins/usage/i18n.js +984 -0
- package/extensions/magpie/plugins/usage/page.js +4307 -0
- package/extensions/magpie/plugins.css +319 -0
- package/extensions/magpie/plugins.js +1926 -0
- package/extensions/magpie/profilerename.js +27 -0
- package/extensions/magpie/purposes.js +2 -0
- package/extensions/magpie/quitask.js +79 -0
- package/extensions/magpie/quotaall.js +142 -0
- package/extensions/magpie/ratewindows.js +123 -0
- package/extensions/magpie/registry.js +87 -0
- package/extensions/magpie/resetask.js +137 -0
- package/extensions/magpie/ruleedit.js +53 -0
- package/extensions/magpie/scrollends.js +91 -0
- package/extensions/magpie/settingshints.js +75 -0
- package/extensions/magpie/signsheets.js +86 -0
- package/extensions/magpie/start.js +26 -0
- package/extensions/magpie/syncfiles.js +216 -0
- package/extensions/magpie/theme.js +29 -0
- package/extensions/magpie/traywindows.js +41 -0
- package/extensions/magpie/webfonts.js +130 -0
- package/extensions/magpie/whatsnew.js +252 -0
- package/extensions/magpie.zip +0 -0
- package/knowledge/apps/baijiahao.md +30 -0
- package/knowledge/apps/bilibili.md +1 -0
- package/knowledge/apps/dedao.md +33 -0
- package/knowledge/apps/feishu.md +35 -0
- package/knowledge/apps/gmail.md +33 -0
- package/knowledge/apps/jike.md +31 -0
- package/knowledge/apps/kuaishou.md +34 -0
- package/knowledge/apps/linkedin.md +33 -0
- package/knowledge/apps/qqmail.md +30 -0
- package/knowledge/apps/telegram.md +27 -0
- package/knowledge/apps/toutiao.md +32 -0
- package/knowledge/apps/uber-eats.md +26 -0
- package/knowledge/apps/uber.md +27 -0
- package/knowledge/apps/whatsapp.md +27 -0
- package/knowledge/apps/x.md +32 -0
- package/knowledge/apps/xiaohongshu.md +1 -0
- package/knowledge/apps/zhihu.md +1 -0
- package/knowledge/sites/bilibili.com/SITE.md +50 -0
- package/knowledge/sites/bilibili.com/references/view-fields.md +17 -0
- package/knowledge/sites/github.com/SITE.md +51 -0
- package/knowledge/sites/github.com/references/repo-fields.md +13 -0
- package/knowledge/sites/x.com/SITE.md +47 -0
- package/knowledge/sites/xiaohongshu.com/SITE.md +48 -0
- package/knowledge/sites/xiaohongshu.com/references/note-fields.md +18 -0
- package/knowledge/sites/youtube.com/SITE.md +49 -0
- package/knowledge/sites/youtube.com/references/innertube-fields.md +14 -0
- package/knowledge/sites/zhihu.com/SITE.md +47 -0
- package/knowledge/sites/zhihu.com/references/api-fields.md +21 -0
- package/lib/mobile/extension-catalog.js +41 -1
- package/lib/mobile/extension-data.js +224 -0
- package/lib/mobile/extension-dev.js +3 -1
- package/lib/mobile/file-ops.js +252 -0
- package/lib/mobile/history-derive.js +80 -4
- package/lib/mobile/host-bridge/endpoints.js +48 -6
- package/lib/mobile/host-bridge/event-synthesis.js +33 -6
- package/lib/mobile/jobs-control.js +118 -0
- package/lib/mobile/memory.js +635 -0
- package/lib/mobile/model-badges.js +77 -0
- package/lib/mobile/pet-tools.js +50 -4
- package/lib/mobile/pets.js +214 -18
- package/lib/mobile/phone/access.js +85 -0
- package/lib/mobile/phone/evidence.js +228 -0
- package/lib/mobile/phone/gate.js +290 -0
- package/lib/mobile/phone/grounding.js +314 -0
- package/lib/mobile/phone/guard.js +465 -0
- package/lib/mobile/phone/irreversible.js +88 -8
- package/lib/mobile/phone/knowledge-tools.js +665 -0
- package/lib/mobile/phone/learn.js +329 -0
- package/lib/mobile/phone/redact.js +237 -0
- package/lib/mobile/phone/risk.js +95 -0
- package/lib/mobile/phone/routes.js +28 -1
- package/lib/mobile/phone/service.js +23 -0
- package/lib/mobile/phone/site-commands.js +271 -0
- package/lib/mobile/phone/step-summary.js +201 -0
- package/lib/mobile/phone/stop-summary.js +235 -0
- package/lib/mobile/phone/tool-groups.js +125 -0
- package/lib/mobile/phone/tools.js +589 -0
- package/lib/mobile/phone/untrusted.js +65 -0
- package/lib/mobile/phone-knowledge.js +20 -4
- package/lib/mobile/schedule-edit.js +500 -0
- package/lib/mobile/schedule.js +5 -0
- package/lib/mobile/send-continuation.js +52 -0
- package/lib/mobile/session-models.js +27 -31
- package/lib/mobile/session-send.js +12 -12
- package/lib/mobile/skill-import.js +338 -0
- package/lib/mobile/skill-store.js +524 -0
- package/lib/routes/mobile-api.js +42 -0
- package/package.json +7 -6
- package/skills/skill-authoring/SKILL.md +46 -0
- package/skills/skill-authoring/references/examples.md +82 -0
- package/skills/skill-authoring/references/frontmatter-and-fields.md +46 -0
- package/skills/skill-authoring/scripts/check_skill.py +167 -0
- package/skills/skill-authoring/scripts/manifest.json +3 -0
- package/knowledge/sites/bilibili.com.md +0 -27
- package/knowledge/sites/github.com.md +0 -27
- package/knowledge/sites/x.com.md +0 -28
- package/knowledge/sites/xiaohongshu.com.md +0 -27
- package/knowledge/sites/youtube.com.md +0 -28
- package/knowledge/sites/zhihu.com.md +0 -27
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: skill-authoring
|
|
3
|
+
description: 用户要新建、导入或修改一份技能(把一类事的固定做法存下来,以后照着做)时用:怎么写、怎么查重、存在哪里、怎么确认能被用上。用户说「存成技能」「建个技能」「以后都这么做」「把这段导入成技能」「改一下某个技能」「做个模板」时也用。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 写技能(skill-authoring)
|
|
7
|
+
|
|
8
|
+
把一类事的固定做法写成一份技能,存进会话工作区的技能目录,让它出现在「/」菜单里,以后遇到同类事能被读出来照着做。
|
|
9
|
+
|
|
10
|
+
## 入口
|
|
11
|
+
|
|
12
|
+
- 用户明确要「建一个技能」「把这套做法存下来」「把这段导入成技能」「改一下某个技能」时,走这里。只是聊做法、问能不能做,先回答,不要自己存。
|
|
13
|
+
- 技能写的是一类事以后怎么做,不是一次性的事实或偏好(「我不吃香菜」是记忆,不是技能)。
|
|
14
|
+
- 一份技能就是工作区里 `.dsh/skills/<名字>/SKILL.md` 这份 Markdown;长资料放 `references/`,能跑的脚本放 `scripts/`(附 `manifest.json`)。写它用的是普通写文件能力,没有单独的「存技能」按钮。
|
|
15
|
+
|
|
16
|
+
## 步骤
|
|
17
|
+
|
|
18
|
+
1. **先查重**:看当前工作区 `.dsh/skills/` 下已有哪些目录;能敲「/」就看菜单里有没有同类技能;有就打开那份 `SKILL.md`,在它基础上改,别为同一类事再起一份。
|
|
19
|
+
2. **定名字**:`name` 用小写英文、数字、连字符,说清是哪类事(如 `order-coffee`);**目录名要和 `name` 一模一样**。
|
|
20
|
+
3. **写正文**:整份是一个文档——头部 frontmatter(`name` + `description`),正文写清从哪开始、一步步怎么做、哪里容易走偏、办成什么算办成、什么时候停下交给用户。正文固定五节:`## 入口 / ## 步骤 / ## 容易出错的地方 / ## 怎样算办成 / ## 什么时候停下交给用户`。
|
|
21
|
+
4. **变化的写成参数**:人名、金额、地址、要发的文字写成 `<参数>` 或「用户指定的联系人」,不写死。
|
|
22
|
+
5. **拆长内容和脚本**:长表格、长清单放 `references/` 下的单独文件,正文用相对路径引用;能跑的脚本放 `scripts/`,并在 `scripts/manifest.json` 登记(`file` / `runnable` / `needs`)。
|
|
23
|
+
6. **存盘**:把 `SKILL.md`(及 `references/`、`scripts/`)写进 `.dsh/skills/<名字>/`。
|
|
24
|
+
7. **验证**:让用户敲「/」看菜单里出现 `/名字`;或用技能读工具按名字能读回正文。看不到就按下面「容易出错」查。
|
|
25
|
+
|
|
26
|
+
## 容易出错的地方
|
|
27
|
+
|
|
28
|
+
- **手机上看不到技能**:先确认文件真落在会话**当前工作区**的 `.dsh/skills/` 下(不是别的目录),且目录名与 `name` 一致。技能是按「会话工作目录」装配的,换个工作区就是另一份。
|
|
29
|
+
- **搜不到 / 用户说法没命中**:手机「/」菜单只显示 `name` 和 `description`,`aliases`、`display`、`terms` 这些字段到不了手机。所有能让用户对上的说法必须写进 `description`,别只写在 aliases 里。
|
|
30
|
+
- **随包发布不生效**:`.dsh/` 在本仓被 git 忽略,插件只把声明过的目录打进发布包。想让技能随插件发到**所有用户**,得放进插件声明的发布目录、并从那里装配,不能只丢在本地 `.dsh/skills`。
|
|
31
|
+
- **正文成了答辩稿**:不写中间试错、被放弃的方案、改稿痕迹;只写最终怎么做的。反引号只包工具名,App 名和按钮文字不用反引号。
|
|
32
|
+
- **把一次性信息当技能**:具体某次的人名、单号、口令不写进技能;不写密码、验证码、卡号和别人的私人信息。
|
|
33
|
+
- **一长到底**:模型自己会的不用写,只写这类事特有的做法和坑;太长就拆 `references/`。
|
|
34
|
+
|
|
35
|
+
## 怎样算办成
|
|
36
|
+
|
|
37
|
+
- 目标技能落到 `.dsh/skills/<名字>/SKILL.md`,且 `name` 与目录名一致。
|
|
38
|
+
- 该会话敲「/」能看到 `/名字`(说明宿主 `skills.list` 收进去了);能按名字读回正文和它的 `references` 与 `scripts`。
|
|
39
|
+
- 回答里说的技能名、是新建还是改的,和实际文件一致。
|
|
40
|
+
|
|
41
|
+
## 什么时候停下交给用户
|
|
42
|
+
|
|
43
|
+
- 要跨工作区共享(放全局技能根而不是当前工作区)——先问用户放哪。
|
|
44
|
+
- 要改名或删除——做不了就明说,请用户在技能目录里处理;换名字就按新名字另存,再请用户删旧的。
|
|
45
|
+
- 要写入密码、密钥、他人隐私——不写,告诉用户这类信息不进技能。
|
|
46
|
+
- 验证看不到技能、又查不出原因——如实说没存成 / 没装配上,不要声称已经建好。
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# 两份样例技能
|
|
2
|
+
|
|
3
|
+
照这两份的骨架改写自己的技能。样例里的做法是示范,不是唯一写法。
|
|
4
|
+
|
|
5
|
+
## 样例一:点咖啡
|
|
6
|
+
|
|
7
|
+
```markdown
|
|
8
|
+
---
|
|
9
|
+
name: order-coffee
|
|
10
|
+
description: 用户要点一杯咖啡外送或自取时用;说「点咖啡」「买杯咖啡」「来杯拿铁」时也用。
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# 点咖啡
|
|
14
|
+
|
|
15
|
+
## 入口
|
|
16
|
+
|
|
17
|
+
从用户指定的咖啡 App(或网页版)开始;不知道用哪家就先问。
|
|
18
|
+
|
|
19
|
+
## 步骤
|
|
20
|
+
|
|
21
|
+
1. 打开用户指定的咖啡 App。
|
|
22
|
+
2. 搜索用户要的饮品名(如「拿铁」)。
|
|
23
|
+
3. 选规格:杯型、冷热、加糖/奶,写成 <杯型> 这类占位,按用户这次说的填。
|
|
24
|
+
4. 选门店:外送填地址,自取选离用户近的门店。
|
|
25
|
+
5. 核对购物车里的商品名、规格、金额,念给用户确认。
|
|
26
|
+
6. 付款前停下(见下),用户确认后再提交。
|
|
27
|
+
|
|
28
|
+
## 容易出错的地方
|
|
29
|
+
|
|
30
|
+
- 同名饮品在不同门店价格与规格不一样,先确认门店。
|
|
31
|
+
- 加料、糖度常藏在「规格」二级页,别漏。
|
|
32
|
+
- 外送会有起送价与配送费,金额核对时要一起念。
|
|
33
|
+
|
|
34
|
+
## 怎样算办成
|
|
35
|
+
|
|
36
|
+
- 用户看到订单已提交,且商品、门店、金额与确认时一致。
|
|
37
|
+
- 把订单号或截图交给用户。
|
|
38
|
+
|
|
39
|
+
## 什么时候停下交给用户
|
|
40
|
+
|
|
41
|
+
- 付款:必须由用户在手机侧确认,AI 不自行付款。
|
|
42
|
+
- 需要选择时的模糊点(换门店、改规格、地址不确定)先问。
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## 样例二:导出周报
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
---
|
|
49
|
+
name: weekly-report
|
|
50
|
+
description: 用户要把本周做的事整理成一份周报(Markdown 或文档)时用;说「写周报」「总结这周」时也用。
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
# 导出周报
|
|
54
|
+
|
|
55
|
+
## 入口
|
|
56
|
+
|
|
57
|
+
先确认周报的时间范围、给谁看、要什么格式(Markdown / Word / PDF)。
|
|
58
|
+
|
|
59
|
+
## 步骤
|
|
60
|
+
|
|
61
|
+
1. 确认范围:本周起止日期、目标读者。
|
|
62
|
+
2. 收集素材:本周的会话记录、提交、完成的任务。
|
|
63
|
+
3. 按「完成 / 进行中 / 下周计划 / 风险」四段组织。
|
|
64
|
+
4. 每条写清做了什么、结果如何,能带数字就带数字。
|
|
65
|
+
5. 按用户要的格式落文件,交给用户。
|
|
66
|
+
|
|
67
|
+
## 容易出错的地方
|
|
68
|
+
|
|
69
|
+
- 别把过程流水账全抄进去,只留结论和结果。
|
|
70
|
+
- 日期范围算错会导致漏事,先跟用户确认。
|
|
71
|
+
- 引用数字要和素材对得上,对不上就别写。
|
|
72
|
+
|
|
73
|
+
## 怎样算办成
|
|
74
|
+
|
|
75
|
+
- 产出文件,四段齐全,内容与本周素材一致。
|
|
76
|
+
- 用户能在交付里打开这份文件。
|
|
77
|
+
|
|
78
|
+
## 什么时候停下交给用户
|
|
79
|
+
|
|
80
|
+
- 时间范围或读者不明确——先问。
|
|
81
|
+
- 素材涉及他人隐私或敏感信息——不写,告诉用户。
|
|
82
|
+
```
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# 技能 frontmatter 与字段:哪些真会被看到
|
|
2
|
+
|
|
3
|
+
这份子文档只讲一件事:一份 `SKILL.md` 头部该写什么,以及写进去的字段在宿主与手机端**到底哪个会被用到**。
|
|
4
|
+
|
|
5
|
+
## 有效的字段
|
|
6
|
+
|
|
7
|
+
DSH 宿主读取技能元数据后,`skills.list`(手机「/」菜单的数据源)只投影这几个字段:
|
|
8
|
+
|
|
9
|
+
| 字段 | 是否生效 | 说明 |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| `name` | **生效** | 小写英文、数字、连字符(kebab),如 `order-coffee`。必须是斜杠菜单里显示的名字 `/name`,且**与所在目录名一致**。 |
|
|
12
|
+
| `description` | **生效** | 一句话说清「什么时候用」。手机菜单只显示它,所有能让用户对上的说法都写进这里。 |
|
|
13
|
+
| `whenToUse` | 宿主有,手机不显示 | 桌面/模型侧可用的补充提示;手机菜单不展示、也不透传。 |
|
|
14
|
+
| `display` | **不生效** | Mika 的写法;会落进 metadata,但 `skills.list` 与手机菜单都不读它。 |
|
|
15
|
+
| `aliases` | **不生效** | 同上。别指望靠它命中用户说法。 |
|
|
16
|
+
| `terms` | **不生效** | 同上。 |
|
|
17
|
+
|
|
18
|
+
结论:**真正决定「以后遇事会不会被用上」的只有 `name` 和 `description`**。Mika 那套 `display/aliases/terms` 可以保留当注释,但不能替代 `description`。
|
|
19
|
+
|
|
20
|
+
## 可调用的两个开关(一般不用写)
|
|
21
|
+
|
|
22
|
+
宿主技能带 `modelInvocable` 与 `userInvocable` 两个调用策略。默认两者都为真(既可被模型调用,也出现在人的「/」菜单里)。不写就按默认;除非明确要「只给用户看、不给模型用」,一般不需要动。
|
|
23
|
+
|
|
24
|
+
## 目录与文件约定
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
.dsh/skills/<name>/
|
|
28
|
+
├── SKILL.md # 必需;frontmatter + 五节正文
|
|
29
|
+
├── references/ # 可选;长资料,正文用相对路径引用
|
|
30
|
+
└── scripts/ # 可选;能跑的脚本
|
|
31
|
+
└── manifest.json # 登记脚本:file / runnable / needs
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
- 目录名必须等于 frontmatter 的 `name`。
|
|
35
|
+
- 正文里引用附件一律用**相对路径**(如 `references/字段表.md`),不要写绝对路径。
|
|
36
|
+
- `scripts/manifest.json` 的形状照 Mika `documents` 的清单:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
[
|
|
40
|
+
{"file": "scripts/check_skill.py", "runnable": true, "needs": ["python3"]}
|
|
41
|
+
]
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 校验
|
|
45
|
+
|
|
46
|
+
写完用 `scripts/check_skill.py` 自检一遍:frontmatter 有没有 `name`+`description`、五节齐不齐、`name` 是不是 kebab、目录名与 `name` 对不对得上、正文引用的 `references/` 文件在不在。只有标准库,直接 `python3 scripts/check_skill.py <技能目录>` 就能跑。
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
"""技能自检:只读校验一份技能的 SKILL.md 是否可被宿主/手机正确装配。
|
|
4
|
+
|
|
5
|
+
用法:
|
|
6
|
+
python3 check_skill.py <技能目录>
|
|
7
|
+
python3 check_skill.py <技能目录>/SKILL.md
|
|
8
|
+
|
|
9
|
+
检查项:
|
|
10
|
+
1. SKILL.md 存在。
|
|
11
|
+
2. 头部有 frontmatter 块,含 name 与 description。
|
|
12
|
+
3. name 是小写 kebab-case。
|
|
13
|
+
4. 目录名与 name 一致(传入的是目录时)。
|
|
14
|
+
5. 正文五节齐全:入口 / 步骤 / 容易出错的地方 / 怎样算办成 / 什么时候停下交给用户。
|
|
15
|
+
6. 正文引用的 references/*.md 相对路径文件存在。
|
|
16
|
+
7. 若存在 scripts/manifest.json,其每项 file 指向的文件存在。
|
|
17
|
+
|
|
18
|
+
只用标准库;发现问题打印到 stderr 并以非零码退出。
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
import json
|
|
22
|
+
import os
|
|
23
|
+
import re
|
|
24
|
+
import sys
|
|
25
|
+
|
|
26
|
+
REQUIRED_SECTIONS = [
|
|
27
|
+
"入口",
|
|
28
|
+
"步骤",
|
|
29
|
+
"容易出错的地方",
|
|
30
|
+
"怎样算办成",
|
|
31
|
+
"什么时候停下交给用户",
|
|
32
|
+
]
|
|
33
|
+
|
|
34
|
+
KEBAB_RE = re.compile(r"^[a-z0-9]+(-[a-z0-9]+)*$")
|
|
35
|
+
# 正文里引用的 references 相对路径(<参数> 这类占位不会匹配,因为 <> 不在字符集内)
|
|
36
|
+
REF_RE = re.compile(r"references/[A-Za-z0-9._/\-]+\.md")
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
def read_text(path):
|
|
40
|
+
with open(path, "r", encoding="utf-8") as f:
|
|
41
|
+
return f.read()
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def split_frontmatter(text):
|
|
45
|
+
"""返回 (frontmatter_dict, body)。没有合法 frontmatter 时 frontmatter_dict 为 None。"""
|
|
46
|
+
if not text.startswith("---"):
|
|
47
|
+
return None, text
|
|
48
|
+
# 第一行必须是 ---
|
|
49
|
+
lines = text.split("\n")
|
|
50
|
+
if lines[0].strip() != "---":
|
|
51
|
+
return None, text
|
|
52
|
+
end = None
|
|
53
|
+
for i in range(1, len(lines)):
|
|
54
|
+
if lines[i].strip() == "---":
|
|
55
|
+
end = i
|
|
56
|
+
break
|
|
57
|
+
if end is None:
|
|
58
|
+
return None, text
|
|
59
|
+
fm_lines = lines[1:end]
|
|
60
|
+
body = "\n".join(lines[end + 1:])
|
|
61
|
+
data = {}
|
|
62
|
+
for raw in fm_lines:
|
|
63
|
+
line = raw.rstrip()
|
|
64
|
+
if not line or line.lstrip().startswith("#"):
|
|
65
|
+
continue
|
|
66
|
+
# 只解析顶层 key: value(缩进行属于上层的嵌套值,忽略)
|
|
67
|
+
if raw[:1].isspace():
|
|
68
|
+
continue
|
|
69
|
+
m = re.match(r"^([A-Za-z0-9_\-]+)\s*:\s*(.*)$", line)
|
|
70
|
+
if not m:
|
|
71
|
+
continue
|
|
72
|
+
key, value = m.group(1), m.group(2).strip()
|
|
73
|
+
# 去掉简单的成对引号
|
|
74
|
+
if len(value) >= 2 and value[0] == value[-1] and value[0] in ("'", '"'):
|
|
75
|
+
value = value[1:-1]
|
|
76
|
+
data[key] = value
|
|
77
|
+
return data, body
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
def check(skill_dir, skill_md):
|
|
81
|
+
problems = []
|
|
82
|
+
if not os.path.isfile(skill_md):
|
|
83
|
+
problems.append("找不到 SKILL.md:%s" % skill_md)
|
|
84
|
+
return problems
|
|
85
|
+
|
|
86
|
+
text = read_text(skill_md)
|
|
87
|
+
fm, body = split_frontmatter(text)
|
|
88
|
+
|
|
89
|
+
if fm is None:
|
|
90
|
+
problems.append("头部没有合法的 frontmatter 块(应以 --- 开头并以 --- 结束)")
|
|
91
|
+
fm = {}
|
|
92
|
+
|
|
93
|
+
name = fm.get("name", "").strip()
|
|
94
|
+
description = fm.get("description", "").strip()
|
|
95
|
+
|
|
96
|
+
if not name:
|
|
97
|
+
problems.append("frontmatter 缺 name")
|
|
98
|
+
elif not KEBAB_RE.match(name):
|
|
99
|
+
problems.append("name 不是小写 kebab-case:%r(只允许小写字母、数字、连字符)" % name)
|
|
100
|
+
|
|
101
|
+
if not description:
|
|
102
|
+
problems.append("frontmatter 缺 description(手机「/」菜单只显示它,必须写)")
|
|
103
|
+
|
|
104
|
+
# 目录名与 name 一致
|
|
105
|
+
if skill_dir and name:
|
|
106
|
+
dir_name = os.path.basename(os.path.normpath(skill_dir))
|
|
107
|
+
if dir_name != name:
|
|
108
|
+
problems.append("目录名 %r 与 name %r 不一致(必须相同)" % (dir_name, name))
|
|
109
|
+
|
|
110
|
+
# 五节齐全
|
|
111
|
+
headings = set(re.findall(r"^##\s+(.+?)\s*$", body, flags=re.MULTILINE))
|
|
112
|
+
for sec in REQUIRED_SECTIONS:
|
|
113
|
+
if sec not in headings:
|
|
114
|
+
problems.append("缺小节:## %s" % sec)
|
|
115
|
+
|
|
116
|
+
# references 引用存在
|
|
117
|
+
referenced = sorted(set(REF_RE.findall(body)))
|
|
118
|
+
for rel in referenced:
|
|
119
|
+
if not os.path.isfile(os.path.join(skill_dir, rel)):
|
|
120
|
+
problems.append("正文引用了不存在的文件:%s" % rel)
|
|
121
|
+
|
|
122
|
+
# scripts/manifest.json 的 file 项存在
|
|
123
|
+
manifest_path = os.path.join(skill_dir, "scripts", "manifest.json")
|
|
124
|
+
if os.path.isfile(manifest_path):
|
|
125
|
+
try:
|
|
126
|
+
entries = json.loads(read_text(manifest_path))
|
|
127
|
+
except json.JSONDecodeError as e:
|
|
128
|
+
problems.append("scripts/manifest.json 不是合法 JSON:%s" % e)
|
|
129
|
+
entries = None
|
|
130
|
+
if isinstance(entries, list):
|
|
131
|
+
for idx, item in enumerate(entries):
|
|
132
|
+
if not isinstance(item, dict) or not item.get("file"):
|
|
133
|
+
problems.append("scripts/manifest.json 第 %d 项缺 file 字段" % idx)
|
|
134
|
+
continue
|
|
135
|
+
target = os.path.join(skill_dir, item["file"])
|
|
136
|
+
if not os.path.isfile(target):
|
|
137
|
+
problems.append("manifest 里登记的文件不存在:%s" % item["file"])
|
|
138
|
+
|
|
139
|
+
return problems
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
def main(argv):
|
|
143
|
+
if len(argv) != 2:
|
|
144
|
+
sys.stderr.write("用法:python3 check_skill.py <技能目录 | SKILL.md>\n")
|
|
145
|
+
return 2
|
|
146
|
+
|
|
147
|
+
target = argv[1]
|
|
148
|
+
if os.path.isdir(target):
|
|
149
|
+
skill_dir = target
|
|
150
|
+
skill_md = os.path.join(target, "SKILL.md")
|
|
151
|
+
else:
|
|
152
|
+
skill_md = target
|
|
153
|
+
skill_dir = os.path.dirname(os.path.abspath(target))
|
|
154
|
+
|
|
155
|
+
problems = check(skill_dir, skill_md)
|
|
156
|
+
if problems:
|
|
157
|
+
sys.stderr.write("检查未通过(%d 个问题):\n" % len(problems))
|
|
158
|
+
for p in problems:
|
|
159
|
+
sys.stderr.write(" - %s\n" % p)
|
|
160
|
+
return 1
|
|
161
|
+
|
|
162
|
+
print("检查通过:%s" % skill_md)
|
|
163
|
+
return 0
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
if __name__ == "__main__":
|
|
167
|
+
sys.exit(main(sys.argv))
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: bilibili.com
|
|
3
|
-
display: 哔哩哔哩
|
|
4
|
-
description: 视频社区网页版,看视频、弹幕与评论
|
|
5
|
-
sites: ["bilibili.com", "b23.tv"]
|
|
6
|
-
aliases: ["哔哩哔哩", "B站", "bilibili", "b站"]
|
|
7
|
-
---
|
|
8
|
-
## 是什么
|
|
9
|
-
哔哩哔哩(B站)是视频社区,网页主域名 `bilibili.com`,站内短链常是 `b23.tv`。内容以中长视频、番剧、直播为主,特色是弹幕和评论区。
|
|
10
|
-
|
|
11
|
-
## 界面
|
|
12
|
-
首页顶部是搜索框和分区导航,下面是推荐视频卡片网格,卡片带封面、时长、播放量、弹幕数。左侧导航有首页、番剧、直播、游戏中心、会员购、动态、热门、频道等。
|
|
13
|
-
|
|
14
|
-
视频播放页:上方是播放器,控制条里有弹幕开关、画质、倍速、音量、网页全屏/全屏;播放器下方是标题、UP 主与关注按钮、播放量、点赞/投币/收藏/分享,再接简介和分P,最下面是评论区与相关推荐。动态、稍后再看、历史、收藏在个人中心里。
|
|
15
|
-
|
|
16
|
-
## 功能
|
|
17
|
-
- 搜索:结果分视频、番剧、用户、专栏等分组,视频给标题、UP 主、播放量、时长。
|
|
18
|
-
- 弹幕:按时间飘过,可开关、调透明度、屏蔽词。
|
|
19
|
-
- 评论区分主楼与楼中楼回复,可按热度或时间排序。
|
|
20
|
-
- 关注、点赞、投币、收藏(三连);可以建收藏夹。
|
|
21
|
-
- 番剧、直播、专栏各有独立入口;直播页有实时弹幕。
|
|
22
|
-
|
|
23
|
-
## 已知现象
|
|
24
|
-
- 高清画质、部分番剧和大会员内容与账号等级、会员相关。
|
|
25
|
-
- 部分内容需要登录后才能看或参与互动。
|
|
26
|
-
- 读到的评论通常只是排在前面的一批,不是全部。
|
|
27
|
-
- 受版权和地区限制,个别视频在特定地区不可见。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: github.com
|
|
3
|
-
display: GitHub
|
|
4
|
-
description: 代码托管与协作平台,仓库、Issue 与 PR
|
|
5
|
-
sites: ["github.com"]
|
|
6
|
-
aliases: ["GitHub", "github", "代码仓库"]
|
|
7
|
-
---
|
|
8
|
-
## 是什么
|
|
9
|
-
GitHub 是代码托管与协作平台,主域名 `github.com`。核心单位是「仓库」(repository):一个项目的代码、提交历史、Issue、Pull Request、Actions 等都挂在仓库下。
|
|
10
|
-
|
|
11
|
-
## 界面
|
|
12
|
-
仓库页顶部是一排标签:Code、Issues、Pull requests、Actions、Projects、Wiki、Security、Insights、Settings。Code 页左侧是分支切换与文件树,中间是文件列表,下面渲染 README;右侧 About 栏有简介、Topics、Releases、语言占比。
|
|
13
|
-
|
|
14
|
-
文件页顶部显示路径和分支,右上角是「Raw / Blame / 历史」等按钮;代码行可以点行号定位。顶部全局搜索框可切「仓库 / 代码 / Issue / 用户」等范围。个人主页顶部是头像与关注信息,下面是置顶仓库和贡献热力图。
|
|
15
|
-
|
|
16
|
-
## 功能
|
|
17
|
-
- 浏览目录与单个文件、查看提交历史、对比分支、看某一行是谁改的(Blame)。
|
|
18
|
-
- Star、Watch、Fork 一个仓库;Releases 页下载发行包。
|
|
19
|
-
- Issues 与 Pull Requests 各有列表和筛选,PR 里有 Files changed、Commits、Checks 三个视图。
|
|
20
|
-
- Actions 跑 CI 工作流;代码搜索可按语言、仓库过滤。
|
|
21
|
-
- 支持 Markdown 渲染、任务清单、代码块、表格。
|
|
22
|
-
|
|
23
|
-
## 已知现象
|
|
24
|
-
- 部分操作(提交、开 PR、评论、Star)需要登录。
|
|
25
|
-
- 大文件走 Git LFS,页面上是占位说明而不是内容。
|
|
26
|
-
- 未登录时对 API 和页面有访问频率限制,刷太快会临时被挡。
|
|
27
|
-
- 私有仓库只有授权账号看得到。
|
package/knowledge/sites/x.com.md
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: x.com
|
|
3
|
-
display: X(原推特)
|
|
4
|
-
description: 社交平台,短帖、时间线与实时话题
|
|
5
|
-
sites: ["x.com", "twitter.com"]
|
|
6
|
-
aliases: ["X", "推特", "Twitter", "twitter"]
|
|
7
|
-
---
|
|
8
|
-
## 是什么
|
|
9
|
-
X(推特 Twitter 改名后)是社交平台,主域名 `x.com`,旧地址 `twitter.com` 仍会跳转过来。核心内容是「帖子」(post):一段短文字,可带图片、视频、链接和投票。
|
|
10
|
-
|
|
11
|
-
## 界面
|
|
12
|
-
桌面网页左侧是一列导航:首页、探索、通知、私信、书签、列表、社区、个人资料,底部还有发帖入口。中间是时间线,右侧是搜索框和趋势榜。移动网页把导航收进顶部与底部标签,时间线占满屏。
|
|
13
|
-
|
|
14
|
-
帖子的固定结构:作者头像与昵称、正文、媒体、以及下面一排操作——回复、转帖、点赞、查看数、书签、分享。点开一条帖子是同一条的详情页,下面接回复。
|
|
15
|
-
|
|
16
|
-
## 功能
|
|
17
|
-
- 发帖:文字、图片(最多四张)、视频、投票、引用另一条帖子。
|
|
18
|
-
- 时间线有「为你推荐」和「正在关注」两种排序。
|
|
19
|
-
- 转帖分两种:直接转帖,和带评论的引用转帖。
|
|
20
|
-
- 搜索可按「热门 / 最新 / 用户 / 媒体」切换;趋势榜按地区列当前热门话题。
|
|
21
|
-
- 私信是独立入口;列表可把指定账号聚成一条时间线;社区(Communities)是按主题的圈子。
|
|
22
|
-
- 个人资料页有帖子、回复、媒体、喜欢等标签;订阅用户可发长文。
|
|
23
|
-
|
|
24
|
-
## 已知现象
|
|
25
|
-
- 未登录访问常被登录墙挡住,或只能看少量内容。
|
|
26
|
-
- 时间线默认按推荐算法排序,不完全是时间顺序。
|
|
27
|
-
- 视频和图片在单独的查看器里打开,可左右切换。
|
|
28
|
-
- 长文、编辑帖子、部分私信功能与订阅账号相关。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: xiaohongshu.com
|
|
3
|
-
display: 小红书
|
|
4
|
-
description: 生活方式内容社区,图文与视频笔记
|
|
5
|
-
sites: ["xiaohongshu.com", "xhslink.com"]
|
|
6
|
-
aliases: ["小红书", "xiaohongshu", "RED"]
|
|
7
|
-
---
|
|
8
|
-
## 是什么
|
|
9
|
-
小红书是生活方式内容社区,主域名 `xiaohongshu.com`,分享链接常见 `xhslink.com` 短链。基本单位是「笔记」:图文或视频配上标题、正文和标签。
|
|
10
|
-
|
|
11
|
-
## 界面
|
|
12
|
-
首页是瀑布流的信息流,一张张笔记卡片带封面、标题、作者头像和点赞数;顶部是搜索框,左侧导航有发现、发布、通知、我。
|
|
13
|
-
|
|
14
|
-
笔记详情页:上方是图片轮播(或视频播放器),下面是标题、正文、话题标签、点赞/收藏/评论数、作者信息与关注按钮,再往下是评论区与相关推荐。个人主页有笔记、收藏、赞过等标签。
|
|
15
|
-
|
|
16
|
-
## 功能
|
|
17
|
-
- 发布图文或视频笔记,可加标题、正文、话题标签和地点。
|
|
18
|
-
- 搜索笔记、用户、商品等,可按最新、最热排序。
|
|
19
|
-
- 点赞、收藏(可建专辑)、评论、关注作者。
|
|
20
|
-
- 关注页看关注的人发的笔记;消息里有评论、赞、新增关注等分类。
|
|
21
|
-
- 有直播入口;商品笔记可关联店铺或商品卡。
|
|
22
|
-
|
|
23
|
-
## 已知现象
|
|
24
|
-
- 未登录时浏览和互动功能受限,常提示登录。
|
|
25
|
-
- 信息流按推荐算法分发,不完全按发布时间。
|
|
26
|
-
- 图片是竖向长图轮播,视频笔记会自动播放。
|
|
27
|
-
- 部分笔记的评论或收藏需要登录后才看得到。
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: youtube.com
|
|
3
|
-
display: YouTube
|
|
4
|
-
description: 视频平台,看视频、订阅频道与 shorts
|
|
5
|
-
sites: ["youtube.com", "youtu.be"]
|
|
6
|
-
aliases: ["YouTube", "油管", "youtube"]
|
|
7
|
-
---
|
|
8
|
-
## 是什么
|
|
9
|
-
YouTube 是视频平台,主域名 `youtube.com`,短链域名 `youtu.be`。内容以频道上传的视频为核心,另有 Shorts 短视频、直播和播放列表。
|
|
10
|
-
|
|
11
|
-
## 界面
|
|
12
|
-
桌面网页左侧是导航:首页、Shorts、订阅、我(媒体库)、历史、播放列表,顶部是搜索框。首页是缩略图组成的视频网格,每张卡片带时长、标题、频道名、观看数和发布时间。
|
|
13
|
-
|
|
14
|
-
观看页分三块:上方是播放器(进度条、播放/暂停、音量、字幕、设置、剧场模式、全屏);播放器下方是标题、频道与订阅按钮、点赞/点踩、分享、保存,再接简介和评论区;右侧是相关推荐列表。
|
|
15
|
-
|
|
16
|
-
## 功能
|
|
17
|
-
- 搜索可按上传时间、类型、时长、排序方式过滤。
|
|
18
|
-
- 播放器里可调画质、播放速度、字幕(含自动生成字幕)、循环。
|
|
19
|
-
- 播放列表、稍后观看、点赞的视频都在「媒体库」里。
|
|
20
|
-
- Shorts 是上下滑动切换的竖屏短视频流。
|
|
21
|
-
- 频道页有首页、视频、Shorts、直播、播放列表、社区、简介等标签。
|
|
22
|
-
- 直播页有实时聊天栏。
|
|
23
|
-
|
|
24
|
-
## 已知现象
|
|
25
|
-
- 播放前和播放中会插播广告。
|
|
26
|
-
- 点赞、订阅、看年龄限制内容通常要先登录。
|
|
27
|
-
- 部分视频有地区限制或会员(Premium)限制。
|
|
28
|
-
- 自动生成的字幕可能不完全准确;评论默认按「热门」排序。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: zhihu.com
|
|
3
|
-
display: 知乎
|
|
4
|
-
description: 问答社区,问题、回答、文章与话题
|
|
5
|
-
sites: ["zhihu.com"]
|
|
6
|
-
aliases: ["知乎", "zhihu"]
|
|
7
|
-
---
|
|
8
|
-
## 是什么
|
|
9
|
-
知乎是问答社区,主域名 `zhihu.com`。核心内容是「问题」下方的一条条「回答」,另有文章、专栏、想法等内容形式。
|
|
10
|
-
|
|
11
|
-
## 界面
|
|
12
|
-
首页默认是推荐流,顶部有「关注 / 推荐 / 热榜」等切换;左侧或顶部是搜索框。问题页顶部是问题标题与描述,下面是回答列表,每条回答带作者、正文、赞同/反对、评论数,长回答会折叠成「展开阅读全文」。右侧常有「相关问题」和话题标签。
|
|
13
|
-
|
|
14
|
-
导航栏有首页、会员、发现、等待回答、我的等入口。个人主页分动态、回答、提问、文章、专栏等标签。
|
|
15
|
-
|
|
16
|
-
## 功能
|
|
17
|
-
- 提问、写回答、评论、赞同或反对,赞同可在赞同/喜欢之间切换。
|
|
18
|
-
- 收藏回答到收藏夹;关注问题、话题、用户。
|
|
19
|
-
- 写文章与专栏;发「想法」(短内容)。
|
|
20
|
-
- 搜索覆盖问题、回答、文章、用户、话题,可只看某一类。
|
|
21
|
-
- 盐选专栏是付费内容;私信与通知在消息入口。
|
|
22
|
-
|
|
23
|
-
## 已知现象
|
|
24
|
-
- 未登录浏览常弹出登录框,或只能看部分内容。
|
|
25
|
-
- 长回答显示为摘要,点「展开阅读全文」才展开。
|
|
26
|
-
- 推荐流里会混入广告和推广内容。
|
|
27
|
-
- 部分回答和盐选内容需要会员或付费才能看全。
|