























如果你也曾在行情软件、交易所、Excel、备忘录和 AI 对话之间来回切换,L¥NX 想解决的就是这个问题:把个人投资过程中的资产、持仓、交易、策略 Agent、操盘计划、行情、资讯与提醒放到一个本地化系统里,让“看盘、记账、生成计划、执行、复盘”真正形成闭环。
免责声明:L¥NX 不是自动交易系统,不会托管交易账户,也不构成投资建议。系统中的策略、信号、AI 生成内容和资讯摘要仅供参考,所有投资决策需由使用者自行判断并承担风险。
很多个人投资系统只解决了其中一个问题:
L¥NX 想解决的是一个更完整的问题:
个人投资者如何在一个私有、可控、可复盘的系统里,持续记录资产状态、市场变化、策略计划和执行结果?
它更像一个“个人资产驾驶舱”,不是替你下单,而是帮你把关键数据组织起来,让每一次判断和执行都有上下文。
| 登录页 | 仪表盘 |
|---|---|
![]() |
![]() |
| 行情中心 | 操盘计划 |
|---|---|
![]() |
![]() |
| 策略管理 | 策略 Agent |
|---|---|
![]() |
![]() |
| 操盘历史 | 系统设置 |
|---|---|
![]() |
![]() |
| 仪表盘 | 行情中心 | 操盘计划 | 策略 Agent |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
L¥NX 的核心不是“多做几个页面”,而是把个人投资过程拆成几个可以持续追踪的环节。
| 模块 | 解决的问题 | 关键能力 |
|---|---|---|
| 资产与持仓 | 我现在持有什么、赚亏多少 | 资产档案、持仓汇总、成本、市值、盈亏、组合权重 |
| 交易与历史 | 每一次买卖为什么发生 | 买入/卖出记录、手续费、时间、资产过滤、计划归因 |
| 行情中心 | 价格和趋势是否可用 | 多行情源、本地缓存、失败回退、手工补录、趋势图 |
| 策略 Agent | AI 是否理解我的真实上下文 | 读取持仓、交易、行情、资讯后生成策略草稿和计划 |
| 操盘计划 | 策略如何变成可执行动作 | 买入/卖出/止盈/止损计划、触发状态、部分执行、执行归因 |
| 资讯与提醒 | 信息和风险如何进入系统 | RSS 资讯、分类筛选、正文缓存、AI 翻译、Webhook 推送 |
简单说,L¥NX 希望让你回答三个问题:
┌──────────────────────────────────────────────┐
│ Vue 3 前端 │
│ Dashboard / Assets / Plans / Market / News │
└──────────────────────┬───────────────────────┘
│ REST / SSE
┌──────────────────────▼───────────────────────┐
│ Node.js + Express │
│ Auth / Assets / History / Agent / News / Push │
└──────────────────────┬───────────────────────┘
│ better-sqlite3
┌──────────────────────▼───────────────────────┐
│ SQLite │
│ assets / holdings / trades / plans / settings │
└──────────────────────────────────────────────┘
技术选型:
| 层级 | 技术 | 说明 |
|---|---|---|
| 前端 | Vue 3、Vite、Pinia、Vue Router、Vue I18n、PWA | 单页应用,支持桌面和移动端 |
| 后端 | Node.js、Express | REST API 与 SSE Agent 流式输出 |
| 数据库 | SQLite、better-sqlite3、WAL | 本地文件数据库,便于个人部署和备份 |
| AI | Chat Completions 兼容接口 | 支持自定义 AI API、模型和搜索 API |
| 部署 | Docker / Docker Compose / 本地 Node | 支持容器化和本地开发 |
下面给出三种部署方式:Docker Compose、Docker 命令、源码本地运行。
适合大多数自托管用户。
mkdir -p ~/lynx/data
cd ~/lynx
docker-compose.ymlservices:
lynx:
image: fooololo/lynx:latest
container_name: lynx
restart: unless-stopped
ports:
- "3003:3456"
environment:
NODE_ENV: production
PORT: "3456"
DB_PATH: /app/data/lynx.db
TZ: Asia/Shanghai
LANG: C.UTF-8
LC_ALL: C.UTF-8
NODE_OPTIONS: "--max-old-space-size=512"
JWT_SECRET: "请替换为足够长的随机字符串"
AUTH_USERNAME: "admin"
AUTH_PASSWORD: "请替换为强密码"
volumes:
- ./data:/app/data:rw
healthcheck:
test: ["CMD", "curl", "-sf", "http://localhost:3456/api/health"]
interval: 30s
timeout: 3s
start_period: 10s
retries: 3
如果你直接使用项目内置的
docker/docker-compose.yml,请务必修改默认JWT_SECRET、AUTH_USERNAME、AUTH_PASSWORD。
docker compose up -d
访问:
http://服务器IP:3003
docker compose logs -f lynx
docker compose down
mkdir -p ~/lynx/data
docker run -d \
--name lynx \
--restart unless-stopped \
-p 3003:3456 \
-e NODE_ENV=production \
-e PORT=3456 \
-e DB_PATH=/app/data/lynx.db \
-e TZ=Asia/Shanghai \
-e JWT_SECRET="请替换为足够长的随机字符串" \
-e AUTH_USERNAME="admin" \
-e AUTH_PASSWORD="请替换为强密码" \
-v ~/lynx/data:/app/data:rw \
fooololo/lynx:latest
访问:
http://服务器IP:3003
适合开发、二次修改和调试。
git clone https://github.com/huluohu/lynx.git
cd lynx
npm ci
cd client && npm ci
cd ../server && npm ci
cd ..
npm run dev
默认地址:
前端:http://localhost:5173
后端:http://localhost:3456
也可以使用一键脚本:
bash start.sh
cd client && npm run build
cd ..
node server/index.js
构建完成后,后端会托管 client/dist,通过后端端口统一访问:
http://localhost:3456
默认登录信息:
用户名:admin
密码:admin123
首次部署后必须修改:
AUTH_USERNAMEAUTH_PASSWORDJWT_SECRET建议生成随机密钥:
openssl rand -base64 48
然后写入 Docker 环境变量:
environment:
JWT_SECRET: "上一步生成的随机字符串"
AUTH_USERNAME: "你的管理员账号"
AUTH_PASSWORD: "你的强密码"
| 配置 | 默认值 | 说明 |
|---|---|---|
PORT |
3456 |
后端监听端口 |
DB_PATH |
data/lynx.db / /app/data/lynx.db |
SQLite 数据库路径 |
JWT_SECRET |
开发默认值 | 登录 token 签名密钥,生产环境必须替换 |
AUTH_USERNAME |
admin |
管理员登录账号 |
AUTH_PASSWORD |
admin123 |
管理员登录密码,生产环境必须替换 |
AI_API_URL |
空 | Chat Completions 兼容 API 地址 |
AI_API_KEY |
空 | AI API Key |
AI_MODEL |
gpt-4o-mini |
默认模型名 |
AGENT_SEARCH_API_URL |
空 | Agent 可选外部搜索 API |
AGENT_SEARCH_API_KEY |
空 | Agent 搜索 API Key |
TZ |
Asia/Shanghai |
运行时区 |
大部分配置也可以在系统设置页中保存到数据库,不一定都要写环境变量。
如果你希望使用策略 Agent,需要配置兼容 OpenAI Chat Completions 的接口。
在系统设置页填写:
常见 API URL 形式:
https://api.example.com/v1
系统会自动请求:
/v1/chat/completions
如果你使用的是本地或反向代理模型服务,也可以填写内网地址。
提醒推送同样在设置页配置。L¥NX 支持 Webhook 推送,例如:
配置位置:
设置 → 推送渠道
企业微信机器人建议使用群机器人 Webhook。系统会以兼容性更好的 text 消息发送,避免微信端出现“不支持的消息类型”。
Docker Compose 推荐挂载:
./data:/app/data
默认数据库文件:
data/lynx.db
SQLite 开启 WAL 模式,运行时可能还会有:
lynx.db-wal
lynx.db-shm
最稳妥方式:停止容器后复制整个 data/ 目录。
docker compose down
cp -a data data-backup-$(date +%Y%m%d-%H%M%S)
docker compose up -d
如果不能停机,建议使用 SQLite 在线备份方式,而不是只复制主库文件。
docker compose pull
docker compose up -d
后端启动时会自动执行尚未应用的数据库迁移。
如果你希望通过域名访问,可以使用 Nginx 反向代理。
server {
listen 80;
server_name lynx.example.com;
location / {
proxy_pass http://127.0.0.1:3003;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
生产环境建议配置 HTTPS,并把服务放在可信网络、VPN、零信任网关或反向代理认证之后。
L¥NX 更适合:
不适合:
最后再强调一次:L¥NX 的重点不是替你预测市场,而是帮你把资产、交易、行情、资讯、策略和计划组织成一个可追踪、可复盘、可持续迭代的个人投资系统。

原创文章,作者:诺多,如若转载,请注明出处:https://www.huluohu.com/posts/2060/
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。