hunter-community

agentpit-ioApache-2.0活跃维护

本地自托管的多智能体投研终端,覆盖 A 股、港股、美股,推理和数据都在自己机器上跑,用 BYOK 接入模型,可作为腾讯 WorkBuddy 金融版的开源替代。

HunterCode · Community Edition · 腾讯 WorkBuddy 金融版的开源本地替代方案 · open-source, local alternative to Tencent WorkBuddy Finance Edition · 多智能体投研终端 A股/港股/美股 · 推理在你机器上跑 · 仓位不出你硬盘 · BYOK · Apache 2.0 · docker compose 自托管

v2.2.1发布于 2026-10-14 09:53 UTC609star +32 / 7 天90fork同步于 2026-11-10 17:57 UTC

怎么上手

由 README 提炼,执行前请确认
git clone https://github.com/agentpit-io/hunter-community
cd hunter-community
docker compose up -d
open http://localhost:3100
硬件要求按 README 说明

需 Docker Desktop(Windows/macOS)或 Docker Engine + Compose v2(Linux);磁盘 10 GB、内存 4 GB(实测峰值约 1.3 GB);镜像同时提供 amd64 与 arm64,Apple Silicon 与 arm 云主机原生运行。README 未提及 GPU 或显存要求。

支持 Apple Silicon有 Docker 镜像
下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

自部署的 AI 投研助手,覆盖 A股/港股/美股,数据和对话都留在自己机器上

本地自托管的多智能体投研终端,覆盖 A 股、港股、美股,推理和数据都在自己机器上跑,用 BYOK 接入模型,可作为腾讯 WorkBuddy 金融版的开源替代。

核心能力

  • 多智能体投研终端,支持 A股/港股/美股行情与个股深度分析
  • 按用户编写的 SKILL 方法论工作,可接入自有数据源与 MCP
  • 对话、持仓、投资论点全部存本地数据库,仓位不出硬盘
  • 支持 BYOK,可接 DeepSeek 或任意 OpenAI 兼容网关
  • docker compose 自托管,六个服务走预构建镜像,含首启向导

容易踩的坑

