慢慢看 · manmankan

先看清,再决定。A股行情翻译官。

散户看得清,AI 调得动。只给数据,不给答案。

License: AGPL v3 Python 3.11+ PyPI version PyPI downloads Tests Local-first Local Web

慢慢看今日概览:数据新鲜度、关键位置、自选和指数对照

慢慢看是一个给普通 A 股散户使用的本地观察台。它先回答每天最常见的三个问题:我的股票今天有什么关键变化、哪些接近长期高低位、当前数据是否可信。需要深入时,再展开位置、持仓、筛选和历史数据。

uv tool install manmankan
kan web

浏览器会打开只监听本机的观察台。每次启动都会生成一条仅本次有效的随机会话链接;如果浏览器没有自动打开,请使用终端刚打印的完整地址。你可以直接在网页里:

  • 添加自选股,查看 30 / 60 / 180 日关键位置。
  • 录入、修改或删除持仓和现金,查看盈亏与仓位事实。
  • 查看与上一份不同交易日快照相比进入或离开关键位置区的变化。
  • 用中文条件从自选、持仓、行业、题材或代码池中找股票。
  • 明确看到“数据截止日 / 正常应截止日 / 是否需要更新”。

所有自选、持仓、缓存和 token 都保存在本机;不登录 manmankan 服务、不做云同步或遥测。查询行情时会向所选数据源发送股票代码;配置 TuShare 时,token 只发送到你配置的数据源。持仓成本、股数和现金不会发送。

普通用户从这里开始

1. 打开今日概览

kan web

首页默认只展示 30 / 60 / 180 日三个关键周期,并把完整数据表放在概览之后。位置百分位只描述当前价在历史区间中的坐标,不代表见底、见顶或买卖信号。

2. 添加自己的股票

在“今日”页直接添加自选;在“我的持仓”页录入券商当前显示的成本、股数和现金。数据只写入本机 XDG 目录,持仓文件权限收紧为 0600

3. 每天收盘后看变化

点击“更新数据”后,首页会显示整池数据是否到达正常交易日,并对比上一份不同交易日快照。没有上一份数据时会明确说明,不会伪造变化。

不想打开浏览器时,可以在终端运行:

kan daily

进阶用户:CLI、JSON 与 AI

Web 和 CLI 共用同一套 service 数据层。开发者、脚本和 AI agent 可以继续使用完整 CLI、JSON、Python API 与 MCP,现有机器契约保持兼容。

kan scan --codes 600519,000858 --periods 30,60,180 --format json
kan find --codes 600519,000858 --format json --fields @core,@valuation,@moneyflow,@technical
kan mcp install --dry-run --format json
kan mcp http --host localhost --port 8765

kan find --codes ... --format json --dry-run 只返回查询计划;真实行情坐标使用 kan scan --codes ... --format json。完整 AI 首用路径见 docs/ai-quickstart.md

从哪里继续

你是谁 先跑 / 先读
普通 A 股用户 kan web:今日概览、自选、持仓、找股票、数据更新
中国用户 / 开发者 docs/china-quickstart.md:安装、行情源网络、TuShare、代理和 Windows / PowerShell
AI agent / 自动化脚本 kan find --codes 600519,000858 --format json --dry-run + docs/ai-quickstart.md + skills/manmankan-skill.md
第一次贡献者 docs/contributor-quickstart.md:本地跑起来、验证命令、good first issue、合规边界

manmankan ("take your time, see clearly") is a local-first A-share observation tool for ordinary retail investors. Its default Web view brings daily changes, watchlists, holdings, key price-range positions, and data freshness into one place. CLI, JSON, Python API, and MCP remain available as the secondary automation layer.

Data, not decisions: no buy/sell advice, no ratings, no price targets. Python 3.11+ · local-first · A-share (architecture designed for multi-market extension) · GNU AGPL-3.0.

为什么存在

很多选股流程的问题不在于缺少观点,而在于输入太散:自选股、行业成分、题材池、热榜、全市场截面、外部候选代码各有入口;行情位置、估值裸值、资金、技术指标、缺数据状态又分散在不同地方。

慢慢看把这些输入统一成一个可复核的数据层,并按用户优先级提供两种出口:

  • 第一出口,给普通散户:Web 先展示今日关键事实、数据新鲜度、自选与持仓,再按需展开明细。
  • 第二出口,给 AI / 开发者:CLI、JSON、MCP 和 kan.api 提供可审计、可组合的数据契约。

如果你要让 AI 参与候选筛选,慢慢看的角色是提供可审计输入:它负责把"坐标"和"条件命中"说清楚,不负责替你下结论。

AI / 开发者是第二用户,但机器契约仍是一等工程能力:

