huyang218/dsh-plugins--packages-aportfolio0

dsh-plugin-aportfolio

A-share watchlist and holdings for DeepSeek Harness: the agent remembers what you own and watch across sessions, prices it live, and reports per-position profit, weights and price-target hits.

包名
dsh-plugin-aportfolio
版本
0.1.0
许可证
MIT
最近更新
2026年8月18日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:huyang218/dsh-plugins#efa02c42cd65f80b544659dfd6dbd00b6f293d41&path:packages/aportfolio

dsh-plugin-aportfolio

English | 中文

The agent remembers what you own and what you are watching, across sessions — so "how are my holdings doing" is a question it can answer without being told the positions again every time.

dsh plugin --profile web add dsh-plugin-aportfolio

Self-contained: it fetches its own prices from EastMoney's public endpoint and needs no token and no other plugin. It does need a storage backend, which the standard profile composes.

Tools

ToolWhat it does
aportfolio_viewPrices every stored entry live: per-position profit and weight, portfolio totals, and watchlist entries that hit a buy or sell target
aportfolio_editRecords or removes one holding or watchlist entry
持仓 2 只,市值 18.50万,盈亏 +1.00万(5.74%)
  600519 贵州茅台 100股  现价 1297.99  盈亏 +8.17%  占比 70.1%
  000001 平安银行 5000股  现价 11.05  盈亏 +0.45%  占比 29.9%

Four rules it keeps

State lives in storage, not in the transcript. A position the agent has to re-read from chat history is a position it will eventually get wrong.

Nothing is stored that the user did not say. The prompt tells the model to ask rather than guess, and set replaces a stock's entry outright — it takes a complete share count and cost, never a delta, so a misread "bought 100 more" cannot silently double a holding.

An unpriced holding is unknown, not worthless. When a quote fails the row keeps its shares and loses its value, the total says how many it excluded, and the summary states that the number is therefore incomplete. A zero there would look authoritative and drag the whole portfolio down.

At the entry limit it refuses rather than evicts. A silently dropped holding is a wrong portfolio the user has no way to notice.

Config

KeyDefaultMeaning
maxEntries200Cap on each of holdings and watchlist
quoteConcurrency6Parallel quote requests

License

MIT