@zhin.js/adapter-github 0.1.50 → 0.1.52

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/README.md CHANGED
@@ -74,8 +74,12 @@ GITHUB_APP_ID=123456
74
74
  GITHUB_WEBHOOK_SECRET=your-secret
75
75
  GITHUB_CLIENT_ID=Iv1.xxxxxxxxxx
76
76
  GITHUB_CLIENT_SECRET=xxxxxxxxxxxx
77
+ # MCP server-github(适配器自动 addMcp,与 App 认证独立)
78
+ GITHUB_PERSONAL_ACCESS_TOKEN=ghp_xxxxxxxxxxxx
77
79
  ```
78
80
 
81
+ 或在 `zhin.config.yml` 中设置 `ai.githubMcp.token`(优先于环境变量)。
82
+
79
83
  `private_key` 支持两种写法:
80
84
  - 文件路径:`./data/github-app.pem`
81
85
  - 直接内容:`"-----BEGIN RSA PRIVATE KEY-----\n..."`
@@ -91,27 +95,20 @@ GitHub adapter 将 Issue/PR 映射为聊天频道:
91
95
 
92
96
  ## AI 工具
93
97
 
94
- 适配器自动注册以下工具供 AI 调用:
98
+ ### 适配器内置(Zhin 专有)
95
99
 
96
- | 工具 | 说明 | 操作 |
97
- |------|------|------|
98
- | `github.pr` | PR 管理 | list / view / diff / merge / create / review / close |
99
- | `github.issue` | Issue 管理 | list / view / create / close / comment |
100
- | `github.repo` | 仓库查询 | info / branches / releases / runs(CI) / stars |
101
- | `github.search` | 全局搜索 | issues / repos / code |
102
- | `github.label` | 标签管理 | list / add / remove |
103
- | `github.assign` | 指派管理 | add / remove |
104
- | `github.file` | 读取仓库文件 | 返回文件内容或目录列表 |
105
- | `github.commits` | 提交查询 | list / compare |
106
- | `github.edit` | 编辑 Issue/PR | 修改标题、正文、状态 |
107
- | `github.subscribe` | 订阅事件通知 | 订阅仓库的 push/issue/star/fork/pr 事件 |
108
- | `github.unsubscribe` | 取消订阅 | — |
109
- | `github.subscriptions` | 查看订阅列表 | — |
110
- | `github.bind` | 绑定 GitHub 账号 | 生成 OAuth 授权链接 |
111
- | `github.unbind` | 解除绑定 | — |
112
- | `github.whoami` | 查看绑定信息 | — |
113
- | `github.star` | Star / Unstar 仓库 | 需要用户绑定 OAuth |
114
- | `github.fork` | Fork 仓库 | 需要用户绑定 OAuth |
100
+ | 工具 | 说明 |
101
+ |------|------|
102
+ | `github_star` | Star / Unstar / 检查(per-user OAuth Bot 默认) |
103
+ | `github_bind` / `github_unbind` / `github_whoami` | 用户 GitHub 账号绑定 |
104
+ | `github_install` | GitHub App 安装链接 |
105
+ | `github_subscribe` / `github_unsubscribe` / `github_subscriptions` | 频道级 Webhook 订阅 |
106
+
107
+ ### MCP(`@modelcontextprotocol/server-github`)
108
+
109
+ 配置 `GITHUB_PERSONAL_ACCESS_TOKEN`(或 `ai.githubMcp.token`)后,适配器通过 `orchestrator.addMcp` 注册 `github` server;AI 侧工具名为 `mcp_github_*`(如 `mcp_github_fork_repository`、`mcp_github_create_issue`)。
110
+
111
+ **BREAKING**:`github_fork` 已移除,请改用 `mcp_github_fork_repository`。
115
112
 
116
113
  ### 使用示例
117
114
 
@@ -127,7 +124,7 @@ AI: 对比 zhinjs/zhin 的 main 和 dev 分支
127
124
  AI: 编辑 zhinjs/zhin 的 issue #42 标题
128
125
  AI: 绑定我的 GitHub 账号
129
126
  AI: star zhinjs/zhin
130
- AI: fork zhinjs/zhin
127
+ AI: fork zhinjs/zhin # 使用 mcp_github_fork_repository
131
128
  ```
132
129
 