设计决策 说明
JSON 是产品,不是后门 --format json 输出包含 okschema_versionquery_timedata_availabilitydisclaimererror 信封——AI 不需要猜测字段含义或处理裸异常
低上下文成本 --compact / --fields @core / --agent-summary / --no-compact-context 让 AI 按需索取,不浪费 token
Schema 自发现 kan schema --format json 返回 CLI JSON、find DSL、MCP tools 和错误 envelope 的机器可读契约;--section find --compact 可低上下文只取筛选契约
查询计划和 delta kan find --dry-run 预演数据源与高成本维度;--snapshot / --since 支持显式本地会话 delta
示例可机器读取 kan examples --format json 输出端到端命令清单,AI 可以先读示例再选择最短命令
Skills.md 能力清单 skills/manmankan-skill.md 是给 AI Agent 的"说明书"——AI 读到它就知道 manmankan 能做什么、怎么调、错误怎么处理
MCP Server kan mcp serve 提供 stdio MCP;kan mcp http 提供本机 Streamable HTTP endpoint;tools/list 暴露 outputSchema,tools/call 同时返回 text 与 structuredContent;接入细节见 docs/mcp.md
退出码即 API 每个命令的退出码有明确语义(0=成功,非 0=具体错误类别),AI 不需要解析 stderr 来判断成败

AI agent 首次接入推荐读 docs/ai-quickstart.md。它把“查询计划 smoke”和“真实取数路径”拆开,避免把预演当成已经形成行情证据。

中国用户 / 开发者如果遇到 PyPI 下载慢、行情源网络、TuShare token、Windows PowerShell 或代理问题,先看 docs/china-quickstart.md

快速开始

uv tool install manmankan
kan web

忘了命令直接跑:

kan guide
kan daily
kan help

终端常用入口:

kan scan                                      # 扫默认池(自选 ∪ 持仓)
kan scan --all                                # 扫 A 股全市场池(首次较慢)
kan scan --only-watchlist                     # 只扫自选
kan scan --exclude-star --exclude-bj          # 排除科创板 / 北交所
kan scan --codes 600519,000858               # 扫外部候选代码池
kan scan --periods 5,20,60,180 --wide         # 自定义 2-360 周期并全量展示
kan info 600519                               # 单股详情 + 所属行业位置均值/排名对照
kan find --codes 600519,000858 --format json --dry-run # 不取数的查询计划 smoke
kan find --codes 600519,688981 --format json --fields @core,@retail
kan find --codes 600519,688981 --format json --fields @core,@valuation,@moneyflow,@technical
kan scan --codes 600519,000858 --format json # 拉公开日 K 的真实坐标 JSON
kan find --all --pe lt:20 --format json --compact
kan trend --all --down 3                      # 全市场连续下跌看板
kan hold cash 50000                           # 录入现金,用于展示一手占现金比例
kan hold add 600519 --cost 1680 --shares 100 # 手动录入真实持仓事实
kan hold                                      # 持仓盈亏 + 仓位 + 位置总览
kan hold --format json --mask                 # AI/脚本消费;金额脱敏
kan board rank --kind industry --by moneyflow --format json
kan history 600519 --format json

kan scan / kan daily 面向终端阅读;kan find --format jsonkan hold --format json 和 MCP 面向脚本与 AI 消费。

数据契约

慢慢看的核心输出不是"推荐",而是可组合的数据事实。

主要能力:

  • 多周期位置百分位:3 / 5 / 7 / 10 / 15 / 30 / 60 / 90 / 120 / 180 日。
  • 共振:同一候选在多个周期同时接近低位或高位。
  • 散户事实:一手金额、占已录入现金比例、科创/北交/创业板权限提示、距区间高低点距离、量价方向组合。
  • 候选池:自选、行业、题材、热榜、完整 A 股市场(含北交所 / ST)、外部 --codes 或 stdin。
  • 真实持仓:用户在 Web 或 CLI 录入成本 / 股数 / 现金,本地计算市值、仓位、今日和累计盈亏。
  • 筛选条件:位置、共振、涨跌、连阳连阴、估值、质量、资金、技术指标、筹码、股东、除权除息事件等。
  • 输出形态:终端表格、Markdown、JSON、紧凑 JSON、字段白名单、Python API。

JSON 相关入口:

kan schema --format json --section find --compact
kan find --industry 半导体 --format json --fields @core,@valuation
kan find --codes - --format json --compact
kan find --codes 600519,000858 --format json --agent-summary
kan find --codes 600519,000858 --format json --snapshot
kan find --all --format json --compact --no-compact-context
kan scan --all --format json

机器可读 schema 先看 kan schema --format json;完整 kan find 字段分组、data_availability、缺数据语义、错误 envelope 见 docs/find.md。脚本化入口以 kan/api.py 文件头 docstring 为公开 contract。

安装

要求 Python 3.11+。推荐用 uv

uv tool install manmankan
kan --version

其他方式:

pipx install manmankan
python3 -m venv ~/.kan-venv && source ~/.kan-venv/bin/activate && pip install manmankan
git clone https://github.com/piklen/manmankan.git && cd manmankan && uv sync && uv run kan --version

