@skillfm/local 2.7.1 → 2.7.2
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/dist/agent-hints.d.ts.map +1 -1
- package/dist/agent-hints.js +23 -11
- package/dist/agent-hints.js.map +1 -1
- package/dist/mcp/_vendored-contracts/beacon-mcp-tools-v1.d.ts +1 -1
- package/dist/mcp/_vendored-contracts/beacon-mcp-tools-v1.d.ts.map +1 -1
- package/dist/mcp/_vendored-contracts/beacon-mcp-tools-v1.js +1 -0
- package/dist/mcp/_vendored-contracts/beacon-mcp-tools-v1.js.map +1 -1
- package/dist/mcp/tools/explain-provider-key.d.ts +36 -0
- package/dist/mcp/tools/explain-provider-key.d.ts.map +1 -0
- package/dist/mcp/tools/explain-provider-key.js +187 -0
- package/dist/mcp/tools/explain-provider-key.js.map +1 -0
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +6 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-hints.d.ts","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,UAAU,aAAa;IACrB,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;
|
|
1
|
+
{"version":3,"file":"agent-hints.d.ts","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,MAAM,MAAM,YAAY,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,uBAAuB,CAAC;AAE5B,UAAU,aAAa;IACrB,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAkHD;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,GAAE,aAAkB,GAAG,MAAM,CAY7E"}
|
package/dist/agent-hints.js
CHANGED
|
@@ -22,10 +22,14 @@ const ACTIVATION_SUCCESS_ZH = [
|
|
|
22
22
|
'该命令幂等 — 已安装过会自动 skip,不会破坏用户文件。',
|
|
23
23
|
'⚠️ 然后告诉用户「SkillFM 已就绪!🎉」并按以下顺序引导(不要跳到赚钱技能):',
|
|
24
24
|
'1) Beacon 监控 (默认免费, 已启动): 调用 skillfm_list_credentials 看用户已配哪些 LLM provider。',
|
|
25
|
-
' 如果是空的, 用对话方式问用户: "要我开始监控你的 LLM 花费吗? 你用 OpenAI / Anthropic / DeepSeek / 豆包 / Qwen / Kimi 哪些?',
|
|
26
|
-
'
|
|
25
|
+
' 如果是空的, 用对话方式问用户: "要我开始监控你的 LLM 花费吗? 你用 OpenAI / Anthropic / DeepSeek / 豆包 / Qwen / Kimi 哪些?"',
|
|
26
|
+
'⚠️ 用户回答后, **每个** provider 都必须先调 skillfm_explain_provider_key({provider}) 拿引导,',
|
|
27
|
+
' 把返回的 why_needed / steps / risk_level / risk_explain / revoke_url / byok_safety / key_format_hint 完整转译为自然语言告诉用户 (不要省略风险等级和撤销链接)。',
|
|
28
|
+
' 让用户看明白 (a) 这是什么 key (b) 怎么去 provider 控制台生成 (c) 这 key 能干啥不能干啥 (d) 我们怎么保护 (e) 出问题怎么撤销。',
|
|
29
|
+
' 用户给 key 后用 skillfm_save_credential 保存。验 key_format_hint 不对要先问用户确认。',
|
|
27
30
|
'2) 用户问"你能干啥"才 GET /skills 列赚钱技能 — 不要主动推。当前主推赚钱技能仅 1 个 (xianyu 闲鱼 AI 头像), 其他在迭代中。',
|
|
28
31
|
'核心原则: SkillFM 三件事是「管 AI 资产 + 省 token + 装赚钱技能」, 默认先帮用户管 + 省 (Beacon, 免费), 赚钱技能用户主动问再讲。',
|
|
32
|
+
'安全铁律: 让用户给 API key 是敏感操作, **每次**都必须先调 explain_provider_key 拿真链接 + 风险等级再让用户去生成, 不要凭空让用户给 "billing-only key" 这种术语。',
|
|
29
33
|
].join(' ');
|
|
30
34
|
const ACTIVATION_SUCCESS_EN = [
|
|
31
35
|
'[English] Activation successful! brain_key saved to ~/.skillfm/config.json.',
|
|
@@ -36,15 +40,16 @@ const ACTIVATION_SUCCESS_EN = [
|
|
|
36
40
|
'(SKILL.md priming + auto-detect harness PreToolUse hook + MCP server registration).',
|
|
37
41
|
'This command is idempotent — already-installed files will be skipped, never overwritten.',
|
|
38
42
|
'⚠️ Then tell the user "SkillFM is ready! 🎉" and onboard in this order (do NOT jump to earning skills):',
|
|
39
|
-
'1) Beacon monitoring (default free, already started): call skillfm_list_credentials to see which providers
|
|
40
|
-
' If empty, ask
|
|
41
|
-
'
|
|
42
|
-
'
|
|
43
|
-
'
|
|
43
|
+
'1) Beacon monitoring (default free, already started): call skillfm_list_credentials to see which providers are configured.',
|
|
44
|
+
' If empty, ask conversationally: "Want me to start monitoring your LLM spend? Which providers do you use — OpenAI / Anthropic / DeepSeek / Doubao / Qwen / Kimi?"',
|
|
45
|
+
'⚠️ Once the user tells you which providers, for EACH one you MUST call skillfm_explain_provider_key({provider}) FIRST,',
|
|
46
|
+
' then translate the returned why_needed / steps / risk_level / risk_explain / revoke_url / byok_safety / key_format_hint into natural language for the user.',
|
|
47
|
+
' Do NOT skip risk_level and revoke_url. The user must understand (a) what kind of key this is (b) how to generate it on the provider console (c) what the key can/cannot do (d) how we protect it (BYOK encrypted local) (e) how to revoke if needed.',
|
|
48
|
+
' After the user provides the key, call skillfm_save_credential to save. If the key does not match key_format_hint, confirm with the user first.',
|
|
44
49
|
'2) Only call GET /skills when the user asks "what can you do" — do not proactively push earning skills.',
|
|
45
50
|
' The earning catalog currently surfaces 1 skill (xianyu — Xianyu AI avatar gigs); others are in iteration.',
|
|
46
51
|
'Core principle: SkillFM = manage AI assets + save tokens + earning skills. Default first helps with manage + save (Beacon, free).',
|
|
47
|
-
'
|
|
52
|
+
'Safety rule: asking the user for an API key is sensitive — ALWAYS call skillfm_explain_provider_key first to get the real generation link + risk level. Never use jargon like "billing-only key" without explanation.',
|
|
48
53
|
].join(' ');
|
|
49
54
|
// ── running_activated ─────────────────────────────────────────────────
|
|
50
55
|
function runningActivatedZh(url) {
|
|
@@ -55,9 +60,13 @@ function runningActivatedZh(url) {
|
|
|
55
60
|
'完成三层防御安装(SKILL.md + harness hooks + MCP 注册),该命令幂等可重复跑。',
|
|
56
61
|
'⚠️ 然后告诉用户「SkillFM 已就绪!」并按以下顺序 onboard:',
|
|
57
62
|
'1) Beacon 监控 (默认免费, 已启动): 调用 skillfm_list_credentials 看用户已配哪些 LLM provider。',
|
|
58
|
-
' 如果空, 问用户用 OpenAI / Anthropic / DeepSeek / 豆包 / Qwen / Kimi
|
|
63
|
+
' 如果空, 问用户用 OpenAI / Anthropic / DeepSeek / 豆包 / Qwen / Kimi 哪些。',
|
|
64
|
+
'⚠️ 用户回答后, **每个** provider 都必须先调 skillfm_explain_provider_key 拿引导,',
|
|
65
|
+
' 把 steps / risk_level / risk_explain / revoke_url / byok_safety / key_format_hint 完整转译给用户。',
|
|
66
|
+
' 不要省略风险和撤销链接。用户给 key 后用 skillfm_save_credential 保存。',
|
|
59
67
|
'2) 用户问"你能干啥"才 GET /skills 列赚钱技能 (当前仅 xianyu 真上线)。不要主动推赚钱技能。',
|
|
60
68
|
'SkillFM 核心定位: 管 AI 资产 + 省 token (默认免费) + 装赚钱技能 (用户主动)。',
|
|
69
|
+
'安全铁律: 让用户给 API key 必须先调 explain_provider_key, 不要凭空让用户给"billing-only key"这种术语。',
|
|
61
70
|
].join(' ');
|
|
62
71
|
}
|
|
63
72
|
function runningActivatedEn(url) {
|
|
@@ -69,11 +78,14 @@ function runningActivatedEn(url) {
|
|
|
69
78
|
'This command is idempotent and safe to re-run.',
|
|
70
79
|
'⚠️ Then tell the user "SkillFM is ready!" and onboard in this order:',
|
|
71
80
|
'1) Beacon monitoring (default free, already started): call skillfm_list_credentials to see which providers are configured.',
|
|
72
|
-
' If empty, ask which of OpenAI / Anthropic / DeepSeek / Doubao / Qwen / Kimi the user uses
|
|
73
|
-
'
|
|
81
|
+
' If empty, ask which of OpenAI / Anthropic / DeepSeek / Doubao / Qwen / Kimi the user uses.',
|
|
82
|
+
'⚠️ Once the user tells you which providers, for EACH one you MUST call skillfm_explain_provider_key first,',
|
|
83
|
+
' then translate steps / risk_level / risk_explain / revoke_url / byok_safety / key_format_hint to the user.',
|
|
84
|
+
' Do not skip risk and revoke. After user provides key, use skillfm_save_credential to save.',
|
|
74
85
|
`2) Only call GET ${url}/skills when the user asks what you can do (currently only xianyu is shipped).`,
|
|
75
86
|
'Do not proactively push earning skills.',
|
|
76
87
|
'SkillFM positioning: manage AI assets + save tokens (free default) + earning skills (user-driven).',
|
|
88
|
+
'Safety rule: asking the user for API keys is sensitive — ALWAYS call skillfm_explain_provider_key first. Never use jargon like "billing-only key" without explanation.',
|
|
77
89
|
].join(' ');
|
|
78
90
|
}
|
|
79
91
|
// ── running_not_activated ─────────────────────────────────────────────
|
package/dist/agent-hints.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-hints.js","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAYH,MAAM,gBAAgB,GACpB,iDAAiD,CAAC;AAEpD,yEAAyE;AAEzE,MAAM,qBAAqB,GAAG;IAC5B,uDAAuD;IACvD,+BAA+B;IAC/B,oDAAoD;IACpD,8EAA8E;IAC9E,gCAAgC;IAChC,8CAA8C;IAC9C,6EAA6E;IAC7E,
|
|
1
|
+
{"version":3,"file":"agent-hints.js","sourceRoot":"","sources":["../src/agent-hints.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export declare const SKILLFM_TOOL_NAMES: {
|
|
|
8
8
|
readonly discover: readonly ["skillfm_suggest_skill", "skillfm_search_skill_market"];
|
|
9
9
|
readonly avatar: readonly ["skillfm_avatar_market", "skillfm_explain_avatar"];
|
|
10
10
|
readonly upgrade: readonly ["skillfm_promote_pro", "skillfm_show_savings_potential"];
|
|
11
|
-
readonly storage: readonly ["skillfm_save_credential", "skillfm_get_credential", "skillfm_list_credentials", "skillfm_remove_credential", "skillfm_memory_sync", "skillfm_memory_recall"];
|
|
11
|
+
readonly storage: readonly ["skillfm_save_credential", "skillfm_get_credential", "skillfm_list_credentials", "skillfm_remove_credential", "skillfm_explain_provider_key", "skillfm_memory_sync", "skillfm_memory_recall"];
|
|
12
12
|
readonly push: readonly ["skillfm_get_monthly_picks", "skillfm_install_recommended_skill"];
|
|
13
13
|
readonly feedback: readonly ["skillfm_record_acceptance", "skillfm_record_rejection", "skillfm_user_preferences"];
|
|
14
14
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beacon-mcp-tools-v1.d.ts","sourceRoot":"","sources":["../../../src/mcp/_vendored-contracts/beacon-mcp-tools-v1.ts"],"names":[],"mappings":"AA4BA,wDAAwD;AACxD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"beacon-mcp-tools-v1.d.ts","sourceRoot":"","sources":["../../../src/mcp/_vendored-contracts/beacon-mcp-tools-v1.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"beacon-mcp-tools-v1.js","sourceRoot":"","sources":["../../../src/mcp/_vendored-contracts/beacon-mcp-tools-v1.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,mFAAmF;AACnF,qEAAqE;AAErE,iDAAiD;AACjD,EAAE;AACF,gEAAgE;AAChE,iFAAiF;AACjF,EAAE;AACF,QAAQ;AACR,4CAA4C;AAC5C,uDAAuD;AACvD,EAAE;AACF,QAAQ;AACR,qDAAqD;AACrD,0CAA0C;AAC1C,sCAAsC;AACtC,+DAA+D;AAC/D,2CAA2C;AAC3C,EAAE;AACF,aAAa;AACb,6DAA6D;AAC7D,4DAA4D;AAE5D,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E,wDAAwD;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,qBAAqB;IACrB,KAAK,EAAE;QACL,qBAAqB;QACrB,uBAAuB;QACvB,sBAAsB;QACtB,qBAAqB;QACrB,6BAA6B;KAC9B;IACD,aAAa;IACb,OAAO,EAAE;QACP,uBAAuB;QACvB,yBAAyB;KAC1B;IACD,aAAa;IACb,OAAO,EAAE;QACP,8BAA8B;QAC9B,yBAAyB;KAC1B;IACD,aAAa;IACb,QAAQ,EAAE;QACR,yBAAyB;QACzB,0BAA0B;QAC1B,+BAA+B;KAChC;IACD,QAAQ;IACR,MAAM,EAAE;QACN,6BAA6B;QAC7B,0BAA0B;QAC1B,2BAA2B;QAC3B,8BAA8B;KAC/B;IACD,SAAS;IACT,QAAQ,EAAE;QACR,uBAAuB;QACvB,6BAA6B;KAC9B;IACD,aAAa;IACb,MAAM,EAAE;QACN,uBAAuB;QACvB,wBAAwB;KACzB;IACD,UAAU;IACV,OAAO,EAAE;QACP,qBAAqB;QACrB,gCAAgC;KACjC;IACD,eAAe;IACf,OAAO,EAAE;QACP,yBAAyB;QACzB,wBAAwB;QACxB,0BAA0B;QAC1B,2BAA2B;QAC3B,qBAAqB;QACrB,uBAAuB;KACxB;IACD,aAAa;IACb,IAAI,EAAE;QACJ,2BAA2B;QAC3B,mCAAmC;KACpC;IACD,MAAM;IACN,QAAQ,EAAE;QACR,2BAA2B;QAC3B,0BAA0B;QAC1B,0BAA0B;KAC3B;CACO,CAAC;AAEX,+CAA+C;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;AA+ClG,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;CACN,CAAC;AAsVX,8DAA8D;AAC9D,MAAM,UAAU,0BAA0B,CAAC,WAAwB;IACjE,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAwB,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,+EAA+E;AAC/E,2CAA2C;AAC3C,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"beacon-mcp-tools-v1.js","sourceRoot":"","sources":["../../../src/mcp/_vendored-contracts/beacon-mcp-tools-v1.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,mFAAmF;AACnF,qEAAqE;AAErE,iDAAiD;AACjD,EAAE;AACF,gEAAgE;AAChE,iFAAiF;AACjF,EAAE;AACF,QAAQ;AACR,4CAA4C;AAC5C,uDAAuD;AACvD,EAAE;AACF,QAAQ;AACR,qDAAqD;AACrD,0CAA0C;AAC1C,sCAAsC;AACtC,+DAA+D;AAC/D,2CAA2C;AAC3C,EAAE;AACF,aAAa;AACb,6DAA6D;AAC7D,4DAA4D;AAE5D,+EAA+E;AAC/E,qCAAqC;AACrC,+EAA+E;AAE/E,wDAAwD;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,qBAAqB;IACrB,KAAK,EAAE;QACL,qBAAqB;QACrB,uBAAuB;QACvB,sBAAsB;QACtB,qBAAqB;QACrB,6BAA6B;KAC9B;IACD,aAAa;IACb,OAAO,EAAE;QACP,uBAAuB;QACvB,yBAAyB;KAC1B;IACD,aAAa;IACb,OAAO,EAAE;QACP,8BAA8B;QAC9B,yBAAyB;KAC1B;IACD,aAAa;IACb,QAAQ,EAAE;QACR,yBAAyB;QACzB,0BAA0B;QAC1B,+BAA+B;KAChC;IACD,QAAQ;IACR,MAAM,EAAE;QACN,6BAA6B;QAC7B,0BAA0B;QAC1B,2BAA2B;QAC3B,8BAA8B;KAC/B;IACD,SAAS;IACT,QAAQ,EAAE;QACR,uBAAuB;QACvB,6BAA6B;KAC9B;IACD,aAAa;IACb,MAAM,EAAE;QACN,uBAAuB;QACvB,wBAAwB;KACzB;IACD,UAAU;IACV,OAAO,EAAE;QACP,qBAAqB;QACrB,gCAAgC;KACjC;IACD,eAAe;IACf,OAAO,EAAE;QACP,yBAAyB;QACzB,wBAAwB;QACxB,0BAA0B;QAC1B,2BAA2B;QAC3B,8BAA8B;QAC9B,qBAAqB;QACrB,uBAAuB;KACxB;IACD,aAAa;IACb,IAAI,EAAE;QACJ,2BAA2B;QAC3B,mCAAmC;KACpC;IACD,MAAM;IACN,QAAQ,EAAE;QACR,2BAA2B;QAC3B,0BAA0B;QAC1B,0BAA0B;KAC3B;CACO,CAAC;AAEX,+CAA+C;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAsB,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;AA+ClG,+EAA+E;AAC/E,0CAA0C;AAC1C,+EAA+E;AAE/E,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,GAAG,EAAE,KAAK;IACV,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,aAAa;IAC1B,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;CACN,CAAC;AAsVX,8DAA8D;AAC9D,MAAM,UAAU,0BAA0B,CAAC,WAAwB;IACjE,MAAM,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAwB,CAAC,CAAC,CAAC,IAAI,CAAC;AACjD,CAAC;AAED,+EAA+E;AAC/E,2CAA2C;AAC3C,+EAA+E;AAE/E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAa,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { SkillFmToolResult } from '../_vendored-contracts/beacon-mcp-tools-v1.js';
|
|
2
|
+
interface ExplainProviderKeyInput {
|
|
3
|
+
provider: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ProviderKeyExplanation {
|
|
6
|
+
provider: string;
|
|
7
|
+
display_name: string;
|
|
8
|
+
/** 给用户看的 key 类型名称 (中文友好) */
|
|
9
|
+
key_label: string;
|
|
10
|
+
/** 该 provider 是否有专用 admin/usage key (vs 跟普通调用 key 共用) */
|
|
11
|
+
has_dedicated_admin_key: boolean;
|
|
12
|
+
/** 推荐 scope (如 OpenAI/Anthropic), 没有 scope 概念时 null */
|
|
13
|
+
scope_recommended: string[] | null;
|
|
14
|
+
scope_warning: string | null;
|
|
15
|
+
/** 为什么 SkillFM 需要这个 key */
|
|
16
|
+
why_needed: string;
|
|
17
|
+
/** 一步一步的获取流程 (含真链接) */
|
|
18
|
+
steps: string[];
|
|
19
|
+
/** 'LOW' / 'MEDIUM' / 'HIGH' */
|
|
20
|
+
risk_level: 'LOW' | 'MEDIUM' | 'HIGH';
|
|
21
|
+
/** 风险解释 — 此 key 能干啥, 不能干啥 */
|
|
22
|
+
risk_explain: string;
|
|
23
|
+
/** 撤销 / 删除 key 的链接 */
|
|
24
|
+
revoke_url: string;
|
|
25
|
+
/** BYOK 保护承诺 (固定文案) */
|
|
26
|
+
byok_safety: string;
|
|
27
|
+
/** key 格式 hint, 帮 agent 验证用户给的是不是对的 key */
|
|
28
|
+
key_format_hint: string;
|
|
29
|
+
/** 中高风险 provider 的额外建议 (建议建独立 key / 充小额 / 设限额) */
|
|
30
|
+
extra_recommendations: string[];
|
|
31
|
+
}
|
|
32
|
+
export declare function handleExplainProviderKey(input: ExplainProviderKeyInput): Promise<SkillFmToolResult<ProviderKeyExplanation>>;
|
|
33
|
+
/** Exposed for testing — list of all supported providers */
|
|
34
|
+
export declare const SUPPORTED_PROVIDERS: string[];
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=explain-provider-key.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explain-provider-key.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/explain-provider-key.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAEvF,UAAU,uBAAuB;IAC/B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,4BAA4B;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,uBAAuB,EAAE,OAAO,CAAC;IACjC,uDAAuD;IACvD,iBAAiB,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,gCAAgC;IAChC,UAAU,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtC,6BAA6B;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,uBAAuB;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,eAAe,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAwKD,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,iBAAiB,CAAC,sBAAsB,CAAC,CAAC,CAqBpD;AAED,4DAA4D;AAC5D,eAAO,MAAM,mBAAmB,UAAuC,CAAC"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// sdk/skillfm-local/src/mcp/tools/explain-provider-key.ts
|
|
2
|
+
//
|
|
3
|
+
// MCP tool: skillfm_explain_provider_key
|
|
4
|
+
//
|
|
5
|
+
// 让 agent 在让用户给 API key 之前, **必须**先调此 tool 拿引导, 转译为自然语言
|
|
6
|
+
// 给用户. 解决 Phase 2 onboarding 痛点: 用户不懂 "billing-only key" 是啥 +
|
|
7
|
+
// 给 API key 是敏感操作需要清楚的 why / how / risk / revoke / BYOK 保护说明.
|
|
8
|
+
//
|
|
9
|
+
// 6 个 provider 风险分层:
|
|
10
|
+
// - LOW : OpenAI / Anthropic — 有专用 admin key + read-only scope
|
|
11
|
+
// - MEDIUM : Qwen / Doubao — API key 跟调用同 key, 但能在控制台限额
|
|
12
|
+
// - HIGH : DeepSeek / Kimi — 同上, 但平台不一定能限额, 建议建独立 key + 充小额
|
|
13
|
+
//
|
|
14
|
+
// 格式: 静态结构化数据, agent 调用即返, 不依赖 brain / network。
|
|
15
|
+
const BYOK_SAFETY = '你的 key 加密存本地 ~/.skillfm/vault.enc (AES-256-GCM, master key 在 ~/.skillfm/vault.key chmod 0600), 永不出节点。如担心可随时去 provider 控制台删 key 立即吊销。';
|
|
16
|
+
const PROVIDER_CONFIGS = {
|
|
17
|
+
openai: {
|
|
18
|
+
provider: 'openai',
|
|
19
|
+
display_name: 'OpenAI',
|
|
20
|
+
key_label: 'Admin API Key (read-only scope)',
|
|
21
|
+
has_dedicated_admin_key: true,
|
|
22
|
+
scope_recommended: ['api.usage.read'],
|
|
23
|
+
scope_warning: '⚠️ 不要勾 api.management.write — 那个能管 API keys 风险大, SkillFM 不需要',
|
|
24
|
+
why_needed: '让 SkillFM 能查询你 OpenAI 的用量数据 (token / cost / model 细分), 定期告诉你哪能省',
|
|
25
|
+
steps: [
|
|
26
|
+
'1. 打开 https://platform.openai.com/settings/organization/admin-keys',
|
|
27
|
+
'2. 点 "Create new admin key"',
|
|
28
|
+
'3. Name: SkillFM Beacon (或你喜欢的名字)',
|
|
29
|
+
'4. Permissions: 仅勾选 "api.usage.read" (read-only, 只能查用量)',
|
|
30
|
+
'5. Create → 复制 sk-admin-... 给我',
|
|
31
|
+
],
|
|
32
|
+
risk_level: 'LOW',
|
|
33
|
+
risk_explain: '此 key 只能查用量数据,不能花钱、不能管账户、不能改设置。即使泄露给别人最大风险只是别人看到你 OpenAI 用了多少钱',
|
|
34
|
+
revoke_url: 'https://platform.openai.com/settings/organization/admin-keys',
|
|
35
|
+
byok_safety: BYOK_SAFETY,
|
|
36
|
+
key_format_hint: 'sk-admin-... (40+ 字符)',
|
|
37
|
+
extra_recommendations: [],
|
|
38
|
+
},
|
|
39
|
+
anthropic: {
|
|
40
|
+
provider: 'anthropic',
|
|
41
|
+
display_name: 'Anthropic (Claude API)',
|
|
42
|
+
key_label: 'Organization Admin API Key',
|
|
43
|
+
has_dedicated_admin_key: true,
|
|
44
|
+
scope_recommended: null,
|
|
45
|
+
scope_warning: '⚠️ Anthropic 的 admin key 默认有较多权限 (能管 API keys 等), SkillFM 只读用量。建议独立建一个专用于监控的, 用完了删',
|
|
46
|
+
why_needed: '让 SkillFM 能查询你 Anthropic 组织的用量数据 (Claude 各模型 token / cost), 定期告诉你哪能省',
|
|
47
|
+
steps: [
|
|
48
|
+
'1. 打开 https://console.anthropic.com',
|
|
49
|
+
'2. 进入 Organization → API keys (顶部菜单)',
|
|
50
|
+
'3. 切到 "Admin keys" tab',
|
|
51
|
+
'4. 点 "Create admin key"',
|
|
52
|
+
'5. Name: SkillFM Beacon',
|
|
53
|
+
'6. Create → 复制 sk-ant-admin-... 给我',
|
|
54
|
+
],
|
|
55
|
+
risk_level: 'LOW',
|
|
56
|
+
risk_explain: 'Admin key 理论上权限较大 (能调 admin API 含管 keys), 但 SkillFM 只调 organization/usage_report 端点。如担心可随时撤销重发',
|
|
57
|
+
revoke_url: 'https://console.anthropic.com (Organization → Admin keys)',
|
|
58
|
+
byok_safety: BYOK_SAFETY,
|
|
59
|
+
key_format_hint: 'sk-ant-admin-... (60+ 字符)',
|
|
60
|
+
extra_recommendations: [
|
|
61
|
+
'建议独立建一个 admin key 专给 SkillFM 用, 不要复用其他工具的',
|
|
62
|
+
],
|
|
63
|
+
},
|
|
64
|
+
deepseek: {
|
|
65
|
+
provider: 'deepseek',
|
|
66
|
+
display_name: 'DeepSeek',
|
|
67
|
+
key_label: 'API Key',
|
|
68
|
+
has_dedicated_admin_key: false,
|
|
69
|
+
scope_recommended: null,
|
|
70
|
+
scope_warning: null,
|
|
71
|
+
why_needed: 'DeepSeek 没公开专用 admin/usage API, SkillFM 用 /user/balance 端点定期查余额, 反推用量',
|
|
72
|
+
steps: [
|
|
73
|
+
'1. 打开 https://platform.deepseek.com/api_keys',
|
|
74
|
+
'2. 点 "Create new API key"',
|
|
75
|
+
'3. Name: SkillFM Monitor (建议独立建一个, 别复用调用 key)',
|
|
76
|
+
'4. Create → 复制 sk-... 给我',
|
|
77
|
+
],
|
|
78
|
+
risk_level: 'HIGH',
|
|
79
|
+
risk_explain: '⚠️ 此 key 跟普通调用 key 是同一种 — 既能查余额, 也能调 LLM 花你钱。如果泄露别人能用你的额度。建议: (1) 独立建一个专给 SkillFM 用的 key (2) 给账户充小额 (如 $10) 上限可控',
|
|
80
|
+
revoke_url: 'https://platform.deepseek.com/api_keys',
|
|
81
|
+
byok_safety: BYOK_SAFETY,
|
|
82
|
+
key_format_hint: 'sk-... (32+ 字符)',
|
|
83
|
+
extra_recommendations: [
|
|
84
|
+
'建议独立建一个新 key 专给 SkillFM, 不复用你现在 IDE / agent 在用的',
|
|
85
|
+
'如果担心被滥用, 给 DeepSeek 账户先充小额 (如 $10), 风险即上限',
|
|
86
|
+
],
|
|
87
|
+
},
|
|
88
|
+
doubao: {
|
|
89
|
+
provider: 'doubao',
|
|
90
|
+
display_name: '豆包 / 火山方舟 Ark',
|
|
91
|
+
key_label: 'Ark API Key',
|
|
92
|
+
has_dedicated_admin_key: false,
|
|
93
|
+
scope_recommended: null,
|
|
94
|
+
scope_warning: null,
|
|
95
|
+
why_needed: '让 SkillFM 查你火山方舟的 endpoints + 调用统计, 跨 LLM 看你的 AI 花费',
|
|
96
|
+
steps: [
|
|
97
|
+
'1. 打开 https://console.volcengine.com/ark',
|
|
98
|
+
'2. 左侧菜单 "API Key 管理"',
|
|
99
|
+
'3. 点 "创建 API Key"',
|
|
100
|
+
'4. 名称: SkillFM Monitor (建议独立)',
|
|
101
|
+
'5. 创建 → 复制完整 key 给我',
|
|
102
|
+
],
|
|
103
|
+
risk_level: 'MEDIUM',
|
|
104
|
+
risk_explain: 'Ark API key 能调 LLM 花钱。但火山控制台支持设额度 / 限速, 可以预先限制风险上限',
|
|
105
|
+
revoke_url: 'https://console.volcengine.com/ark (API Key 管理)',
|
|
106
|
+
byok_safety: BYOK_SAFETY,
|
|
107
|
+
key_format_hint: 'Ark API key (一般 40+ 字符)',
|
|
108
|
+
extra_recommendations: [
|
|
109
|
+
'建议独立建一个 key 专给 SkillFM',
|
|
110
|
+
'在火山控制台给该 key 设月度额度上限',
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
qwen: {
|
|
114
|
+
provider: 'qwen',
|
|
115
|
+
display_name: 'Qwen / 阿里百炼 DashScope',
|
|
116
|
+
key_label: 'DashScope API Key',
|
|
117
|
+
has_dedicated_admin_key: false,
|
|
118
|
+
scope_recommended: null,
|
|
119
|
+
scope_warning: null,
|
|
120
|
+
why_needed: '让 SkillFM 查你 DashScope 部署的模型 + 调用统计, 跨 LLM 看 AI 花费',
|
|
121
|
+
steps: [
|
|
122
|
+
'1. 打开 https://bailian.console.aliyun.com',
|
|
123
|
+
'2. 顶部菜单 "API-KEY"',
|
|
124
|
+
'3. 点 "创建我的 API-KEY"',
|
|
125
|
+
'4. 描述: SkillFM Monitor',
|
|
126
|
+
'5. 创建 → 复制 sk-... 给我',
|
|
127
|
+
],
|
|
128
|
+
risk_level: 'MEDIUM',
|
|
129
|
+
risk_explain: 'DashScope key 能调 Qwen 模型花钱。阿里云账户可以给 key 设调用频率限制 / 月度额度',
|
|
130
|
+
revoke_url: 'https://bailian.console.aliyun.com (API-KEY)',
|
|
131
|
+
byok_safety: BYOK_SAFETY,
|
|
132
|
+
key_format_hint: 'sk-... (32+ 字符)',
|
|
133
|
+
extra_recommendations: [
|
|
134
|
+
'建议独立建一个 key 专给 SkillFM',
|
|
135
|
+
'在百炼控制台给该 key 设调用频率 / 月度额度',
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
kimi: {
|
|
139
|
+
provider: 'kimi',
|
|
140
|
+
display_name: 'Kimi / Moonshot',
|
|
141
|
+
key_label: 'API Key',
|
|
142
|
+
has_dedicated_admin_key: false,
|
|
143
|
+
scope_recommended: null,
|
|
144
|
+
scope_warning: null,
|
|
145
|
+
why_needed: 'Kimi 没公开专用 admin/usage API, SkillFM 用 /v1/users/me/balance 端点定期查余额反推用量',
|
|
146
|
+
steps: [
|
|
147
|
+
'1. 打开 https://platform.moonshot.cn/console/api-keys',
|
|
148
|
+
'2. 点 "新建"',
|
|
149
|
+
'3. 名称: SkillFM Monitor (建议独立)',
|
|
150
|
+
'4. 创建 → 复制 sk-... 给我',
|
|
151
|
+
],
|
|
152
|
+
risk_level: 'HIGH',
|
|
153
|
+
risk_explain: '⚠️ Kimi 的 API key 跟普通调用 key 是同一种 — 既能查余额, 也能调 Kimi 花你钱。建议: (1) 独立建一个 (2) 账户充小额风险有限',
|
|
154
|
+
revoke_url: 'https://platform.moonshot.cn/console/api-keys',
|
|
155
|
+
byok_safety: BYOK_SAFETY,
|
|
156
|
+
key_format_hint: 'sk-... (32+ 字符)',
|
|
157
|
+
extra_recommendations: [
|
|
158
|
+
'建议独立建一个 key 专给 SkillFM',
|
|
159
|
+
'在 Kimi 账户充小额 (如 ¥10), 风险即上限',
|
|
160
|
+
],
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
export async function handleExplainProviderKey(input) {
|
|
164
|
+
const provider = (input?.provider ?? '').toLowerCase().trim();
|
|
165
|
+
if (!provider) {
|
|
166
|
+
return {
|
|
167
|
+
ok: false,
|
|
168
|
+
error: { code: 'INPUT.INVALID', message: 'provider required', retryable: false },
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
const cfg = PROVIDER_CONFIGS[provider];
|
|
172
|
+
if (!cfg) {
|
|
173
|
+
const supported = Object.keys(PROVIDER_CONFIGS).sort().join(' / ');
|
|
174
|
+
return {
|
|
175
|
+
ok: false,
|
|
176
|
+
error: {
|
|
177
|
+
code: 'PROVIDER.NOT_SUPPORTED',
|
|
178
|
+
message: `provider '${provider}' not supported. Supported: ${supported}`,
|
|
179
|
+
retryable: false,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
return { ok: true, data: cfg };
|
|
184
|
+
}
|
|
185
|
+
/** Exposed for testing — list of all supported providers */
|
|
186
|
+
export const SUPPORTED_PROVIDERS = Object.keys(PROVIDER_CONFIGS).sort();
|
|
187
|
+
//# sourceMappingURL=explain-provider-key.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"explain-provider-key.js","sourceRoot":"","sources":["../../../src/mcp/tools/explain-provider-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAazE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAqBtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAMlD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,uEAAuE;IACvE,SAAS,EAAE,OAAO,CAAC;IACnB,yFAAyF;IACzF,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAC5B,mFAAmF;IACnF,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACtB;AAmQD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,gBAAgB,GAAG,IAAI,CAGhF;AAED,yEAAyE;AACzE,wBAAgB,2BAA2B,IAAI,MAAM,EAAE,CAEtD"}
|
package/dist/mcp/tools/index.js
CHANGED
|
@@ -36,6 +36,7 @@ import { handleMemorySearch } from './memory-search.js';
|
|
|
36
36
|
import { handleMemorySave } from './memory-save.js';
|
|
37
37
|
import { handleMemoryRecent } from './memory-recent.js';
|
|
38
38
|
import { handleSaveCredential, handleGetCredential, handleListCredentials, handleRemoveCredential, } from './credential-tools.js';
|
|
39
|
+
import { handleExplainProviderKey } from './explain-provider-key.js';
|
|
39
40
|
// ============================================================================
|
|
40
41
|
// Minimal input shape — every Phase 0 tool accepts a free-form object.
|
|
41
42
|
// Validation is done inside handlers (so failures come back as
|
|
@@ -142,6 +143,10 @@ function registerKeyTools(server, deps) {
|
|
|
142
143
|
const env = await handleRemoveCredential(input, vaultDeps);
|
|
143
144
|
return wrapEnvelope(env);
|
|
144
145
|
});
|
|
146
|
+
server.tool('skillfm_explain_provider_key', 'CRITICAL — call this BEFORE asking the user for any provider API key. Returns structured guidance: key type, why needed, step-by-step generation link, scope recommendations, risk level (LOW/MEDIUM/HIGH), what the key can do (and cannot do), revoke URL, BYOK safety promise, and key format hint. Translate the response into natural language for the user — never just ask for "your API key" without first explaining via this tool. Supported: openai / anthropic / deepseek / doubao / qwen / kimi.', PASSTHROUGH_SCHEMA.shape, async (input) => {
|
|
147
|
+
const env = await handleExplainProviderKey(input);
|
|
148
|
+
return wrapEnvelope(env);
|
|
149
|
+
});
|
|
145
150
|
}
|
|
146
151
|
// ============================================================================
|
|
147
152
|
// Placeholder tools — names reserved by contract but Phase 0 = NOT_IMPLEMENTED
|
|
@@ -160,6 +165,7 @@ const KEY_TOOL_NAMES = new Set([
|
|
|
160
165
|
'skillfm_get_credential',
|
|
161
166
|
'skillfm_list_credentials',
|
|
162
167
|
'skillfm_remove_credential',
|
|
168
|
+
'skillfm_explain_provider_key',
|
|
163
169
|
]);
|
|
164
170
|
function registerPlaceholderTools(server) {
|
|
165
171
|
const allNames = Object.values(SKILLFM_TOOL_NAMES).flat();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EACL,kBAAkB,GAOnB,MAAM,+CAA+C,CAAC;AAIvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skillfm/local",
|
|
3
|
-
"version": "2.7.
|
|
3
|
+
"version": "2.7.2",
|
|
4
4
|
"description": "SkillFM local — single npm package for the SkillFM platform on user nodes. Subcommand router exposes (1) Beacon MCP stdio server (cost-optimizer for any agent; merged in from @skillfm/beacon-mcp on 2026-05-01), (2) skill runtime (BYOK Playwright / brain reverse-tunnel), (3) sidecar HTTP proxy + OAuth 2.1 device-flow activation. Writes ~/.skillfm/local.json for service discovery.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|