133
130
  ## Webhook 事件通知
@@ -0,0 +1,3 @@
1
+ import type { AgentPromptContributor } from 'zhin.js';
2
+ export declare function createGithubAgentPromptContributor(): AgentPromptContributor;
3
+ //# sourceMappingURL=agent-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-prompt.d.ts","sourceRoot":"","sources":["../src/agent-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EAEvB,MAAM,SAAS,CAAC;AAwDjB,wBAAgB,kCAAkC,IAAI,sBAAsB,CAuC3E"}
@@ -0,0 +1,84 @@
1
+ import { filterTools } from 'zhin.js';
2
+ function isGithubDelegatedTask(query, goal) {
3
+ const text = `${query} ${goal}`;
4
+ return /github|gh_|mcp_github|\bissue\b|pull\s*request|\bpr\b/i.test(text);
5
+ }
6
+ function selectGithubDeferredTools(query, goal, deferredCatalog, maxTools) {
7
+ const pool = deferredCatalog.filter(t => !t.name.startsWith('mcp_filesystem') && !t.name.startsWith('mcp_icqq_'));
8
+ const pinned = [];
9
+ const bash = pool.find(t => t.name === 'bash');
10
+ if (bash)
11
+ pinned.push(bash);
12
+ const preferNames = [
13
+ ...pool.filter(t => t.name.startsWith('mcp_github_')).map(t => t.name),
14
+ ...pool.filter(t => t.name.startsWith('github_')).map(t => t.name),
15
+ ];
16
+ for (const name of preferNames) {
17
+ if (pinned.length >= maxTools)
18
+ break;
19
+ const t = pool.find(x => x.name === name);
20
+ if (t && !pinned.some(p => p.name === name))
21
+ pinned.push(t);
22
+ }
23
+ const extra = filterTools(`${query} ${goal}`, pool, { maxTools, minScore: 0.08 })
24
+ .filter(t => !pinned.some(p => p.name === t.name));
25
+ const merged = [...pinned];
26
+ for (const t of extra) {
27
+ if (merged.length >= maxTools)
28
+ break;
29
+ merged.push(t);
30
+ }
31
+ return merged.slice(0, maxTools);
32
+ }
33
+ const ORCHESTRATOR_GITHUB = [
34
+ 'On GitHub: use run_deferred_task with tool_query "github_" or "mcp_github_" or "gh issue"/"gh pr".',
35
+ 'Discuss issues/PRs in chat context; do not call github_* or mcp_github_* tools on this orchestrator.',
36
+ 'Skip tool_search when the user clearly names a repo, issue number, or PR.',
37
+ ].join('\n');
38
+ const WORKER_GITHUB = [
39
+ 'Prefer `gh` via bash for repo operations when bash is available.',
40
+ 'Use mcp_github_* or github_* plugin tools for structured API actions.',
41
+ 'Do not use mcp_filesystem_* or unrelated MCP servers to "discover" GitHub.',
42
+ 'Summarize outcomes (issue link, PR state) for the orchestrator.',
43
+ ].map(line => `- ${line}`).join('\n');
44
+ export function createGithubAgentPromptContributor() {
45
+ return {
46
+ platform: 'github',
47
+ async buildSections(ctx) {
48
+ if (ctx.slot === 'orchestrator') {
49
+ if (!ctx.toolSearch)
50
+ return null;
51
+ return [{
52
+ id: 'platform.github.orchestrator',
53
+ title: '## GitHub',
54
+ body: ORCHESTRATOR_GITHUB,
55
+ priority: 50,
56
+ }];
57
+ }
58
+ if (ctx.slot === 'deferred_worker') {
59
+ const query = ctx.deferred?.toolQuery ?? ctx.deferred?.goal ?? '';
60
+ const goal = ctx.deferred?.goal ?? '';
61
+ if (!isGithubDelegatedTask(query, goal))
62
+ return null;
63
+ return [{
64
+ id: 'platform.github.deferred_worker',
65
+ title: '## GitHub(本任务)',
66
+ body: WORKER_GITHUB,
67
+ priority: 50,
68
+ }];
69
+ }
70
+ return null;
71
+ },
72
+ matchesDeferredTask(ctx) {
73
+ const query = ctx.deferred?.toolQuery ?? ctx.deferred?.goal ?? ctx.userMessagePreview ?? '';
74
+ const goal = ctx.deferred?.goal ?? ctx.userMessagePreview ?? '';
75
+ return isGithubDelegatedTask(query, goal);
76
+ },
77
+ selectDeferredTools(query, goal, catalog, maxTools) {
78
+ if (!isGithubDelegatedTask(query, goal))
79
+ return null;
80
+ return selectGithubDeferredTools(query, goal, catalog, maxTools);
81
+ },
82
+ };
83
+ }
84
+ //# sourceMappingURL=agent-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-prompt.js","sourceRoot":"","sources":["../src/agent-prompt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI7C,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,QAAQ;QAChB,MAAM,EAAE,aAAa,CAAC;KACvB;IACD,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,MAAM,EAAE,OAAO,eAAe,EAAE,MAAM,CAAC;SACxC;KACF;IACD,UAAU,MAAM;QACd,oBAAoB,EAAE;YACpB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,OAAO,YAAY,EAAE,SAAS,EAAE,CAAC;YACzC,SAAS,EAAE,MAAM,CAAC;YAClB,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YAC7C,OAAO,EAAE,MAAM,CAAC;YAChB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,aAAa,EAAE;YACb,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,GAAG,CAAC;SACd,CAAC;QACF,kBAAkB,EAAE,OAAO,YAAY,EAAE,eAAe,CAAC;KAC1D;CACF;AAED,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAK7C,OAAO,QAAQ,SAAS,CAAC;IACvB,UAAU,QAAQ;QAChB,MAAM,EAAE,aAAa,CAAC;KACvB;IACD,UAAU,MAAM,CAAC;QACf,UAAU,QAAQ;YAChB,MAAM,EAAE,OAAO,eAAe,EAAE,MAAM,CAAC;SACxC;KACF;IACD,UAAU,MAAM;QACd,oBAAoB,EAAE;YACpB,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,OAAO,YAAY,EAAE,SAAS,EAAE,CAAC;YACzC,SAAS,EAAE,MAAM,CAAC;YAClB,WAAW,EAAE,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;YAC7C,OAAO,EAAE,MAAM,CAAC;YAChB,GAAG,EAAE,MAAM,CAAC;SACb,CAAC;QACF,aAAa,EAAE;YACb,EAAE,EAAE,MAAM,CAAC;YACX,IAAI,EAAE,MAAM,CAAC;YACb,UAAU,EAAE,MAAM,CAAC;YACnB,OAAO,EAAE,GAAG,CAAC;SACd,CAAC;QACF,kBAAkB,EAAE,OAAO,YAAY,EAAE,eAAe,CAAC;KAC1D;CACF;AAED,cAAc,YAAY,CAAC;AAC3B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC"}
package/lib/index.js CHANGED
@@ -1,15 +1,18 @@
1
1
  /**
2
2
  * GitHub 适配器入口:类型扩展、模型、导出、注册
3
3
  */