如果装完当前终端找不到 kan,打开新终端让 PATH 生效。国内镜像源同步慢时,可以临时直连 PyPI:

uv tool install manmankan --index-url https://pypi.org/simple/

市场覆盖

当前专注 A 股。 数据源适配层为多市场扩展设计——美股、港股、加密货币等市场可以作为独立 Source 接入,共享同一套 CLI 命令语义和 JSON schema。详见 docs/architecture.md

边界

慢慢看不会做这些事:

  • 不推荐具体股票。
  • 不预测涨跌。
  • 不给买卖建议、评级、目标价或仓位建议。
  • 不内置策略 preset、打分模型或"最佳标的"排序。
  • 不下单、不接券商账户、不自动读取外部持仓;真实持仓只来自用户在 Web 或 CLI 主动录入的本地 XDG 数据。
  • 不提供实时行情推送、分钟级行情、港股、美股、期货或完整财报数据库(多市场是远期路线图,当前仅 A 股)。
  • 不内置 AI / LLM / 托管服务——AI 由用户自己选择和运行。

位置百分位的定义是:

(当前价 - N 日最低价) / (N 日最高价 - N 日最低价) * 100

0% 表示 N 日区间最低,100% 表示 N 日区间最高。共振 ×N 表示多个周期同时接近低位或高位。它们只是坐标,不是信号。合规细则见 docs/compliance.md

隐私与数据

慢慢看本地运行:

  • 自选股、缓存、扫描快照存放在 ~/.local/share/kan/,按 XDG 规范管理。
  • 真实持仓存放在 ~/.local/share/kan/positions.json,父目录 0700,文件 0600
  • kan web 每次启动生成随机会话凭证;页面、API 和数据更新事件都要通过本次浏览器会话访问。
  • 持仓输出可加 --mask 脱敏金额;本地数据仍可能被 Time Machine / iCloud 等系统备份工具复制。
  • 不需要登录,不上传自选股,不做遥测。
  • CLI 会访问公开行情数据源;更新检查会访问 PyPI,可用 KAN_NO_UPDATE_CHECK=1 关闭。
  • 配置 TuShare token 后,token 只发往你配置的 TuShare API 端点。
  • kan uninstall 会清理本地数据并提示对应的软件包卸载命令。

本项目代码和文档使用 GNU AGPL-3.0AGPL-3.0-only)。如果你修改本项目并通过网络服务提供交互,需要按 AGPL 向用户提供对应源代码。市场数据主要来自 AKShare 生态及公开行情源,可用性依赖上游;第三方行情数据、API、SDK 和 TuShare Pro 权限不由本项目授权,使用时仍需遵守对应上游条款、额度和合规要求。

文档导航

文档 用途
CHANGELOG.md 版本变更记录
docs/architecture.md 架构愿景:三层定位、Source 模型、多市场路线、AI 消费设计
docs/china-quickstart.md 中国用户 / 开发者首用路径、国内网络、PyPI 镜像、TuShare 与代理排查
docs/contributor-quickstart.md 首次贡献路径、good first issue、验证命令和 AI 协作边界
docs/ai-quickstart.md AI agent 首用路径、JSON / MCP 消费规则
docs/mcp.md MCP 支持客户端、dry-run、写入规则和 agent 解释边界
docs/find.md kan find JSON schema、字段、缺数据语义
docs/compliance.md 合规边界、公开输出语言规范
docs/roadmap.md 路线图和明确不做的方向
skills/manmankan-skill.md AI Agent 能力清单(给 AI 读的说明书)
AGENTS.md AI 编程助手进入本仓库时的开发边界和验证命令
SUPPORT.md 支持范围、Discussions / Issues 分流和安全报告入口
kan/api.py Python API 公开 contract
SECURITY.md 安全与漏洞报告
CONTRIBUTING.md 开发、测试、贡献规范

开发

git clone https://github.com/piklen/manmankan.git
cd manmankan
uv sync
uv run ruff check kan/ tests/
uv run mypy
uv run pytest -q -m "not network and not tty"

启用本地 hooks:

git config core.hooksPath .githooks

第一次贡献先读 docs/contributor-quickstart.md,也可以先从 good first issue 开始;贡献规范详见 CONTRIBUTING.md,尤其是公开输出的中性语言和合规边界。

许可证

GNU AGPL-3.0 · © 2026 piklen

你可以在 AGPL-3.0-only 条款下使用、修改和分发本项目代码。修改版本、二次分发和网络服务使用需遵守 AGPL 的源码提供和同许可要求。项目许可证只覆盖本仓库的代码与文档,不替代第三方行情数据、API、SDK 或投资合规义务。

Bug / 功能反馈走 GitHub IssuesDiscussions。 贴日志前先看 安全反馈说明,脱敏 token、代理账号、本机路径和持仓金额。