deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:ciceroyang/dsh-report-studio
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
When your agent finishes work, have it write up what happened — into something you can actually hand over.
The first "session → work deliverable" plugin in the DeepSeek Harness ecosystem: turn one session into a daily report / weekly report / handoff document / WeChat-article draft, each sealed with a verifiable receipt block (report hash + artifact hashes), so reports cannot be embellished.
Status: 0.1.0, usable. Tracks the Harness developer preview; interfaces may change.
daily, weekly, handoff, article.. traversal are rejecteddsh plugin or load with a --patch overlayRequires Node.js ≥ 18 and DeepSeek Harness.
dsh plugin --profile web add github:ciceroyang/dsh-report-studio
git clone https://github.com/ciceroyang/dsh-report-studio.git
# my-report.yml (the plugin path MUST be absolute):
# - insert:
# - id: report-studio
# name: '/absolute/path/to/dsh-report-studio/index.js'
dsh web --patch ./my-report.yml
Tell the agent either of:
The bundled work-report skill teaches the agent the full workflow:
report_generate produces a draft with hard data plus [[待写:…]] prose slots;report_save writes the file and appends the receipt;Default save location: reports/<kind>-<date>.md inside the workspace.
For an instant draft preview without a model round trip, type the slash command:
/report daily # weekly / handoff / article also work
| Argument | Required | Meaning |
|---|---|---|
kind |
yes | daily / weekly / handoff / article |
title |
no | custom title; falls back to the session title |
period |
no | period label (e.g. "2026-08-11 ~ 2026-08-17") for weekly |
Returns the full Markdown draft; prose sections are [[待写:…]] markers.
| Argument | Required | Meaning |
|---|---|---|
content |
yes | final Markdown (receipt is appended automatically) |
path |
no | target path; defaults to reports/<kind>-<date>.md |
kind |
no | used for the default filename |
artifacts |
no | produced file paths; existing files get hashed into the receipt |
| format | no | md (default) / html — standalone forwardable document; the original Markdown is embedded in a hidden source block so report_verify still verifies it |
Returns the absolute path, report SHA-256, and verified artifact hashes.
Aggregates every persisted session of the current workspace (logs under
$DSH_HOME/sessions) plus the live session into a weekly draft with a
per-session table. Reading historical logs needs Node ≥ 22.15 (built-in zstd);
older Node degrades gracefully to the current session only.
Independently re-checks a saved report's receipt: recomputes the report SHA-256 and every artifact hash, reporting match/missing per item.
| Argument | Required | Meaning |
|---|---|---|
path |
yes | saved report file (inside the workspace) |
dir |
no | batch mode: verify every .md under this workspace-relative directory; returns matched/mismatched/no-receipt summary |
Publish a report to Feishu (custom bot webhook) or Notion (page); target=dry previews the payload without sending anything.
| Argument | Required | Meaning |
|---|---|---|
target |
yes | feishu / notion / dry |
content |
no | report text; otherwise read from path |
path |
no | saved report file (inside the workspace) |
title |
no | Feishu prefix / Notion page title |
Configuration: plugin config publish.feishuWebhook / publish.notionToken + publish.notionParentPageId, or env vars FEISHU_WEBHOOK / NOTION_TOKEN / NOTION_PARENT_PAGE_ID. Real publishing fails loudly without them; dry mode always works.
| Argument | Required | Meaning |
|---|---|---|
title |
no | custom title |
period |
no | period label, e.g. "2026-08-11 ~ 2026-08-17" |
Templates are plain Markdown with stable placeholders (data sections are filled deterministically by the plugin):
{{TITLE}} {{DATE}} {{PERIOD}}
{{META}} session id / workspace / time range / title
{{TASKS}} user asks + latest todo snapshot
{{STATS}} turns / steps / tool calls / token ledger / end reasons
{{TOOLS}} tool call table
{{FILES}} produced and read files
{{COMMANDS}} shell commands run
{{ERRORS}} tool errors and blocks
{{TIMELINE}} per-turn timeline
{{SESSIONS}} weekly session table (report_week aggregation)
Prose sections are written as [[待写:…]] and must be filled before saving.
Point the plugin at a custom directory:
- insert:
- id: report-studio
name: dsh-report-studio
config:
templatesDirs:
- '/absolute/path/to/my-templates'
Copy any file from this repo's templates/ directory as a starting point.
## 报告凭据 Report Receipt
| 项 | 值 |
|---|---|
| 会话 Session | session-1c1e5d0c-… |
| 工作区 Workspace | /Users/you/project |
| 生成时间 Generated | 2026-08-14T08:00:00.000Z |
| 报告哈希 Report SHA-256 | 9f2c… |
| 产物 Artifacts | README.md → 3a1b… |
Two paths (the work-report skill picks per the session's actual capability):
In-harness (official tools): with dsh-schedule mounted, say "generate my weekly report every Friday 18:00" and the agent implements it via schedule_create (time zone must be explicit).
System-level (zero deps, all data sections automatic): scripts/auto-weekly.mjs needs no model — it aggregates the week's sessions, fills every data section and saves a draft with [[待写:…]] prose slots. Point launchd/cron at it for Friday 18:00, then open a session and say "fill and save".
node scripts/auto-weekly.mjs <workspace> --out reports/weekly-auto.md
fs directly, outside the Harness fs policy layer;
path-escape protection lives inside the plugin.Issues and PRs welcome (typos, new templates, translations, tests). Before pushing:
npm test
MIT. If this saves you from writing another daily report:
Built for the open-source community, in the spirit of DeepSeek Harness: everything is a plugin.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。