跳到正文
cccskills
免费在 GitHub 公开

scepticagent-architecture

ScepticAgent internal architecture reference. Use whenever the user asks how the extension works, wants to add a new AI provider, add a new highlight category, debug communication between components, understand the agent loop or streaming, or work with provider routing and the Gemini CORS proxy.

中文简介正在准备中。当前显示原文说明。

集成工具OpenAIGemini
查看安装方法

包含的文件(1)

  • SKILL.md4.4 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Communication flow

Side Panel (app.js)
  │  chrome.runtime.connect("agent") — one port per request
  ▼
Service Worker (background.js)
  │  fetch() to provider API
  ▼
AI Provider (Anthropic / OpenAI / Gemini)

Two parallel port connections fire on page open via Promise.all:

  1. streamViaPort("analyze") — full analysis with agent loop
  2. quickHighlightPage() — fast highlight scan

Port message types

MessageMeaning
{ type: "status", message }Progress label shown in UI
{ type: "tool_call", name, label }Tool being invoked
{ type: "text_delta", text }Streamed text chunk
{ type: "highlight_item", highlight, index }One highlight, emitted in real-time
{ type: "highlights_result", summary, categorySummaries }Final highlights metadata
{ type: "done" }Stream complete
{ type: "error", message }Error — stops streaming

Agent loop (Claude only)

runAgentLoop / runHighlightsAgentLoop — up to 12 iterations (4 for highlights). Stop reasons:

  • end_turn → break
  • pause_turn → continue (server-side web_search still running)
  • tool_use → run fetch_url, re-submit with results

Tools: web_search_20250305 (server-side, Anthropic-hosted), fetch_url (client-side, fetchUrl() in background.js).

Streaming parser

parseAgentStream(response, port, onTextDelta?) reads the Anthropic SSE stream. Optional onTextDelta callback intercepts text chunks — used by highlights to extract JSON objects in real-time via extractCompleteHighlights().

Real-time highlight extraction

extractCompleteHighlights(buffer, fromPos) — brace-depth character scanner that finds complete {"phrase":...} JSON objects in a mid-stream buffer without waiting for the full response. Returns { highlights, nextPos }.

Provider routing

getProviderConfig() reads provider, ${p}Key, ${p}Model from chrome.storage.local.

  • "anthropic" → full agent loop with tools
  • "openai" → runOpenAIStream — SSE streaming, no tools
  • "gemini" → runGeminiStream + geminiProxyFetch — non-streaming, proxied through content script

Gemini CORS proxy

Service workers send Origin: chrome-extension://[id] which Google's API rejects. Fix: geminiProxyFetch() sends the request to the content script via chrome.tabs.sendMessage. The content script fetches from the page's http/https origin, which Google accepts. Use Content-Type: text/plain + key as URL query param to avoid CORS preflight (simple request).

Settings storage keys

KeyDescription
provider"anthropic" / "openai" / "gemini"
anthropicKey / openaiKey / geminiKeyAPI keys
anthropicModel / openaiModel / geminiModelSelected model
apiKeyLegacy Anthropic key (still read for backwards compat)

Adding a new provider — checklist

  • Add const XXX_API_BASE constant in background.js
  • Add to getProviderConfig() key/model maps
  • Implement runXxxStream(port, apiKey, model, systemText, messages, signal)
  • Branch in handleAnalyze, handleChat, handleHighlights
  • Add provider tab to options/index.html and logic to options/app.js
  • Add API domain to host_permissions in manifest.json
  • Update CLAUDE.md and README.md

Adding a new highlight category — checklist

  • Add to LABELS object and add .ra-hl-{category} CSS rule in content.js
  • Add to CAT_META in sidepanel/app.js
  • Add .scan-pill.{cat}, .hl-dot.{cat}, .hl-item-dot.{cat}, .summary-bullet-{cat} in sidepanel/style.css
  • Add scan pill and legend entry in sidepanel/index.html
  • Add category description in buildHighlightsPrompt() in background.js
  • Update CLAUDE.md and README.md

Known limitations

  • Gemini: no streaming (generateContent only), no tool use, no real URLs in source_url
  • OpenAI: no tool use, single-turn only
  • Highlights agent loop: Claude only — non-Claude providers use handleHighlightsSimple
  • Page content: truncated to 8000–10000 chars before sending to AI

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Expert guidelines for Chrome extension development with Manifest V3, covering security, performance, and best practices

中文简介正在准备中。当前显示原文说明。

Maros112358/scepticagent22026年3月22日 更新

Use this skill when building applications with Gemini models, Gemini API, working with multimodal content (text, images, audio, video), implementing function calling, using structured outputs, or needing current model specifications. Covers SDK usage (google-genai for Python, @google/genai for JavaScript/TypeScript, com.google.genai:google-genai for Java, google.golang.org/genai for Go), model selection, and API capabilities.

中文简介正在准备中。当前显示原文说明。

Maros112358/scepticagent22026年3月22日 更新

ScepticAgent AI prompt reference. Use whenever the user asks about the prompts, wants to change analysis behaviour, modify what the AI looks for, adjust highlight categories or scoring, understand what instructions are sent to the AI, or tune the output format of analysis or highlights.

中文简介正在准备中。当前显示原文说明。

Maros112358/scepticagent22026年3月22日 更新

ScepticAgent packaging and Chrome Web Store publishing workflow. Use whenever the user wants to build the zip, package the extension, publish or submit to the Chrome Web Store, update the store listing, or deal with manifest/icon/permission requirements for publishing.

中文简介正在准备中。当前显示原文说明。

Maros112358/scepticagent22026年3月22日 更新

ScepticAgent UI and styles reference. Use whenever the user wants to change the side panel UI, modify highlight colours, update the markdown renderer, work with CSS architecture, add or change category colours, or understand how the sidepanel renders analysis output.

中文简介正在准备中。当前显示原文说明。

Maros112358/scepticagent22026年3月22日 更新

Searches multiple web sources, synthesizes findings, and produces cited research reports using delegated subagents. Use when the user asks to research a topic online, search the web, look something up, find current information, compare options, or produce a research report.

中文简介正在准备中。当前显示原文说明。

Maros112358/scepticagent22026年3月22日 更新

查看 Maros112358 的全部技能

报告此技能的问题