dsh-weinao
Verified@ghogiel/dsh-weinao · v0.1.4 · MIT
维脑 Agent (Weinao) — HEMA (Historical European Martial Arts) literature research tools for DeepSeek Harness: search and read Wiktenauer pages, maintain a bilingual glossary, and produce cited research reports
Install
dsh plugin add @ghogiel/dsh-weinao Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
维脑 Agent (Weinao) — dsh-weinao
维脑 Agent 是面向 DeepSeek Harness 的 HEMA(历史欧洲武术)文献检索工具插件。
它为 dsh agent 提供 Wiktenauer 文献检索能力:搜索并阅读 Wiktenauer 武术古籍文库、维护本地双语(中↔德/英)术语表。安装后,任何会话仍保持原本的角色和对话策略,只是在遇到 HEMA 相关问题时多了一套可用的查询工具。
一切运行在你的 dsh 进程本地——没有服务器、没有额外 API key(除了 dsh 本身的模型凭据)、没有第三方服务。插件直接对接 Wiktenauer 公共 MediaWiki API。
安装
dsh plugin --profile web add @ghogiel/dsh-weinao
或者不通过 plugin 命令,把下面这几行加进你的 profile 的 cordis.patch.yml:
- insert:
- id: dsh-weinao
name: '@ghogiel/dsh-weinao'
功能
四个工具
| 工具 | 作用 | 什么时候用 |
|---|---|---|
wiki_search |
Wiktenauer 全文搜索,返回标题 + 摘要 | 每个问题的第一步 |
wiki_get_page |
读取某页完整纯文本(精确标题匹配) | 搜索后,读最佳命中页 |
wiki_prefix_search |
前缀标题搜索 | 术语消歧、拼写变体、空搜索结果兜底 |
wiki_get_links |
获取某页的内部链接 | 发现关联古籍/概念 |
每个工具返回结构化规范值(不是散文),模型看到的是渲染后的文本,程序化调用方拿到的是干净数据。
工具使用指引(prompt 分区)
插件注册 hema-workflow prompt 分区,它只做一件事——告诉模型这些 wiki 工具何时用,不改动会话原本的角色或对话策略:
- 说明工具用于查询 Wiktenauer 武术古籍库,在用户问 HEMA 相关问题(或需要查古籍、技术、大师)时使用
- 给出查找方法:先
wiki_search(可翻译中文/现代术语为历史术语)→ 读最相关结果wiki_get_page→ 空结果时回退wiki_prefix_search/wiki_get_links - 要求引用来源时注明页面
- 不声明模型是 HEMA 助手、不强制所有问题走检索流程、不拒绝非 HEMA 问题
- 注入当前术语表上下文(已确认映射标为可信,推断映射标为待确认)
本地术语表
双语术语映射存储(如 交击 → Zwerchhau),以纯 JSON 文件持久化在 $DSH_HOME/wiktenauer/glossary.json(或 ~/.dsh/wiktenauer/)。
- 模型推断出新翻译时自动追加(
llm_inferred) - 用户确认的映射
confidence +0.3并标记可信 - 用户拒绝的映射扣置信度;累计 3 次拒绝后移除
- prompt 上下文把已确认映射显示为「已确认术语映射(可信)」,推断映射显示为「LLM 推断映射(待确认,可用但必须告知用户)」
配置
| 键 | 默认值 | 含义 |
|---|---|---|
glossaryDir |
$DSH_HOME/wiktenauer |
术语表 JSON 文件所在目录 |
sectionOrder |
1000 |
prompt 分区顺序(越小越靠前;persona 是 0) |
示例:
- insert:
- id: dsh-weinao
name: '@ghogiel/dsh-weinao'
config:
glossaryDir: /data/hema
sectionOrder: 900
项目起源
这是 HEMA Question Agent(原为 FastAPI + Claude Code CLI 包装)的 agent 核心移植,变成一个自包含的 dsh 插件。四个 wiki 工具和术语表逻辑直接移植自 wiktenauer_mcp.py / glossary_store.py;FastAPI / 付费 / 认证 / 限流层有意去掉——dsh 提供运行时、会话日志和工具执行管线。
开发
pnpm install
pnpm run typecheck
pnpm run build
pnpm test
wiki 客户端和术语表零依赖(Node 内置 + 全局 fetch),纯逻辑部分无需完整 dsh 安装即可冒烟测试:
node --experimental-strip-types -e "import('./src/wiktenauer.ts').then(m => m.wikiSearch('Liechtenauer', 2)).then(r => console.log(r))"
已对 Wiktenauer 真实 API 验证(搜索 / 读页 / 前缀搜索 / 链接 / 缺失页错误),并对照已发布的
@deepseek-ai/[email protected] / @deepseek-ai/[email protected] /
@deepseek-ai/[email protected] 类型定义做过类型检查(即 @deepseek-ai/dsh 随附的版本)。
注意:全文搜索只匹配 Wiktenauer 上的精确拼写——历史变体(如 Zwerchhau 对应 Wiktenauer 的 Zwerchhaw)会返回空,这正是模型应该回退到 wiki_prefix_search 的时刻(工具使用指引已提示模型)。
许可
MIT