deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Alfred-Lau/OPC-Fellows
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
OPC-Fellows · hire occupations as members, then point them at your work
A small kernel (shell, todos, contracts) plus occupation plugins you can enable or write.
Wire it to your business · Occupations · Download · Write a module · Architecture · Contributing
You are a developer who also is the company: sales, content, research, invoices. This README is not a product brochure. It is how you clone the repo, hire members onto your own folders and sites, and do real work the same day.
Business data stays in on-device userData. Model keys go through Settings → Model (safeStorage). No account, no upload, no telemetry. The default product catalog is empty — fill in your sites.
Needs Node.js ^22.19.0 or >=24.0.0, and pnpm 10+. The first pnpm install downloads Electron and takes a while.
git clone git@github.com:Alfred-Lau/OPC-Fellows.git
cd OPC-Fellows
pnpm install
pnpm dev
The UI is still hardcoded Chinese. Then attach your business, in this order — do not start with the architecture docs:
export DEEPSEEK_API_KEY=… (env wins). Members cannot speak without a key.+ currently reopens Social ammo (a singleton).~/OPC-Fellows/agents/{title}. Better: bind the folder you actually edit. You can rebind later; files are not moved.examples/catalog.example.json.Optional:
cp .env.example .env # never commit a real .env
pnpm test
pnpm dsh # local DeepSeek Harness CLI
Package with pnpm run pack (unpacked dir) or pnpm dist:mac. Do not run pnpm pack — that emits an npm tarball.
Vocabulary (member / project / identity directory / composer mode): CONTEXT.md.
The public roster keeps two identities. Other occupation modules stay in the tree but start disabled and do not spawn members.
| Your job | Who |
|---|---|
| Read/edit the workspace, run commands, plan then act | Host (default lead on every project) |
| Multi-platform copy from product capabilities | Social ammo (register your sites in 工作情况 first) |
Social ammo reads the Work situation catalog. Env cheat sheet:
| Variable | Use |
|---|---|
DEEPSEEK_API_KEY |
Overrides Settings → Model; still reads legacy ~/.dsh |
OPC_USER_DATA |
userData for the runtime |
A project is one multi-member job. With no @, only the lead member hears you. Today is the global inbox, not a project.
If you do not want source: v0.8.0 (macOS Apple Silicon only).
The build is signed and notarized by Apple, so it opens without any extra step. If the first launch is still blocked (for example while offline), run this once:
xattr -cr "/Applications/OPC-Fellows.app"
Then open the app. Upgrading from v0.7.3: this release builds under the name OPC-Fellows, so it starts
with a fresh workspace — the previous build kept its data in ~/Library/Application Support/OPC Agent Team - Solokit
and the new name does not read it. The same first-hour path applies: model key → hire → bind a folder → Work situation.
This tree ships two members, but that is the default set rather than a limit: a member is an occupation backed by a module, and nothing in the kernel is per-occupation. When a job is missing, add a member instead of patching the kernel.
If a built-in occupation does not cover your business, add an npm package. Do not grow kernel union types. The workbench reads ownworkbuddy (apply(ctx) + optional mount); the runtime reads dsh.bundle. Write both during the transition. Smallest sample: examples/hello-module.
{
"main": "dsh-plugin.js",
"ownworkbuddy": {
"id": "hello",
"title": "Hello",
"kind": "view",
"main": "index.js",
"capabilities": [],
"ui": "ui.js"
},
"dsh": {
"bundle": { "patch": "./cordis.patch.yml" }
}
}
export default function apply(ctx) {
ctx.workbench.nav({ id: 'hello', title: 'Hello', mark: 'Hi', kind: 'view', order: 200 })
ctx.bridge.handle('hello:ping', () => ({ ok: true, at: new Date().toISOString() }))
}
Install from a local folder or Git on the Extensions page. To join the Harness stack:
pnpm dsh plugin --profile opc add ./examples/hello-module
A module may call only capabilities in its manifest. Undeclared calls are rejected. subprocess and secrets confirm at install. Modules must not reach into each other's stores; cross-module traffic goes through kernel services (for example todos.ingestAgent).
Electron is a thin shell. Chat and tools run on DeepSeek Harness; the roster, todos, and module registry hang on the same tree. Design: ADR 0005, docs/module-architecture-design.md. Shell mental model: docs/agent-workspace-design.md.
src/kernel/ boot, IPC, storage, todos, nav, module registry, members
src/modules/ built-in occupations (reference implementations)
examples/ smallest third-party module
docs/ architecture and ADRs
Runtime: deepseek-ai/deepseek-harness. Peer desktop hosts: github.com/topics/dsh-plugin.
The author runs this workbench against SoloKit and 榆关. That is a configuration, not the trunk defaults.
Public trunk: Alfred-Lau/OPC-Fellows. PRs against kernel services, manifests, capabilities, samples, and docs are welcome.
Do not weld personal site catalogs, signing identities, secret defaults, or machine-absolute paths into src/shared. The default identity directory is ~/OPC-Fellows/agents/{title}. Aligning a private reference tree copies mechanisms only — ADR 0007.
examples/ module, tests for one occupationUI copy is still hardcoded Chinese. Plan: docs/i18n-plan.md. PRs are licensed under MIT.
userData. There is no first-party backend for it.MIT License. Runtime depends on Cordis and DeepSeek Harness.
Site: OPC-Fellows
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。