4
- import { usePlugin } from 'zhin.js';
4
+ import { usePlugin, registerAgentPromptContributor, unregisterAgentPromptContributor, } from 'zhin.js';
5
+ import { createGithubAgentPromptContributor } from './agent-prompt.js';
5
6
  import { GitHubAdapter } from './adapter.js';
6
7
  import { GhClient } from './gh-client.js';
8
+ import { registerGithubMcp } from './register-github-mcp.js';
7
9
  export * from './types.js';
8
10
  export { GitHubBot, parseMarkdown, toMarkdown } from './bot.js';
9
11
  export { GitHubAdapter } from './adapter.js';
10
12
  export { GhClient } from './gh-client.js';
11
13
  const plugin = usePlugin();
12
14
  const { provide, defineModel, useContext, logger } = plugin;
15
+ registerGithubMcp(plugin);
13
16
  defineModel('github_subscriptions', {
14
17
  id: { type: 'integer', primary: true },
15
18
  repo: { type: 'text', nullable: false },
@@ -37,11 +40,13 @@ provide({
37
40
  name: 'github',
38
41
  description: 'GitHub Adapter — Issues/PRs as chat channels, full repo management via gh CLI',
39
42
  mounted: async (p) => {
43
+ registerAgentPromptContributor(createGithubAgentPromptContributor());
40
44
  const adapter = new GitHubAdapter(p);
41
45
  await adapter.start();
42
46
  return adapter;
43
47
  },
44
48
  dispose: async (adapter) => {
49
+ unregisterAgentPromptContributor('github');
45
50
  await adapter.stop();
46
51
  },
47
52
  });
@@ -84,7 +89,6 @@ useContext('tool', 'github', (toolService, adapter) => {
84
89
  },
85
90
  required: ['action', 'repo'],
86
91
  },
87
- platforms: ['github'],
88
92
  tags: ['github'],
89
93
  execute: async (args, context) => {
90
94
  const gh = await adapter.getUserOrDefaultAPI(context?.platform, context?.senderId);
@@ -108,29 +112,6 @@ useContext('tool', 'github', (toolService, adapter) => {
108
112
  }
109
113
  },
110
114
  },
111
- // --- Fork ---
112
- {
113
- name: 'github_fork',
114
- description: 'Fork 一个 GitHub 仓库(使用你绑定的 GitHub 账号,未绑定则用 Bot 默认账号)',
115
- parameters: {
116
- type: 'object',
117
- properties: {
118
- repo: { type: 'string', description: 'owner/repo (必填)' },
119
- },
120
- required: ['repo'],
121
- },
122
- platforms: ['github'],
123
- tags: ['github'],
124
- execute: async (args, context) => {
125
- const gh = await adapter.getUserOrDefaultAPI(context?.platform, context?.senderId);
126
- if (!gh)
127
- return '❌ 没有可用的 GitHub bot';
128
- const r = await gh.forkRepo(args.repo);
129
- if (!r.ok)
130
- return `❌ ${r.data?.message || JSON.stringify(r.data)}`;
131
- return `🍴 已 Fork ${args.repo} → ${r.data.full_name}\n🔗 ${r.data.html_url}`;
132
- },
133
- },
134
115
  // --- Bind (Device Flow) ---
135
116
  {
136
117
  name: 'github_bind',
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Register @modelcontextprotocol/server-github when a PAT is available.
3
+ */
4
+ import type { Plugin } from 'zhin.js';
5
+ export declare function registerGithubMcp(plugin: Plugin): void;
6
+ //# sourceMappingURL=register-github-mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-github-mcp.d.ts","sourceRoot":"","sources":["../src/register-github-mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAY,MAAM,EAAE,MAAM,SAAS,CAAC;AAyBhD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CA+BtD"}
@@ -0,0 +1,35 @@
1
+ function resolveGithubMcpToken(ai) {
2
+ const fromConfig = ai?.githubMcp?.token?.trim();
3
+ if (fromConfig)
4
+ return fromConfig;
5
+ return (process.env.GITHUB_PERSONAL_ACCESS_TOKEN?.trim() ||
6
+ process.env.GITHUB_TOKEN?.trim() ||
7
+ undefined);
8
+ }
9
+ export function registerGithubMcp(plugin) {
10
+ const { useContext, root, logger } = plugin;
11
+ useContext('ai', (ai) => {
12
+ if (!ai?.isReady?.())
13
+ return;
14
+ const orchestrator = root.inject('agent');
15
+ if (!orchestrator)
16
+ return;
17
+ if (orchestrator.mcps.has('github'))
18
+ return;
19
+ const configService = root.inject('config');
20
+ const appConfig = configService?.getPrimary() || {};
21
+ const token = resolveGithubMcpToken(appConfig.ai);
22
+ if (!token) {
23
+ logger.debug('[MCP] server-github skipped: set GITHUB_PERSONAL_ACCESS_TOKEN or ai.githubMcp.token');
24
+ return;
25
+ }
26
+ return orchestrator.addMcp({
27
+ name: 'github',
28
+ transport: 'stdio',
29
+ command: 'npx',
30
+ args: ['-y', '@modelcontextprotocol/server-github'],
31
+ env: { GITHUB_PERSONAL_ACCESS_TOKEN: token },
32
+ }, {}, 'adapter-github');
33
+ });
34
+ }
35
+ //# sourceMappingURL=register-github-mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-github-mcp.js","sourceRoot":"","sources":["../src/register-github-mcp.ts"],"names":[],"mappings":"AAkBA,SAAS,qBAAqB,CAAC,EAAa;IAC1C,MAAM,UAAU,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAChD,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAClC,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,EAAE;QAChD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE;QAChC,SAAS,CACV,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IAE5C,UAAU,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;YAAE,OAAO;QAE7B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAsC,CAAC;QAC/E,IAAI,CAAC,YAAY;YAAE,OAAO;QAE1B,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO;QAE5C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,SAAS,GAAG,aAAa,EAAE,UAAU,EAAqB,IAAI,EAAE,CAAC;QACvE,MAAM,KAAK,GAAG,qBAAqB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,KAAK,CAAC,qFAAqF,CAAC,CAAC;YACpG,OAAO;QACT,CAAC;QAED,OAAO,YAAY,CAAC,MAAM,CACxB;YACE,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,OAAO;YAClB,OAAO,EAAE,KAAK;YACd,IAAI,EAAE,CAAC,IAAI,EAAE,qCAAqC,CAAC;YACnD,GAAG,EAAE,EAAE,4BAA4B,EAAE,KAAK,EAAE;SAC7C,EACD,EAAE,EACF,gBAAgB,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhin.js/adapter-github",
3
- "version": "0.1.50",
3
+ "version": "0.1.52",
4
4
  "description": "Zhin.js adapter for GitHub (gh CLI) — treat issues/PRs as chat channels, full repo management, webhook notifications",
5
5
  "type": "module",
6
6
  "main": "./lib/index.js",
@@ -41,11 +41,11 @@
41
41
  "license": "MIT",
42
42
  "devDependencies": {
43
43
  "typescript": "^6.0.3",
44
- "zhin.js": "1.0.79"
44
+ "zhin.js": "1.0.81"
45
45
  },
46
46
  "peerDependencies": {
47
- "@zhin.js/http": "1.0.72",
48
- "zhin.js": "1.0.79"
47
+ "@zhin.js/http": "1.0.74",
48
+ "zhin.js": "1.0.81"
49
49
  },
50
50
  "peerDependenciesMeta": {
51
51
  "@zhin.js/http": {
@@ -3,9 +3,9 @@ name: github
3
3
  platforms:
4
4
  - github
5
5
  description: >-
6
- GitHub 全功能适配器技能:通过适配器内置工具完成用户交互操作(Star/Fork/账号绑定/Webhook 订阅/App 安装),
7
- 通过 bash + gh CLI 完成仓库自动化操作(Issue/PR/Release/CI/搜索/文件/Discussion)。
8
- Bot 操作使用 GitHub App 身份,Star/Fork 等用户操作使用个人绑定的 OAuth Token。
6
+ GitHub 全功能适配器技能:内置工具处理 Star/绑定/订阅;MCP server-github 处理 Fork/PR/Issue API;
7
+ bash + gh CLI 覆盖其余仓库自动化。
8
+ Bot 操作使用 GitHub App 身份;Star 等可使用用户 OAuth 绑定。
9
9
  每个 Zhin 实例通过 GH_TOKEN 环境变量注入身份,支持多实例协同。
10
10
  channel ID 格式:owner/repo/issues/N 或 owner/repo/pull/N。
11
11
  keywords:
@@ -53,7 +53,6 @@ tags:
53
53
  tools:
54
54
  - bash
55
55
  - github_star
56
- - github_fork
57
56
  - github_bind
58
57
  - github_unbind
59
58
  - github_whoami
@@ -71,8 +70,9 @@ requires:
71
70
 
72
71
  # GitHub 全功能操作指南
73
72
 
74
- 本技能提供两种操作方式:
73
+ 本技能提供三种操作方式:
75
74
  - **适配器内置工具**(`github_*`):用户交互类操作,具备账号绑定、Device Flow 授权、频道级订阅等适配器专有逻辑
75
+ - **MCP server-github**(`mcp_github_*`):Issue/PR/搜索/Fork 等 GitHub API(需 `GITHUB_PERSONAL_ACCESS_TOKEN` 或 `ai.githubMcp.token`)
76
76
  - **bash + gh CLI**:仓库自动化操作,灵活覆盖 GitHub API 全场景
77
77
 
78
78
  ## 一、适配器内置工具
@@ -93,7 +93,13 @@ requires:
93
93
  | 工具 | 说明 |
94
94
  |------|------|
95
95
  | `github_star` | Star 或取消 Star 一个仓库。优先使用用户绑定的 GitHub 账号,未绑定则降级为 Bot 默认账号 |
96
- | `github_fork` | Fork 一个仓库。优先使用用户绑定的 GitHub 账号,未绑定则降级为 Bot 默认账号 |
96
+
97
+ ### MCP(server-github,单一 PAT)
98
+
99
+ | 工具 | 说明 |
100
+ |------|------|
101
+ | `mcp_github_fork_repository` | Fork 仓库(替代已移除的 `github_fork`) |
102
+ | `mcp_github_create_issue` 等 | Issue/PR/搜索/文件等,见 MCP 工具列表 |
97
103
 
98
104
  ### Webhook 订阅(频道级)
99
105
 
@@ -105,9 +111,10 @@ requires:
105
111
 
106
112
  ### 内置工具执行规则
107
113
 
108
- 1. `github_star` 和 `github_fork` 优先使用用户绑定的 GitHub 账号,未绑定则降级为 Bot 默认账号
109
- 2. 当用户想操作自己的 GitHub 账号时,先引导用户使用 `github_bind` 绑定
110
- 3. Webhook 订阅关联到当前聊天通道,仅在该通道接收事件通知
114
+ 1. `github_star` 优先使用用户绑定的 GitHub 账号,未绑定则降级为 Bot 默认账号
115
+ 2. Fork 与通用 API 使用 `mcp_github_*`(Bot PAT,非 per-user OAuth)
116
+ 3. 当用户想操作自己的 GitHub 账号进行 Star 时,先引导用户使用 `github_bind` 绑定
117
+ 4. Webhook 订阅关联到当前聊天通道,仅在该通道接收事件通知
111
118
 
112
119
  ---
113
120
 
@@ -0,0 +1,100 @@
1
+ import type {
2
+ AgentPromptBuildContext,
3
+ AgentPromptContributor,
4
+ AgentPromptSection,
5
+ } from 'zhin.js';
6
+ import type { AgentTool } from 'zhin.js';
7
+ import { filterTools } from 'zhin.js';
8
+
9
+ function isGithubDelegatedTask(query: string, goal: string): boolean {
10
+ const text = `${query} ${goal}`;
11
+ return /github|gh_|mcp_github|\bissue\b|pull\s*request|\bpr\b/i.test(text);
12
+ }
13
+
14
+ function selectGithubDeferredTools(
15
+ query: string,
16
+ goal: string,
17
+ deferredCatalog: AgentTool[],
18
+ maxTools: number,
19
+ ): AgentTool[] {
20
+ const pool = deferredCatalog.filter(
21
+ t => !t.name.startsWith('mcp_filesystem') && !t.name.startsWith('mcp_icqq_'),
22
+ );
23
+ const pinned: AgentTool[] = [];
24
+ const bash = pool.find(t => t.name === 'bash');
25
+ if (bash) pinned.push(bash);
26
+
27
+ const preferNames = [
28
+ ...pool.filter(t => t.name.startsWith('mcp_github_')).map(t => t.name),
29
+ ...pool.filter(t => t.name.startsWith('github_')).map(t => t.name),
30
+ ];
31
+ for (const name of preferNames) {
32
+ if (pinned.length >= maxTools) break;
33
+ const t = pool.find(x => x.name === name);
34
+ if (t && !pinned.some(p => p.name === name)) pinned.push(t);
35
+ }
36
+
37
+ const extra = filterTools(`${query} ${goal}`, pool, { maxTools, minScore: 0.08 })
38
+ .filter(t => !pinned.some(p => p.name === t.name));
39
+
40
+ const merged = [...pinned];
41
+ for (const t of extra) {
42
+ if (merged.length >= maxTools) break;
43
+ merged.push(t);
44
+ }
45
+ return merged.slice(0, maxTools);
46
+ }
47
+
48
+ const ORCHESTRATOR_GITHUB = [
49
+ 'On GitHub: use run_deferred_task with tool_query "github_" or "mcp_github_" or "gh issue"/"gh pr".',
50
+ 'Discuss issues/PRs in chat context; do not call github_* or mcp_github_* tools on this orchestrator.',
51
+ 'Skip tool_search when the user clearly names a repo, issue number, or PR.',
52
+ ].join('\n');
53
+
54
+ const WORKER_GITHUB = [
55
+ 'Prefer `gh` via bash for repo operations when bash is available.',
56
+ 'Use mcp_github_* or github_* plugin tools for structured API actions.',
57
+ 'Do not use mcp_filesystem_* or unrelated MCP servers to "discover" GitHub.',
58
+ 'Summarize outcomes (issue link, PR state) for the orchestrator.',
59
+ ].map(line => `- ${line}`).join('\n');
60
+
61
+ export function createGithubAgentPromptContributor(): AgentPromptContributor {
62
+ return {
63
+ platform: 'github',
64
+
65
+ async buildSections(ctx: AgentPromptBuildContext): Promise<AgentPromptSection[] | null> {
66
+ if (ctx.slot === 'orchestrator') {
67
+ if (!ctx.toolSearch) return null;
68
+ return [{
69
+ id: 'platform.github.orchestrator',
70
+ title: '## GitHub',
71
+ body: ORCHESTRATOR_GITHUB,
72
+ priority: 50,
73
+ }];
74
+ }
75
+ if (ctx.slot === 'deferred_worker') {
76
+ const query = ctx.deferred?.toolQuery ?? ctx.deferred?.goal ?? '';
77
+ const goal = ctx.deferred?.goal ?? '';
78
+ if (!isGithubDelegatedTask(query, goal)) return null;
79
+ return [{
80
+ id: 'platform.github.deferred_worker',
81
+ title: '## GitHub(本任务)',
82
+ body: WORKER_GITHUB,
83
+ priority: 50,
84
+ }];
85
+ }
86
+ return null;
87
+ },
88
+
89
+ matchesDeferredTask(ctx: AgentPromptBuildContext): boolean {
90
+ const query = ctx.deferred?.toolQuery ?? ctx.deferred?.goal ?? ctx.userMessagePreview ?? '';
91
+ const goal = ctx.deferred?.goal ?? ctx.userMessagePreview ?? '';
92
+ return isGithubDelegatedTask(query, goal);
93
+ },
94
+
95
+ selectDeferredTools(query, goal, catalog, maxTools) {
96
+ if (!isGithubDelegatedTask(query, goal)) return null;
97
+ return selectGithubDeferredTools(query, goal, catalog, maxTools);
98
+ },
99
+ };
100
+ }
package/src/index.ts CHANGED
@@ -1,9 +1,20 @@
1
1
  /**
2
2
  * GitHub 适配器入口:类型扩展、模型、导出、注册
3
3
  */
4
- import { usePlugin, type Plugin, type Context, type ToolFeature, type Tool, type ToolContext } from 'zhin.js';
4
+ import {
5
+ usePlugin,
6
+ type Plugin,
7
+ type Context,
8
+ type ToolFeature,
9
+ type Tool,
10
+ type ToolContext,
11
+ registerAgentPromptContributor,
12
+ unregisterAgentPromptContributor,
13
+ } from 'zhin.js';
14
+ import { createGithubAgentPromptContributor } from './agent-prompt.js';
5
15
  import { GitHubAdapter } from './adapter.js';
6
16
  import { GhClient } from './gh-client.js';
17
+ import { registerGithubMcp } from './register-github-mcp.js';
7
18
  import type { EventType } from './types.js';
8
19
 
9
20
  declare module 'zhin.js' {
@@ -43,6 +54,8 @@ export { GhClient } from './gh-client.js';
43
54
  const plugin = usePlugin();
44
55
  const { provide, defineModel, useContext, logger } = plugin;
45
56
 
57
+ registerGithubMcp(plugin);
58
+
46
59
  defineModel('github_subscriptions', {
47
60
  id: { type: 'integer', primary: true },
48
61
  repo: { type: 'text', nullable: false },
@@ -73,11 +86,13 @@ provide({
73
86
  name: 'github',
74
87
  description: 'GitHub Adapter — Issues/PRs as chat channels, full repo management via gh CLI',
75
88
  mounted: async (p: Plugin) => {
89
+ registerAgentPromptContributor(createGithubAgentPromptContributor());
76
90
  const adapter = new GitHubAdapter(p);
77
91
  await adapter.start();
78
92
  return adapter;
79
93
  },
80
94
  dispose: async (adapter: GitHubAdapter) => {
95
+ unregisterAgentPromptContributor('github');
81
96
  await adapter.stop();
82
97
  },
83
98
  } as Context<'github'>);
@@ -121,7 +136,6 @@ useContext('tool', 'github', (toolService: ToolFeature, adapter: GitHubAdapter)
121
136
  },
122
137
  required: ['action', 'repo'],
123
138
  },
124
- platforms: ['github'],
125
139
  tags: ['github'],
126
140
  execute: async (args: Record<string, any>, context?: ToolContext) => {
127
141
  const gh = await adapter.getUserOrDefaultAPI(context?.platform, context?.senderId);
@@ -144,27 +158,6 @@ useContext('tool', 'github', (toolService: ToolFeature, adapter: GitHubAdapter)
144
158
  }
145
159
  },
146
160
  },
147
- // --- Fork ---
148
- {
149
- name: 'github_fork',
150
- description: 'Fork 一个 GitHub 仓库(使用你绑定的 GitHub 账号,未绑定则用 Bot 默认账号)',
151
- parameters: {
152
- type: 'object' as const,
153
- properties: {
154
- repo: { type: 'string' as const, description: 'owner/repo (必填)' },
155
- },
156
- required: ['repo'],
157
- },
158
- platforms: ['github'],
159
- tags: ['github'],
160
- execute: async (args: Record<string, any>, context?: ToolContext) => {
161
- const gh = await adapter.getUserOrDefaultAPI(context?.platform, context?.senderId);
162
- if (!gh) return '❌ 没有可用的 GitHub bot';
163
- const r = await gh.forkRepo(args.repo);
164
- if (!r.ok) return `❌ ${r.data?.message || JSON.stringify(r.data)}`;
165
- return `🍴 已 Fork ${args.repo} → ${r.data.full_name}\n🔗 ${r.data.html_url}`;
166
- },
167
- },
168
161
  // --- Bind (Device Flow) ---
169
162
  {
170
163
  name: 'github_bind',
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Register @modelcontextprotocol/server-github when a PAT is available.
3
+ */
4
+ import type { AIConfig, Plugin } from 'zhin.js';
5
+
6
+ interface GithubMcpServerEntry {
7
+ name: string;
8
+ transport: 'stdio';
9
+ command: string;
10
+ args: string[];
11
+ env: Record<string, string>;
12
+ }
13
+
14
+ interface AgentOrchestratorLike {
15
+ mcps: { has(name: string): boolean };
16
+ addMcp(config: GithubMcpServerEntry, scope?: object, source?: string): () => void;
17
+ }
18
+
19
+ function resolveGithubMcpToken(ai?: AIConfig): string | undefined {
20
+ const fromConfig = ai?.githubMcp?.token?.trim();
21
+ if (fromConfig) return fromConfig;
22
+ return (
23
+ process.env.GITHUB_PERSONAL_ACCESS_TOKEN?.trim() ||
24
+ process.env.GITHUB_TOKEN?.trim() ||
25
+ undefined
26
+ );
27
+ }
28
+
29
+ export function registerGithubMcp(plugin: Plugin): void {
30
+ const { useContext, root, logger } = plugin;
31
+
32
+ useContext('ai', (ai) => {
33
+ if (!ai?.isReady?.()) return;
34
+
35
+ const orchestrator = root.inject('agent') as AgentOrchestratorLike | undefined;
36
+ if (!orchestrator) return;
37
+
38
+ if (orchestrator.mcps.has('github')) return;
39
+
40
+ const configService = root.inject('config');
41
+ const appConfig = configService?.getPrimary<{ ai?: AIConfig }>() || {};
42
+ const token = resolveGithubMcpToken(appConfig.ai);
43
+ if (!token) {
44
+ logger.debug('[MCP] server-github skipped: set GITHUB_PERSONAL_ACCESS_TOKEN or ai.githubMcp.token');
45
+ return;
46
+ }
47
+
48
+ return orchestrator.addMcp(
49
+ {
50
+ name: 'github',
51
+ transport: 'stdio',
52
+ command: 'npx',
53
+ args: ['-y', '@modelcontextprotocol/server-github'],
54
+ env: { GITHUB_PERSONAL_ACCESS_TOKEN: token },
55
+ },
56
+ {},
57
+ 'adapter-github',
58
+ );
59
+ });
60
+ }