Skip to content

项目状态

唯一权威页面。 其他页面(包括 spec 头部 banner)的状态注解仅供局部参考;与本页冲突时以本页为准

当前一句话状态

v0.4.1 完成:ECS auto-deploy pipeline 上线,WeChat Pay E2E 验证通过 · v0.4.2 SearXNG 已上线 (ws.fsagent.cc),Hermes WeChat provisioning 进行中

进行中(Now)

v0.4.2 — Hermes WeChat Provisioning

5 tasks 待完成:DB schema 迁移(llmApiKeyhostPort)、spawn-profile.sh 接入 provisionPaidOrder()、Hermes gateway API → WeChat QR、Frontend StatusPage 展示 QR、Cloudflared per-Hermes 路由。

计划:docs/superpowers/plans/2026-05-15-hermes-wechat-provisioning.md

待处理: ECS cloudflared 还未加 ssh-ecs.fsagent.cc SSH ingress(auto-deploy 前置条件)。

启动新阶段时此格替换为对应 PR + 范围。绝不把"骨架就绪"写到本段 —— 那属于"已完成"。

已完成(按里程碑倒序)

2026-05-16 — v0.4.2 SearXNG 上线(PR #71)

  • SearXNG 自托管搜索上线 Vultr Japan (ws.fsagent.cc),DuckDuckGo + Bing 双引擎,无 API key 要求
  • deploy/compose.yml 新增 searxng 服务(Vultr-only,port 8088)
  • profile/template-stock-research-pro/config.yaml.template 切换 web.backend: dashscopeweb.backend: searxng
  • spawn-profile.sh 自动注入 SEARXNG_URL=https://ws.fsagent.cc/search 到 profile .env
  • deploy/searxng/settings.yml.template 可选扩展 Google CSE / Brave Search API

2026-05-15 — v0.4.1 完成(PR #67)

  • ECS auto-deploy pipeline 上线:docker-build.yml push image → deploy-ecs.yml (workflow_run 触发) SSH 部署到 ECS
  • deploy/ecs-deploy.sh:flock 并发锁 + tag 验证 + TWILIGHT_VERSION 热替换 + docker compose pull/up + /healthz 探针 + 自动回滚
  • deploy/alibaba-ecs-install.sh 增加 deploy 用户 + forced-command SSH key
  • CF Access service token (gh-actions-deploy) + ssh-ecs.fsagent.cc Access Application 已创建
  • backend.fsagent.cc 暴露 NestJS app-backend;WeChat Pay E2E 真实交易验证通过

2026-05-15 — v0.4.0 完成

  • NewAPI LLM gateway 上线 Vultr Japan (llm.fsagent.cc),deploy/newapi-compose.yml + CF Tunnel newapi-jp + Access service token + WAF 规则全部就位,ECS .env 已写入
  • ECS stack 验证:两套 stack 运行中 — warehouse stack(twilight-backend :8081 → api.fsagent.cctwilight-mcp-tushare :9100 → mcp.fsagent.cc)+ app stack(twilight-app-backend NestJS :4000,twilight-app-frontend nginx :8082 → app.fsagent.cctwilight-postgres
  • MCP Tushare /sse 端点验证通过,ListToolsRequest 每 3 分钟心跳正常
  • WeChat Pay + provisioning 路由 已在 NestJS backend 实现,DB schema 就位(零真实用户行,待首次付费用户 E2E 验证)
  • scripts/admin/migrate-profile.sh 已创建

2026-05-09 — v0.3.0 W1 + W2.1-2.3 合主线(PR #22-#34)

v0.3.0 数据仓库 + ToolSet 的 W1(baseline + provider 抽象)+ W2.1-2.3(前两个具体 provider + Composer)一次性合入主线。

  • PR #22 v0.3.0 baseline 规划文档(rollout plan + tushare integration design
  • PR #23 .dockerignore slim 化构建上下文
  • PR #24 DataProvider ABC + ProviderRegistrycore/data/providers/base.py + __init__.py)—— Capability / MarketState / Quote / FreshnessReport / HealthStatus 类型契约 + 5 种 typed ProviderError
  • PR #26 WarehousePool + WarehouseWritersrc/service/db.py)—— DuckDB 读连接池(size=4)+ 写连接单例
  • PR #30 trade_cal seed 脚本 + MarketStateResolver(盘前 / 盘中 / 收盘中 / 收盘后四态判定)
  • PR #31 W1 ToolSet 骨架收尾(skill/stock-research/scripts/_client.py + 6 e2e + 25 unit tests for normalize_code
  • PR #32 TushareDailyProvider(包装 core/data/tushare.py,adj_factor + 单位校验 + 错误归一化)
  • PR #33 AkshareSpotProvider(实时盘口 via Xueqiu,单位严格化)
  • PR #34 QuoteComposer + ROUTES 表(8 entries 按 (intent, MarketState) 索引,先成功 return;ProviderUnavailable / ProviderQuotaExceeded 降级;CapabilityNotSupported / CanonicalUnitViolation 不降级直接抛)
  • 5 起 v0.2.0 事故 中已被 W1+W2.1-2.3 架构覆盖:单位(事故 4)— canonical units in Quote;schema 脆性(事故 5)— frozen dataclass 边界。剩余 freshness / source 错配的修复跨 W2 alt(cache TTL)+ W4 (/price cutover) 之上完成

2026-05-08 — Tasks 11+12 上线(PR #20 + 现场操作)

  • Task 11 — Vultr 部署完成:cloudflared tunnel twilight-backend (UUID ec125552-…) 接 api.fsagent.cc;twilight-backend 容器(image ghcr.io/lacatfly/twilight-drive:latest)跑在 VPS 上,cpu 0.75 / mem 1500m;systemd-user units twilight-{backend,cloudflared}.service 都 active;smoke https://api.fsagent.cc/healthz 200
  • Task 12 — Profile 迁移完成:bearer for liang (plan internal, paid_until 2027-12-31) 已颁发并存于 macOS Keychain twilight-api-token~/.hermes/profiles/stock-research-agent/.env 移除 TUSHARE_TOKEN + 加 TWILIGHT_SERVICE_URL=https://api.fsagent.cc + TWILIGHT_API_TOKENfetch_price.py 600519 --trade-date 20260427 通过 backend 返回 cite 含 backend-side tool_call_id
  • PR #20 把第一次 deploy 现场踩出的 4 个 papercut 回打主线:issue-token.py 3.10 兼容、compose.yml cpus 1.5→0.75、systemd unit 去掉非法的 Requires=docker.service、install.sh prepend ~/.local/bin 到 PATH + chmod data/logs

2026-05-08 — 站点 IA 重构(PR #14)

  • 文档站按受众重组:新增 /use/(6 页)、/status//about/;删除 /developer/docs/getting-started.mddocs/overview/why.md
  • MASTER_PLAN.md 归档到 docs/planning/archive/2026-05-07-master-plan.md
  • spec:docs/planning/superpowers/specs/2026-05-08-site-ia-restructure-design.md

2026-05-08 — P1.0 backend Tasks 7-10(PR #13,✅ 已合主线)

  • src/service/{main,config,auth}.py —— FastAPI scaffold + Pydantic Settings + SHA256 bearer 中间件 over SQLite
  • src/service/cache.py —— DuckDB DailyCache (24h TTL) + FundamentalsCache (30d TTL)
  • src/service/routes/{price,fundamentals}.py —— bearer-authed 路由;akshare 实时路径 bypass cache(保 v0.1.1 freshness 语义)
  • scripts/issue-token.py —— admin CLI (issue / revoke / list),明文 token 仅打印一次
  • 35 new integration tests across 5 files; 95/95 green; ruff + format + ty 全清
  • 实施依据:docs/planning/plans/2026-05-07-v0.1.1-hotfix.md Phase 2 Tasks 7-10 + superpowers/plans/phase1 Tasks 1-4
  • Tasks 11-12(Vultr deploy + profile 迁移)操作者侧待办,见 Next 段

2026-05-07 — 部署骨架 + 文档站上线(PR #10, #11, #12)

  • deploy/:Dockerfile、compose.yml、cloudflared 模板、twilight-{backend,cloudflared}.service × 2、install.sh、env.example
  • 文档站切到 dev.fsagent.cc,GitHub Actions 自动部署到 Cloudflare Pages
  • 实施依据:docs/planning/plans/2026-05-07-deploy-pattern.md Tasks 1-6

2026-05-07 — Hermes 对齐重构(PR #9)

  • skill/stock-research/SKILL.md 迁移到 frontmatter 元数据 + references/ 拆分
  • profile/template-stock-research-pro/ 4-file 完整模板(AGENTS.md、SOUL.md、config.yaml.template、.env.example、secrets.schema.json)
  • install-skill.sh.env.example 注入 keys
  • 实施依据:docs/planning/plans/2026-05-07-hermes-restructure.md

2026-05-07 — v0.1.1 价格新鲜度 hotfix(commits 084843b, 2d7e5ce

  • akshare Xueqiu 单 code 端点(~1.4s,替换原 stock_zh_a_spot_em 75s 全表抓取)
  • core/core/data/_market.is_market_open() + Tushare trade_cal 缓存
  • get_price 自动路由:盘中走 akshare 实时 / 盘后走 Tushare daily
  • cite envelope 新增 served_by 字段(向后兼容,可选)
  • 实施依据:docs/planning/plans/2026-05-07-v0.1.1-hotfix.md Phase 1
  • ✅ git tag v0.1.1 已 push 至 origin(commit 084843b

2026-05-07 — v0.1.0 — 03 Agent 框架 MVP(commit 179008e

  • twilight-drive-core 0.1.0 包发布:citation protocol、Verifier、Competence registry、model router、single-agent runtime
  • Tushare adapter(get_priceget_fundamentals
  • skill/stock-research:3 个 fetch scripts(含 stub search_reports.py)+ dual-mode _client.py
  • CI:ruff + pytest;release workflow

2026-04-27 / 28 — 规划基线

  • 5 份层级规划(planning/01-05-*.md
  • 03 Agent 框架 design spec
  • VitePress 文档站初版

下一步(Next)

按 spec 来源链接,不在此处复述细节

v0.2.0 — P1.0 后端 MVP ✅ 全部完成

整阶段 Tasks 7-12 全部上线,详见 已完成段 的两条 2026-05-08 条目。

v0.3.0 — 数据仓库化 + ToolSet ✅ 全部完成

  • PR #38 T1 DuckDB warehouse ingest + APScheduler 调度 + 2年回填脚本 + /warehouse/* 路由
  • PR #65 warehouse 自愈(self-healing)+ T2a(index_daily 周频)+ T2b(weekly ingest)+ PK fix
  • W1–W6 DataProvider / Composer / WarehouseProvider / /price 切流 / /quality/* endpoints 全部合主线(PR #22-#65)
  • 诊断工具:scripts/diagnose_cache.py(PR #58)、scripts/probe_providers.py(PR #56)
  • 实施依据:rollout plan + 6 份 spec

v0.4.0 — LLM Gateway + 用户接入基础 ✅ 全部完成

NewAPI gateway 上线、双 ECS stack 验证、WeChat Pay + provisioning 路由就位。详见已完成段 2026-05-15 条目。

v0.4.1 — ECS Auto-Deploy ✅ 完成

Pipeline 全部上线,详见 docs/superpowers/plans/2026-05-15-ecs-auto-deploy.md

v0.4.2 — SearXNG Web Search ✅ 完成(PR #71)

ws.fsagent.cc 上线,详见已完成段 2026-05-16 条目。

后续 — P1.2 多源数据 ⏳ 计划

P1.2 的多源比对部分被吸收进 v0.3.0 W7+ TDX 跨源验证;剩余 pytdx3 / Yahoo / akshare 宏观数据作为独立条目延后。

远期 / Phase 2(Later)

3 个 initiative 互相独立。每个的技术方案见 superpowers/specs/phase2

  • Initiative C — Token Gateway —— New-API key pool 管理;SearXNG 已完成(PR #71),剩余 key pool 部分
  • Initiative A — 数据仓库 —— 4 层 DuckDB 模型 + APScheduler batch 入仓 + 跨源质量检查
  • Initiative B — Profile Manager —— git-backed profile 注册中心 + CLI(claim / push / pull / sync / template)+ 多主机同步

维护约定

  • 谁更新:Liang(操作者)
  • 何时更新:每个 PR 合并时改"已完成";启动新阶段时改"进行中 / 下一步"
  • 取代的旧约定/overview/roadmap 删除(重定向至本页);planning/index.md 表格 Status 列删除;各 spec 文件头部 banner 保留作为局部注解

最后更新:

团队内部文档