dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
自媒体工作台插件:8 tab 看板(今日简报/叙事主线/选题/草稿/知识卡蒸馏审核/信息源/发布表现/系统建议),五守卫硬执行,VAULT 数据与代码分离,intel 模块只读接入并遵守四条红线。
DeepSeek Harness(DSH)上的本机简报台。它读每日简报和当日必读,人点「采纳」之后只记在本地账本里,不自动发到公众号、X 或小红书。
默认打开的是简报台,不是内容工厂。选题审批、草稿包、视觉审核、交付和发布台账默认关闭,对应接口返回 410。
brief 今日简报:读最新 daily_briefing_*.md + daily_data_*.json;payload.daily 走五守卫(payload.commit=true 才入库)
topics 选题推荐:当日 must_reads;payload.editorial=midweek|weekly 生成周三/周六可审批选题卡
draft 草稿中心:pending 待生成契约、request/revise 建任务与修订、submitPackage 提交四平台完整草稿包(contractVersion 2)、packages 状态
distill 蒸馏审核:runtime + vault 合并队列与审核状态
sources 信息源注册表 + intel 健康快照(只读)
publish 发布表现聚合(只读)
advise 系统建议(只读,守卫⑤)
intel 情报指挥所:ingest/health、fusion 日频融合、analyze/submitCluster 情报簇、cardRequests 补卡清单、rank 每日 Top5、jobs 任务状态、dispatch 下发建议
情报层信源(2026-09-10 调整):alpha-signal / hn(FeedFuse 快照,按条目展开,唯一带真实热度的源)/ hermes-cn / baicaotang(pending)
categories:['科技创新','财经经济'] 或 topicsAllow:['人工智能','AI','科技',…]。去「国际动态」把信噪比 20.6%→33.0%(14 天 160→97 条);主题门是补漏,实测 14 天仅多救回 5 条cardRequests:把「够热(sourceHeat≥70)但 0 张知识卡」的主题转成可执行补卡清单(ops-intel/card-requests-*.json|md,建议编号如 obs://056)。只出建议,不写星火库T0 分析队列 + 定时簇分析(P4):插件不调 LLM(红线),所以插件只负责收窄工作量,分析交给 agent。
| 时间 | 谁 | 做什么 |
|---|---|---|
| 09:30 | 插件(SPARKOS_INTEL_SCHEDULE=1) | 融合 → 生成骨架 → 写 analyze-YYYYMMDD.json(pending 全量 + t0 有界) |
| 10:00 | launchd com.sparkos.intel-analysis | 先查 t0:为 0 直接跳过(不唤 agent、不烧 token);>0 才唤起 headless agent 分析 t0 |
t0Candidates):跨源(sourceCount≥2)或 sourceHeat ≥ 80,跨源优先,上限 8 条;实测把每日 36 簇收窄成 8 条pending 的排除规则是「已分析」而非「已落盘」:骨架先落盘、topic 仍空的中间态必须继续排队,否则一次误写骨架就会让该簇永久跳过分析bash launch/install-intel-analysis.sh、--uninstall、SPARKOS_DRY_RUN=1 bash launch/sparkos-intel-analysis.sh$VAULT/system/intel-analysis.log、$VAULT/system/schedule.log多条目馈送的 eventKey 由条目 URL 内容哈希生成 → 同一新闻跨天/跨波次重放自动去重(实测 3094 条原始条目去重后 1257 条)
真实热度模型(P1):FusionItem.heat = 源注意力信号归一化到 0-100,随 cluster.sourceHeat 进入排序。
| 源 | 热度来源 | 映射 |
|---|---|---|
| hn / hackernews | HN points(实测 1~1431,中位 105) | 对数 → 0-100(1→10, 112→67, 544→89, 1162→100) |
| hn / github | 累计 star(35k~1M)不是今日热度 | 固定 55(仅「登上 trending」的中等信号) |
| hermes-cn | 不用 item.heat(实测与 breaking/strong 不相关) | strong+breaking 70 / strong 60 / breaking 45 / 其他 25 |
| alpha-signal | 无热度字段 | null(不提供,而非 0) |
cluster.heat = 成员最高真实热度分档(≥70 high / ≥45 medium),多条同主题与跨源各升一级。
ranking 的 heatScore 以 attention(= sourceHeat ?? heat 档位)占 0.25 权重——此前该项完全缺失。
dryRun=true:全部 8 个子命令零写入(不初始化 VAULT、不打开 SQLite、不改任何文件 mtime),只返回"将执行动作 + 参数校验结果";写调用不再声明并发安全
claim → image_generate → submit 回交可靠附件,程序校验附件 SHA、真实像素(从 PNG/JPEG/WebP 实际字节解析并与附件声明、任务规格三方一致)、5MiB/40M 像素上限、MIME 白名单与路径安全;图片不可变落盘visual_retry_requests 审计 + 幂等键 + 当前 attempt 校验 + 事务级并发保护);replace_stub_with_production 显式目的支持"人工确认把已驳回 stub 测试图替换为真实 Provider 图片",新提交若仍是 stub 在提交闸门被拒;旧 attempt/图片/approval/event 全保留publication_intents 台账(不可被 Worker 领取,claimNextJob 显式排除历史 publish job),发布动作永远由人工执行visual_approved_test,production 交付与发布记录创建被拒publication_intents 仅是台账;平台 API 调用为零,发布由人工在对应后台执行SparkOS 靠一条推送交付结论,不靠页面。 用户已经在 Telegram / DSH 会话里工作, 再维护一个「仪表盘」只会增加一个不去看的界面。
实际推送的样子(286 字,一屏读完,全是结论):
📋 SparkOS 晨会 · 2026-09-10 周四
今天要发
· 20:00 → 公众号 🏭《一鱼多吃》(S1E3);小红书拆条
⚠️ 系统里没找到对应草稿 —— 这篇要你自己写
雷达捡到 3 条备料
· OpenAI 宣称用 AI 解决 Navier–Stokes 千禧年难题并发布证明
· 陶哲轩警告:AI 正在把数学开放问题当「非可再生资源」开采
· Meta 在美上线个人 AI agent Muse:主打「secure by design」
要动手
· 数据回流 0 条 —— 周报没原料(跑周报)
· 补卡 10 张 —— 够热但 0 张知识卡
src/notify/digest.ts(纯函数,buildMorningDigest),只给结论不给原始材料;
标题经 headline() 去掉「——同日…(快照 09-09 08:01 首采…)」这类机器尾巴scripts/push-digest.mjs(零第三方依赖)。凭据取自 telegram-bridge 的 .env +
sessions.json,可用 TELEGRAM_BOT_TOKEN / SPARKOS_PUSH_CHAT_ID / TELEGRAM_BRIDGE_DIR 覆盖com.sparkos.daily 跑内容循环 → 08:00 com.sparkos.morning-digest 推送bash launch/install-morning-digest.sh、--uninstall、
bash launch/sparkos-morning-digest.sh --dry-run$VAULT/system/morning-digest.log判断「今天排期有没有对应草稿」用的是保守口径(排期文案与草稿标题的 token 交集), 匹配不上只能说「系统里没找到」——草稿完全可能写在 media-os 里。
SparkOS 只有一个正式工作台。 /sparkos 与 /sparkos/app 是唯一正式入口,渲染统一模板 src/server/page.template.html(M8 起原 V1 与 V2 两套实现已合并为这一份;旧 page-v2.template.html 已删除,仅存 Git 历史)。
/sparkos/app-v2:仅为过渡期兼容别名,渲染与正式入口完全相同的统一模板,不是第二套实现< > & U+2028 U+2029 全转义)、每请求 CSP nonce、页面内嵌 CSRF token;全部 mutation POST 走统一 apiFetch(application/json + CSRF 头)2026-09-10 重定位:从「系统的仪表盘」改成「我的晨会面板」。旧版把 8,000+ 字的引擎日志和 24 篇历史草稿铺满首屏,而每日循环真正产出的草稿(带 hook、角度、引用卡)一条都没渲染。现在首屏只回答三个问题,长文本全部折叠:
| 面板 | 回答什么 | 数据来源 |
|---|---|---|
| 01 今天该发什么 | 排期表里今天要发什么 | media-os/01-content/30天排期.md(只读) |
| 02 今天可以写什么 | 今日循环产出的 hook 级草稿 + 引用卡 | daily_data_*.json 的 drafts / citations |
| 03 底层必读事件 | 今日判定事件(采纳/忽略写决策账本) | daily_data_*.json 的 must_reads |
| 04 需要你动手 | 数据回流 / 蒸馏积压 / 待写回 / 补卡 | media-os metrics + VAULT 队列 |
| 05 今天哪条线在升温 | 叙事主线 heating/stable/cooling | daily_data_*.json 的 line_updates |
| 06 水位 | 情报簇 / 带卡数 / 融合 / 数据回流 | /sparkos/intel 汇总 |
#0B2545 / #E0FBFC / #3BF4FB / #FFB703)选题池.md 的 Markdown(media-os 对插件永久只读,零写盘);发布动作永远由人在平台后台执行mode=full 的九视图工厂模板并存:后者仍只在显式开启时可达工厂模板(factory.template.html)承载统一九视图:总览(日报摘要/建议)、情报(Top5/簇/叙事线/时间线搜索/融合/下发/归档)、选题(must_reads 采纳/忽略 + 编辑策划审批)、创作(工厂草稿审批/修订 + 运行时草稿)、审核(收件箱/蒸馏/待写回)、视觉(审核/受控重试)、发布(delivery 台账,不执行平台发布)、增长、系统(来源注册表/健康)。
它在只读渲染之外,提供以下受控 POST(全部经服务端安全边界:Content-Type 校验、Origin 同源校验、CSRF token;M7/M8 起原 V1 独有能力已全部并入):
POST /sparkos/editorial/decision 选题卡人工审批(批准/驳回,驳回必填意见)POST /sparkos/creation/decision 草稿包人工审批POST /sparkos/creation/revise 创建不可覆盖修订版POST /sparkos/visual/decision 批准/驳回图片(驳回必填意见)POST /sparkos/visual/retry 受控视觉重试(含 purpose=replace_stub_with_production + 人工确认)POST /sparkos/mutate 必读采纳/忽略(kind=topic)与蒸馏候选采纳/驳回(kind=distill,四红线人工执行)POST /sparkos/writeback/remove 待写回清单人工移除(星火库写入永远人工)POST /sparkos/visual/delivery 生成 preview/production 交付包POST /sparkos/publish 创建发布台账记录(仅台账,不自动发布)兼容与红线:contractVersion 1/2 与 legacy 小红书规则继续兼容(旧 v1 包不可证明小红书完整,不能进入 production 交付);不存在自动发布——publication_intents 仅是台账,Worker 永不领取发布任务,平台 API 调用为零,发布永远由人工在对应后台执行。
// ~/.dsh/profiles/web/package.json
{ "dependencies": { "dsh-sparkos": "link:/绝对路径/dsh-sparkos" }, "dsh": { "bundles": ["dsh-sparkos"] } }
重启宿主,用启动时打印的登录地址打开,再访问 /sparkos。页面请求会带上 dsh 的 cookie;没登录时这些地址返回 401 或 403,不返回本机路径。
npm 上还没有 dsh-sparkos 这个包,dsh plugin add dsh-sparkos 会失败。仓库里已经提交了 lib/,安装不会再跑构建,也不需要打开 pnpm 的 allowBuilds。
peer 覆盖 DSH 0.0.1-rc.1、0.1.0-rc.6 和 0.2.x(含 0.2.0-rc.2,以及目前 npm 上的 0.2.1 预发布版)。0.2.6 及以后的预发布版如果装不上,是范围还没写到那一档。
简报台有四块:每日简报、当日必读、运行时草稿、蒸馏队列,外加一份待写回清单。
2000-01-01 的示例简报。已经有 daily_briefing_*.md 时不会覆盖。state/。source-missing,避免悄悄当成空成功。下面这些写接口在简报台模式下返回 410,响应里会说明怎么临时打开。当前产品不把它们当可用功能:
POST /sparkos/editorial/decision、/sparkos/creation/decision、/sparkos/creation/revise、/sparkos/visual/decision、/sparkos/visual/retry、/sparkos/visual/queue、/sparkos/visual/delivery、/sparkos/publish
临时打开工厂页面:设置 SPARKOS_WORKBENCH_MODE=full,或在数据目录 config/workbench_mode.json 写入 {"mode":"full"},然后重启宿主。工厂页面里的发布仍然只记台账,不调用平台接口。
只读入口一直可用:GET /sparkos、/sparkos/app、/sparkos/data、/sparkos/intel、/sparkos/draft、/sparkos/csrf。
插件数据放在 $DSH_HOME/sparkos。没设 DSH_HOME 时就是 ~/.dsh/sparkos。缺目录会自动创建。知识库和情报归档没有默认的个人路径。
| 环境变量 | 未设置时 | 说明 |
|---|---|---|
SPARKOS_VAULT_ROOT | ~/DeepSeek harness/sparkos | 插件数据区(决策/intel/守卫账本/产物/交付) |
SPARKOS_DB_PATH | $SPARKOS_VAULT_ROOT/data/sparkos.db | 内容工厂 SQLite 状态库(schema v7) |
SPARKOS_CONTENTOS_ROOT | ~/cow/projects/contentos-x | 每日工作流运行时根(只读) |
SPARKOS_MEDIA_OS_ROOT | ~/DeepSeek harness/media-os | 编辑侧内容 OS(只读:30 天排期 / metrics.csv / 选题池)。缺失时简报台降级但不报错 |
SPARKOS_DAILY_BRIEF_DIR | $CONTENTOS_ROOT/daily_brief | daily_data / daily_briefing / drafts |
SPARKOS_KNOWLEDGE_ROOT | ~/cow/knowledge | 星火知识库(只读,G3 引用卡校验) |
SPARKOS_ALPHA_ARCHIVE / SPARKOS_HERMES_ARCHIVE / SPARKOS_BAICAOTANG_ARCHIVE | ~/.openclaw/... / ~/.hermes/... / null | intel 三源 archive 目录 |
SPARKOS_HN_ARCHIVE | $SPARKOS_KNOWLEDGE_ROOT/sources/raw | FeedFuse/HN 每日快照目录(只取 tech-ai-*.json,按条目展开;条目自带真实热度 score) |
SPARKOS_SCHEDULE / SPARKOS_INTEL_SCHEDULE / SPARKOS_EDITORIAL_SCHEDULE | 0 | 定时任务开关(默认全关,均不自动外发) |
其余路径(SPARKOS_RUNTIME_DISTILL_QUEUE、SPARKOS_RUNTIME_EVENTS、SPARKOS_TIMELINE_DATA)见 src/vault.ts。
图还没放进仓库。准备好之后放到下面两个相对路径,这里就会显示。图片需要能从 GitHub 打开;若要投 awesome-dsh-plugin,screenshots.json 也用同样的相对路径。


npm ci
npm test
npm run check
npm run test:dom # 简报台 + 工厂模板各跑一遍 Chrome DOM 断言,需要本机 Chrome
npm run build # 改了 src/ 之后要重新构建,并把 lib/ 一起提交
安装方用的是仓库里的 lib/。prepack 只在打包发布时构建,git 安装不会跑它。
npm run test:dom 先渲染默认简报台,再带 --factory 渲染工厂模板。DOM 检查脚本:python3 scripts/dom-check.py brief|full <html>。
CI 见 .github/workflows/ci.yml。
本机若有 DSH monorepo,可以建一份不提交的 tsconfig.local.json,把 @deepseek-ai/* 指到源码。npm run check 会优先用它。
MIT。