惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
J
Java Code Geeks
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
Docker
腾讯CDC
The GitHub Blog
The GitHub Blog
大猫的无限游戏
大猫的无限游戏
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美
T
The Blog of Author Tim Ferriss
Vercel News
Vercel News
P
Proofpoint News Feed
雷峰网
雷峰网
博客园_首页
B
Blog RSS Feed
Microsoft Azure Blog
Microsoft Azure Blog
爱范儿
爱范儿
V
V2EX
F
Fortinet All Blogs
酷 壳 – CoolShell
酷 壳 – CoolShell
MyScale Blog
MyScale Blog
S
SegmentFault 最新的问题

Recent Commits to openclaw:main

test: merge chat side-result checks · openclaw/openclaw@ddd2c2a test: merge cron history checks · openclaw/openclaw@f7eb746 test: merge responsive navigation shell checks · openclaw/openclaw@c2e4b47 docs(changelog): add codex oauth fixes · openclaw/openclaw@628e6cd test: merge navigation routing cases · openclaw/openclaw@5d8cecb Tests: mock channel registry bundled fallback · openclaw/openclaw@2b08233 Secrets: avoid broad web search discovery for single plugin config · openclaw/openclaw@a464f59 test: merge config view browser checks · openclaw/openclaw@20cf511 fix(status): align oauth health with runtime · openclaw/openclaw@eed7116 feat: add macOS screen snapshots for monitor preview (#67954) thanks … · openclaw/openclaw@f377db1 fix: report shared auth scopes in hello-ok (#67810) thanks @BunsDev · openclaw/openclaw@0b6c39b Auto-reply: avoid eager bundled route fallback · openclaw/openclaw@3ea1bf4 Tests: narrow session binding contract setup · openclaw/openclaw@54e4e16 fix(macOS): enable undo/redo in webchat composer text input (#34962) · openclaw/openclaw@00951dc Tests: speed up channel setup promotion · openclaw/openclaw@82b529a Docs: refresh agent instructions · openclaw/openclaw@5775fe2 fix(auth): serialize OAuth refresh across agents to fix #26322 (#67876) · openclaw/openclaw@8e79080 test: allow ollama public surface boundary test · openclaw/openclaw@7d4f1a6 Docs: add test performance guardrails · openclaw/openclaw@89706d3 Tests: restore context-engine usage proof · openclaw/openclaw@e4c4f95 Tests: slim context engine runtime coverage · openclaw/openclaw@74c198f ci: retry failed custom checkouts · openclaw/openclaw@0ee5baf test: trim duplicate provider auth onboarding cases · openclaw/openclaw@1ffc02e matrix: fix sessions_spawn --thread subagent session spawning (#67643) · openclaw/openclaw@1ce2596 test: reduce auth choice fixture churn · openclaw/openclaw@857b9cd test: mock health status config boundaries · openclaw/openclaw@9d5ab4a test: mock onboard config io boundary · openclaw/openclaw@299694d test: mock legacy state plugin boundaries · openclaw/openclaw@2713089 test: mock channel install boundaries · openclaw/openclaw@b945248 test: mock doctor preview channel boundaries · openclaw/openclaw@b1a3ad4
fix(copilot): refresh live discovery config · openclaw/op...
vincentkoc · 2026-04-23 · via Recent Commits to openclaw:main
Original file line numberDiff line numberDiff line change

@@ -110,6 +110,7 @@ Docs: https://docs.openclaw.ai

110110

- Memory/LanceDB: keep auto-recall and auto-capture hooks wired when those settings start disabled, so turning them on in live config starts recall and capture without waiting for a restart. Thanks @vincentkoc.

111111

- Skill Workshop: keep the tool plus `before_prompt_build` / `agent_end` hooks wired while the plugin is disabled at startup, so turning the plugin back on in live config starts guidance and capture without waiting for a restart. Thanks @vincentkoc.

112112

- Active Memory: stop reviving removed live `active-memory` config from startup snapshots, so removing the plugin entry turns the hook off immediately instead of waiting for a restart. Thanks @vincentkoc.

113+

- GitHub Copilot: re-read plugin discovery config from the live runtime snapshot, so toggling `plugins.entries.github-copilot.config.discovery.enabled` takes effect without a restart. Thanks @vincentkoc.

113114

- Agents/subagents: drop bare `NO_REPLY` from the parent turn when the session still has pending spawned children, so direct-conversation surfaces such as Telegram DMs no longer rewrite the sentinel into visible fallback chatter while waiting for the child completion event. (#69942) Thanks @neeravmakwana.

114115

- Plugins/install: keep bundled plugin dependencies off npm install while repairing them when plugins activate from a packaged install, including Feishu/Lark, Browser, and direct bundled channel setup-entry loads.

115116

- CLI/channels: skip and cache bundled channel plugin, setup, and secrets load failures during read-only discovery, so one broken unused bundled channel cannot crash `openclaw status` or bootstrap secret scans.

Original file line numberDiff line numberDiff line change

@@ -61,7 +61,17 @@ describe("github-copilot plugin", () => {

6161

const provider = registerProviderWithPluginConfig({ discovery: { enabled: false } });

6262
6363

const result = await provider.catalog.run({

64-

config: {},

64+

config: {

65+

plugins: {

66+

entries: {

67+

"github-copilot": {

68+

config: {

69+

discovery: { enabled: false },

70+

},

71+

},

72+

},

73+

},

74+

},

6575

agentDir: "/tmp/agent",

6676

env: { GH_TOKEN: "gh_test_token" },

6777

resolveProviderApiKey: () => ({ apiKey: "gh_test_token" }),

@@ -70,4 +80,40 @@ describe("github-copilot plugin", () => {

7080

expect(result).toBeNull();

7181

expect(resolveCopilotApiTokenMock).not.toHaveBeenCalled();

7282

});

83+
84+

it("uses live plugin config to re-enable discovery after startup disable", async () => {

85+

resolveCopilotApiTokenMock.mockResolvedValueOnce({

86+

token: "copilot_api_token",

87+

baseUrl: "https://api.githubcopilot.live",

88+

});

89+

const provider = registerProviderWithPluginConfig({ discovery: { enabled: false } });

90+
91+

const result = await provider.catalog.run({

92+

config: {

93+

plugins: {

94+

entries: {

95+

"github-copilot": {

96+

config: {

97+

discovery: { enabled: true },

98+

},

99+

},

100+

},

101+

},

102+

},

103+

agentDir: "/tmp/agent",

104+

env: { GH_TOKEN: "gh_test_token" },

105+

resolveProviderApiKey: () => ({ apiKey: "gh_test_token" }),

106+

} as never);

107+
108+

expect(resolveCopilotApiTokenMock).toHaveBeenCalledWith({

109+

githubToken: "gh_test_token",

110+

env: { GH_TOKEN: "gh_test_token" },

111+

});

112+

expect(result).toEqual({

113+

provider: {

114+

baseUrl: "https://api.githubcopilot.live",

115+

models: [],

116+

},

117+

});

118+

});

73119

});

Original file line numberDiff line numberDiff line change

@@ -1,3 +1,7 @@

1+

import {

2+

resolvePluginConfigObject,

3+

type OpenClawConfig,

4+

} from "openclaw/plugin-sdk/config-runtime";

15

import { definePluginEntry, type ProviderAuthContext } from "openclaw/plugin-sdk/plugin-entry";

26

import { ensureAuthProfileStore } from "openclaw/plugin-sdk/provider-auth";

37

import { normalizeOptionalLowercaseString } from "openclaw/plugin-sdk/text-runtime";

@@ -24,7 +28,15 @@ export default definePluginEntry({

2428

name: "GitHub Copilot Provider",

2529

description: "Bundled GitHub Copilot provider plugin",

2630

register(api) {

27-

const pluginConfig = (api.pluginConfig ?? {}) as GithubCopilotPluginConfig;

31+

const startupPluginConfig = (api.pluginConfig ?? {}) as GithubCopilotPluginConfig;

32+
33+

function resolveCurrentPluginConfig(config?: OpenClawConfig): GithubCopilotPluginConfig {

34+

const runtimePluginConfig = resolvePluginConfigObject(config, "github-copilot");

35+

if (runtimePluginConfig) {

36+

return runtimePluginConfig as GithubCopilotPluginConfig;

37+

}

38+

return config ? {} : startupPluginConfig;

39+

}

2840
2941

async function runGitHubCopilotAuth(ctx: ProviderAuthContext) {

3042

const { githubCopilotLoginCommand } = await loadGithubCopilotRuntime();

@@ -100,6 +112,7 @@ export default definePluginEntry({

100112

catalog: {

101113

order: "late",

102114

run: async (ctx) => {

115+

const pluginConfig = resolveCurrentPluginConfig(ctx.config);

103116

const discoveryEnabled =

104117

pluginConfig.discovery?.enabled ?? ctx.config?.models?.copilotDiscovery?.enabled;

105118

if (discoveryEnabled === false) {