WeKnora
Tencent
Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Thhoho/reSanity
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
散修,修出你的 Sanity。
积极的信心,谨慎的动作。
一个首先为散户投资研究设计的证据搜索与逻辑梳理 Skill:查一手资料、拆经济暴露链、标注证据与推断边界,并用认知锚持续更新和复盘判断。
它面对的核心场景不是“预测下一只会涨的股票”,而是散户做公司、行业和题材研究时最常遇到的几类问题:消息到底是真是假,技术或政策怎样传到公司收入与现金,市场已经相信了什么,自己的判断要被哪个事实更新。
Resanity 把会改变投资决策的判断拆成四个问题:观察到什么、可以推出什么、不能推出什么、对决策有什么影响。模型保留问题定义、证据解释、结论和下一步等研究语义;代码只做 hash、引用、as-of、来源血缘、预算和安装身份等机械检查。
它不是荐股工具,不是行情软件,也不替用户下单、设仓位或承诺收益。它希望做的是:在题材最热时多问一句证据,在结论最顺时找出最弱环节,在验证日到来时记得更新判断,在复盘时说清自己到底错在哪一环。
当前正式代码版本是 0.2.1。当前版本已通过工程与机械验证,但尚无同版本、独立完成的研究有效性基准测试;这些检查不证明 Alpha、收益或 PMF。精确验证状态与运行边界见 validation/v2/README.md。
市场里不缺信息,缺的是经过边界检查的判断;不缺观点,缺的是能被后续事实更新的观点。
投资研究首先把主题还原成经济暴露链:
需求或政策
→ 工程/产品可行性
→ 具名客户与合同
→ 交付
→ 验收、起租或计费
→ 收入
→ 毛利
→ 回款与自由现金
前一段成立不能自动证明后一段。每条真正承重的判断使用原子主张卡记录观察、推断边界、不能推出的更强结论和决策影响;结论强度服从最弱的承重主张。需要比较路径时再画基准、上行和下行可能性,不为格式强行制造三种对称答案。
最小输出是一句根结论、1–5 张关键主张卡和一个最低成本的下一验证。只有问题需要时才加入价格/预期对照、载体比较、认知锚或正式证据表。
投资研究是默认目标场景,可以直接问:
这家公司和热门题材之间,是概念映射,还是已经形成可归属的收入和现金?
截至今天,这家公司从产品验证到收入和现金的哪一段已经被一手证据闭合?
这个行业真正稀缺的环节和利润池在哪里?市场价格已经计入了哪些预期?
结果不保证给出可买标的。证据不足时,WATCH_ONLY、NOT_EVALUABLE 或“暂不动作,等待某项验证”都是有效结论。
原子主张卡、可能性地图、来源血缘和 as-of 边界在产品、政策和技术排障等问题上具有可复用潜力,因此 0.2 允许用户显式调用 Resanity 做小范围实验:
请使用 Resanity,为这个产品方案画可能性地图,并审计三条承重主张。
这不是已经验证的通用能力。当前设计、真实使用和较多案例仍以投资研究为主;非投资场景不自动触发,不套用价格、估值、利润池或候选载体等投资合同,也不把一次成功回答当成泛化证据。医疗诊断和法律判断需要独立协议,不属于当前通用实验范围。
resanity Skill;SKILL.md 只放通用原子主张协议和路由;references/;active / refuted / realized / archived 生命周期,代码只读和提醒;完整边界见 ARCHITECTURE.md。
SKILL.md canonical 核心协议与路由
references/investing.md 散户投资研究 profile 与完整报告格式
references/anchors.md 认知锚生命周期与文件协议
references/formal-audit.md 正式机械审计与身份绑定
tools/skill_identity.py active/canonical/profile 身份检查
tools/research_check.py 报告机械检查
tools/report_check.py 报告交付编译机械闸门
tools/anchor_check.py 只读锚日期检查
lib/index.js 可选 DSH 插件
validation/v2/ 当前分层验证协议
validation/v2 中的 v2 是验证协议/schema 代际,不是 Resanity 产品 2.0,也不包含旧候选运行记录。
把整个目录放到宿主的 Skill 目录,保证 references/ 和 tools/ 与 SKILL.md 同根。常见候选位置:
| 宿主 | 项目副本 | 用户副本 |
|---|---|---|
| Codex | <cwd>/.codex/skills/resanity/ |
~/.codex/skills/resanity/ |
| DSH | <cwd>/.dsh/skills/resanity/ |
$DSH_HOME/skills/resanity/ 或 ~/.agents/skills/resanity/ |
宿主实际返回的 locator 始终优先于候选表。正式运行前检查:
python3 tools/skill_identity.py --host codex --cwd "$PWD" --profile core
python3 tools/skill_identity.py --host dsh --cwd "$PWD" --profile investing
如果宿主给出实际加载路径,追加 --active-skill /actual/path/SKILL.md。命令非零表示 active 副本或 profile 与 canonical 不一致。
只有用户明确要求时才读写工作目录的 anchors/。报告会过期,锚用来保留可证伪、可更新的判断:
| 散修概念 | 实际资产 | 含义 |
|---|---|---|
| 道基 | 认知锚 | 能被具名事实支持或推翻的判断 |
| 检验履历 | 证据变化 | 记录每次新事实怎样改变原判断 |
| 渡劫日 | 更新触发器 | 财报、交付、验收或规则生效等复核日期 |
| 走火入魔 | refuted 锚 |
连同推翻事实一起保留的错误判断 |
锚的生命周期为 active / refuted / realized / archived。提醒器只读 active 锚的日期触发器;说“更新锚”才会进入研究和更新,不会在后台自动改写判断。可选的 journal/decisions.md 用于记录当时相信什么、采取了什么动作及后来如何验证。
每次研究首先交付可读报告;证据不足、开放问题或暂不动作都是合法报告结论。报告不需要等到研究“收敛”,也不需要先取得收据。用户要求保存时,先把同一内容写入 report.md;文件失败时,最终回答中的完整内容仍是报告。
普通聊天不需要收据。需要机械审计或做 A/B 时,在报告已经交付或保存后,读取 references/formal-audit.md,再生成 resanity.audit-receipt.v2 并运行:
python3 tools/research_check.py path/to/report.receipt.json \
--skill /canonical/resanity/SKILL.md \
--active-skill /actual/loaded/resanity/SKILL.md
正式验证增加 --strict。AUDIT_RECEIPT_OK 只代表机械合同闭合,不代表结论正确;AUDIT_NOT_RUN 或 AUDIT_INCOMPLETE 也不等于报告未生成。
lib/index.js 提供 bundled Skill provider、/resanity-check 锚体检和可选 Tushare 凭据命令。项目/用户同名 Skill 可以遮蔽 bundled 副本,因此真实验证仍必须运行 identity check。
从本地 tarball 安装到指定 profile:
dsh plugin --profile headless add /absolute/path/resanity-0.2.1.tgz
安装成功后 resanity 应自动追加到该 profile 的 dsh.profile.bundles。配置中的 systemNotifications 默认 false,只有用户显式开启时才调用操作系统通知。Tushare 不进入核心研究协议,但在凭据与依赖可用时是 A 股日线自动采集的默认最高优先级来源;采集失败不会隐藏回退到其他来源。
以下能力已实现并通过测试,但需要重启 DSH 才生效(模块缓存),且未进入 0.2.1 发布树:
anchorTimer / commands / dataTools / webFetch 四个开关让同一行只激活需要的机械能力——宿主行保留定时器与命令,preset 行只开数据工具,互不重复。dataTools: true 时注册到 tools):ashare_disclosures(ticker, asOf, …):CNINFO 官方公告索引,无关键词搜索、无自动回退,失败为显式 UNAVAILABLE 信封;market_observations(ticker, asOf, benchmarkTicker, …):候选 + 基准的冻结观察包,AUTO 按 TUSHARE > BAOSTOCK > AKSHARE_TENCENT 本地就绪优先级选源,携带内容寻址采集收据;structured_providers(fred | edgar | comtrade…):FRED / SEC EDGAR / UN COMTRADE 一级数据提供方,每调用一种模式。webFetch: true,宿主平面):在 ctx.web 上注册受控 HTTP fetch(fetchMaxBytes / fetchTimeoutMs 限界),使组合了 tool-web { fetch: true } 的会话获得可用的 web_fetch 工具直连一手来源。researchPrompt: true):在 preset scope 常驻注册六个 systemPrompt 段落——resanity:expand(简短研究请求自动扩展为研究设计:决策问题、as-of、对象确认、工具计划、输出结构与收尾动作;3–5 行简述后直接执行,只在真实分叉时追问)、resanity:evidence(数据工具优先、搜索用于发现、一手页用于确认、web_fetch 只用于具名一手来源、公告工具输出预算提示、来源资格硬边界)、resanity:claims(主张卡先于结论、一个时态一个边界、结论强度服从最弱主张、唯一下一验证)、resanity:fanout(子代理扇出模板:一代理一标的/假设、子代理只采集、父代理合成与裁决)、resanity:redteam(证伪优先查询 + 交付前「只攻击、不修补」自我红队:独立提问框架、反例并入报告、标注 self-countercase)、resanity:report(页眉四要素、条件式根结论、主张树、逐卡最强反例、区分性证据表、决策菜单、建议锚草稿)。纪律从"skill 被调用时才加载"升级为"预设内每一轮常驻"。ashare_disclosures 默认只返回分类计数与近期条目(compact / categories / limit 可调,compact:false 取全量),避免把整个公告索引塞进上下文。prefetchObservations: true,宿主行):锚文件声明 标的:<6位代码>(可选 市场:、基准:)后,到期触发时机械层先把公告索引 + 观察包采集到 <anchors>/.observations/<主题>.<日期>.json,提醒附包路径——"提醒"变"复核就绪"。代码只采集、只提醒,判断仍归模型;采集失败只降级为纯提醒。tools/failure_tracker.py 聚合 refuted 锚的 失效类型(tense/boundary/observation/verification)与逾期未复核的 active 锚,/resanity-review 一键输出。统计只聚合,协议修订由人/模型决定。tools/report_check.py 对保存的报告做机械检查——根结论与主张卡存在性、逐卡时态/证据边界唯一性、唯一下一验证存在与单一性启发、INSUFFICIENT 与现实否定并存的告警(阻断级);页眉四要素、条件式根结论、主张树、逐卡最强反例、决策菜单、建议锚草稿(告警级,不阻断交付但进入评估 D5–D7 打分);同时识别纯文本与 ### [C#] 两种主张卡格式。/resanity-report [report.md] 一键运行(默认 <工作区>/report.md)。DELIVERY_READY 只代表交付合同闭合,不代表结论正确。validation/eval/):题目集(复用 8 案例 prompt)、人工评分表(①结论推翻率 ②INSUFFICIENT 诚实性 ③唯一下一验证质量 + D6 红队质量 + D7 决策菜单可执行性)、collect.py 汇总。零成本反复跑,为方法修订提供可复核基线;单臂无基线对比,不证明有效性。/resanity-audit [receipt.json] [--strict] [--json] 对报告收据跑 research_check.py 机械审计;/resanity-init 在工作区初始化 anchors/ 与 journal/decisions.md 脚手架。npm run check:preset 运行 validation/v2/check_preset.mjs,校验「散修研究」预设的组合平面规则、resanity-data 行开关、delegation 组领域、预设内 skill 副本与 canonical 的逐字节一致性,以及宿主补丁的 webFetch 开关。8 案例付费 A/B(validate:v2:ab:dsh)仍是研究方法变更时的完整仪式,需要两个等价 headless profile。# 宿主行(profile 补丁):skill + 定时器 + 命令 + fetch 提供方 + 锚预采集
- id: resanity
name: resanity
config:
checkIntervalHours: 6
systemNotifications: true
webFetch: true
prefetchObservations: true
# preset 行:只开模型数据工具与研究纪律,不重复宿主机械层
- id: resanity-data
name: resanity
config:
dataTools: true
researchPrompt: true
anchorTimer: false
commands: false
开发和发布前运行:
npm test
python3 <skill-creator>/scripts/quick_validate.py .
python3 tools/validation_source_check.py
env npm_config_cache=/private/tmp/resanity-npm-cache npm pack --dry-run
当前源码树只保留可复用的机械与语义验证协议;候选过程记录和旧协议留在 Git 历史,不进入 0.2.1 发布树。机械门槛用于确认结构、身份、预算、来源资格和收据闭合,不能证明研究质量。
目前应这样理解验证范围:
8 案例 DSH headless 采集器入口为 npm run validate:v2:ab:dsh -- --help;其 dry-run 会先核对 B/R profile 差异、active Skill/profile hash、宿主 patch 与前六层收据,具体参数见 validation/v2/README.md。
AUTO 时会选择本地可用的下一来源;一旦选定后发生网络、权限或数据失败,不会自动回退。缺少价格硬锚时相应结论必须降级。MIT © 2026 Resanity Contributors
「散修研究」预设以仓库内 preset/ 目录为单一事实源(agent.cordis.yml + preset.yml + skills/),与 canonical 技能文件同仓库版本化,杜绝"验证 A、实际加载 B"的漂移。
preset/skills/resanity 是指向仓库根的软链(canonical 即预设源,编辑一处生效);~/.dsh/.agent-presets/resanity/ 是同步出来的真实副本;npm run preset:sync 一键物化仓库 preset/ → 挂载点(文件 644);npm run check:preset 校验挂载副本与仓库源逐字节一致、组合平面规则与宿主补丁开关——漂移必然被抓出;npm run preset:sync → 重启 DSH 即可。工作流:改预设一律编辑仓库 preset/ → npm run preset:sync → npm run check:preset → 提交推送。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: agent-skills、claude-code、evidence-based-research、investment-research。