dsh-officeDeepSeek Harness plugin

办公三件套!Office document tools for DeepSeek Harness (dsh): generate, read, and edit spreadsheets (.xlsx), PDFs, and presentations (.pptx).

Stars
19
Forks
1
License
Apache-2.0
Last commit
Aug 28, 2026

Overview

办公三件套!Office document tools for DeepSeek Harness (dsh): generate, read, and edit spreadsheets (.xlsx), PDFs, and presentations (.pptx).

Original README

Cached from the project repository on Sep 3, 2026. This is source content, separate from the Agents.md review above.

View source

@huiliyi37/dsh-office

English | 中文

Office document tools for DeepSeek Harness (dsh): generate, read, and edit spreadsheets (.xlsx), PDFs, presentations (.pptx), and Word documents (.docx).

Ported from the office plugins of the Tianshu terminal coding agent (Apache-2.0 licensed upstream), adapted to the dsh cordis tool model.

Tools

ToolWhat it does
xlsx_readList sheets of a .xlsx, or read one sheet as a markdown table (range-limited for large files; formula text preserved)
xlsx_writeWrite a 2D array to a new .xlsx (formula cells, header bold, column widths, number formats)
xlsx_editEdit an existing .xlsx: add sheets, update cells (value or formula), append rows
xlsx_recalcRecalculate every formula with a lightweight pure-TS engine and report error values (#REF!, #DIV/0!, #VALUE!, #N/A, #NAME?, #NUM!) with locations
xlsx_auditStatically audit formula structure: array-formula traps, aggregation ranges missing rows, formulas overwritten by hardcoded values, inconsistent formulas in a column, self-references, division by zero
pdf_createGenerate a real PDF with headings, paragraphs, tables, lists, code blocks and footer page numbers; CJK text renders via an auto-detected system font
pdf_readExtract text from a PDF for reading into context
pdf_mergeMerge multiple PDFs into one, in order
pdf_splitSplit a PDF into single-page files, or extract pages by spec ("1,3,5-7")
pptx_createGenerate a .pptx deck from slide definitions (title / section / content / two-column / image / table / chart), with optional theme and speaker notes
pptx_readExtract slide text as markdown, optionally including speaker notes; include adds structure (summary/layouts/images/tables: shape names & cm positions, image targets, table dims)
pptx_editFind/replace text inside an existing .pptx (<a:t> surgery), preserving all layout and styling
docx_createGenerate a real .docx Word document from content blocks (heading / paragraph / table / code / list), with optional striped tables, page background color, and diagonal text watermark
docx_readExtract text from a .docx for reading into context

Install & load

Compatibility: requires dsh0.1.0-rc.5 (bundles @deepseek-ai/dsh-tools0.1.0-rc.5). Installing on an older core whose dsh-tools is a 0.0.1 release installs a second dsh-tools copy and crashes every tool call with Cannot read properties of undefined (reading 'prepare').

Full load (all 14 tools)

sh
dsh plugin --profile <name> add @huiliyi37/dsh-office
dsh --profile <name>

The first dsh plugin call initializes the profile (@deepseek-ai/dsh-base is its first bundle) and appends this package to the profile's bundles list. Launching the profile then registers all tools automatically.

Load only the families you need

Pass a config row in your profile's cordis.patch.yml to enable/disable per family. Omitted families stay enabled; set a family to false to exclude it (useful to keep the tool surface small):

yaml
# cordis.patch.yml
- insert:
    - id: dsh-office
      name: '@huiliyi37/dsh-office'
      config:
        enable:
          xlsx: false      # skip spreadsheet tools
          pdf: true        # keep PDF tools
          ppt: false       # skip presentations
          docx: true       # keep Word tools

Families: xlsx (read/write/edit/recalc/audit), pdf (create/read/merge/split), ppt (create/read/edit), docx (create/read).

Uninstall

sh
dsh plugin --profile <name> remove @huiliyi37/dsh-office

Manual alternative

Install the package anywhere Node resolution can find it and reference it from your own cordis.patch.yml (same config.enable switches apply):

sh
npm install @huiliyi37/dsh-office
yaml
# cordis.patch.yml
- insert:
    - id: dsh-office
      name: '@huiliyi37/dsh-office'

Skill

The package ships a usage skill (skills/SKILL.md, anthropics-compatible format) that teaches the model large-file pagination and generation discipline. Install it into a skill discovery root:

sh
mkdir -p ~/.dsh/skills && cp -r node_modules/@huiliyi37/dsh-office/skills/dsh-office ~/.dsh/skills/

Usage examples

jsonc
1// xlsx_write — create a workbook
2{ "file_path": "report.xlsx", "data": [["Name", "Score"], ["Alice", 92]], "header_bold": true }
3
4// pdf_create — document with a heading, table and list
5{
6  "destination_path": "doc.pdf",
7  "title": "Quarterly Report",
8  "content": [
9    { "type": "heading", "text": "Summary" },
10    { "type": "table", "headers": ["Region", "Revenue"], "rows": [["APAC", "120"]] },
11    { "type": "list", "items": ["Alpha", "Beta"] }
12  ],
13  "page_numbers": true
14}
15
16// pptx_create — a deck with a title slide and a bullet slide
17{
18  "destination_path": "deck.pptx",
19  "slides": [
20    { "type": "title", "title": "Roadmap 2026" },
21    { "type": "content", "title": "Highlights", "items": ["Plugin runtime", "Office tools"] }
22  ]
23}

Development

sh
npm install
npm run build   # tsc → lib/
npm test        # vitest: round-trip tests through the tool execute path

License

Apache License 2.0. Tool logic ported from the Tianshu office plugins (also Apache-2.0 licensed, copyright Tianshu contributors); see file headers for per-module provenance.