公网可访问的实例必须先设 HUNTER_SETUP_TOKEN,否则谁先打开谁就能配置大模型;A 股免费行情需在 .env 设 DATA_SOURCE_PROVIDER=akshare,留空默认走平台数据管道;从 v1.0.x 升级且装过 SKILL 或导入过数据包的老用户必须跑一次 scripts/migrate-volumes.sh,否则 SKILL 会从界面消失。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本v2.2.1
  1. v2.2.1最新正式版2026-10-14 · 2026-10-14 09:53 UTC

    补丁版本 · 修复谷歌 4.0(Gemini 4 Argon)模型名称显示并新增全链路大模型调用日志跟踪与导出。

    改了什么:

    1. 修复升级后聊天框右下角模型选择器仍显示别名 hunter-chat 的问题,现明确展示 Hunter-Gemini 4 Argon(谷歌 4.0),且 opencode、web、api、llm-shim 镜像随版本同步重建;
    2. 新增全链路大模型调用过程日志输出与跟踪(GET /api/setup/llm/logs 及设置页「大模型」面板),支持一键实测模型并下载脱敏 .log 诊断文件用于问题排查上传。
    3. HUNTER_VERSION / FIN_TAG 默认值 2.2.0 → 2.2.1(docker-compose*.yml 的镜像 tag 同步)。

    升级:.env 的 HUNTER_VERSION 与 FIN_TAG 一起改 2.2.1,再 docker compose --profile fin pull && docker compose --profile fin up -d。


    Container images(amd64 + arm64 · 匿名可拉):

    • ghcr.io/agentpit-io/hunter-community-api:v2.2.1
    • ghcr.io/agentpit-io/hunter-community-web:v2.2.1
    • ghcr.io/agentpit-io/hunter-community-opencode:v2.2.1
    • ghcr.io/agentpit-io/hunter-community-llm-shim:v2.2.1
  2. v2.2.02026-10-14 · 2026-10-14 04:30 UTC
    查看更新说明

    次版本 · 内置与默认的谷歌模型升级到 gemini-4-argon。 谷歌 2026-10-13 正式发布 gemini-4-argon(旗舰推理模型,100 万上下文)。 本版把开源版代码里写死的默认模型名从 gemini-3.5-flash 换成它。

    ⚠️ 谁受影响:只在没配环境变量、也没走首启向导的部署上才看得出来 —— 这两条路都会把模型名写进 .env / 数据库,而它们优先级高于代码默认值。 已经按向导配好的实例升级后行为不变(除非你希望一起换,那就像下面那样手动改)。

    改了什么(只改「默认值」,不改任何业务逻辑):

    • api 里所有 os.getenv("ONE_API_MODEL", ...) 与 runtime_config.agent_model(..., 兜底值) 的兜底值:gemini-3.5-flash → gemini-4-argon(深度档的兜底 gemini-3.1-pro-preview 一并改)。
    • quant/screen_nl.py 的 GEMINI_PIN(选股脚本锁定模型)→ gemini-4-argon。 原来的锁是为了绕开「恰好 2 条消息的短对话返 400」那个历史坑;已实测 gemini-4-argon 在同样 2 条消息下正常返回,锁继续保留。
    • .env.example / .env.personal.example 的说明文字、首启向导的 mock 网关、e2e 用例里的模型名。
    • HUNTER_VERSION / FIN_TAG 默认值 2.1.0 → 2.2.0(docker-compose*.yml 的镜像 tag 同步)。

    没动什么(有意为之):data/llm-presets.json 里那张 AIHubMix 预置卡 (gemini-3.5-flash-aihubmix)保持原样 —— 它指向的是第三方网关 aihubmix.com, 那边的模型目录由对方决定,跟我们无关。同理 docs/env-samples/.env.aihubmix.example。

    没有数据库迁移,没有新增环境变量。动到 api 镜像;其余镜像代码未改,版本号随发版一起走。

    升级:.env 的 HUNTER_VERSION 与 FIN_TAG 一起改 2.2.0,再 docker compose --profile fin pull && docker compose --profile fin up -d。 只想换模型、不想换镜像的:在 .env 里显式写 LLM_DEFAULT_MODEL=gemini-4-argon (以及各 AGENT_* / SIGNAL_ANALYSIS_MODEL),docker compose up -d api 即可。


    Container images(amd64 + arm64 · 匿名可拉):

    • ghcr.io/agentpit-io/hunter-community-api:v2.2.0
    • ghcr.io/agentpit-io/hunter-community-web:v2.2.0
    • ghcr.io/agentpit-io/hunter-community-opencode:v2.2.0
    • ghcr.io/agentpit-io/hunter-community-llm-shim:v2.2.0
  3. v2.1.02026-10-05 · 2026-10-05 06:03 UTC
    查看更新说明

    次版本 · 智能炒股「策略自动生效 + 默认自学习」(L12–L15)。 到这版为止,「提建议 → 影子验证 → 应用」这三段是全自动的(前两段四期就有,本版补上最后一段); 并且新装一台机器默认就是「会自己学、自己改、自己跑(模拟盘)」。

    ⚠️ 行为上的大变化(请先读这一段再升级):三个开关的代码默认值从「关」改成「开」—— FIN_MEMORY_ENABLED(攒经验)默认 1、FIN_EVOLUTION_MODE(学习强度)默认 paper、 FIN_AUTO_APPLY(自动生效)默认 1。已经显式设了这几个环境变量的部署不受影响(.env 里的值仍然优先)。 这正是这次要的产品形态,但升级前请确认你希望它默认自己学、自己用上验证通过的改进。

    FIN_LIVE_ORDER_ENABLED 仍然硬锁死为 0:非 0 → 服务端直接拒绝启动 / 请求,本版一个字没动。 系统只跑模拟盘,自动生效改的是模拟盘的策略参数,不会下真单。

    内置纪律:只对「收紧」方向自动放行(调小仓位、收紧止损、缩短持仓天数…)。 放宽 / 混合方向仍要人点「确认」;风控类参数(target='risk')一律不走自动路径。 六条质量闸门、版本链核验、唯一参数写入口(control.py)一条没减、一条没改宽。

    新增两个数据库迁移 0054(执行允许名单补齐,L11b;判据改为「从未登记过」)· 0055(fin_memory_switch 加 auto_apply 列,L12)—— 只做加法、可重复执行。 台账从 54 个文件 / 54 行(max = 0053_collection_complete.sql)走到 56 个文件 / 56 行 (max = 0055_auto_apply_switch.sql)。

    动到 api / fin-worker / web 三个镜像(llm-shim / opencode 代码未动,版本号随发版一起走)。 没有新增环境变量(FIN_AUTO_APPLY 从「必须为 0」变成真开关,但它本来就在)。

    升级:.env 的 HUNTER_VERSION 与 FIN_TAG 两个旋钮一起改 2.1.0,再 docker compose --profile fin pull && docker compose --profile fin up -d(--profile fin 必须带)。 逐步清单见 docs/开发文档/L15-上线与整合报告.md(含回滚一步)。

    ⚠️ 升级前先备份:pg_dump -Fc 记下路径 / 大小 / sha256 / PG 版本 / schema_migrations 行数。 本版只加列、不改任何历史行。

    ⚠️ 老部署平滑升级(L11):执行凭证(HUNTER_EXEC_KEY)缺失时回退到读取凭证、 建项目时自动放行一条执行名单 —— 详见 docs/开发文档/L11-老部署平滑升级.md。

    ✨ 新增 · Added

    • L12 · 开关改造。 三个默认值改「开」(见上);FIN_AUTO_APPLY 移出硬开关名单,成为可开可关的真开关, 并支持按项目覆盖(沿用经验库 / 学习强度那套「生效值 = 天花板 ∩ 天窗,取更保守」的算法, 环境变量是部署者意志的天花板,界面选择是天窗)。新增 ceiling_auto_apply() / auto_apply_effective(); 旧的 auto_apply() 删除改名(不留两个同名含义的函数)。迁移 0055_auto_apply_switch.sql。
    • L13 · 自动生效链路。 fin.shadow(影子盘验证)判出 verdict == 'passed' 之后自动把验证通过的 收紧方向改进应用到模拟盘:新增内网入口 POST /internal/fin/evolution/{id}/auto-apply (X-Hunter-Internal-Key)+ fin-worker 活动 auto_apply(永不抛异常,不重试)。 留痕清楚:事件 actor='system:auto-apply'、payload.auto=true、参数改动日志 actor 同源 —— 一眼能看出是「系统自动」而不是人做的。
    • L14 · 界面与向导。 「自动生效」在成长页横幅上从只读死文字变成可点的真开关(与「经验库」并排, 切完不刷新立刻生效、含后端同枪核对);开户向导第 7 步第一次开户就能看到它(默认开)、随时能关。 scripts/r21_browser_check.mjs 相应改成新口径(38 条断言全绿)。

    🛡 安全垫(本版保留未动)

    • 实盘字段黑名单 · 生效前的六条质量闸门 · 「验证通过」这一关 · 自动回滚(跌破回滚线退回上一版)· 一切改动走唯一写入口 control.py · 只追加、留痕。
    • 新机器短期内不会有自动生效发生:触发依赖影子验证的样本量(默认 ≥20 个可比样本、20 个交易日窗口), 这是质量要求决定的,不是没生效。

    Container images(amd64 + arm64 · 匿名可拉):

    • ghcr.io/agentpit-io/hunter-community-api:v2.1.0
    • ghcr.io/agentpit-io/hunter-community-web:v2.1.0
    • ghcr.io/agentpit-io/hunter-community-opencode:v2.1.0
    • ghcr.io/agentpit-io/hunter-community-llm-shim:v2.1.0
  4. v2.0.02026-10-04 · 2026-10-04 20:40 UTC
    查看更新说明

    主版本 · 智能炒股「五期 · 闭环补齐」(L01–L10)。 一/二/三/四期把「能跑、能记账、能学、能提案」做完了,五期补的是最后几块不闭环的地方: 自动闭环只闭了一半(会复盘、会验证,但不会自己把经验变成提案)· 策略没有身份与版本锁 · 决策缺「当时看到了什么、用什么模型算的」的时间字段 · 账本缺部分成交 / 成交量约束 / 停牌 / 公司行为 / 逐市场 tick · 行情口令与下单口令是同一把、放行靠拒绝名单 · 报告只有站内一个出口且「发出去没发出去」从不写 · 外面没法启动 / 查询 / 暂停 / 取消工作流 · 新闻 / 基本面没接定时采集、情绪完全无表。 本期把这几块一一补齐,并把全过程整合成一份自包含 HTML(docs/开发文档/五期-闭环补齐-整合报告.html)。

    新增七个数据库迁移 0047–0053(只做加法、可重复执行、不改任何历史行、文件内不带 BEGIN;/COMMIT;), 由 api 启动时按 schema_migrations 账本增量自动执行。台账从 47 个文件 / 47 行 走到 54 个文件 / 54 行(max = 0053_collection_complete.sql)。

    动到 api / fin-worker / paper 三个镜像(web / llm-shim / opencode 代码未动,版本号随发版一起走)。

    新增两个环境变量:HUNTER_EXEC_KEY(下单执行凭证,与行情读取的 HUNTER_INTERNAL_KEY 分开; 都没有默认值,缺任一 paper / fin-worker 拒绝启动)。默认值没变: FIN_MEMORY_ENABLED=0 / FIN_EVOLUTION_MODE=off / FIN_AUTO_APPLY=0 / FIN_LIVE_ORDER_ENABLED=0。

    升级:.env 的 HUNTER_VERSION 与 FIN_TAG 两个旋钮一起改 2.0.0,再 docker compose --profile fin pull && docker compose --profile fin up -d(--profile fin 必须带, 否则 paper / fin-worker 不参与重建)。逐步清单见 docs/开发文档/L10-五期上线与整合报告.md(含回滚一步)。

    ⚠️ 升级前先备份:pg_dump -Fc 记下路径 / 大小 / sha256 / PG 版本 / schema_migrations 行数。 本版只加表加列、不改任何历史行。

    ⚠️ HUNTER_EXEC_KEY 是本期新加的必填项:老 .env 里没有它,升级后 paper / fin-worker 会因为缺凭证拒绝启动 —— 先在 .env 里生成一个(openssl rand -hex 32)再 up -d。

    ✨ 新增 · Added

    • L01 · 「经验 → 提案」接上(fin.propose 工作流 + 「实验」实体)。 原来那个能提提案的 POST /internal/fin/evolution/proposal 写好了却全仓没有调用方(自动闭环只闭了一半)。 现在 fin.propose 是 Temporal Schedule 里的一条(不另起 cron / 线程定时器), 按市场、对进行中的项目自动、有闸门地把可用经验变成提案;并补出**「实验」实体** (方案 §12 时间线里缺的那一格「样本外 / 滚动验证」)。只自动「提」,不自动「生效」 —— FIN_AUTO_APPLY 恒 0 未动,生效仍要人工 confirm=true。迁移 0047_evolution_experiment.sql。
    • L03 · 决策「出身证」。 补 §6.2 的缺失时间字段(available_at / revision_id / decision_as_of)· §10.2 的 DataSnapshot 对象 · §10.3 的决策上下文(execution_model_version / 显式 mode / portfolio_version)。 拿不到真值的一律 NULL(红线 5),不拿 now() / 自增号 / 默认值冒充。迁移 0048_decision_provenance.sql。
    • L04 · 自有策略服务。 「策略定义」这一层原来根本没有:唯一的策略是写死的示例策略,身份是 fin_param.strategies 里一个可被任意改写的自由字符串。现在有只追加的登记表 + 内容哈希 + 触发器锁版本, 外加 strategy.submit / strategy.get / strategy.cancel 三个正式入口;示例策略降级为一个登记在册、 可被替换的内置策略(不删 —— 个人本地开源部署靠它开箱可用)。迁移 0049_strategy_registry.sql。
    • L05 · 账本补齐五项。 ① 成交量约束真的读 liquidity_max_participation(成交股数 ≤ floor(盘口量 × 参与率)); ② 部分成交 part_fill 开关真的生效(开着成交一部分 + 剩余挂着;关着行为逐字节不变); ③ 停牌 fin_instrument.halted + 风控先读它 + 拒单;④ 公司行为只追加事件表 fin_corporate_action + 账务(分红入现金 / 拆送股调股数与成本);⑤ 逐市场 tick (标的 → 市场分档 → 全局回落三级解析,三市场各不同,替掉原来写死的全局 0.01)。 停牌 / 公司行为数据源没有 → 只做「状态位 / 事件表 + 账务 + 人工登记入口」,如实标注「数据源未接」,一个字节都没编。 迁移 0050_account_ledger_complete.sql。
    • L06 · 凭证分离 + 执行允许名单(默认拒绝)。 两把钥匙分开:行情读取用 HUNTER_INTERNAL_KEY, 下单执行用新的 HUNTER_EXEC_KEY(两个不同环境变量、都没有默认值)。门改成「允许名单」: paper 会改账本的四个端点入口先查新表 fin_exec_allowance(只追加)—— 空名单 = 谁都不许, 要显式登记才放行(POST /api/v1/exec-allowances)。实盘字段的拒绝名单(LIVE_FIELD_DENYLIST) 继续保留,两道防线都在。GET /healthz 多报一个执行允许名单现行条目数。迁移 0051_exec_allowance.sql。
    • L07 · 发布适配器 + UNKNOWN 待核实。 发布从生成流程里拆出来独立一步、渠道走适配器: in_app(原样搬,行为不变)· 通用 webhook · file 落盘(记路径 + sha256)。 只做这三个,不接任何要注册 / 要付费 / 要审资质的第三方内容平台。新增 publish.submit / publish.get 两个入口,回执统一落 fin_publish_receipt。UNKNOWN 待核实 + 不盲目重发:超时 / 回执不明 → 写 UNKNOWN 并进待核实队列;UNKNOWN 下再发同一份报告拒绝(除非显式「重发」标记且留痕)。 补上故障注入第 7 项(「内容已发布,但返回超时或网络断开」)。迁移 0052_publish_adapter.sql。
    • L08 · 控制通道 + MCP 控制类 + 长任务取消。 四个控制入口 runtime.workflow_start / get / pause / cancel (只认白名单模板名 + 类型化参数,不接受任意代码或 shell;状态从 Temporal 现查,不另存一份; 四个都幂等)。新增一个控制类 MCP(scripts/opencode-mcp/runtime_mcp.py), 在 gen-config.py 里与数据类 MCP 分开登记 —— 这就是方案 §6.3 的「控制通道与数据通道分离
  5. v1.8.02026-10-04 · 2026-10-04 17:08 UTC
    查看更新说明

    次要版本 · 把「经验库开关」从 .env 搬上界面(按项目)。 1.7.0 那条链本来就能学,但「要不要学」这个总闸只藏在环境变量 FIN_MEMORY_ENABLED 里: 想开要改 .env、还得 up -d(不是 restart)、六步操作,而且四个开关一个都不留痕。 本版让你在成长页和设置向导第 7 步直接点:按项目设,点完立刻生效(不用重建容器), 每次改动都留一行流水账。环境变量仍是天花板(部署者的意志),界面是天窗(使用者的日常选择): 部署侧把 FIN_MEMORY_ENABLED 设成 0 时,界面上的开关是灰的、写接口直接 400 —— 界面永远开不出部署者不允许的东西。 顺手修了一个隐性浪费:经验库关着时,复核工作流不再先调一次模型再被拒(原来那一次模型调用白烧)。

    新增一个数据库迁移 0046_memory_switch.sql(两张表:fin_memory_switch 现值 + fin_memory_switch_log 纯追加流水), 由 api 启动时按 schema_migrations 账本增量自动执行,只做加法(CREATE TABLE IF NOT EXISTS)、 可重复执行、不改任何历史行、文件内不带 BEGIN;/COMMIT;。 台账从 46 个文件 / 46 行 走到 47 个文件 / 47 行(max = 0046_memory_switch.sql)。

    动到 api / web 两个镜像: api(switches.py 加覆盖层 + switch_meta() 展示表 · fin_runtime.py 新写入口与只读接口扩展 · fin_review.py 的「关着不烧钱」守卫 · memory.py / evolution.py 按项目判闸)· web(共用组件 RuntimeSwitchPanel + 成长页 ④ + 向导第 7 步)。 fin-worker / paper / llm-shim / opencode 代码未动,版本号随发版一起走。

    升级:.env 的 HUNTER_VERSION 与 FIN_TAG 两个旋钮一起改 1.8.0,再 docker compose --profile fin pull && docker compose --profile fin up -d(--profile fin 必须带, 否则 paper / fin-worker 不参与重建)。逐步清单见 docs/开发文档/R21-开关上界面·发版与演示站验收.md(含回滚一步)。

    ⚠️ 升级前先备份:pg_dump -Fc 记下路径 / 大小 / sha256 / PG 版本 / schema_migrations 行数。 本版加两张新表、不改任何历史行;记忆层是可审计数据,备份与恢复演练的做法随 1.6.0 交付(docs/开发文档/R4)。

    默认值没变:出厂默认仍是关(FIN_MEMORY_ENABLED=0 / FIN_EVOLUTION_MODE=off)。 本版给的是「想开的时候有个地方点」,不是「默认打开」。

    ✨ 新增 · Added

    • 迁移 0046_memory_switch.sql:按项目的经验库开关(现值 + 流水账)。 造型照抄既有的 fin_param / fin_param_change_log: fin_memory_switch(现值 · PK project_id · memory_enabled / evolution_mode 两列可空, NULL = 这个项目还没单独设过、跟随部署侧默认)+ fin_memory_switch_log (纯追加 · 无 UPDATE / DELETE · switch_key / old_value / new_value / actor / reason(必填)/ created_at)。 evolution_mode 有 CHECK 约束;project_id 不建外键(流水账要活过项目本身)。两个硬开关不进这张表 —— 它们连界面入口都没有。
    • 写入口 POST /v1/fin/runtime/switch(R21 的唯一写入口)。 body {project_id, switch_key, value, reason}, JWT + 项目归属校验(跨用户 / 不存在一律 404,不区分两者、不泄露存在性)。 四条硬规矩写在服务端、不靠界面自觉:硬开关 key → 400(且库里零写入)· 超天花板 → 400(报错写清天花板是多少)· reason 必填 · 没变就不写(changed=false,流水账记的是「改动」不是「点了一下」)。 改完立刻生效(写入口主动清 5 秒 TTL 缓存),不需要重建 / 重启任何服务。
    • 前端共用组件 RuntimeSwitchPanel(表驱动 · 前端零枚举)。 成长页 ④ 与向导第 7 步共用; 可选项、短标签、长说明、「为什么灰」的提示全部来自后端 GET /v1/fin/runtime 的 meta —— 前端不写死任何枚举 / 中文名(R9 既有纪律)。天花板之上的选项画灰、点不动(服务端另外还会 400 —— 两道一起拦)。

    🔧 变更 · Changed

    • switches.py 加覆盖层:环境变量是天花板,fin_memory_switch 是天窗。 memory_enabled(project_id) / evolution_mode_requested(project_id) 的生效值 = 天花板 ∩ 天窗, 取更保守的一个(0 < 1、off < observe < paper)。不带 project_id 时就是天花板、行为逐字节不变(老调用点一个没动)。 覆盖层读库带 5 秒模块级 TTL 缓存(热路径上挡住库往返);库不通 / 表还没迁移 / 行读坏了 → 回落环境变量(fail-safe,绝不「猜一个」)。 覆盖层只活在这一个文件里 —— 读点仍是一处(守护用例盯着)。
    • 只读接口 GET /v1/fin/runtime 扩展(老字段一个没改)。 新增 project_id / ceiling(部署侧允许到哪)/ selected(界面上选了啥,null = 没设过)/ can_change(这一项能不能改)/ meta(给前端的展示表)。 带 project_id 时 memory_enabled / evolution_mode* 是这个项目的生效值(天花板 ∩ 天窗); 不带时就是天花板值,老调用点行为逐字不变。
    • 复核不再「关着也烧钱」。 routers/fin_review.py 的 review/propose 在经验库关时直接返回空候选、不调模型 (原来会先调一次模型写候选,最后一步才被唯一写入口拒掉 —— 那一次模型调用白烧,且 503 会让 Temporal 重试、可能被重放)。 守卫排在模型调用之前,fin-worker 一行不用改(R20 实测:模型 0 次调用、worker 不报错 / 不重试)。
    • evolution.py 的提案闸门按项目判(propose 用 evolution_enabled(project_id));apply_proposal / rollback_proposal 仍只看天花板 —— 把学习关掉不该让已经走到验证中途的提案变孤儿(故意的不对称,写进 R20 成果文档)。
    • memory.py 的 MemoryDisabledError 文案点名是哪个闸(既有断言盯着):同时提 FIN_MEMORY_ENABLED=0 与本项目开关。
    • .env.example / .env.personal.example / docker-compose*.yml 的版本旋钮升到 1.8.0。

    🆕 新增环境变量 · Added env

    无。 这四个 FIN_* 开关的口径没变 —— 只是从「只能改 env」变成「env 是天花板、界面是天窗」。 FIN_MEMORY_ENABLED / FIN_EVOLUTION_MODE 的默认值仍是 `0

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    🌏 中文(当前)· English

    HunterCode

    Community Edition

    自部署的 AI 投研助手 · A股 / 港股 / 美股 · 数据和对话都在你自己的机器上

    HunterCode 是腾讯 WorkBuddy 金融版的开源本地替代方案 · 面向私募与专业个人投资者 腾讯、WorkBuddy 是腾讯公司的商标。HunterCode 与腾讯公司无隶属、合作或授权关系。

    License CI Release Stars Discussions

    🚀 在线演示  ·  ⚡ 5 分钟部署  ·  📖 产品说明书  ·  帮助中心  ·  快速开始  ·  💬 讨论区

    🔥 2026-10-14 全线升级:全面支持谷歌 10-13 发布最强模型 Gemini 4 Argon(gemini-4-argon) —— 自 v2.2.0 起内置免费额度与默认谷歌模型已切换为旗舰推理模型 Gemini 4 Argon(百万级上下文 · 多步深度推理) · 阅读升级详解

    🏆 入围世界人工智能开源大赛(GOAI)总决赛 · 赛道二 TOP 15 · 与 WorkBuddy 金融版逐项对比(附官方来源) · 完整演示视频 3 分钟(2026-09-19 录制)

    ⚠️ 免责声明:本项目是投研分析工具,所有输出为 AI 生成内容,仅供研究参考,不构成任何投资建议。投资有风险,决策需谨慎。


    ⏱ 30 秒看懂

    它是什么 —— 一个跑在你自己电脑或服务器上的金融 AI 助手。你给它一个大模型 key,它就能查行情、拉新闻、做个股深度分析、预测走势、管理自选和持仓,并按你写的 SKILL(分析方法论)工作。对话、持仓、投资论点全部存在本地数据库。

    它不是什么 —— 不接券商交易,不替你做决策,不保证预测准确。它是把公开数据、分析方法论和大模型组织起来的研究助手。

    适合谁 —— 会用 Docker 的个人投资者、私募研究员、小型量化团队;想掌控自己的数据,或想把自己的数据源和方法论接进来的人。


    ☁️ 一键部署到云平台

    不想自己管服务器的,可以直接部署到下面这些平台,部署完打开域名走一遍首启向导就能用。

    平台适合谁说明
    Zeabur国内外都能用,能力最全模板自动生成密钥、绑域名、挂卷
    Sealos国内用户K8s 模板,postgres / redis 走 KubeBlocks
    Railway海外用户控制台里手工搭 6 个服务的逐条清单 + 生成模板的步骤
    1Panel自有服务器 + 国产面板应用包,表单里填端口和口令即可
    Coolify / Dokploy自有服务器 + 自托管 PaaS两份可以整段粘贴的 compose

    ℹ️ 这一版还没有「一键部署」按钮。 我们没有这些平台的账号,一次真实部署都没做过, 更没有上架到任何一家的模板市场 —— 所以不放按钮,只给文档。 每份模板都做过等价验证:把模板机械翻译成 compose(同镜像、同环境变量、 用平台自己的方式生成的随机密钥、同卷、同依赖),在本机从空卷跑完 「六服务健康 → 走完向导 → 真实对话 → 深度分析 → 重启数据不丢」。 各篇文档里都写明了「哪些验过、哪些没验过、平台上要自己核对什么」。 有账号的朋友帮忙实测一次,欢迎来 Issues 说结果 —— 验过就加按钮。

    公网部署必看:这些平台上的实例一创建就在公网上。模板都默认 关掉了单用户免登录(HUNTER_SINGLE_USER=0)并生成了一道初始化口令 HUNTER_SETUP_TOKEN,向导第 0 步要填它 —— 不然谁先打开谁就能把大模型配成他自己的。 口令在平台的环境变量面板里看。


    🖥 桌面启动器(推荐给不熟悉命令行的用户)

    下载 → 填一把 key → 等几分钟,整套 HunterCode 自动装好,全程不用敲一条命令。

    装完打开按向导走:欢迎 → 填 key → 一次授权 → 选模型 → 自动安装。检测 Docker、挑下载源、 算端口、写配置、拉镜像、起容器由它连着跑完,装好自动打开浏览器。 启动器仓库:agentpit-io/HunterLauncher · 图文说明与截图:www.agentpit.io/hunter-community

    最新版本 —— 徽章上就是当前最新版,下面的链接永远指向它,不用找版本号。

    平台直接下载(国内可达)其他来源
    macOS 12+ · Intel / Apple 芯片通用hunter-launcher-latest-universal.dmgGitHub Releases
    Windows 10 / 11 · x64 · 推荐hunter-launcher-latest-x64-setup.exeGitHub Releases
    Windows · 组策略分发hunter-launcher-latest-x64.msiGitHub Releases
    Linux x64hunter-launcher-latest-amd64.deb / .AppImageGitHub Releases

    这几个链接是固定的:每次发版都会把最新安装包覆盖到同一个地址, 所以收藏它、贴进文章、做成二维码都不会失效。

    想要带版本号的包、逐个文件的 sha256、或是历史版本,看 checksums.txt、manifest.json 与 Releases。manifest.json 里有当前版本号、发布日期与三个包的 体积和完整 sha256 —— 下载页 显示的就是它。

    系统要求

    • macOS 12+(Intel / Apple 芯片通用)—— 不需要你先装 Docker。本机没有 Docker 时, 启动器会自己准备一套运行环境(内置 Colima + Lima,全装在 ~/.hunter/runtime), 不碰你已有的 ~/.colima、~/.lima、别人的容器与数据卷。本机已有 OrbStack / Docker Desktop / Colima 的话它一个字节都不下。
    • Windows 10 / 11 · x64 —— 需要你先装好 Docker Desktop 与 WSL2。 Windows 上装 Docker Desktop 要 WSL 与管理员权限,启动器这一版还没有做这条链路; 装好 Docker Desktop 之后回来点一次「重新检测」就能继续。

    安装包没有做代码签名,第一次打开要放行一下

    • Windows:SmartScreen 会拦一下 —— 点「更多信息」→「仍要运行」。
    • macOS:不要双击,在图标上右键 → 打开,在弹出的对话框里再点一次「打开」。

    现状(如实说明)

    • 目前每一版都标预发布(prerelease),原因就是上面那条:包没有代码签名。
    • macOS 已在真机验证过全流程:2026-09-23 在 Intel · macOS 14.8.5 上跑通了自动准备运行环境 (虚拟机层第一次在真虚拟机上跑通)、开机自检、每日定时备份(LaunchAgent 强制触发后真跑出备份)、 删除应用,以及「备份 → 删除 → 重装 → 恢复」闭环(重装 57 秒、6/6 服务健康、数据原样沿用)。 · 已知问题:0.1.13 及更早版本在 macOS 上的「自动更新」不可用(会下错成 Linux 的包), 这几版升级请手动下载新安装包覆盖安装。
    • Windows 尚未真机验证:只在 CI 里编译与打包通过,没有在任何一台真 Windows 上跑过。 你是第一个跑的话,欢迎来 Issues 说结果。
    • Linux 在测试机上真机跑通过从零安装、升级、回滚与离线导入。

    想自己敲命令,或者要装到远程服务器上,往下看「5 分钟跑起来」—— 两条路装出来的是同一套东西。


    🚀 5 分钟跑起来

    准备:Docker Desktop(Windows / macOS)或 Docker Engine + Compose v2(Linux) · 磁盘 10 GB · 内存 4 GB(实测峰值约 1.3 GB) · 能访问 ghcr.io

    六个服务的镜像都同时提供 amd64 与 arm64,Apple Silicon 与 arm 云主机原生运行,不用模拟。

    [!IMPORTANT] 开始前只需要理解两件事

    1. 模型从哪来。推荐走 HunterCode 内置额度:免费申请一把 hunt_tools_ 平台 key(约 30 秒),在向导第 2 步选第一张卡,不用自己去各家申请大模型 key,地址和模型名向导自动填好。当前内置额度与默认谷歌模型已于 2026-10-14 凌晨全线升级为谷歌 10-13 发布的旗舰推理模型 gemini-4-argon(依托统一大模型网关,换模型仅改配置、全线自动受益)。详见 内置额度使用说明。 · 额度:每把 key 每天 1000 万 token(输入 + 含 thinking 的输出),北京时间 0 点重置;另有每分钟请求数与并发上限。额度用完不是断服 —— 对话里会用中文说清几点重置、怎么改用自带 key,工具与数据供给照常。额度与服务可能调整或下线。 · 隐私:网关只记 token 数与模型名,不记任何 prompt 与回复内容。 · 使用前请读一遍 服务条款与可接受使用政策(English) —— 仅限自部署用户的研究用途,禁止转售、禁止当通用 API 用。 高级路径:自带大模型 key —— DeepSeek 或任何 OpenAI 兼容网关(通义、Claude、GPT、OpenRouter、OneAPI、AIHubMix 等)都行,向导里粘进去当场检测。两条路随时互相切换。
    2. 数据从哪来(三选一,可以先不管):① 免费开源源(A 股行情要在 .env 设 DATA_SOURCE_PROVIDER=akshare);② 接你自己的 MCP / 数据源;③ 平台数据管道,免费申请 key。详见 数据供给三选一。 走内置额度的话这一步已经顺带解决了 —— 同一把 hunt_tools_ key 也是数据供给的 key,向导会直接告诉你已解锁。

    耗时:自 v1.1.0 起六个服务全部走预构建镜像,不再本地构建 —— 首次约 3–5 分钟(全在下镜像),之后 up -d 几十秒。向导本身约 1 分钟。

    git clone https://github.com/agentpit-io/hunter-community
    cd hunter-community
    docker compose up -d
    open http://localhost:3100          # 浏览器里完成首启向导,不用改任何文件
    

    没有第二步。 自 v1.1.0 起 .env 一个字都不用改 —— 密钥自动生成、数据库自动迁移、 六个服务全走预构建镜像;大模型在浏览器里配。

    浏览器里的首启向导

    第一次打开会自动进入向导(没配大模型时),五步:

    步骤做什么
    1 · 环境自检六个服务连通、迁移账本、密钥来源与强度、卷可写、访问方式 —— 逐项真探测
    2 · 选大模型第一张卡是「使用 HunterCode 内置额度」(推荐):选中即自动填好地址与模型名(当前内置额度与默认谷歌模型已于 2026-10-14 凌晨全线升级为谷歌 10-13 发布的旗舰推理模型 gemini-4-argon,依托统一大模型网关,换模型仅改配置、全线自动受益),你只要一把 hunt_tools_ key。下面几张是自带 key 的高级路径,带实测的工具调用命中率与耗时(来自 docs/model-testing/)
    3 · 填 key 当场测连通 → 对话 → 工具调用三项,失败分类报错,测不通不让保存;内置额度路径下还会顺带把深度分析指向 hunter-deep、用同一把 key 解锁数据供给
    4 · 数据供给免费开源源 / 平台数据管道 / 自接 MCP,三选一,可以跳过。走内置额度的话这里会直接显示「同一把 key 已解锁」
    5 · 完成不重启任何容器热生效,给三个示例问题带你进对话

    全部截图见 docs/screenshots/builtin-llm/(内置额度全流程) 与 docs/screenshots/setup-wizard/(自带 key 路径)。

    [!IMPORTANT] 这台实例只要能从公网打开,就先在 .env 里设 HUNTER_SETUP_TOKEN(随便一串随机值, openssl rand -base64 24),然后 docker compose up -d。 不设的话,谁先打开这个页面谁就能配置大模型 —— 向导判断「来源是不是本机」靠的是 HTTP 转发头,裸 docker compose(前面没有 nginx 之类的反代)时那是访问者可以伪造的。 设了之后向导第 0 步会要这个口令,连错 5 次锁 15 分钟。本机 / 内网使用不需要设。

    想走老路(在 .env 里写死)也行,而且优先级更高:填了 LLM_BASE_URL / LLM_API_KEY / LLM_DEFAULT_MODEL 的实例是锁定状态,向导只读展示、改不了它(演示站就是这么跑的)。 要换模型改 .env 后 docker compose up -d(不是 restart —— restart 不重读 .env)。 内置额度也能写死(一键部署模板会这么预填),写法见 内置额度使用说明 · 第六节。

    不配大模型时六个服务照样健康,只是发消息会收到一句中文的「大模型尚未配置」。 想以后再配,向导最后一步点「先进对话页(稍后再说)」即可; 要重新跑向导:设置 → 大模型 → 「重新运行初始化向导」。

    要改代码的开发者叠加开发覆盖文件 —— 它带回本地构建与全部源码挂载(改 apps/web/public 下的静态文件、scripts/ 下的 MCP 与插件都立即生效):

    docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d --build
    

    从 v1.0.x 升级

    git pull
    docker compose pull && docker compose up -d
    bash scripts/migrate-volumes.sh          # ⚠️ 只有老用户需要,见下
    

    [!WARNING] 装过 SKILL / 导入过数据包的老用户必须跑一次 scripts/migrate-volumes.sh。 v1.0.x 把 ./user-skills 和 ./data-packages 两个仓库目录直接挂给 api; v1.1.0 起改成 api 自己的具名卷 —— 云平台上没有仓库目录,挂不了。 直接升级的话新卷是空的,你装过的 SKILL 会从界面上消失。 文件一个都没丢(还在 user-skills/ 下),这个脚本就是把它们搬进新卷; 幂等,目标非空时不覆盖。api 启动日志里也会提示。

    其余几处变化不需要你做什么:

    • JWT_SECRET 留空不再拒绝启动 —— 首次启动自动生成并写进 hunter_secrets 卷。 已经在 .env 里填了的不要动:换掉它会让已保存的 key 全部解不开、登录全部失效。
    • 数据库迁移改由 api 启动时执行(原来挂给 postgres 的 initdb 目录只在建卷那次跑, 所以老部署一直缺表缺列)。升级后第一次启动会把没跑过的迁移补齐,日志里逐个列出来。
    • 用户 SKILL 不再靠 api 与 opencode 共享目录,改由 opencode 按 URL 向 api 拉取。

    打开后试试:

    • 问「601899 现在多少钱」—— 返回富卡片(实时价 · 52 周分位 · AI 短评)
    • 打开顶部「策略中心」—— 全市场扫描筛选器与小鹿研究台
    • 点侧栏「UZI 深度分析」输入代码 —— 60–300 秒出多维度深度报告

    起不来?先看 常见问题 和 docs/01-getting-started.md,或到 讨论区问答 提问。


    🔑 数据供给三选一

    大模型 key 之外,数据怎么来由你决定,不强制使用我们的平台 key:

    方式需要谁的 key数据来源适合谁
    ① 免费开源源不需要AKShare(A 股)· 腾讯 / 新浪免费通道(港股 / 美股)先跑通看效果;A 股行情要在 .env 设 DATA_SOURCE_PROVIDER=akshare,见表下说明
    ② 自接工具 / MCP你自己的你的券商、数据商、自建 MCP,或 Cline / Cursor 生态里任意 MCP已有数据订阅,想接进来用;侧栏「工具箱 +」添加
    ③ 平台数据管道hunt_tools_ 开头的 key,免费申请平台汇总的行情、财报、新闻数据,UZI 深度分析所需数据,Kronos 走势预测免费源不够用,想要更全的数据

    免费源怎么开:DATA_SOURCE_PROVIDER 留空时默认是 hunter(平台数据管道),没 key 时 A 股行情会提示去申请 key,不会自动换成免费源;想免 key 看 A 股行情,在 .env 设 DATA_SOURCE_PROVIDER=akshare,再 docker compose up -d。港股 / 美股的行情和日线默认就走内置免费通道(腾讯 / 新浪),不用设。

    平台 key 可以写进 .env,也可以在界面左下角「解锁全部工具」里粘贴,立即生效。平台只按 key 记录请求次数,看不到你的对话和持仓。

    当前立场:本项目不预置任何具体金融数据厂商的 MCP 集成,等与官方逐一沟通并拿到正式授权后再开放。

    • 同花顺(HiThink)· 待官方合作确认:同花顺已在官方文档站列出 fuyao.aicubes.cn/mcp/* 系列 MCP 端点,允许开发者自助申请 key;但目前尚未获得同花顺对本项目作为集成方的书面授权,出于合规考虑不预置该数据源。我们正在联系官方,期待建立正式合作。
    • 通达信(Tongdaxin)· 待官方开放 MCP 接入文档:通达信官方目前没有对外公开授权的 API 地址与开发者文档,本项目不集成任何未公开授权的接口。我们正在沟通,期待让已购买付费 key 的用户能正常接入。

    目前可用:免费开源源(AKShare / yfinance)+ 用户自持的第三方 MCP(通用接入,不预置具体厂商)。

    如果你来自数据厂商:欢迎通过 GitHub Issues 或邮件联系我们探讨合作。


    ✨ 能做什么

    💹 数据

    • 实时行情 · A / 港 / 美股
    • K 线 · 财报 · 新闻
    • 龙虎榜 · 十大股东
    • 北向 / 南向资金 · AH 溢价
    • 巨潮公告 · 行业分类

    🧠 分析

    • UZI 深度分析 · 大佬评审团
    • Kronos 走势预测(清华时序模型)
    • 全市场扫描筛选器
    • 小鹿研究台 · 量化因子与回测

    💬 交互

    • 流式对话 · 富卡片(报价 / 新闻 / 预测)
    • 侧栏三层:数据源 / 工具箱 / SKILL
    • 自选股卡片 · 持仓 · 投资论点
    • 策略中心 · 智能交易(纸上交易账本)

    🔌 扩展

    • Markdown 写 SKILL
    • 从 GitHub 一键装 SKILL
    • 接自己的 MCP
    • 大模型任选

    🤖 智能交易(纸上交易账本)

    策略中心里的第四个板块:只做模拟盘,不接实盘。它自己按时点跑一条完整的交易链路 —— 取行情快照 → 风控校验 → 撮合成交 → 记账 → 出报告 —— 你可以看到每一笔委托为什么成交、 账目对不对得上,以及策略这一周做了什么。

    页面看什么
    总览总资产 / 持仓 / 当日盈亏 + 净值曲线
    持仓每只票的成本、现价、浮盈、仓位占比
    委托与成交每一笔委托的四步链路:意图 → 风控 → 撮合 → 记账
    报告系统每天写的操作报告(数字由代码算,文字才由模型写)
    帮助这份板的规则与边界

    几个从设计上就定死的口径:

    • PAPER_MODE 恒为 PAPER。请求参数里出现任何实盘相关字段即报错; 交易所凭证一个都不配。这是隔离,不是开关。
    • 账本只有一个权威。paper 服务是全仓唯一持有账本库运行期角色(fin_paper_rw)的进程, 而那个角色在追加表上没有 UPDATE / DELETE 权限 —— 「不可篡改」是一条 GRANT,不是一句约定。
    • 调度只有一个权威。六个交易时点(09:15 / 09:30 / 11:30 / 13:00 / 14:55 / 15:30)由 Temporal 驱动,不留兜底 cron。Worker 崩了按执行历史恢复,不会重复下单。
    • 报告三层分离:事实由代码算、文字由模型写、写完回读校验 —— 校验不过就不发布, 宁可显示 — 也不让模型编数字。

    这几个服务(paper / fin-worker / temporal / temporal-ui)都在 compose 的 fin profile 下, 默认 docker compose up -d 不会起它们。要开: bash scripts/fin_provision_paper_role.sh 再 docker compose --profile fin up -d。 这一版只做 A 股,行情走现仓的 providers.data_source。

    🧠 个人本地部署:记忆系统与受控自进化(1.6.0 起)

    想让复盘学到的经验真的改变策略、并且改得可验证、可回滚、可审计,按 docs/个人本地部署.md 走:叠加 docker-compose.personal.yml 覆盖文件(端口全部收到 127.0.0.1、fin 栈收进 paper profile),从 .env.personal.example 拷一份 env。

    闭环是「经验 → 提案(白名单 + 冻结验证口径) → 独立影子验证 → 人工确认生效 → 紧急线回滚」。 默认 observe(拉行情、复盘、建经验、展示提案,没有委托发送能力);经验库默认关, P1 验收后再把 FIN_MEMORY_ENABLED 设 1。不交付实盘(FIN_LIVE_ORDER_ENABLED 恒 0), FIN_AUTO_APPLY 恒 0。界面在成长页。


    📚 SKILL:把分析方法论变成能力

    SKILL 是一段讲清「这类问题该怎么分析」的 Markdown,采用 Anthropic Agent Skills 标准格式,网上下载的标准 SKILL 不用改就能用。

    随代码内置 6 个(skills/ 目录):

    SKILL分类说明
    uzi综合分析投研总调度:按问题分发到深度研究、评审团、龙虎榜、风险扫描
    investor_panel综合分析大佬评审团:模拟价值、成长、游资、量化等 9 大流派投票打分
    deep_analysis投研报告多维度个股深度分析:基本面、技术面、资金面与投委会结论
    lhb_analyzer事件与筛选龙虎榜分析:识别游资席位,判断机构与游资博弈
    trap_detector尽调风控杀猪盘检测:扫描推荐来源、内幕消息、基本面脱节等信号
    risk_profile组合级读写风险偏好、现金与单票上限,供组合建议使用

    更多来自社区:侧栏 SKILL 一栏点「+」粘贴 GitHub 地址即可安装,装前可预览内容。

    来源仓库SKILL
    prof-little-bear/cc-equity-researchcatalyst_calendar · earnings_analysis · earnings_preview · idea_generation · initiating_coverage · model_update · morning_note · sector_overview · thesis_tracker
    bmtrnavsky/nanobot-stock-tradercatalyst_growth_investor · longterm_quality_investor · stock_data · swing_trade_scanner
    algoderiv/agent-skillsrice_quant · tqsdk
    yennanliu/InvestSkillinvest_stock_eval
    tigersking520/stock-analysis-skillstock_analysis
    演示站界面内自建1 个

    以上为 2026-09-16 从演示站 /api/catalog/skills 读取的清单,各 SKILL 的许可证以来源仓库为准。

    想写自己的 SKILL?看 扩展 HunterCode。


    ☁️ 选 Community 还是 Cloud

    会用 Docker、想掌控数据、想接自己的数据源或方法论 → Community(本仓库)。只想打开网页或手机就用、需要微信 / 飞书推送 → Cloud。

    能力Community(自部署)Cloud(hunter.agentpit.io)
    对话(自带大模型 key)✅✅
    免费数据源(AKShare / yfinance)✅ 无需我方 key✅
    接入自己的 MCP / 数据源✅ 无需我方 key✅
    内置 SKILL 与 GitHub 一键装 SKILL✅✅
    UZI 深度分析✅ 数据三选一✅
    Kronos 走势预测✅ 平台管道(免费)· 或自建 GPU · 直连说明✅
    投资论点(本地存储)✅ 本地 Postgres✅
    微信推送 / 飞书通知❌✅
    多租户计费❌✅

    📖 深入了解

    我们用 7 个标准用例实测每家模型能否正确调用工具 —— 对 HunterCode 来说,「能聊」不够,「会调工具」才算可用。

    模型接入工具调用命中平均耗时推荐注意
    Gemini 4 ArgonHunterCode 内置网关 / OneAPI7/7—⭐⭐⭐⭐⭐ 默认内置旗舰推理(100 万上下文)2026-10-14 全线切换为默认模型,擅长多步深度推理与长任务
    DeepSeek v4 pro直连 api.deepseek.com6/730 秒⭐⭐⭐⭐⭐ 直连默认必开 LLM_SCHEMA_SANITIZE=1
    Claude Sonnet 5AIHubMix 网关7/725.7 秒⭐⭐⭐⭐⭐ 海外首推容器直连可能被 TLS 指纹拦截,需宿主机代理
    Qwen 3.8 MaxAIHubMix 网关7/748.1 秒⭐⭐⭐⭐⭐ 国内首推深度分析较慢
    Gemini 3.5 FlashAIHubMix 网关6/762.3 秒⭐⭐⭐⭐ 便宜快边界用例偶发过度调用
    Doubao Seed 2.1 ProAIHubMix 网关6/7103.9 秒⭐⭐⭐建议直连火山引擎
    MiniMax M3AIHubMix 网关6/777.3 秒⭐⭐⭐⭐思考过程泄漏已由 llm-shim 剥离
    GPT-5.6 solAIHubMix 网关5/724.4 秒⭐⭐⭐部分用例选错工具

    实测日期 2026-08-15 / 08-16。各家 .env 模板(含地址、模型名、清洗开关、已知坑):docs/env-samples/。评测方法与原始数据:docs/model-testing/(适配矩阵 · 评测脚本)。

    思考类模型的 <think> 泄漏:MiniMax / Qwen thinking / Kimi thinking 会把推理过程夹在回复里,scripts/llm-shim/shim.py 在请求端关闭思考、响应端剥离标签,LLM_STRIP_THINK=0 可关闭。

    自选和持仓可以记录每只股票的投资论点(买入理由、关键假设、成本),数据存在本地 Postgres,不出你的机器。

    想让 AI 持续跟踪论点是否还成立,可以安装社区 SKILL,例如 prof-little-bear/cc-equity-research 里的 thesis_tracker,在对话中结合最新数据复核。

    ⚠️ 论点复核结果是 AI 生成的研究参考,不构成投资建议。

    层技术
    前端Next.js 15(App Router)· React 19 · TypeScript 5 · Tailwind CSS · shadcn/ui
    后端FastAPI · Python 3.12 · httpx · loguru
    对话引擎OpenCode 定制版 · MCP · Bun
    数据库Postgres 16 · Redis 7
    大模型任意 OpenAI 兼容网关 · Anthropic · Kronos
    认证JWT(HS256)· argon2id · 单用户 / 多用户可切换
    部署Docker Compose · GHCR 镜像
                 ┌─────────────────────┐
    浏览器    →   │  web (Next.js 15)   │ :3100
                 └────────┬────────────┘
                          │ /api/*(web 自带转发 · 无需反向代理)
                 ┌────────▼────────────┐        ┌──────────────────┐
                 │  api (FastAPI)      │        │ opencode 对话引擎  │
                 │  · 认证 (JWT)        │◄───────┤ MCP 工具回调       │
                 │  · 数据 / 模型 / 预测 │        │ 插件:认证 / 守卫 / │
                 │  · SKILL 加载        │        │ 用量 / 审计 / 上下文│
                 │  · 分析智能体         │───► 平台数据管道(可选 · 一把 key)
                 └─┬─────────────┬─────┘        └────────┬─────────┘
                                                         │ 工具 schema 清洗
                                              ┌──────────▼─────────┐
                                              │ llm-shim  :3999    │──► 你的大模型网关
                                              └────────────────────┘
            Postgres           Redis
             :5442             :6479
    
    • web 转发层:Next.js 转发 /api/* 与对话流,携带 JWT
    • hunter-mcp-context:给工具调用注入当前用户身份
    • hunter-guard:清洗 MCP schema(兜底 DeepSeek 拒绝 parameters: null)
    • hunter-auth:JWT 门禁,关联会话与用户
    • hunter-budget:用量记账,支持限额(自部署默认关闭)
    • hunter-audit:完整审计日志 AUDIT.jsonl
    层环境变量可选值留空时
    数据源DATA_SOURCE_PROVIDERhunter · akshare · yfinance · saashunter(没配平台 key 也是它)
    大模型LLM_PROVIDERopenai_compat · anthropic · saas_geminiopenai_compat
    预测FORECAST_PROVIDERkronos_saas · kronos_local · noopkronos_saas

    DATA_SOURCE_PROVIDER 只在没配平台 key 时决定实时行情从哪取:A 股直接用它,港股 / 美股先走内置免费通道、取不到才用它;配了 key 就不看它。AKShare 在容器里访问境内数据源时可能不稳定。返回结构与细节见 docs/02-providers.md。

    1. 写自己的 SKILL(最简单)

    user-skills/
      你的skill名/
        SKILL.md
    
    ---
    name: 你的skill名
    description: 一句话说明什么时候该用它 —— 模型据此判断要不要调用
    ---
    
    # 正文写方法论
    分几步、先看什么后看什么、注意什么。
    

    放好后 docker compose restart opencode api,同名时你的覆盖内置的。想调用我们的数据和工具,在 frontmatter 里加 hunter.needs_tools,见 user-skills/README.md。

    2. 从 GitHub 一键装 SKILL:侧栏 SKILL 一栏点「+」→ 粘贴 GitHub 地址 → 预览内容 → 安装。

    3. 接自己的 MCP:工具箱一栏点「+」,填名称、类型(HTTP / SSE / stdio)、地址和 key,工具描述直接提供给模型。


    ❓ 常见问题

    大概率是大模型三项没填全。docker compose logs opencode --tail 20 会明确说缺哪个:LLM_BASE_URL、LLM_DEFAULT_MODEL、LLM_API_KEY。DeepSeek 还需 LLM_SCHEMA_SANITIZE=1。

    在 .env 加 LLM_SCHEMA_SANITIZE=1,然后 docker compose up -d(必须 up,restart 不会重读 .env)。

    平台 key(HUNTER_API_KEY)没填或无效时拿不到完整数据。去 hunter.agentpit.io/dev/api-keys 免费申请,或在界面左下角「解锁全部工具」粘贴。

    opencode 只在启动时扫描一次 SKILL 目录:

    docker compose restart opencode          # 约 50 秒
    python scripts/check_skill_sync.py       # 比对磁盘与 opencode 实际加载的 SKILL
    

    改 .env 里的 WEB_HOST_PORT / API_HOST_PORT / POSTGRES_HOST_PORT,同时把 NEXT_PUBLIC_API_URL 改成新的 API 端口。

    见 docs/01-getting-started.md 的常见报错,或到 讨论区问答 提问。


    🤝 参与贡献

    最简单的贡献是写一个 SKILL —— 懂一种分析方法、会写 Markdown 就够了。其次是文档和翻译,再次是代码。

    🙏 贡献者

    贡献者名单由 All Contributors 机器人维护。维护者在 issue 或 PR 下评论 @all-contributors please add @用户名 for code 即可添加,贡献类型见 类型说明(代码、文档、SKILL 内容、翻译、报 bug、出点子等都算)。

    🧩 基于 HunterCode 的项目

    项目说明
    HunterCode Cloud官方托管版,含微信 / 飞书推送

    你基于 HunterCode 做了二次开发或 fork?欢迎在 讨论区 告诉我们,我们会加到这里。

    💝 感谢推荐分享

    • 社区:LINUX DO —— 中文开发者社区

    💬 社区与支持

    渠道入口
    💡 GitHub 讨论区提问 · 分享 · 建议
    💬 微信(拉群交流)agentpit
    📱 微信公众号agentpit.io
    🐦 X@agentpit_io

    遇到 bug:提交 issue · 安全漏洞:请勿公开,见 SECURITY.md


    🗺 路线图

    • v0.1 · 自部署骨架、本地账号认证、可插拔数据 / 大模型 / 预测层
    • v0.2 · opencode 对话引擎、插件与 MCP、一把 key 通用、GitHub 一键装 SKILL
    • v1.0.0(2026-09-13)· 全市场扫描筛选器、小鹿智能体研究台、量化因子与回测按市场隔离、SKILL 导入附属文档与中文说明、kronos / truesource MCP 发布、会话数据落具名卷 —— 完整更新日志
    • v1.0.1(2026-09-17)· 对话引擎镜像 7.56 GB → 618 MB(下载量 1.70 GB → 153 MB)、api 镜像 1.32 GB → 909 MB、入口脚本固化、每日部署冒烟 CI、文档与社区基建 —— 瘦身过程与实测
    • v1.1.0(2026-09-18)· 免改配置文件开箱即用 —— 里程碑
      • 六个服务全部预构建镜像 + amd64/arm64 双架构(v1.1.0-rc1)
      • 数据库迁移改为 api 启动时自动执行;JWT_SECRET 等密钥首次启动自动生成
      • 大模型配置可存库(不再只能写 .env),改配置热生效、无需重启容器
      • 图形化首启向导(选模型 → 填 key 当场测试 → 直接对话)
      • 五个平台的部署方案(Zeabur / Sealos / Railway / 1Panel / Coolify·Dokploy) —— 模板与文档就绪并做过等价验证,但都还没在真实平台上跑过、也都没上架, 所以本版不放部署按钮,见 一键部署到云平台
      • 进度与实测数据:docs/setup-wizard/
    • v1.3.0(2026-10-02)· 智能交易板块(纸上交易账本)一期出口 —— 见 CHANGELOG
      • 唯一账本服务 paper:追加表 + 库层 GRANT 拒绝 UPDATE/DELETE,确定性 A 股风控六条
      • 撮合四步链路(意图 → 风控 → 撮合 → 记账)绑数据源快照,行情断了就挂单、不拿过期价成交
      • 六个交易时点交给 Temporal(只调度智能炒股链路,无兜底 cron),崩溃按执行历史恢复
      • 报告三层分离:事实由代码算、文字由模型写、回读校验不过就不发布
      • 前端五个正文页接真账本;PAPER_MODE 恒为 PAPER,请求带实盘字段即报错
      • 新增两个镜像 hunter-community-paper / hunter-community-fin-worker(amd64 + arm64)
    • v2.2.0 (2026-10-14) —— 全面支持谷歌 10-13 发布最强模型 Gemini 4 Argon,内置额度与默认谷歌模型全线升级
    • 下一步 · 拿到平台账号后逐个实测并上架(那时才加按钮)、国内镜像源、arm64 真机验证

    想要什么功能?到 讨论区想法分区 投票。

    ⭐ Star 趋势

    Star History Chart


    ™️ 商标与 Fork

    HunterCode · Hunter · AgentPit · 猎鹿人 是 AgentPit 团队的商标。

    • 自用 fork、内部部署、学习修改:不需要改名,随便用。
    • 对外分发、提供托管服务、商业发布:请去掉上述名称与 Logo,可注明「based on HunterCode Community Edition」。

    代码遵循 Apache 2.0,商标条款不影响你对代码的任何权利。另见 NOTICE。

    ⭐ 觉得有用请点 Star,这是我们继续维护的动力

    Made with ❤️ by AgentPit team