dsh-literature-agents
文学与古典文献领域专家插件,面向 DeepSeek Harness 0.2.1-rc.2。
一个 Host bundle + 一个 Web client 模块:9 个文献工具、11 位文史专家子代理、3 个评审团, 外加输入区的一个「古籍」开关,用来按对话启停整套能力。
运行逻辑与入口位置参考 @michengai/dsh-agency-agents(计算机领域精简替代版 dsh-agency-agents-cs):
一条 cordis.patch.yml insert 行、模型侧工具 + 常驻系统提示 + 经 ctx.subagents.startActivation() 运行的专家子代理。
能力(9 个工具)
| 能力 | 工具 | 数据源 |
|---|---|---|
| 论文检索 | search_scholar_papers |
Crossref、OpenAlex,网页搜索兜底 |
| 学人生平 | get_scholar_biography |
Wikidata(属性级溯源)+ OpenAlex 著作 |
| 古籍检索 | search_classic_texts |
中文维基文库全文检索 |
| 古籍阅读 | get_classic_text |
中文维基文库页面正文 |
| 古籍翻译 | translate_classic |
先检索平行文本/旧注,再由翻译专家今译/英译 |
| 引用核验 | verify_citation |
Crossref DOI、题名相似度 |
| 专家召唤 | summon_literature_expert |
11 位文史专家子代理 |
| 评审团 | run_literature_panel |
3 个并行评审团 |
| 专家名册 | list_literature_experts |
列出全部专家、领域与评审团 |
每个检索类输出都带一行 数据源:… ✓/✗(原因),源失败时如实降级,不补造结果。
专家(11 位,5 个领域)
- 史学与人物:史学史专家
historiographer、学人行实考据专家biographer - 文献考据:校勘学家
textual-critic、目录版本学家bibliographer、训诂学家philologist - 古籍翻译:古籍翻译家
classics-translator、注疏专家scholia-expert - 文学研究:文学批评家
literary-critic、比较文学学者comparatist - 数字人文与核验:数字人文研究者
digital-humanist、学术核验员citation-auditor
评审团(3 个)
- 古籍考据评审团
classics-research-panel:目录 + 校勘 + 训诂 + 注疏 - 文学研究评审团
literature-review-panel:史学史 + 文学批评 + 比较文学 + 引用核验 - 古籍翻译审校团
translation-review-panel:译文 + 旧注 + 训诂 + 引用
评审团只返回成员独立意见;主会话负责核验证据、去重、按严重级别汇总后交付。
技能
skills/literature-research/SKILL.md 由第二个 Host 行(@deepseek-ai/dsh-skill-filesystem)挂载,
提供分层检索、事实纪律、生平考据、古籍阅读、翻译规范与引用核验清单。
@deepseek-ai/dsh-skill-filesystem 由 @deepseek-ai/dsh-base 提供(每个 profile 的第一个 bundle),
插件不 import 它,只在 patch 里按模块名挂载,因此不声明 peerDependencies——声明会让 pnpm 在 profile 里
另装一份旧版本,反而遮蔽宿主自带的那份。
安装
从插件市场(dsh-market)
在 dsh-market 中搜索 Literature & Classics Agents 安装。安装目标就是本仓库:
dsh plugin add github:yujh129/dsh-literature-agents
桌面版默认不会把
dsh加进 PATH。命令行提示「无法将“dsh”项识别为 cmdlet」时,改用完整路径<DSH 安装目录>\resources\runtime\cli\bin\dsh.cmd,或把该bin目录加进 PATH,或让 agent 用下面的plugin_manager方式安装。
也可以让 agent 在当前会话里调用:
plugin_manager install_bundle target="github:yujh129/dsh-literature-agents"
安装会自动加入 profile 的 dsh.profile.bundles 并热装载;若曾被停用,再启用一次:
plugin_manager set_bundle target="dsh-literature-agents" enabled=true
生效后新会话或下一模型步即可看到 9 个工具、技能与输入区「古籍」开关。
本地开发(源码目录)
plugin_manager install_bundle target="<本仓库的绝对路径>"
卸载
plugin_manager remove_bundle target="dsh-literature-agents"
输入区开关
输入框左侧工具行有一个「古籍」开关(conversation.input.left,id literature-toggle):
- 开(品牌色圆点):本对话可调用 9 个文献工具,系统提示中含专家引导。
- 关(灰色圆点):
tools.restrict({deny})在该会话的 Agent 上下文里隐藏全部 9 个工具, 并移除专家引导段;其他对话不受影响。技能仍在目录中,但没有工具可调用。 - 状态按
SessionId保存在~/.dsh/dsh-literature-agents/toggles.json(DSH_HOME优先), 重启后仍在;新对话默认开启。 - 切换立即作用于该会话的 Agent;若某一轮正在生成,从下一模型步开始生效。
- 这是用户专属操作:没有对应的 Agent 工具,模型无法自行打开或关闭。
客户端模块是 client.js,由本包 package.json 的 dsh.client 声明注入 Web 启动图;
状态、门控与两个路由(GET /plugins/dsh-literature-agents/state、
POST /plugins/dsh-literature-agents/toggle)都在 index.js。
配置
- id: literature-agents
name: dsh-literature-agents
config:
provider: spawn # 子代理 provider;默认 spawn,缺失时回退到任一非 fork provider
maxDepth: 1 # 召唤出的专家最多再委派一层;provider 不支持时自动省略
目录
index.js:工具、系统提示、专家/评审团运行逻辑、会话门控与两个开关路由、literatureSkills服务client.js:Web 客户端,输入区「古籍」开关experts.js:专家与评审团数据(纯数据,便于增删)sources.js:数据源适配器(Crossref / OpenAlex / Wikidata / Wikisource / 网页)skills/literature-research/SKILL.md:研究协议cordis.patch.yml:两个 Host 行locale/*.json、icon.svg:插件管理器显示元数据
网络依赖
- 必需:Crossref、OpenAlex、Wikidata、中文维基文库。
- 可选:宿主网页搜索服务(
dsh-free-search等),仅作兜底与线索。 - 已知不可达(本机实测):zh.wikipedia.org、ctext.org、Semantic Scholar、Gutendex;这些源不参与主链路,只在输出中作为引用地址出现。
- Wikidata 的
www.wikidata.org接口在共享 IP 上常见403 Too Many Reqs;插件对 403/429 做三次退避重试,仍失败时如实降级并给出网页线索,不补造数据。
适配要点(改代码前必读)
- 工具参数必须编译成 JSON Schema:宿主
ctx.tools.register()原样保存parameters,由模型适配器 直接作为input_schema发送;它不会执行defineTool()里的parameterSchemaSpecToJsonSchema()。插件仍按 property-map 写法维护参数(便于增删), 但注册前统一经本地parameterSchema()编译为{type:"object", properties, required}——与宿主编译结果逐字段一致。 跳过这一步会让工具以裸属性表进入请求,DeepSeek API 直接返回 400Invalid schema for function ...。 - 该编译在插件内完成,不依赖解析宿主安装目录里的
@deepseek-ai/dsh-tools, 因此在不存在node_modules的目录安装、或以link:方式安装时都可工作。 - 客户端模块的
id必须等于包名(window.__ModuleLoader__.load({ id: 'dsh-literature-agents' })): 宿主按包名把dsh.client声明合进 Web 启动图,id 不一致模块不会被找到。 - 专家子代理经
ctx.subagents.startActivation()启动;maxDepth仅在 provider 声明capabilities.depthLimit时传入,其余情况自动省略。
开发自检
改完代码先跑这两个离线冒烟测试(不联网、不写状态、不装依赖):
npm run smoke # 两个都跑
npm run smoke:host # index.js:9 个工具的参数必须是合法 JSON Schema,2 条开关路由已注册
npm run smoke:client # client.js:模块 id 等于包名,输入区只注册一个入口
dev/ 不在 files 里,不会被发布出去。
发布到插件市场(维护者)
dsh-market 从 curated registry 读取目录,收录方式是向
awesome-dsh-plugin/awesome-dsh-plugin
提一个 PR,新增 data/plugins/yujh129__dsh-literature-agents.yml。
仓库需要满足:公开、有 dsh.bundle、创建满 24 小时、带 GitHub topic dsh-plugin。
条目只需 url、name、category、description.{en,zh} 四个字段,一个 PR 最多三条。
许可
MIT,见 LICENSE。
English summary
dsh-literature-agents gives DeepSeek Harness a literature and classical-Chinese research kit:
9 tools (scholarly paper search, scholar biographies from Wikidata, Chinese Wikisource full-text
retrieval, grounded translation, citation verification), 11 specialist subagents across 5 domains,
3 parallel review panels, a bundled research-protocol skill, and a composer switch that gates the
whole kit per conversation. Every retrieval prints its data source and degrades honestly instead of
filling gaps.
No comments yet. Be the first to write one.