docs: README with install, tools summary, dev

This commit is contained in:
hermes committed 2026-10-21 10:56:23 +00:00
1 parent 2b0c8a532f
commit a606b6a9aa
1 file changed
+84
+84
View File
@@ -0,0 +1,84 @@
# dsh-vk-group
DeepSeek Harness plugin (bundle) that gives the agent a complete VKontakte community-management toolkit: 30 model tools, a LongPoll event bridge, and a rule-based moderation engine.
> Status: **design / plan stage.** The architecture, tool surface and wiki are complete. No implementation code yet.
## What it does
- **30 model tools** covering community info & settings, members, bans, join requests, managers, wall posts, comments, media upload, board topics, market products, community messages, stats, shortlinks, Callback API servers and LongPoll control.
- **LongPoll bridge** — incoming messages, comments, joins, board replies and market comments are delivered to the agent as durable context via `agent.followup()`.
- **Moderation engine** — keyword/regex/new-member/link rules evaluated without the model in the loop, with a warn threshold and an append-only audit log.
- **Safety layer** — destructive operations route through `tools/pre-execute` with an `ask` decision, a monotonic `ctx.tools.guard()` blocks writes when the token lacks admin rights, `dryRun` is on by default for settings changes, and the raw-API escape hatch is disabled unless explicitly enabled.
## Requirements
| | |
|---|---|
| DeepSeek Harness | `>=0.2.0 <0.3.0` |
| Node.js | `>=20` |
| VK token | community token (required) + user token (recommended, unlocks `stats.get`, `groups.getMembers`, `groups.getBanned`) |
### VK token scopes
Community token: `manage`, `wall`, `photos`, `docs`, `messages`, `market`, `stories`, `topics`.
User token adds: `groups`, `stats`, `offline`.
Without a user token these tools return a typed `VK_SCOPE_MISSING` error instead of failing obscurely: `vk_members_list`, `vk_stats_get`, parts of `vk_ban_list`.
## Install
```sh
# from a tarball (recommended — ships prebuilt dist/)
dsh plugin --profile web add ./dsh-vk-group-0.1.0.tgz
# from git (requires allowlisting the prepare script, see the wiki)
dsh plugin --profile web add github:hermes/dsh-vk-group
```
Then add the configuration to your profile's `cordis.patch.yml`:
```yaml
- id: vk-group
name: dsh-vk-group
config:
groupId: -123456789
accessToken: !!js process.env.VK_COMMUNITY_TOKEN
userAccessToken: !!js process.env.VK_USER_TOKEN
longpoll:
enabled: true
```
Restart `dsh web`, then verify with `dsh --profile web --dump-config` — the layer should show `# == dsh-vk-group`.
## Tool surface
See the repository wiki, page **Tools Reference**. Summary:
| Group | Tools |
|---|---|
| Community | `vk_community_info`, `vk_community_update` |
| Members | `vk_members_list`, `vk_members_manage`, `vk_member_status` |
| Moderation | `vk_ban_list`, `vk_ban_manage`, `vk_requests_list`, `vk_requests_handle` |
| Managers | `vk_managers_list`, `vk_manager_set` |
| Wall | `vk_wall_post`, `vk_wall_edit`, `vk_wall_delete`, `vk_wall_pin`, `vk_wall_list` |
| Comments | `vk_comments_list`, `vk_comment_manage` |
| Media | `vk_media_upload` |
| Board | `vk_board_topic`, `vk_board_comment` |
| Market | `vk_market_manage` |
| Messages | `vk_messages_send`, `vk_messages_list` |
| Analytics | `vk_stats_get`, `vk_shortlink` |
| Infrastructure | `vk_callback_manage`, `vk_longpoll_control`, `vk_moderation_rules`, `vk_api_raw` |
## Development
```sh
npm install
npm run build # tsdown → dist/
npm test # vitest
```
## License
MIT