🦄🦄🦄AI赋能股票分析:AI加持的股票分析/选股工具。股票行情获取,AI热点资讯分析,AI资金/财务分析,涨跌报警推送。支持A股,港股,美股。支持市场整体/个股情绪分析,AI辅助选股等。数据全部保留在本地。支持DeepSeek,OpenAI, Ollama,LMStudio,AnythingLLM,硅基流动,火山方舟,阿里云百炼等平台或模型。
This report summarizes scanner evidence for ArvinLovegood/go-stock, a Go project with 8,010 GitHub stars. SynthScan examined 221,106 lines of code across 537 source files, recording 333 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 1.5 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.
Can maintainers explain intent, assumptions, and trade-offs? 321 finding(s).
Are imports declared and package/API names verified? 12 finding(s).
Are wrappers, guards, and repeated structures necessary? 191 finding(s).
Which changes need focused human review? 333 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 333 distinct pattern matches across 5 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 164 | export function ExportTradingRecordTemplate():Promise<string>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 170 | export function FetchAndSaveMarketStatistic():Promise<void>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 180 | export function GenerateMorningStrategyNow(arg1:string,arg2:number,arg3:number,arg4:string):Promise<string>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 242 | export function GetBKFundFlowTopListByDate(arg1:string,arg2:number):Promise<Array<models.BKFundFlow>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 244 | export function GetBinanceFundingRateHistory(arg1:string,arg2:number):Promise<Array<data.BinanceFundingRate>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 246 | export function GetBinanceFuturesDerivatives(arg1:string,arg2:string,arg3:number):Promise<data.BinanceDerivativesBundle> | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 256 | export function GetBinanceOpenInterestHist(arg1:string,arg2:string,arg3:number):Promise<Array<data.BinanceOpenInterestHi | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 258 | export function GetBitgetFundingRateHistory(arg1:string,arg2:number):Promise<Array<data.BitgetFundingRate>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 260 | export function GetBitgetFuturesDerivatives(arg1:string):Promise<data.BitgetDerivativesBundle>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 274 | export function GetConceptFundFlowListByDate(arg1:string,arg2:string):Promise<Array<models.ConceptFundFlowPoint>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 276 | export function GetConceptFundFlowTopList(arg1:number):Promise<Array<models.ConceptFundFlow>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 278 | export function GetConceptFundFlowTopListByDate(arg1:string,arg2:number):Promise<Array<models.ConceptFundFlow>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 442 | export function GetProfileLearnAiConfigId():Promise<number>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 446 | export function GetPromptBacktestTaskDetail(arg1:number):Promise<agent.PromptBacktestTaskDetail>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 448 | export function GetPromptBacktestTaskList():Promise<Array<models.PromptBacktestTask>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 450 | export function GetPromptTemplateBacktestDetail(arg1:number,arg2:number):Promise<agent.TemplateStat>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 452 | export function GetPromptTemplateBacktestStats(arg1:number):Promise<Array<agent.TemplateStat>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 458 | export function GetRecentDaysMarketStatistic(arg1:number):Promise<Array<models.MarketStatistic>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 460 | export function GetRecommendBacktestStats(arg1:number):Promise<agent.BacktestStats>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 484 | export function GetStockConceptsByStockCode(arg1:string):Promise<Array<data.ConceptStock>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 488 | export function GetStockEastMoneyKLinePage(arg1:string,arg2:string,arg3:string,arg4:number,arg5:string):Promise<any>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 492 | export function GetStockKLinePageWithFallback(arg1:string,arg2:string,arg3:string,arg4:number,arg5:string,arg6:string):P | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 494 | export function GetStockKLineWithFallback(arg1:string,arg2:string,arg3:string,arg4:number,arg5:string):Promise<data.KLin | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 498 | export function GetStockMinutePriceLineData(arg1:string,arg2:string):Promise<Record<string, any>>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 614 | export function ListRecommendBacktestByPrompt(arg1:number,arg2:number,arg3:string,arg4:string,arg5:number):Promise<agent | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 616 | export function ListRecommendBacktestBySkill(arg1:number,arg2:number,arg3:string,arg4:number):Promise<agent.BacktestPage | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 618 | export function ListRecommendBacktestByTemplate(arg1:number,arg2:number,arg3:number,arg4:number):Promise<agent.BacktestP | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 720 | export function SendDingDingMessageByType(arg1:string,arg2:string,arg3:number):Promise<string>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 726 | export function SetAiAssistantSessionPinned(arg1:string,arg2:boolean):Promise<void>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 732 | export function SetLongTermMemoryAiConfigId(arg1:number):Promise<void>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 736 | export function SetProfileLearnAiConfigId(arg1:number):Promise<void>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 788 | export function UpdateAiRecommendStocksAlert(arg1:number,arg2:boolean):Promise<string>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 796 | export function UpdateDailyOperationPlanAlert(arg1:number,arg2:boolean):Promise<string>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 798 | export function UpdateDailyOperationPlanStatus(arg1:number,arg2:string):Promise<string>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.d.ts | 800 | export function UpdateFilesystemSkillDescription(arg1:string,arg2:string):Promise<string>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 12 | export function AbortChatWithAgentBySession(arg1:string):Promise<void>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 16 | export function AbortSummaryStockNewsByEvent(arg1:string):Promise<void>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 40 | export function AnalyzeSentimentWithFreqWeight(arg1:string):Promise<Record<string, any>>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 42 | export function BatchDeleteAIResponseResult(arg1:Array<number>):Promise<string>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 194 | export function GetAiRecommendStocksTodayStats(arg1:string,arg2:number):Promise<models.AiRecommendStocksTodayStatsData>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 214 | export function GetAllKBVectorizingStatuses():Promise<Record<string, agent.KBVectorizingStatus>>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 222 | export function GetAllStockChangesWithPaging(arg1:number):Promise<data.StockChangesResponse>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 296 | export function GetDailyOperationPlanByID(arg1:number):Promise<models.DailyOperationPlan>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 298 | export function GetDailyOperationPlanList(arg1:models.DailyOperationPlanQuery):Promise<models.DailyOperationPlanPageData | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 336 | export function GetHistoryTdxMinuteTimeData(arg1:string,arg2:string):Promise<data.TdxMinuteTimeDataBundle>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 338 | export function GetHistoryTdxTransactionData(arg1:string,arg2:string):Promise<any>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 376 | export function GetLongTermMemoryAiConfigId():Promise<number>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 390 | export function GetMarketSignalScanStatus():Promise<data.MarketSignalScanProgress>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 510 | export function GetTdxCompanyCategoryContent(arg1:string,arg2:string):Promise<data.TdxCompanyInfoSection>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 512 | export function GetTdxCompanyCategoryList(arg1:string):Promise<any>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 536 | export function GetTradingRecordStatistics():Promise<data.TradingRecordStatistics>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 558 | export function GlobalStockIndexesReadable():Promise<string>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 574 | export function ImportTradingRecordsFromExcel():Promise<data.TradingRecordImportResult>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 646 | export function RefreshAllTdxTransactionData(arg1:string):Promise<any>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 648 | export function RefreshHistoryTdxTransactionData(arg1:string,arg2:string):Promise<any>; | CODE |
| LOW | frontend/wailsjs/go/main/App.d.ts | 698 | export function SaveStockChangesToHistory(arg1:Array<number>):Promise<string>; | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.js | 469 | export function GetBKFundFlowTopListByDate(arg1, arg2) { | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.js | 473 | export function GetBinanceFundingRateHistory(arg1, arg2) { | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.js | 477 | export function GetBinanceFuturesDerivatives(arg1, arg2, arg3) { | CODE |
| LOW⚡ | frontend/wailsjs/go/main/App.js | 497 | export function GetBinanceOpenInterestHist(arg1, arg2, arg3) { | CODE |
| 131 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app_darwin.go | 41 | // 应用启动时自动创建已启用的定时任务 | COMMENT |
| LOW | app_common.go | 461 | // - 将前端已检索到的统一命中片段(hitsJSON)注入为系统提示词(sysPromptOverride), | COMMENT |
| LOW | README.md | 321 | - 技能管理界面:导入 ZIP 技能包、在线编辑所有文件、新建/删除文件、删除技能 | COMMENT |
| LOW | README.md | 341 | ### 2025.08.09 添加AI智能体聊天功能 | COMMENT |
| LOW | README.md | 361 | ### 2025.05.07 优化分时图的展示 | COMMENT |
| LOW | app.go | 201 | result["maxDevices"] = respData.Data.MaxDevices | COMMENT |
| LOW | app.go | 901 | time.Sleep(2 * time.Second) | COMMENT |
| LOW | app.go | 1201 | }) | COMMENT |
| LOW | app.go | 1301 | //for _, stock := range *stockBasics { | COMMENT |
| LOW | app.go | 1321 | Get("http://8.134.249.145:18080/go-stock/stock_base_info_hk.json") | COMMENT |
| LOW | app.go | 1361 | // BKCode: stock.BKCode, | COMMENT |
| LOW | app.go | 2561 | // } | COMMENT |
| LOW | app.go | 4301 | } | COMMENT |
| LOW | app.go | 4421 | // 参数: | COMMENT |
| LOW | app.go | 4501 | // DeleteTradingRecord 删除交易记录 | COMMENT |
| LOW | main.go | 121 | COMMENT | |
| LOW | main.go | 141 | // runtime.EventsEmit(app.ctx, "showSearch", 1) | COMMENT |
| LOW | main.go | 481 | if count > 0 { | COMMENT |
| LOW | main.go | 501 | // stock.ListDate = convertor.ToString(item[9]) | COMMENT |
| LOW | frontend/wailsjs/runtime/runtime.d.ts | 101 | // *Windows only* | COMMENT |
| LOW | frontend/src/App.vue | 1401 | // e.target.innerHTML = '取消全屏' | COMMENT |
| LOW | frontend/src/components/moneyTrend.vue | 261 | lineStyle: { | COMMENT |
| LOW | frontend/src/components/moneyTrend.vue | 281 | // data: [ | COMMENT |
| LOW | frontend/src/components/allStockInfoList.vue | 101 | // stockName: row.SECURITY_NAME_ABBR, | COMMENT |
| LOW | frontend/src/components/allStockInfoList.vue | 121 | // width: 100, | COMMENT |
| LOW | frontend/src/components/allStockInfoList.vue | 141 | // }, | COMMENT |
| LOW | frontend/src/components/allStockInfoList.vue | 161 | // render(row) { | COMMENT |
| LOW | frontend/src/components/cron-task-manager.vue | 1101 | default: () => [ | COMMENT |
| LOW | frontend/src/components/stock.vue | 1641 | // | COMMENT |
| LOW | frontend/src/components/stockSparkLine.vue | 81 | }, | COMMENT |
| LOW | backend/apppath/apppath.go | 1 | // Package apppath 统一解析运行时可写目录(数据库、日志、外置配置文件)。 | COMMENT |
| LOW | backend/util/html_to_markdown_test.go | 1 | package util | COMMENT |
| LOW | backend/agent/agent_run.go | 41 | } | COMMENT |
| LOW | backend/agent/knowledge_base.go | 1 | package agent | COMMENT |
| LOW | backend/agent/knowledge_base.go | 341 | } | COMMENT |
| LOW | backend/agent/long_term_memory_tool.go | 1 | package agent | COMMENT |
| LOW | backend/agent/knowledge_base_api.go | 161 | return AddDocumentToKB(kbName, content, source, nil) | COMMENT |
| LOW | backend/agent/knowledge_base_tool.go | 1 | package agent | COMMENT |
| LOW | backend/agent/knowledge_base_tool.go | 81 | COMMENT | |
| LOW | backend/agent/knowledge_base_tool.go | 141 | COMMENT | |
| LOW | backend/agent/agent_feedback_api.go | 1 | package agent | COMMENT |
| LOW | backend/agent/llm_summary.go | 41 | // 若父 ctx 已接近/超过其自身 deadline,WithTimeout 会立即失效导致频繁降级。 | COMMENT |
| LOW | backend/agent/template_backtest.go | 1 | package agent | COMMENT |
| LOW | backend/agent/auto_recommend_saver.go | 1 | package agent | COMMENT |
| LOW | backend/agent/knowledge_base_unified.go | 1 | package agent | COMMENT |
| LOW | backend/agent/knowledge_base_unified.go | 161 | if len(hits) > topK { | COMMENT |
| LOW | backend/agent/prompt_backtest_engine.go | 1 | package agent | COMMENT |
| LOW | backend/agent/skill_backend.go | 21 | // frontmatter 解析失败都会让 List/Get 返回错误。该错误会经由 skill 工具的 Info() | COMMENT |
| LOW | backend/agent/recommend_backtest.go | 1 | package agent | COMMENT |
| LOW | backend/agent/knowledge_graph.go | 1 | package agent | COMMENT |
| LOW | backend/agent/knowledge_graph.go | 121 | 返回格式(严格 JSON,不要 markdown 代码块): | COMMENT |
| LOW | backend/agent/stock_basic_info_kb.go | 1 | package agent | COMMENT |
| LOW | backend/agent/builtin_models.go | 1 | package agent | COMMENT |
| LOW | backend/agent/builtin_models.go | 21 | // | COMMENT |
| LOW | backend/agent/web_search_tool.go | 1 | package agent | COMMENT |
| LOW | backend/agent/user_profile_api.go | 21 | // user_profile_api.go — 用户画像 Wails API(P1)。 | COMMENT |
| LOW | backend/agent/agent.go | 341 | // | COMMENT |
| LOW | backend/agent/agent.go | 501 | return resp, err | COMMENT |
| LOW | backend/agent/agent.go | 521 | // 解析(ContextWindow 字段 > 内置表 > MaxTokens 兜底 > 默认 64000)。 | COMMENT |
| LOW | backend/agent/agent.go | 941 | // maybeGetMCPTools 决定并加载外部 MCP 工具。 | COMMENT |
| 68 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ai-assistant-web/static/assets/index.js | 52 | `)]),K("placeholder",` | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 120 | `,[zn()]),K("placeholder",` | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 130 | `)])])]),Fu="1.6s",$v={strokeWidth:{type:Number,default:28},stroke:{type:String,default:void 0},scale:{type:Number,defa | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 711 | `)])])]),LU=Ee({name:"InternalSelection",props:Object.assign(Object.assign({},Ge.props),{clsPrefix:{type:String,require | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 807 | `),W("&:-webkit-autofill ~",[K("placeholder","display: none;")])]),ae("round",[QA("textarea","border-radius: calc(var(- | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 819 | `)]),ae("textarea",[K("placeholder","overflow: visible;")]),QA("autosize","width: 100%;"),ae("autosize",[K("textarea-el | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 844 | `,[W("&[type=password]::-ms-reveal","display: none;"),W("+",[K("placeholder",` | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 847 | `)])]),QA("textarea",[K("placeholder","white-space: nowrap;")]),K("eye",` | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 899 | `),K("placeholder","color: var(--n-placeholder-color-disabled);"),K("separator","color: var(--n-text-color-disabled);", | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 953 | `,[K("placeholder",[re("base-icon",` | CODE |
| LOW | ai-assistant-web/static/assets/index.js | 992 | `)}else{const{value:Xe}=u;Xe&&(O?Xe.textContent=O:Xe.innerHTML=" ")}}function No(){he()}const qn=G({top:"0"});funct | CODE |
| LOW | backend/agent/tools/data_tools_wrapper_test.go | 66 | args := `{"modelName":"ai-fake-name","stockCode":"600519.SH","stockName":"贵州茅台","rating":"买入"}` | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | backend/data/okx_trade_api.go | 1181 | // OKXSetLeverageResult /account/set-leverage 响应。 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/8月新功能介绍:(首页 · 技能系统 · 知识库 · 长期记忆等).md | 85 | ## 三、知识库(RAG) | COMMENT |